Releases: Mufi-Lang/MufiZ
Releases · Mufi-Lang/MufiZ
v0.8.0 Ruby Release
What's Changed
- Update to main by @Mustafif in #27
- Zig trans by @Mustafif in #34
- Update to v0.8.0 by @Mustafif in #35
Release Notes for Ruby (0.8.0)
- Started on July 6th 2024.
- Released on Dec 31 2024.
New Features
- MufiZ is completely written in Zig now!
Other Changes
- Better error messages and handling in
reallocate
- Changed to incremental GC from mark-sweep for better performance and less memory usage (has to be tested)
- Simpler
fpm
command using.fpm
file - Better
Value
organization and will continue to better organize Objects using bounded methods - Enabled
arm
to be compiled underReleaseSafe
optimization - Enabled
mipsel
toolchain
Removals
- Removed Array and Matrix support
Full Changelog: v0.7.0...v0.8.0
v0.7.0 Jade Release
Release Notes for Jade (0.7.0)
- Started on April 24th 2024.
- Released on July 6th 2024.
New Features
-
New Array and Float Vector semantics using
[ ]
and{ }
respectively. -
Iterators for Array and Float Vectors.
Other Changes
- Fixed Vec3 builtin functions that were broken in
v0.6.0
7fbc1b6 - Changed default hashing algorithm to
cityhash64
: 8734e1b - Added helpful boolean macros for object type checking in builtin functions (cstd): 55585a50
- Updated MufiZ's interpret error to be treated as a Zig error when running a file: 4f7f9fd
- Adjusted
Table
implementation to use lazy deletion instead of tombstoning: bddabfa - Updated Zig version to
v0.13.0
: 788fbf2 - Updated to clap
v0.9.1
- Added Arm SIMD support using Neon intrinsics fa0b305
- Added Test Suites that brought plenty of fixes to builtins
- Switched
stdlib_error
to make use ofruntimeError
so that it can also
provide line numbers to the user.
Added Builtin Functions
assert
: Checks if the given condition is true, if not, it panics.simd_stat
: Checks if SIMD is supported on the current platform.iter
: Creates an iterator from an array or a float vector.next
: Advances the iterator and returns the next element.has_next
: Checks if the iterator has more elements.reset
: Resets the iterator to the beginning.skip
: Skips the nextn
elements.
Full Changelog: v0.6.0...v0.7.0
v0.6.0 Mars Release
What's Changed
- updated version on snap by @Mustafif in #11
- Next by @Mustafif in #12
- Next Version Mars by @Mustafif in #14
Full Changelog: v0.5.0...v0.6.0
Release Notes for Mars (0.6.0)
Started on February 21st 2024.
Released on April 23rd 2024.
New Features
- Added support for
Matrix
data type. - Added support for
FVector
data type.- This data type is a fixed array of floating point numbers that is able to use SIMD instructions.
- This data type is used to represent vectors in 3D space.
- Added network support via being able to send CRUD requests.
- This is able to be done using native Zig networking.
- Added exponent token
^
- Proper random number generation with either uniform or normal distribution.
Other Changes
- Lots of code cleanup and added more documentation.
- More functionality in the language with added builtin functions.
- Updated to
v0.8.0
ofclap
for the CLI. - Added features to optionally disable networking and filesystem access, and to enable sandboxing (REPL only).
- Optimize your code with the new
FVector
data type, which can perform operations 3x faster than theArray
data type. - Updated
what_is
function to be able to identify any Object type. - Updated
build_multi
to use the Zig build system instead of a Python script which would have caching conflicts. Using a seperate Python script for packaging the binaries. - Adding support for package managers like
apt
andscoop
to install MufiZ. - Switched from using
FNV-1a
toxxhash64
for hashing.- Will do a benchmark in the future to test the performance between
fnv1a
,cityhash64
andxxhash64
.
- Will do a benchmark in the future to test the performance between
- Switched to building targets:
arm-linux
on Debug optimization due to an LLD issue. - Added
x86
target support.
Added Builtin Functions
Math
rand()
: Generate a random number between 0 and 1.randn()
: Generate a random number with a normal distribution.
Networking
get_req()
: Send a GET request to a server.post_req()
: Send a POST request to a server.put_req()
: Send a PUT request to a server.del_req()
: Send a DELETE request to a server.
Collections
matrix()
: Create a matrix with the given dimensions.fvec()
: Create a vector with the given size or array.linspace()
: Create a float vector of evenly spaced numbers.slice()
: Get a subarray of an array.splice()
: Remove a subarray from an array.sum()
: Get the sum of a list.mean()
Get the mean of a list.std()
Get the standard deviation of a list.var()
Get the variance of a list.maxl()
Get the maximum value of a list.minl()
Get the minimum value of a list.workspace()
: Prints all global variables.interp1()
: Linear interpolation between two points.dot()
: Get the dot product of two vectors.cross()
: Get the cross product of two vectors.norm()
: Get the norm of a vector.proj()
: Get the projection of one vector onto another.reflect()
: Get the reflection of one vector off another.reject()
: Get the rejection of one vector off another.refract()
: Get the refraction of one vector through another.angle()
: Get the angle between two vectors.set_row()
: Set a row in a matrix.set_col()
: Set a column in a matrix.set()
: Set a value in a matrix.kolasa()
: Get the Kolasa matrixrref()
: Get the reduced row echelon form of a matrix.rank()
: Get the rank of a matrix.det()
: Get the determinant of a matrix.transpose()
: Get the transpose of a matrix.lu()
: Get the LU decomposition of a matrix.
Removals
- Removed
snap
packaging support - Removed
wasm32-wasi
target inbuild_multi.zig
script, can still be built from source with:zig build -Doptimize=ReleaseSmall -Dtarget=wasm32-wasi -Denable_fs=false -Denable_net=false -Dsandbox=true
v0.5.0 Luna Release
What's Changed
Full Changelog: v0.4.0...v0.5.0
Collection Types!
- Added the following types:
array()
linked_list()
hash_table()
Functions related are available instdlib.md
Assignment Operators
+=
-=
*=
/=
++
--
We also added %
operator for integers.
This release has been more focused on adding newer features to the language, and I'm glad that we have some nice essentials added.
v0.4.0 Voxl Release
What's Changed
Full Changelog: v0.3.0...v0.4.0
New Toolchain Support & Packaging:
- Package all binaries in a zip file
- Added deb/rpm support for linux toolchains
Added:
- aarch64-windows-gnu
- arm-linux-gnueabi
- arm-linux-gnueabihf
- arm-linux-musleabi
- arm-linux-musleabihf
- mips64-linux-musl
- mips64el-linux-musl
- mipsel-linux-musl
- mips-linux-musl
- powerpc64-linux-gnu
- powerpc64-linux-musl
- powerpc-linux-musl
- powerpc64le-linux-gnu
- powerpc64le-linux-musl
- riscv64-linux-musl
- wasm32-wasi
- x86_64-windows-gnu
Other Changes
- Expanded Standard Library (look at
stdlib.md
to see progress) - Converted
table.c
intolibmufiz_table
- Added
--link
option to link another mufi script onto the main one
v0.3.0 Iris Release
What's Changed
- changed image and to releasefast for scanner by @Mustafif in #2
- Next by @Mustafif in #3
- rename to mufiz, commented out str2i until fix comes by @Mustafif in #4
- updated goals by @Mustafif in #5
- Iris Release by @Mustafif in #7
Expanded Standard Library:
complex(double, double) Complex
- Creates a new complex number with (real, imaginary) as the parameters
- Native support for binary operations of complex numbers (you can do +, -, /, *)
log2
(double)log10
(double)sin
(double)cos
(double)tan
(double)asin
(double)acos
(double)atan
(double)double
converts an integer to doubleint
converts a double to an integerstr
converts an integer or double to stringnow
returns the time in secondsnow_ns
... in nsnow_ms
... in ms
Other Changes
- Small optimizations made on
Table
to improve speeds from modulo operations - Updated CLI to use
clap
for a better experience - Updated
Windows
to usesystem.runFile
however still relies onpre.repl()
Full Changelog: v0.2.0...v0.3.0
v0.2.0 Zula Release
This is the first release of the Mufi Compiler built using the Zig programming language.
Currently we have the following new features for all of these listed platforms:
repl/file runner
rebuilt in Ziglibmufiz_scanner
replacing Mufi's scanner originally written in C and now in Zig- A small standard library that will grow:
addi
: Adds 2 integersi2d
: Integer to double conversiond2i
: Double to integer conversionstr2i
: String to integer (broken do not use)