Skip to content

Releases: Mufi-Lang/MufiZ

v0.8.0 Ruby Release

31 Dec 20:27
Compare
Choose a tag to compare

What's Changed

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 under ReleaseSafe optimization
  • Enabled mipsel toolchain

Removals

  • Removed Array and Matrix support

Full Changelog: v0.7.0...v0.8.0

v0.7.0 Jade Release

07 Jul 00:41
8564160
Compare
Choose a tag to compare

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 of runtimeError 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 next n elements.

Full Changelog: v0.6.0...v0.7.0

v0.6.0 Mars Release

23 Apr 18:13
e7725c8
Compare
Choose a tag to compare

What's Changed

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 of clap 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 the Array 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 and scoop to install MufiZ.
  • Switched from using FNV-1a to xxhash64 for hashing.
    • Will do a benchmark in the future to test the performance between fnv1a, cityhash64 and xxhash64.
  • 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 matrix
  • rref(): 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 in build_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

22 Feb 01:38
b53105b
Compare
Choose a tag to compare

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 in stdlib.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

17 Feb 22:55
4354803
Compare
Choose a tag to compare

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 into libmufiz_table
  • Added --link option to link another mufi script onto the main one

v0.3.0 Iris Release

04 Feb 00:58
2bc63f2
Compare
Choose a tag to compare

What's Changed

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 double
  • int converts a double to an integer
  • str converts an integer or double to string
  • now returns the time in seconds
  • now_ns ... in ns
  • now_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 use system.runFile however still relies on pre.repl()

Full Changelog: v0.2.0...v0.3.0

v0.2.0 Zula Release

24 Jan 20:14
273eba7
Compare
Choose a tag to compare

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 Zig
  • libmufiz_scanner replacing Mufi's scanner originally written in C and now in Zig
  • A small standard library that will grow:
  • addi: Adds 2 integers
  • i2d: Integer to double conversion
  • d2i: Double to integer conversion
  • str2i: String to integer (broken do not use)

Next Experimental Release

31 Dec 20:03
1f84737
Compare
Choose a tag to compare
Pre-release

What's Changed

Full Changelog: v0.2.0...next-experimental