What's Happened So Far?

Photo by Clark Tibbs on Unsplash

What's Happened So Far?

This article will explore the progress that we've achieved so far in MufiZ-Lang, the purpose of this project, and some plans for the future.

What is MufiZ-Lang?

MufiZ is now the official implementation of Mufi-Lang, a project I started almost two years ago, and this implementation now offers a language that is implemented between Zig and C. This allows us to keep much of our C implementation, with the option to improve the project incrementally; some of the components have already been Ziggified.

Why Zig?

  • Easy Cross compiling (Zig has zero dependency toolchain)

  • Zig build contains caching even for the C files

  • Easy integration with C

This toy programming language is dynamic, object-oriented, and general-purpose, which I hope can be a great alternative to Matlab and R (in some cases).

Current Progress

Before creating a blog page for this, I posted all the news to LinkedIn, so let's look at all the progress we have gone through so far.

Each release also contains a nice codename, because why not have fun with releases.

v0.2.0 - Zula Release

This release wasn't too big but more as a proof of concept following changes from the original Baloo release that was forked from. This release included the following:

  • Fully built under the Zig Build system

  • A rewritten scanner in Zig under the library libmufiz_scanner

  • Rewritten repl/runFile operations under Zig

  • A small standard library to convert between integers to double and vice versa to show that the Native Functions loading works.

v0.3.0 - Iris Release

This release brought significant changes compared to Zula, and it was a culmination of 39 commits, and some of the big changes were:

  • Native complex number type

  • Use of a global allocator (uses GeneralPurposeAllocator in ReleaseSafe mode

  • More mature CLI using clap

This release also packages for more architectures:

  • aarch64 Linux (GNU/MUSL)

  • x86_64 Linux (GNU/MUSL)

  • MacOS (aarch64/x86_64)

  • Windows (aarch64/x86_64)

v0.4.0 - Voxl Release

This release brought the front end of the language to use Zig purely (removing the dependency of pre.c/h) and the following other changes:

  • Reimplementing the Hash table implementation in Zig as part of libmufiz_table

  • Expanded the standard library

  • Supporting over 25 different toolchains

  • Providing deb/rpm packages for Linux users

v0.5.0 - Luna Release

This release was smaller than Voxl but brought new changes in the C portion:

  • Collection types added to Objects

    • Dynamic Arrays

    • Linked Lists

    • Hash Tables

  • Added assignment operators:

    • +=

    • -=

    • *=

    • /=

  • Increment operators ++ and --

  • Modulus operator % for integers

Future of the Language

Where do we see ourselves going in the future?

First, I like adding newer types and functionality to our language. Currently, in the next release, I am working on stabilizing Matrix type, looking at the possibility of Vector types that could use SIMD instructions (this isn't a promise), and expanding the language to have similar functionality like R and Matlab in terms of usefulness with mathematics since that's my field.

This language is a toy because I want to be able to do anything I want for this. There is no particular purpose per se, but it could be the home of various experimentations with compiler hacking, and this is an amazing breeding ground for trying various strategies.

Did you find this article valuable?

Support MufiZ-Lang Blog by becoming a sponsor. Any amount is appreciated!