<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[MufiZ News]]></title><description><![CDATA[Get the latest news of the MufiZ Programming Language.]]></description><link>https://news.mufi-lang.org</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1711033166493/Ufb0jLK_t.png</url><title>MufiZ News</title><link>https://news.mufi-lang.org</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 14 May 2026 17:01:43 GMT</lastBuildDate><atom:link href="https://news.mufi-lang.org/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Ferrufi Released!!!]]></title><description><![CDATA[Wait…what is Ferrufi?
Well, Mufi-Lang was lacking editor support, and well I started tinkering with my own knowledge app (Notion, Obsidian, etc.) in Swift which would take advantage of Metal acceleration, and thought wait a minute, I have Mufi-Lang �...]]></description><link>https://news.mufi-lang.org/ferrufi-released</link><guid isPermaLink="true">https://news.mufi-lang.org/ferrufi-released</guid><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Sun, 01 Feb 2026 04:00:51 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/gcHFXsdcmJE/upload/a3e4b8ebad2227999a4a93c48f9b2db9.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Wait…what is Ferrufi?</p>
<p>Well, Mufi-Lang was lacking editor support, and well I started tinkering with my own knowledge app (Notion, Obsidian, etc.) in Swift which would take advantage of Metal acceleration, and thought wait a minute, I have Mufi-Lang 😂</p>
<p>So seeing how useful AI can be, I had it try to make some editor for me, and with many frustrating trial and errors, and shouting at the chat, we got Ferrufi!!!</p>
<p>To install you can run the following command:</p>
<pre><code class="lang-bash">$ curl -fsSL https://raw.githubusercontent.com/Mufi-Lang/Ferrufi/main/scripts/installer.sh | bash
</code></pre>
<p>So what features do we have right now???</p>
<h2 id="heading-native-editor-support">Native Editor Support</h2>
<p>Huh? Well I did something cool, or I thought of it, so we got MufiZ, so why don’t we separate the compiler into two, a library and an executable. Where the library can then be compiled into a dynamic library and linked with Swift using C-ABI.</p>
<p>So now we have Ferrufi natively be able to run <code>mufi</code> code, and also run the REPL mode, it is so cool!!!</p>
<h2 id="heading-syntax-highlighting-support">Syntax Highlighting Support</h2>
<p>We currently are using a Regex based highlighting support for Mufi-Lang, but I’m hoping that this will evolve over time, with possibly using some sort of formal spec highlighting or maybe come up with our own unique approach.</p>
<h2 id="heading-theme-manager">Theme Manager</h2>
<p>We got a nice theme manager that you can click and preview nicely of each theme so you can choose the most perfect one for your editing style.</p>
<h3 id="heading-notes">Notes</h3>
<p>This is our first release, so do expect bugs, and some things have not been implemented yet like our activity bar, so there will be upcoming releases to fix these various issues. I also hope to put more into how MufiZ interacts with the editor like better workspace support, and hoping to explore replacing the job of an LSP with a neural network model, so there’s a lot of exciting things in place for 2026 and Mufi-Lang!!!</p>
]]></content:encoded></item><item><title><![CDATA[MufiZ v0.10.0 Echo is Released!!!]]></title><description><![CDATA[The Echo Release is probably the biggest release so far, and has been in the works for 7 months and in those months a lot of different things were added, tried and didn’t work, but here we are at the end of 2025 with a new MufiZ release with a bunch ...]]></description><link>https://news.mufi-lang.org/mufiz-v0100-echo-is-released</link><guid isPermaLink="true">https://news.mufi-lang.org/mufiz-v0100-echo-is-released</guid><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Thu, 01 Jan 2026 01:21:24 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/Oy2yXvl1WLg/upload/2afbd0b396c95b561e130caddef1f555.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The Echo Release is probably the biggest release so far, and has been in the works for 7 months and in those months a lot of different things were added, tried and didn’t work, but here we are at the end of 2025 with a new MufiZ release with a bunch of improvements and stability in the language.</p>
<h2 id="heading-new-features">New Features</h2>
<ul>
<li><p>Foreach loop support foreach(v in vector)</p>
</li>
<li><p>Added complex number parsing var c = 2 + 3i</p>
</li>
<li><p>Added multiline string (`hello`;) and comment (/# #/) support.</p>
</li>
<li><p>Added end keyword for indexing arrays last element (like Matlab)</p>
</li>
<li><p>Added const support for immutable variables</p>
</li>
<li><p>Added format() and f() functions for formatting strings like format("Hello, {}!", "World") and f("Hello, {}!", "World").</p>
</li>
<li><p>Added hashtable syntax using #{key: value} such as var table = #{"key": 4}; and indexing using table["key"].</p>
</li>
<li><p>Added switch statement support switch(expression) { case value: {expression; break;}, ... }</p>
</li>
<li><p>Added experimental range support (..= and ..)</p>
</li>
<li><p>Added pair type key =&gt; value</p>
</li>
<li><p>Added Matrix type support ([[1, 2, 3], [4, 5, 6]]) and added indexing support using mat[row][col] syntax.</p>
<ul>
<li>For iterating on foreach, you will need to run foreach(a in flatten(mat))</li>
</ul>
</li>
</ul>
<h2 id="heading-other-changes">Other Changes</h2>
<ul>
<li><p>Upgraded Zig toolchain to v0.15.2</p>
</li>
<li><p>Changed Float Vector to be dynamic</p>
</li>
<li><p>Improved Hash Table to use Standard Library</p>
</li>
<li><p>Reworked memory management to use Zig’s Allocator type and prioritize safety checks and memory leak detection. We choose to use Zig’s General Purpose Allocator and for lifetime objects we use arena allocation.</p>
</li>
<li><p>Reworked REPL editor that allows for multi-line statements</p>
</li>
<li><p>Better error messaging in the language and token column reporting is implemented</p>
</li>
<li><p>Dynamic String hashing depending on length of string to provide optimal performance.</p>
</li>
</ul>
<pre><code class="lang-bash"><span class="hljs-comment"># To install on Unix Systems!</span>
$ curl -fsSL https://raw.githubusercontent.com/Mufi-Lang/installer/main/installer.sh | sudo sh -s install
<span class="hljs-comment"># To use after, run the mufizup command </span>
$ mufizup update <span class="hljs-comment"># updates to latest version</span>
</code></pre>
<p>With this release, I will no longer be continuing to use apt/dnf repo, and instead for Unix systems I will be improving the <code>mufizup</code> shell script that can be used to install <code>mufiz</code> for different toolchains and handle updating, and selecting versions. For MacOS and x86-64 Linux systems <code>brew</code> will also continued to be supported and we also have our Github release <a target="_blank" href="https://github.com/Mufi-Lang/MufiZ/releases/tag/v0.10.0">https://github.com/Mufi-Lang/MufiZ/releases/tag/v0.10.0</a></p>
]]></content:encoded></item><item><title><![CDATA[A Teaser to MufiZ v0.10.0]]></title><description><![CDATA[The next release of MufiZ, Echo release is planned to be released hopefully by October or November 2025, and with it comes many new features to the language, after lots of releases of mainly focusing on fixing up the language (well this brings more s...]]></description><link>https://news.mufi-lang.org/a-teaser-to-mufiz-v0100</link><guid isPermaLink="true">https://news.mufi-lang.org/a-teaser-to-mufiz-v0100</guid><category><![CDATA[zig]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Sat, 27 Sep 2025 22:41:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/4PxJ_9wEQyI/upload/6877722cdefa8510d554a477728c9b30.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The next release of MufiZ, Echo release is planned to be released hopefully by October or November 2025, and with it comes many new features to the language, after lots of releases of mainly focusing on fixing up the language (well this brings more stuff to better optimize).</p>
<h2 id="heading-const-support">Const Support</h2>
<p>In this release we provide support to immutable variables in both global and local scopes through the <code>const</code> keyword, you can assign a variable to immutable instead of the mutable <code>var</code> keyword.</p>
<h2 id="heading-pairs-support">Pairs Support</h2>
<p>We introduce a new object called Pairs which act as a key-value pair which can either be directly created using the syntax <code>key =&gt; value</code> or can be collected from a Hash-Table using the <code>pairs()</code> function which can be iterated upon, further work will be looked at for further integration with the hash-table type.</p>
<h2 id="heading-switch-support">Switch Support</h2>
<p>We are adding support for <code>switch</code> statements which are similar to a mix between C but instead of <code>:</code> we use <code>=&gt;</code> as shown below:</p>
<pre><code class="lang-javascript"><span class="hljs-keyword">var</span> a = <span class="hljs-number">3</span>;
print(<span class="hljs-string">"Switch value: "</span> + a);

<span class="hljs-keyword">switch</span>(a){
    <span class="hljs-keyword">case</span> <span class="hljs-number">1</span> =&gt; { print(<span class="hljs-string">"Entered case 1"</span>); assert(a, <span class="hljs-number">1</span>); <span class="hljs-keyword">break</span>;},
    <span class="hljs-keyword">case</span> <span class="hljs-number">2</span> =&gt; { print(<span class="hljs-string">"Entered case 2"</span>); assert(a, <span class="hljs-number">2</span>); <span class="hljs-keyword">break</span>;},
    <span class="hljs-keyword">case</span> <span class="hljs-number">3</span> =&gt; { print(<span class="hljs-string">"Entered case 3"</span>); assert(a, <span class="hljs-number">3</span>); <span class="hljs-keyword">break</span>;}
}
print(<span class="hljs-string">"End of switch"</span>);
</code></pre>
<h2 id="heading-range-support">Range Support</h2>
<p>We are adding exclusive (<code>start..end</code>) and inclusive (<code>start..=end</code>) ranges support, further work is being done to ensure they work nicely with <code>foreach</code> loops and <code>switch</code> statements, and may not be fully stabilised until <code>v0.11.0</code>.</p>
<h2 id="heading-switch-to-zig-v0150-toolchain">Switch to Zig <code>v0.15.0</code> Toolchain</h2>
<p>The new Zig release has come out and a lot of refactoring is being done to replace old code with the new <code>Io</code> type and it involves the networking functions to be rewritten as well. This is an exciting release, and we are happy to quickly adopt it to our language.</p>
]]></content:encoded></item><item><title><![CDATA[Newest Features to be introduced in Echo!]]></title><description><![CDATA[MufiZ v0.10.0 is packing some new exciting features already, firstly we are adding support for foreach loops!!!
var a = {1, 2, 3};
foreach(x in a){
    print a;
}
// 1
// 2
// 3

The foreach loop was something I wanted to bring in Kova but didn’t get...]]></description><link>https://news.mufi-lang.org/newest-features-to-be-introduced-in-echo</link><guid isPermaLink="true">https://news.mufi-lang.org/newest-features-to-be-introduced-in-echo</guid><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Sun, 01 Jun 2025 02:02:01 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/5t1lUr0NmHI/upload/e6aef5d12eeb6f68462cc188f89a36b7.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>MufiZ v0.10.0 is packing some new exciting features already, firstly we are adding support for <code>foreach</code> loops!!!</p>
<pre><code class="lang-plaintext">var a = {1, 2, 3};
foreach(x in a){
    print a;
}
// 1
// 2
// 3
</code></pre>
<p>The <code>foreach</code> loop was something I wanted to bring in Kova but didn’t get the chance to, and between me switching back and forth between <code>foreach(x in foo)</code> and <code>each(x : foo)</code>, I decided to go with well what I already showed, and I’m happy its now in the language!</p>
<p>Next is more helpful error messages! Our error messaging system was all over the place, and now I have gotten it under control, and better under an Error Manager to handle detecting the type of error, and providing suggestions that may help, these suggestions are quite generic but better than nothing ;)</p>
<h2 id="heading-error-categories">Error Categories</h2>
<p>The error system categorizes errors into the following types:</p>
<h3 id="heading-syntax-errors">Syntax Errors</h3>
<ul>
<li><p><strong>UNEXPECTED_TOKEN</strong>: Wrong token found where another was expected</p>
</li>
<li><p><strong>UNTERMINATED_STRING</strong>: String literal missing closing quote</p>
</li>
<li><p><strong>INVALID_CHARACTER</strong>: Invalid or unexpected character in source code</p>
</li>
<li><p><strong>MISSING_SEMICOLON</strong>: Missing semicolon where required</p>
</li>
<li><p><strong>MISMATCHED_BRACKETS</strong>: Mismatched [], {}, or () brackets</p>
</li>
</ul>
<h3 id="heading-semantic-errors">Semantic Errors</h3>
<ul>
<li><p><strong>UNDEFINED_VARIABLE</strong>: Reference to undeclared variable</p>
</li>
<li><p><strong>REDEFINED_VARIABLE</strong>: Variable declared multiple times in same scope</p>
</li>
<li><p><strong>UNDEFINED_FUNCTION</strong>: Call to undefined function</p>
</li>
<li><p><strong>UNDEFINED_PROPERTY</strong>: Access to undefined object property</p>
</li>
<li><p><strong>WRONG_ARGUMENT_COUNT</strong>: Function called with wrong number of arguments</p>
</li>
</ul>
<h3 id="heading-type-errors">Type Errors</h3>
<ul>
<li><p><strong>TYPE_MISMATCH</strong>: Operation between incompatible types</p>
</li>
<li><p><strong>INVALID_CAST</strong>: Invalid type conversion</p>
</li>
<li><p><strong>INCOMPATIBLE_TYPES</strong>: Types cannot be used together</p>
</li>
</ul>
<h3 id="heading-runtime-errors">Runtime Errors</h3>
<ul>
<li><p><strong>STACK_OVERFLOW</strong>: Too many nested function calls</p>
</li>
<li><p><strong>INDEX_OUT_OF_BOUNDS</strong>: Array/vector access outside valid range</p>
</li>
<li><p><strong>NULL_REFERENCE</strong>: Access to null object</p>
</li>
<li><p><strong>DIVISION_BY_ZERO</strong>: Division or modulo by zero</p>
</li>
</ul>
<h3 id="heading-memorylimit-errors">Memory/Limit Errors</h3>
<ul>
<li><p><strong>TOO_MANY_CONSTANTS</strong>: More than 256 constants in one function</p>
</li>
<li><p><strong>TOO_MANY_LOCALS</strong>: More than 256 local variables in function</p>
</li>
<li><p><strong>TOO_MANY_ARGUMENTS</strong>: More than 255 function arguments</p>
</li>
<li><p><strong>LOOP_TOO_LARGE</strong>: Loop body exceeds maximum size (65535 bytes)</p>
</li>
<li><p><strong>JUMP_TOO_LARGE</strong>: Conditional jump distance too large</p>
</li>
</ul>
<h3 id="heading-classobject-errors">Class/Object Errors</h3>
<ul>
<li><p><strong>INVALID_SUPER_USAGE</strong>: 'super' used outside class or without inheritance</p>
</li>
<li><p><strong>INVALID_SELF_USAGE</strong>: 'self' used outside class context</p>
</li>
<li><p><strong>CLASS_INHERITANCE_ERROR</strong>: Invalid class inheritance (e.g., self-inheritance)</p>
</li>
<li><p><strong>METHOD_NOT_FOUND</strong>: Called method doesn't exist on object</p>
</li>
</ul>
<h2 id="heading-error-message-format">Error Message Format</h2>
<p>Each error message includes:</p>
<ol>
<li><p><strong>Severity Level</strong>: Error, Warning, Info, or Hint</p>
</li>
<li><p><strong>Location</strong>: File, line, and column number</p>
</li>
<li><p><strong>Category</strong>: The type of error (Syntax, Runtime, etc.)</p>
</li>
<li><p><strong>Message</strong>: Clear description of what went wrong</p>
</li>
<li><p><strong>Context</strong>: Relevant source code with error highlighting</p>
</li>
<li><p><strong>Suggestions</strong>: Helpful advice on how to fix the error</p>
</li>
<li><p><strong>Examples</strong>: Code examples showing correct usage (when applicable)</p>
</li>
</ol>
<h3 id="heading-example-error-output">Example Error Output</h3>
<pre><code class="lang-plaintext">Error [script:15:23] (Syntax) Unexpected token 'var', expected ')'
    var result = add(5, var x = 10);
                       ^^^
  Suggestion: Replace 'var' with a valid expression
    Fix: Remove variable declaration from function call
    Example: var result = add(5, x);

  Suggestion: Declare variables outside function calls
    Example: var x = 10; var result = add(5, x);
</code></pre>
<h2 id="heading-common-error-scenarios-and-suggestions">Common Error Scenarios and Suggestions</h2>
<h3 id="heading-undefined-variables">Undefined Variables</h3>
<p><strong>Error</strong>: <code>Undefined variable 'userName'</code></p>
<p><strong>Suggestions</strong>:</p>
<ul>
<li><p>Declare the variable before using it</p>
</li>
<li><p>Check spelling (did you mean 'username'?)</p>
</li>
<li><p>Ensure variable is in correct scope</p>
</li>
</ul>
<p><strong>Fix Examples</strong>:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Before (error)</span>
print(userName);

<span class="hljs-comment">// After (fixed)</span>
<span class="hljs-keyword">var</span> userName = <span class="hljs-string">"John"</span>;
print(userName);
</code></pre>
<h3 id="heading-wrong-argument-count">Wrong Argument Count</h3>
<p><strong>Error</strong>: <code>Function 'add' expects 2 arguments, but 1 were provided</code></p>
<p><strong>Suggestions</strong>:</p>
<ul>
<li><p>Add the missing argument</p>
</li>
<li><p>Check function signature</p>
</li>
<li><p>Verify you're calling the correct function</p>
</li>
</ul>
<p><strong>Fix Examples</strong>:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Before (error)</span>
<span class="hljs-keyword">var</span> result = add(<span class="hljs-number">5</span>);

<span class="hljs-comment">// After (fixed)</span>
<span class="hljs-keyword">var</span> result = add(<span class="hljs-number">5</span>, <span class="hljs-number">3</span>);
</code></pre>
<h3 id="heading-stack-overflow">Stack Overflow</h3>
<p><strong>Error</strong>: <code>Stack overflow - too many function calls</code></p>
<p><strong>Suggestions</strong>:</p>
<ul>
<li><p>Check for infinite recursion</p>
</li>
<li><p>Add base case to recursive functions</p>
</li>
<li><p>Consider using iteration instead</p>
</li>
<li><p>Limit recursion depth</p>
</li>
</ul>
<p><strong>Fix Examples</strong>:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Before (infinite recursion)</span>
fun factorial(n) {
    <span class="hljs-keyword">return</span> n * factorial(n - <span class="hljs-number">1</span>);
}

<span class="hljs-comment">// After (with base case)</span>
fun factorial(n) {
    <span class="hljs-keyword">if</span> (n &lt;= <span class="hljs-number">1</span>) <span class="hljs-keyword">return</span> <span class="hljs-number">1</span>;
    <span class="hljs-keyword">return</span> n * factorial(n - <span class="hljs-number">1</span>);
}
</code></pre>
<h3 id="heading-index-out-of-bounds">Index Out of Bounds</h3>
<p><strong>Error</strong>: <code>Index 5 is out of bounds for size 3</code></p>
<p><strong>Suggestions</strong>:</p>
<ul>
<li><p>Valid indices are 0 to 2</p>
</li>
<li><p>Check array/vector size before accessing</p>
</li>
<li><p>Use bounds checking</p>
</li>
</ul>
<p><strong>Fix Examples</strong>:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Before (unsafe)</span>
<span class="hljs-keyword">var</span> value = arr[index];

<span class="hljs-comment">// After (safe)</span>
<span class="hljs-keyword">if</span> (index &gt;= <span class="hljs-number">0</span> &amp;&amp; index &lt; arr.length) {
    <span class="hljs-keyword">var</span> value = arr[index];
} <span class="hljs-keyword">else</span> {
    print(<span class="hljs-string">"Index out of bounds"</span>);
}
</code></pre>
<h3 id="heading-invalid-super-usage">Invalid Super Usage</h3>
<p><strong>Error</strong>: <code>Cannot use 'super' outside of a class</code></p>
<p><strong>Suggestions</strong>:</p>
<ul>
<li><p>Use 'super' only inside class methods</p>
</li>
<li><p>Ensure class has a parent class</p>
</li>
<li><p>Move super call into class definition</p>
</li>
</ul>
<p><strong>Fix Examples</strong>:</p>
<pre><code class="lang-javascript"><span class="hljs-comment">// Before (error)</span>
<span class="hljs-built_in">super</span>.method();

<span class="hljs-comment">// After (fixed)</span>
<span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Child</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Parent</span> </span>{
    method() {
        <span class="hljs-built_in">super</span>.method();
    }
}
</code></pre>
<h2 id="heading-did-you-mean-suggestions">Did You Mean Suggestions</h2>
<p>The error system includes intelligent "did you mean" suggestions for:</p>
<ul>
<li><p><strong>Variable names</strong>: Suggests similar variable names based on edit distance</p>
</li>
<li><p><strong>Function names</strong>: Suggests similar function names when available</p>
</li>
<li><p><strong>Method names</strong>: Suggests available methods on objects</p>
</li>
<li><p><strong>Keywords</strong>: Suggests correct keywords for typos</p>
</li>
</ul>
<h3 id="heading-example">Example</h3>
<pre><code class="lang-plaintext">Error: Undefined variable 'usrName'
  Suggestion: Did you mean 'userName'?
</code></pre>
<h2 id="heading-error-recovery">Error Recovery</h2>
<p>The compiler includes panic mode recovery:</p>
<ol>
<li><p><strong>Enter Panic Mode</strong>: When an error is detected</p>
</li>
<li><p><strong>Skip Tokens</strong>: Continue parsing by skipping problematic tokens</p>
</li>
<li><p><strong>Synchronization Points</strong>: Recover at statement boundaries</p>
</li>
<li><p><strong>Exit Panic Mode</strong>: Resume normal parsing</p>
</li>
</ol>
<p>This allows the compiler to report multiple errors in a single compilation pass</p>
]]></content:encoded></item><item><title><![CDATA[MufiZ v0.9.0 is Released!]]></title><description><![CDATA[The next release codenamed Kova has been released and man this contains a lot of fixes to the language and a lot of refactoring.
The first big thing in this release is the fact that all types in the language are now Zig types! They no longer are C-AB...]]></description><link>https://news.mufi-lang.org/mufiz-v090-is-released</link><guid isPermaLink="true">https://news.mufi-lang.org/mufiz-v090-is-released</guid><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Wed, 28 May 2025 00:25:59 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/2QNtCFk3-9s/upload/04f0365a59be74c27063d81ba71f9bac.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The next release codenamed Kova has been released and man this contains a lot of fixes to the language and a lot of refactoring.</p>
<p>The first big thing in this release is the fact that all types in the language are now Zig types! They no longer are C-ABI types, this was a big thing to be able to accomplish and this helps with stability, memory safety and overall ease of development in the language from now on.</p>
<p>We have also added indexing support! This is something I wanted for a while, and now it comes, my next hope in the next release is to introduce a <code>foreach</code> loop, but that has its difficulty to implement.</p>
<p>Anyways indexing is the same as you expect in other languages, we use <code>[idx]</code> and index starts at 0. This is available to be used for Float Vectors only.</p>
<pre><code class="lang-plaintext">var f = {1, 2, 3, 4};
print f[0]; // 1
</code></pre>
<p>Along with this, we have made many improvements and fixes to the language, like better keyword looking up, a new Garbage Collector using Generational technique and reference counting. We also have a new allocator interface that replaces the use of malloc/realloc/free, and overall the language is a lot more stable.</p>
<p>Learn more at the <a target="_blank" href="https://github.com/Mufi-Lang/MufiZ/releases/tag/v0.9.0">Release!</a></p>
]]></content:encoded></item><item><title><![CDATA[The Goal of the Next Release]]></title><description><![CDATA[Due to the school year I have been pretty silent on MufiZ as I have had no time to work on it during that period, now that its spring break for me, I have more time to work on this, and I am proud to say this next release’s goal is to not add that mu...]]></description><link>https://news.mufi-lang.org/the-goal-of-the-next-release</link><guid isPermaLink="true">https://news.mufi-lang.org/the-goal-of-the-next-release</guid><category><![CDATA[news]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Sat, 17 May 2025 00:15:14 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/4JPBr2zPISA/upload/09aabea151968797c3b4e007bc2aeae4.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Due to the school year I have been pretty silent on MufiZ as I have had no time to work on it during that period, now that its spring break for me, I have more time to work on this, and I am proud to say this next release’s goal is to not add that much new features!</p>
<p>Wait…what? The goal of this is to cleanup our codebase, and fix functionality into the language, and increase our test suite to be able to catch more and more bugs in our language.</p>
<p>For example did you know MufiZ <code>v0.8.0</code> can’t even run this program:</p>
<pre><code class="lang-plaintext">class Zoo {
  init() {
    self.aardvark = 1;
    self.baboon   = 1;
    self.cat      = 1;
    self.donkey   = 1;
    self.elephant = 1;
    self.fox      = 1;
  }
  ant()    { return self.aardvark; }
  banana() { return self.baboon; }
  tuna()   { return self.cat; }
  hay()    { return self.donkey; }
  grass()  { return self.elephant; }
  mouse()  { return self.fox; }
}

var zoo = Zoo();
var sum = 0;
var start = now();
while (sum &lt; 100000000) {
  sum = sum + zoo.ant()
            + zoo.banana()
            + zoo.tuna()
            + zoo.hay()
            + zoo.grass()
            + zoo.mouse();
}

print now() - start;
print sum;
</code></pre>
<p>Because we had an issue on how <code>self</code> was being initialized in the Virtual Machine, it would just crash.</p>
<p>In this release, we are not only cleaning up the language and fixing it, we also are removing a lot of our C dependence. What does that mean in practice, it means that currently I have been able to keep the language using <code>realloc</code>, and <code>free</code> but it no longer points to <code>malloc</code> in the C standard library, but instead is a wrapper to use Zig’s General Purpose Allocator.</p>
<p>I also hope to be able to remove the use of C pointers in the language, and be able to just use Zig’s native types. This release may not include new features, but it will ease development and hopefully reduce the amount of cruff in the language.</p>
]]></content:encoded></item><item><title><![CDATA[MufiZ v0.8.0 is Released! What's the new Focus?]]></title><description><![CDATA[MufiZ Ruby release has been released as of 2024-12-31, and as of New Year, what’s our new focus that will govern what we will do for the next couple of months as we work on the next release of Kova?
Changing the Memory model to use GlobalAlloc
To fur...]]></description><link>https://news.mufi-lang.org/mufiz-v080-is-released-whats-the-new-focus</link><guid isPermaLink="true">https://news.mufi-lang.org/mufiz-v080-is-released-whats-the-new-focus</guid><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Wed, 01 Jan 2025 18:34:58 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/HxeBUWUiA1A/upload/e5e738b33c2ce764c69ef8058a101198.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>MufiZ Ruby release has been released as of 2024-12-31, and as of New Year, what’s our new focus that will govern what we will do for the next couple of months as we work on the next release of Kova?</p>
<h2 id="heading-changing-the-memory-model-to-use-globalalloc">Changing the Memory model to use GlobalAlloc</h2>
<p>To further remove our C dependency, we need to move away from using <code>malloc</code> and instead put everything under our <code>GlobalAlloc</code> which uses Zig’s General Purpose Allocator. This will help us determine any memory leaks and double frees that exist in the language and also will be a good step towards converting types from being <code>[*c]T</code> to a Zig pointer, depending on how it may be needed to be used, it could be a slice <code>[]T</code>, an optional multi-item pointer <code>?[*]T</code>.</p>
<h2 id="heading-make-fvec-dynamic-the-default-array-implementation">Make FVec Dynamic the default Array Implementation.</h2>
<p>Once we have FVec using <code>[]f64</code>, we can start making it dynamic and better using SIMD for binary operations a lot easier. This should help improve the ergonomics of the structure. Once we clean up many of the C pointer types and extern structures, we can start moving all structure functions as boundary methods, making the language work a lot easier.</p>
<h2 id="heading-move-cstd-to-stdlib">Move CStd to Stdlib</h2>
<p>Let’s move all of the Cstd stuff, which revolves around objects mainly, to stdlib, and this will give us an opportunity to organize it further.</p>
<p>This doesn’t sound too much, but will probably take a couple of months to handle since I am the only one who works on this, but hopefully doing this will make it easier and less overwhelming on myself.</p>
]]></content:encoded></item><item><title><![CDATA[The Journey to Rubies!]]></title><description><![CDATA[MufiZ v0.8.0 Ruby will be coming out today, and with it, we mark a great success! We have converted all 7000 lines of C code into Zig, so how was the process…it was painful, and there is still more cleanup, which I will be doing over time in future v...]]></description><link>https://news.mufi-lang.org/the-journey-to-rubies</link><guid isPermaLink="true">https://news.mufi-lang.org/the-journey-to-rubies</guid><category><![CDATA[ziglang]]></category><category><![CDATA[C]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Tue, 31 Dec 2024 19:40:16 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/p8w7krXVY1k/upload/2c51648b93b699c447c673f2f22f9cfe.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>MufiZ v0.8.0 Ruby will be coming out today, and with it, we mark a great success! We have converted all 7000 lines of C code into Zig, so how was the process…it was painful, and there is still more cleanup, which I will be doing over time in future versions as we remove more of the C dependency.</p>
<h2 id="heading-step-1-translate-and-link">Step 1: Translate and Link</h2>
<p>The beginning of the transformation was translating all the C files into Zig files using Zig’s <code>translate-c</code> command. This tool is so powerful and amazing, so from there, we started adding it to the <code>build.zig</code> file linked to the Zig file and removed the C linking.</p>
<h2 id="heading-step-2-remove-a-lot-of-f-bindings">Step 2: REMOVE A LOT OF F- BINDINGS</h2>
<p>Once we confirm linking is working fine, we start to remove the excessive bindings and have only the core stuff in the file, and begin importing. I wish Zig had like a <code>import *</code> command, I really do, because it would’ve saved me so much time.</p>
<p>During this stage, which was the longest, I had to deal with hundreds of errors, and thanks to my editor, Zed, and multiline buffering, I was able to handle the errors much more easily.</p>
<p>Also, during this stage, I realized how many integer overflow cases were just not handled in C because, well, it was never reported to me. So, those I had to handle in Zig made me happier about this porting experience.</p>
<h2 id="heading-step-3-cleanupwell-try-to">Step 3: Cleanup…well try to</h2>
<p>Yeah, I tried to clean up as much as I could, but there’s still stuff that I will have to do. During this stage, I found our array type acting very strangely, and we didn’t need the design; it was better to have FloatVector. Matrix is broken so got rid of that and once the research is in, we will put it back in, also once we switch our memory model to use Zig’s allocator, we can breathe easier.</p>
<h2 id="heading-conclusion">Conclusion</h2>
<p>There is still a lot to improve in our code base, honestly being a solo developer maintaining 10000 lines of code is overwhelming, but that’s why over releases I will be continuously fixing the code, some releases will have new features, others will just be small fixes.</p>
<p>But the main work has been completed, and having it all under a single language makes my life much easier and less sparse. We can finally better organize the language and make it more DRY. Compiling will be faster due to avoiding linking, and we can take advantage of more of the Zig features and start to support more toolchains once we remove that C dependency.</p>
]]></content:encoded></item><item><title><![CDATA[To Break For Now]]></title><description><![CDATA[I have embarked myself on quite a task, to translate and convert the 7000 LINES OF C CODE to Zig, and while a lot of the hard work was done simply with zig translate-c, when hooking everything up, it doesn't just work like how linking everything does...]]></description><link>https://news.mufi-lang.org/to-break-for-now</link><guid isPermaLink="true">https://news.mufi-lang.org/to-break-for-now</guid><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Thu, 29 Aug 2024 01:48:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/3a7SyW0h8vQ/upload/c5cbb756b4504c0515a90552cd43f855.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I have embarked myself on quite a task, to translate and convert the 7000 LINES OF C CODE to Zig, and while a lot of the hard work was done simply with <code>zig translate-c</code>, when hooking everything up, it doesn't just work like how linking everything does. So whats the current progress?</p>
<p>Well it compiles...butttt without a standard library, runtime error reporting is off, and there is possibly an integer overflow issue with the VM garbage collector, so how do we handle this?</p>
<p>Well first thing to make everything better is moving away from C ABI, which is very hard, because everything is currently in C ABI, but we must to have things work! And so we can move away from <code>malloc</code> and to Zig's general purpose allocator which has better safety features.</p>
<p>I don't expect myself to complete this task in a couple of weeks, it'll probably be a few months, where was is happy news, the next is just cussing, and the other I post another update :)</p>
]]></content:encoded></item><item><title><![CDATA[Current Progress with `v0.8.0`]]></title><description><![CDATA[MufiZ's next version is coming with some big changes such as an incremental GC, but the last couple of releases haven't tried to do the initial goal we had, converting the compiler to Zig. It had a stalemate when it was hard converting many core comp...]]></description><link>https://news.mufi-lang.org/current-progress-with-v080</link><guid isPermaLink="true">https://news.mufi-lang.org/current-progress-with-v080</guid><category><![CDATA[Open Source]]></category><category><![CDATA[zig]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Wed, 31 Jul 2024 23:28:26 GMT</pubDate><content:encoded><![CDATA[<p>MufiZ's next version is coming with some big changes such as an incremental GC, but the last couple of releases haven't tried to do the initial goal we had, converting the compiler to Zig. It had a stalemate when it was hard converting many core components in Zig and the linking working, but now we managed to translate quite a bit using the <code>translate-c</code> command Zig provides.</p>
<p>At the time of writing, we have successfully translated the following:</p>
<ul>
<li><p><code>chunk.c</code>: In charge of the <code>Chunk</code> and <code>OpCodes</code></p>
</li>
<li><p><code>compiler.c</code>: Handles the workings of the compiler, such as statements, variables, etc.</p>
</li>
<li><p><code>cstd.c</code>: Std components written in the C side, mainly object builtins (plan to sync with stdlib.zig)</p>
</li>
<li><p><code>memory.c</code>: Handles all memory operations</p>
</li>
<li><p><code>debug.c</code>: Handles the debugging traces</p>
</li>
<li><p><code>value.c</code>: The <code>Value</code> type in MufiZ</p>
</li>
</ul>
<p>Where do we hope to go from here:</p>
<ul>
<li><p>We hope to get all of the codebase in Zig, where we can then slowly convert the types to proper Zig.</p>
</li>
<li><p>Remove the linking, and be able to just <code>@import</code> everything</p>
</li>
<li><p>For the moment, regress our SIMD ambitions and temporarily remove <code>FloatVector</code>, this will help us more easily convert <code>object.c</code></p>
</li>
</ul>
<p>There is a lot of work that needs to be done, as a solo developer working on this project, there is a lot to wrap my head around, but I am hoping that this release, will be the first fully Zig release.</p>
]]></content:encoded></item><item><title><![CDATA[A New Incremental GC]]></title><description><![CDATA[We haven't touched MufiZ's memory operations until now, and this comes with a sweeping change! We have transitioned from a mark-sweep algorithm to an incremental GC algorithm, which should help improve memory operations in the language.
To look at ho...]]></description><link>https://news.mufi-lang.org/a-new-incremental-gc</link><guid isPermaLink="true">https://news.mufi-lang.org/a-new-incremental-gc</guid><category><![CDATA[C]]></category><category><![CDATA[memory-management]]></category><category><![CDATA[Open Source]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Sun, 07 Jul 2024 21:25:25 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/RkIsyD_AVvc/upload/4797c3b616a9b5fdf8642b5b98068f7f.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>We haven't touched MufiZ's memory operations until now, and this comes with a sweeping change! We have transitioned from a mark-sweep algorithm to an incremental GC algorithm, which should help improve memory operations in the language.</p>
<p>To look at how it operates, consider the following visuals:</p>
<pre><code class="lang-yaml">   <span class="hljs-string">+-------------------+</span>
   <span class="hljs-string">|</span>       <span class="hljs-string">START</span>       <span class="hljs-string">|
   +-------------------+
            |
            v
   +-------------------+
   |      GC_IDLE      |&lt;-----------------+
   +-------------------+                  |
            |                             |
            v                             |
   +-------------------+                  |
   |   GC_MARK_ROOTS   |                  |
   |                   |                  |
   | +---------------+ |                  |
   | |  Mark Stack   | |                  |
   | +---------------+ |                  |
   |         |         |                  |
   |         v         |                  |
   | +---------------+ |                  |
   | | Mark Frames   | |                  |
   | | Mark Globals  | |                  |
   | | Mark Strings  | |                  |
   | | Mark Upvalues | |                  |
   | +---------------+ |                  |
   +-------------------+                  |
            |                             |
            v                             |
   +-------------------+                  |
   |    GC_TRACING     |                  |
   |                   |                  |
   | +---------------+ |                  |
   | |  Gray Stack   | |                  |
   | |   +-+  +-+    | |                  |
   | |   |o|  |o|    | |                  |
   | |   +-+  +-+    | |                  |
   | +---------------+ |                  |
   |         |         |                  |
   |         v         |                  |
   | +---------------+ |                  |
   | | Blacken Objs  | |                  |
   | +---------------+ |                  |
   +-------------------+                  |
            |                             |
            v                             |
   +-------------------+                  |
   |    GC_SWEEPING    |                  |
   |                   |                  |
   | +---------------+ |                  |
   | | Object List   | |                  |
   | | [o]-&gt;[o]-&gt;[o] | |                  |
   | +---------------+ |                  |
   |         |         |                  |
   |         v         |                  |
   | +---------------+ |                  |
   | |  Free/Unmark  | |                  |
   | +---------------+ |                  |
   +-------------------+                  |
            |                             |
            v                             |
   +-------------------+                  |
   |    Update GC      |                  |
   |    Threshold      |------------------+
   +-------------------+
            |
            v
   +-------------------+
   |       END         |
   +-------------------+</span>
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1720387339250/93cf3e58-5fc0-480e-a8cd-b4f529ce607b.png" alt class="image--center mx-auto" /></p>
<p>As you can see, we can pause and resume at any state to allow program execution, which should allow for more performance and better latency. Our goal is to find an actual number of these to see how else we can further optimize our structures within our language.</p>
]]></content:encoded></item><item><title><![CDATA[MufiZ `v0.7.0` (Jade) Released!!!]]></title><description><![CDATA[This release has been in the works for months, and I am happy to be able to finalize it, which has brought many fixes towards builtins via our test suite, which we hope to expand further. We also add syntax for creating arrays and float vectors using...]]></description><link>https://news.mufi-lang.org/mufiz-v070-jade-released</link><guid isPermaLink="true">https://news.mufi-lang.org/mufiz-v070-jade-released</guid><category><![CDATA[zig]]></category><category><![CDATA[C]]></category><category><![CDATA[Open Source]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Sun, 07 Jul 2024 00:53:17 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/FzyZj0wK3k8/upload/f3bac29bf4e5e414a3e6fb01434558f7.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This release has been in the works for months, and I am happy to be able to finalize it, which has brought many fixes towards builtins via our test suite, which we hope to expand further. We also add syntax for creating arrays and float vectors using <code>[ ]</code> and <code>{ }</code> respectively, while being a lot less strict towards how you express numbers, although <code>assert</code> still strict. We also add ARM64-specific SIMD support to float vectors.</p>
<p>With this new release, we will soon update all package managers to express this change and update our website and VSCode extension with the latest built-ins.</p>
<hr />
<h1 id="heading-release-notes-for-jade-070">Release Notes for Jade (0.7.0)</h1>
<ul>
<li><p>Started on April 24th 2024.</p>
</li>
<li><p>Released on July 6th 2024.</p>
</li>
</ul>
<h2 id="heading-new-features">New Features</h2>
<ul>
<li><p>New Array and Float Vector semantics using <code>[ ]</code> and <code>{ }</code> respectively.</p>
<ul>
<li>Done in commits <a target="_blank" href="https://github.com/Mustafif/MufiZ/commit/4f7831db35dbf55f0772b99c2a4bfbd5691d687d">4f7831d</a> and <a target="_blank" href="https://github.com/Mustafif/MufiZ/commit/a586b3e0a068ea6c1faa2a8be43e1fd3ea92022c">a586b3e</a>.</li>
</ul>
</li>
<li><p>Iterators for Array and Float Vectors.</p>
<ul>
<li>Done in commits <a target="_blank" href="https://github.com/Mustafif/MufiZ/commit/416e9153882c26c6e4ff3a32f6fd4ca5628e4253">416e915</a>, <a target="_blank" href="https://github.com/Mustafif/MufiZ/commit/2311323aea2358a68d001e33c7a01309f9532c6e">2311323</a> and <a target="_blank" href="https://github.com/Mustafif/MufiZ/commit/fa0b30586b1d047eee483caaeeefdfd3b76d0313">fa0b305</a></li>
</ul>
</li>
</ul>
<h2 id="heading-other-changes">Other Changes</h2>
<ul>
<li><p>Fixed Vec3 builtin functions that were broken in <code>v0.6.0</code><a target="_blank" href="https://github.com/Mustafif/MufiZ/commit/7fbc1b62293d3b9ed1d58869fb96f12cd2024ff1">7fbc1b6</a></p>
</li>
<li><p>Changed default hashing algorithm to <code>cityhash64</code>: <a target="_blank" href="https://github.com/Mustafif/MufiZ/commit/8734e1be3ea8115d7127989e863823635662c2d7">8734e1b</a></p>
</li>
<li><p>Added helpful boolean macros for object type checking in builtin functions (cstd): <a target="_blank" href="https://github.com/Mustafif/MufiZ/commit/5585a50607b38a10c02d35454b5abb48754b4d43">55585a50</a></p>
</li>
<li><p>Updated MufiZ's interpret error to be treated as a Zig error when running a file: <a target="_blank" href="https://github.com/Mustafif/MufiZ/commit/4f7f9fdaf69ec6d64da16d5733622b050e342fa1">4f7f9fd</a></p>
</li>
<li><p>Adjusted <code>Table</code> implementation to use lazy deletion instead of tombstoning: <a target="_blank" href="https://github.com/Mustafif/MufiZ/commit/bddabfa6a01f4f8efd351a6cbe767edc75e8a422">bddabfa</a></p>
</li>
<li><p>Updated Zig version to <code>v0.13.0</code>: <a target="_blank" href="https://github.com/Mustafif/MufiZ/commit/788fbf2f92cb435f1c6af66e94f10dccb95e295d">788fbf2</a></p>
</li>
<li><p>Updated to clap <code>v0.9.1</code></p>
</li>
<li><p>Added Arm SIMD support using Neon intrinsics <a target="_blank" href="https://github.com/Mustafif/MufiZ/commit/fa0b30586b1d047eee483caaeeefdfd3b76d0313">fa0b305</a></p>
</li>
<li><p>Added Test Suites that brought plenty of fixes to builtins</p>
</li>
<li><p>Switched <code>stdlib_error</code> to make use of <code>runtimeError</code> so that it can also provide line numbers to the user.</p>
</li>
</ul>
<h2 id="heading-added-builtin-functions">Added Builtin Functions</h2>
<ul>
<li><p><code>assert</code>: Checks if the given condition is true; if not, it panics.</p>
</li>
<li><p><code>simd_stat</code>: Checks if SIMD is supported on the current platform.</p>
</li>
<li><p><code>iter</code>: Creates an iterator from an array or a float vector.</p>
</li>
<li><p><code>next</code>: Advances the iterator and returns the next element.</p>
</li>
<li><p><code>has_next</code>: Checks if the iterator has more elements.</p>
</li>
<li><p><code>reset</code>: Resets the iterator to the beginning.</p>
</li>
<li><p><code>skip</code>: Skips the next <code>n</code> elements.</p>
</li>
</ul>
<p><a target="_blank" href="https://github.com/Mustafif/MufiZ/releases/tag/v0.7.0">View Github Release</a></p>
]]></content:encoded></item><item><title><![CDATA[MufiZ Jade Upgrades to Zig `v0.13.0`]]></title><description><![CDATA[As of yesterday, Zig v0.13.0 has been released, and so I went onto MufiZ, changed the minimum supported to 0.13.0 on build.zig, and update zig-clap to 0.8.1 from my fork on it, and while I did need to fix some of my C code (irrelevant to the actual Z...]]></description><link>https://news.mufi-lang.org/mufiz-jade-upgrades-to-zig-v0130</link><guid isPermaLink="true">https://news.mufi-lang.org/mufiz-jade-upgrades-to-zig-v0130</guid><category><![CDATA[news]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Sat, 08 Jun 2024 15:59:40 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/yGPxCYPS8H4/upload/53e31b9e3e00478ade7314597dfac699.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As of yesterday, Zig <code>v0.13.0</code> has been released, and so I went onto MufiZ, changed the minimum supported to <code>0.13.0</code> on <code>build.zig</code>, and update <code>zig-clap</code> to <code>0.8.1</code> from my fork on it, and while I did need to fix some of my C code (irrelevant to the actual Zig release), it just compiled!</p>
<p>While I do expect that there will be some unexpected behavior lurking out there that needs to be adjusted, which is why we are creating a test suite for this release, this has been the easiest migration so far.</p>
<p>This release also includes toolchain upgrades in the Zig compiler, such as going to LLVM 18, glibc 2.39, and musl 1.2.5. I am happy we can easily take advantage of this new compiler so soon. This is another reason to be excited about the upcoming Jade Release, which still needs a few months of baking.</p>
]]></content:encoded></item><item><title><![CDATA[New Apt/Yum Repos Using Package Cloud]]></title><description><![CDATA[For more streamlined management of Linux packages, I've opted to transition from hosting the apt repo on GitHub to the efficient Package Cloud for apt/yum package managers. This change promises to simplify our processes and enhance our productivity. ...]]></description><link>https://news.mufi-lang.org/new-aptyum-repos-using-package-cloud</link><guid isPermaLink="true">https://news.mufi-lang.org/new-aptyum-repos-using-package-cloud</guid><category><![CDATA[news]]></category><category><![CDATA[Linux]]></category><category><![CDATA[apt]]></category><category><![CDATA[yum]]></category><category><![CDATA[debian]]></category><category><![CDATA[rpm]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Fri, 17 May 2024 20:00:55 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/q8kR_ie6WnI/upload/76dc9108c3eebd85134a9d89a51436c7.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>For more streamlined management of Linux packages, I've opted to transition from hosting the apt repo on GitHub to the efficient Package Cloud for apt/yum package managers. This change promises to simplify our processes and enhance our productivity. Currently, we only support the following OS:</p>
<p><code>RPM</code>:</p>
<ul>
<li><p>Fedora 38/39/40</p>
</li>
<li><p>OpenSuse 42.3</p>
</li>
</ul>
<p><code>Deb</code>:</p>
<ul>
<li><p>Ubuntu Jammy/Noble</p>
</li>
<li><p>Debian Bookworm/Trixie/Forky</p>
</li>
</ul>
<h2 id="heading-installation-instructions">Installation Instructions</h2>
<p>For those wanting to install <code>mufiz</code> version <code>v0.6.0</code>, you can follow these instructions:</p>
<pre><code class="lang-bash"><span class="hljs-comment"># For Ubuntu</span>
$ curl -s https://packagecloud.io/install/repositories/Mustafif/MufiZ/script.deb.sh | sudo bash
$ sudo apt-get install mufiz=0.6.0
</code></pre>
<p>For Debian Packages, we support the following architectures on here:</p>
<ul>
<li><p><code>amd64</code></p>
</li>
<li><p><code>i386</code></p>
</li>
<li><p><code>arm64</code></p>
</li>
<li><p><code>mipsel</code></p>
</li>
<li><p><code>mips64el</code></p>
</li>
<li><p><code>mips</code></p>
</li>
<li><p><code>powerpc</code></p>
</li>
</ul>
<pre><code class="lang-bash"><span class="hljs-comment"># For Fedora</span>
$ curl -s https://packagecloud.io/install/repositories/Mustafif/MufiZ/script.rpm.sh | sudo bash
$ sudo yum install mufiz-0.6.0-1.{arch}
</code></pre>
<p>For Fedora <code>{arch}</code> can be replaced with your respective supported architecture:</p>
<ul>
<li><p><code>x86_64</code></p>
</li>
<li><p><code>i386</code></p>
</li>
<li><p><code>aarch64</code></p>
</li>
<li><p><code>ppc64</code></p>
</li>
<li><p><code>ppc64le</code></p>
</li>
<li><p><code>mipsel</code></p>
</li>
<li><p><code>mips64el</code></p>
</li>
<li><p><code>mips64</code></p>
</li>
<li><p><code>mips</code></p>
</li>
<li><p><code>riscv64</code></p>
</li>
</ul>
<h2 id="heading-archival-plan">Archival Plan</h2>
<p>Because I'd rather not pay for <code>package_cloud</code>, I will only be keeping the top 4 versions (beginning with <code>v0.6.0</code>) at a time on the platform, of course, all packages are available on Github releases; this helps me keep space for the next versions since each release contains <strong>75 ARCHIVES TO KEEP!!!</strong></p>
<p>For those wanting to see the little client I made to help me download and upload the deb/rpm packages can be found at <a target="_blank" href="https://github.com/Mustafif/mufiz_pkg">https://github.com/Mustafif/mufiz_pkg</a>, where the client is built in Dart, because I've started learning it.</p>
]]></content:encoded></item><item><title><![CDATA[Zigma Docs are Out!]]></title><description><![CDATA[While we are still working on implementing a fair amount of techniques for our initial release of Zigma, where we hope it will be used either in MufiZ v0.7.0 or v0.8.0 I am happy to say that we have officially deployed our Zigma documentation using Z...]]></description><link>https://news.mufi-lang.org/zigma-docs-are-out</link><guid isPermaLink="true">https://news.mufi-lang.org/zigma-docs-are-out</guid><category><![CDATA[Math]]></category><category><![CDATA[ziglang]]></category><category><![CDATA[news]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Sun, 12 May 2024 19:31:46 GMT</pubDate><content:encoded><![CDATA[<p>While we are still working on implementing a fair amount of techniques for our initial release of Zigma, where we hope it will be used either in MufiZ <code>v0.7.0</code> or <code>v0.8.0</code> I am happy to say that we have officially deployed our Zigma documentation using Zig's built-in documentation on GitHub pages!</p>
<p>These documents will be updated with the current implemented methods. We have added explanations of each of the fields and such for our methods.</p>
<p>All of this can be found at <a target="_blank" href="https://zigma.mustafif.com/">zigma.mustafif.com</a>!!!</p>
]]></content:encoded></item><item><title><![CDATA[New Initiatives around the MufiZ Language]]></title><description><![CDATA[As I've mentioned, we want to ensure that the MufiZ language is equipped to excel at mathematical computation as we build on it. Thus, we hope to be able to build on some of these technique branches, figure them out, find the results, and refine them...]]></description><link>https://news.mufi-lang.org/new-initiatives-around-the-mufiz-language</link><guid isPermaLink="true">https://news.mufi-lang.org/new-initiatives-around-the-mufiz-language</guid><category><![CDATA[news]]></category><category><![CDATA[C]]></category><category><![CDATA[ziglang]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Sat, 11 May 2024 23:01:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/h3kuhYUCE9A/upload/c4309ac9b2854117e9a1ac10c1aa3896.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>As I've mentioned, we want to ensure that the MufiZ language is equipped to excel at mathematical computation as we build on it. Thus, we hope to be able to build on some of these technique branches, figure them out, find the results, and refine them, then port them back into the language or build them as packages that the language can import.</p>
<p>Our first initiative is creating a great Matrix implementation and algorithms following numeric stability and linear algebra. This work is being done in the <a target="_blank" href="https://github.com/Mustafif/MatrixAlgo">MatrixAlgo</a> repository with a collaborative effort between myself and my friend <a target="_blank" href="https://github.com/GriffinAshby01">GriffinAshby01.</a></p>
<p>The second initiative will help the MufiZ project and can be used by anyone; once developed, this project will be named. <a target="_blank" href="https://github.com/Mustafif/Zigma">Zigma</a>, and its goal is to host many different numerical methods for approximating integrals, derivatives, etc.</p>
<p>To support us, consider contributing directly to these projects or <a target="_blank" href="https://github.com/sponsors/Mustafif?o=esb">sponsoring</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Indexing Proposal in Jade Release]]></title><description><![CDATA[In MufiZ's v0.7.0 Jade Release Milestone: I made an issue of bringing indexing support to Arrays and Float Vectors. This issue can be found [here](https://github.com/Mustafif/MufiZ/issues/22).
Here's further thought of how we can implement this; howe...]]></description><link>https://news.mufi-lang.org/indexing-proposal-in-jade-release</link><guid isPermaLink="true">https://news.mufi-lang.org/indexing-proposal-in-jade-release</guid><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Sun, 28 Apr 2024 00:00:05 GMT</pubDate><content:encoded><![CDATA[<p>In MufiZ's <code>v0.7.0</code> Jade Release Milestone: I made an issue of bringing indexing support to Arrays and Float Vectors. This issue can be found [here](<a target="_blank" href="https://github.com/Mustafif/MufiZ/issues/22">https://github.com/Mustafif/MufiZ/issues/22</a>).</p>
<p>Here's further thought of how we can implement this; however with more time to think about it after writing the initial issue, we will not be adding an <code>OP_INDEX</code> instruction, we will be adding two new instructions: <code>OP_INDEX_GET</code> and <code>OP_INDEX_SET</code> . To describe these better, let's look at an example:</p>
<pre><code class="lang-c">var a = <span class="hljs-built_in">array</span>(<span class="hljs-number">5</span>);
push(a, <span class="hljs-number">1</span>, <span class="hljs-number">2</span>, <span class="hljs-number">3</span>, <span class="hljs-number">4</span>, <span class="hljs-number">5</span>);

<span class="hljs-keyword">for</span>(var i=<span class="hljs-number">0</span>; i &lt; <span class="hljs-number">5</span>; i++){
    <span class="hljs-comment">// update value by 1 then print </span>
    a(i) += <span class="hljs-number">1</span>; <span class="hljs-comment">// will use OP_INDEX_SET</span>
    <span class="hljs-function">print <span class="hljs-title">a</span><span class="hljs-params">(i)</span></span>; <span class="hljs-comment">// will use OP_INDEX_GET</span>
}
</code></pre>
<p>So <code>OP_INDEX_SET</code> is used to mutably set a value in the array at the given index (granted it in bounds), while <code>OP_INDEX_GET</code> it will be used to return the value associated at the given index.</p>
<p>The difficulty is recognizing when to use it, which involves checking if we are mutating the value. The thing with <code>OP_INDEX_SET</code> this is the expression requires an assignment operator to the right. While <code>OP_INDEX_GET</code> it can be assumed to be used anytime else.</p>
<p>The grammar can look like the following:</p>
<pre><code class="lang-c">OP_INDEX_GET: &lt;ident&gt; &lt;left paren&gt; &lt;integer constant&gt; &lt;right paren&gt; &lt;semicolon&gt;
           Translated: &lt;ident&gt; ( &lt;<span class="hljs-keyword">int</span> <span class="hljs-keyword">const</span>&gt; ) ; 
OP_INDEX_SET: &lt;ident&gt; &lt;left paren&gt; &lt;integer constant&gt; &lt;right paren&gt; &lt;assignment&gt;
&lt;expression&gt; &lt;semicolon&gt; 
            Translated: &lt;ident&gt; ( &lt;<span class="hljs-keyword">int</span> <span class="hljs-keyword">const</span>&gt; ) &lt;assign&gt; &lt;expr&gt;;
</code></pre>
<p>In this grammar, we assume the following, <code>&lt;ident&gt;</code> is an identifier where the type is either <code>ObjArray*</code> or <code>FloatVector*</code>. Another is <code>&lt;assign&gt;</code> can be either one of the following:</p>
<ul>
<li><p><code>=</code></p>
</li>
<li><p><code>+=</code></p>
</li>
<li><p><code>-=</code></p>
</li>
<li><p><code>*=</code></p>
</li>
<li><p><code>/=</code></p>
</li>
</ul>
<p>I hope to slowly add this support into the Jade release and add in the <code>end</code> keyword inspired by Matlab for indexing. It will work like the following:</p>
<pre><code class="lang-c">OP_END: 
    &lt;ident&gt; ( &lt;end&gt; ) ...
&lt;end&gt; =&gt; &lt;ident&gt; =&gt; Array Type =&gt; <span class="hljs-keyword">return</span> count<span class="hljs-number">-1</span> into <span class="hljs-built_in">stack</span>
</code></pre>
]]></content:encoded></item><item><title><![CDATA[Package Manager Support]]></title><description><![CDATA[With v0.6.0 we wanted to make it easier for you to install Mufi-Lang, and our goal was to at least support one package manager for each operating system. So far, we have successfully completed this goal and have introduced three new Github repos to a...]]></description><link>https://news.mufi-lang.org/package-manager-support</link><guid isPermaLink="true">https://news.mufi-lang.org/package-manager-support</guid><category><![CDATA[news]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Sat, 27 Apr 2024 20:44:31 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/q8kR_ie6WnI/upload/3f9f36b9b25824e832e10b14c98573af.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>With <code>v0.6.0</code> we wanted to make it easier for you to install Mufi-Lang, and our goal was to at least support one package manager for each operating system. So far, we have successfully completed this goal and have introduced three new Github repos to accomplish this goal. This allows us to be transparent with what's being installed and allows others to contribute if they feel something else can be added to provide extra help.</p>
<p>New Repos:</p>
<ul>
<li><p><a target="_blank" href="https://github.com/Mustafif/MufiZ-APT">https://github.com/Mustafif/MufiZ-APT</a></p>
<ul>
<li>This repo contains all of our <code>.deb</code> files for the <code>apt</code> package manager for Debian-based Linux distros.</li>
</ul>
</li>
<li><p><a target="_blank" href="https://github.com/Mustafif/mufi-bucket">https://github.com/Mustafif/mufi-bucket</a></p>
<ul>
<li><p>This is our own maintained bucket that contains <code>MufiZ</code> Windows systems, and supports installation for <code>x86_64</code>, <code>x86</code> and <code>arm64</code>.</p>
</li>
<li><p>This is for the <code>scoop</code> package manager, and I found this manager to be a lot better than the official <code>winget</code> tool.</p>
</li>
</ul>
</li>
<li><p><a target="_blank" href="https://github.com/Mustafif/homebrew-mufi">https://github.com/Mustafif/homebrew-mufi</a></p>
<ul>
<li>This is our maintained tap for the <code>brew</code> package manager and supports installing both arm and intel Macs, as well as<br />  Linux.</li>
</ul>
</li>
</ul>
<p>I hope these efforts help make everyone's lives easier. It was a fun experience learning how to make custom repositories for these managers. Any other multi-platform project I work on will be hosted on these.</p>
]]></content:encoded></item><item><title><![CDATA[MufiZ v0.6.0 Released!]]></title><description><![CDATA[I am happy to announce the next release of MufiZ, the Mars release. It brings massive changes and is an exciting new release that shows how much we can improve the language.
Release Notes for Mars (0.6.0)

Started on February 21st 2024.

Released on ...]]></description><link>https://news.mufi-lang.org/mufiz-v060-released</link><guid isPermaLink="true">https://news.mufi-lang.org/mufiz-v060-released</guid><category><![CDATA[news]]></category><category><![CDATA[zig]]></category><category><![CDATA[C]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Tue, 23 Apr 2024 18:20:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/cckf4TsHAuw/upload/639ee8b5077647c1c57908f209aae7b1.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>I am happy to announce the next release of MufiZ, the Mars release. It brings massive changes and is an exciting new release that shows how much we can improve the language.</p>
<h1 id="heading-release-notes-for-mars-060"><strong>Release Notes for Mars (0.6.0)</strong></h1>
<ul>
<li><p>Started on February 21st 2024.</p>
</li>
<li><p>Released on April 23rd 2024.</p>
</li>
</ul>
<h2 id="heading-new-features"><strong>New Features</strong></h2>
<ul>
<li><p>Added support for <code>Matrix</code> data type.</p>
</li>
<li><p>Added support for <code>FVector</code> data type.</p>
<ul>
<li><p>This data type is a fixed array of floating point numbers that is able to use SIMD instructions.</p>
</li>
<li><p>This data type is used to represent vectors in 3D space.</p>
</li>
</ul>
</li>
<li><p>Added network support via being able to send CRUD requests.</p>
<ul>
<li>This is able to be done using native Zig networking.</li>
</ul>
</li>
<li><p>Added exponent token <code>^</code></p>
</li>
<li><p>Proper random number generation with either uniform or normal distribution.</p>
</li>
</ul>
<h2 id="heading-other-changes"><strong>Other Changes</strong></h2>
<ul>
<li><p>Lots of code cleanup and added more documentation.</p>
</li>
<li><p>More functionality in the language with added builtin functions.</p>
</li>
<li><p>Updated to <code>v0.8.0</code> of <code>clap</code> for the CLI.</p>
</li>
<li><p>Added features to optionally disable networking and filesystem access, and to enable sandboxing (REPL only).</p>
</li>
<li><p>Optimize your code with the new <code>FVector</code> data type, which can perform operations 3x faster than the <code>Array</code> data type.</p>
</li>
<li><p>Updated <code>what_is</code> function to be able to identify any Object type.</p>
</li>
<li><p>Updated <code>build_multi</code> 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.</p>
</li>
<li><p>Adding support for package managers like <code>apt</code> and <code>scoop</code> to install MufiZ.</p>
</li>
<li><p>Switched from using <code>FNV-1a</code> to <code>xxhash64</code> for hashing.</p>
<ul>
<li>Will do a benchmark in the future to test the performance between <code>fnv1a</code>, <code>cityhash64</code> and <code>xxhash64</code>.</li>
</ul>
</li>
<li><p>Switched to building targets: <code>arm-linux</code> on Debug optimization due to an LLD issue.</p>
</li>
<li><p>Added <code>x86</code> target support.</p>
</li>
</ul>
<h2 id="heading-added-builtin-functions"><strong>Added Builtin Functions</strong></h2>
<h3 id="heading-math"><strong>Math</strong></h3>
<ul>
<li><p><code>rand()</code>: Generate a random number between 0 and 1.</p>
</li>
<li><p><code>randn()</code>: Generate a random number with a normal distribution.</p>
</li>
</ul>
<h3 id="heading-networking"><strong>Networking</strong></h3>
<ul>
<li><p><code>get_req()</code>: Send a GET request to a server.</p>
</li>
<li><p><code>post_req()</code>: Send a POST request to a server.</p>
</li>
<li><p><code>put_req()</code>: Send a PUT request to a server.</p>
</li>
<li><p><code>del_req()</code>: Send a DELETE request to a server.</p>
</li>
</ul>
<h3 id="heading-collections"><strong>Collections</strong></h3>
<ul>
<li><p><code>matrix()</code>: Create a matrix with the given dimensions.</p>
</li>
<li><p><code>fvec()</code>: Create a vector with the given size or array.</p>
</li>
<li><p><code>linspace()</code>: Create a float vector of evenly spaced numbers.</p>
</li>
<li><p><code>slice()</code>: Get a subarray of an array.</p>
</li>
<li><p><code>splice()</code>: Remove a subarray from an array.</p>
</li>
<li><p><code>sum()</code>: Get the sum of a list.</p>
</li>
<li><p><code>mean()</code> Get the mean of a list.</p>
</li>
<li><p><code>std()</code> Get the standard deviation of a list.</p>
</li>
<li><p><code>var()</code> Get the variance of a list.</p>
</li>
<li><p><code>maxl()</code> Get the maximum value of a list.</p>
</li>
<li><p><code>minl()</code> Get the minimum value of a list.</p>
</li>
<li><p><code>workspace()</code>: Prints all global variables.</p>
</li>
<li><p><code>interp1()</code>: Linear interpolation between two points.</p>
</li>
<li><p><code>dot()</code>: Get the dot product of two vectors.</p>
</li>
<li><p><code>cross()</code>: Get the cross product of two vectors.</p>
</li>
<li><p><code>norm()</code>: Get the norm of a vector.</p>
</li>
<li><p><code>proj()</code>: Get the projection of one vector onto another.</p>
</li>
<li><p><code>reflect()</code>: Get the reflection of one vector off another.</p>
</li>
<li><p><code>reject()</code>: Get the rejection of one vector off another.</p>
</li>
<li><p><code>refract()</code>: Get the refraction of one vector through another.</p>
</li>
<li><p><code>angle()</code>: Get the angle between two vectors.</p>
</li>
<li><p><code>set_row()</code>: Set a row in a matrix.</p>
</li>
<li><p><code>set_col()</code>: Set a column in a matrix.</p>
</li>
<li><p><code>set()</code>: Set a value in a matrix.</p>
</li>
<li><p><code>kolasa()</code>: Get the Kolasa matrix</p>
</li>
<li><p><code>rref()</code>: Get the reduced row echelon form of a matrix.</p>
</li>
<li><p><code>rank()</code>: Get the rank of a matrix.</p>
</li>
<li><p><code>det()</code>: Get the determinant of a matrix.</p>
</li>
<li><p><code>transpose()</code>: Get the transpose of a matrix.</p>
</li>
<li><p><code>lu()</code>: Get the LU decomposition of a matrix.</p>
</li>
</ul>
<h2 id="heading-removals"><strong>Removals</strong></h2>
<ul>
<li><p>Removed <code>snap</code> packaging support</p>
</li>
<li><p>Removed <code>wasm32-wasi</code> target in <code>build_multi.zig</code> script, can still be built from source with:</p>
<ul>
<li><code>zig build -Doptimize=ReleaseSmall -Dtarget=wasm32-wasi -Denable_fs=false -Denable_net=false -Dsandbox=true</code></li>
</ul>
</li>
</ul>
<p>Check Out the Release at [Github](<a target="_blank" href="https://github.com/Mustafif/MufiZ/releases/tag/v0.6.0">https://github.com/Mustafif/MufiZ/releases/tag/v0.6.0</a>) today!</p>
]]></content:encoded></item><item><title><![CDATA[State of v0.6.0 Mars Release]]></title><description><![CDATA[Since this release is going to be quite the largest that will be released yet, at the time of writing, the next branch, which houses all the commits for v0.6.0 is 72 commits ahead of the main branch, which houses the current v0.5.0.
The Mars release ...]]></description><link>https://news.mufi-lang.org/state-of-v060-mars-release</link><guid isPermaLink="true">https://news.mufi-lang.org/state-of-v060-mars-release</guid><category><![CDATA[news]]></category><dc:creator><![CDATA[Mustafif Khan]]></dc:creator><pubDate>Fri, 19 Apr 2024 20:57:01 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/stock/unsplash/cvBBO4PzWPg/upload/dc98a95bdf64e24f262034dde5ddfa67.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Since this release is going to be quite the largest that will be released yet, at the time of writing, the <code>next</code> branch, which houses all the commits for <code>v0.6.0</code> is 72 commits ahead of the <code>main</code> branch, which houses the current <code>v0.5.0</code>.</p>
<p>The Mars release is going out of this world and will contain the following new changes:</p>
<ul>
<li><p>We have upgraded to Zig <code>v0.12.0-dev</code> and with this new toolchain, we hope this will reduce the future headache of migrating from <code>v0.11.0</code>.</p>
</li>
<li><p>We have introduced the two following collection types:</p>
<ul>
<li><p><code>Matrix</code>: This multidimensional array allows users to create a multidimensional array. This type may also create a tensor where all elements are matrices.</p>
</li>
<li><p><code>FloatVector</code>: This array strictly contains only <code>double</code> types and features using AVX2 for parallel operations. The size of 3 allows it to be used for <code>Vec3</code> operations.</p>
</li>
</ul>
</li>
<li><p>More collection type builtins</p>
</li>
<li><p>Networking Features: We introduce the following builtins for sending network requests:</p>
<ul>
<li><p><code>get_req</code></p>
</li>
<li><p><code>post_req</code></p>
</li>
<li><p><code>put_req</code></p>
</li>
<li><p><code>del_req</code></p>
</li>
</ul>
</li>
<li><p>Random numbers of Uniform and Normal Distributions</p>
</li>
</ul>
<p>This release, however, comes with the following removals or modifications though:</p>
<ul>
<li><p><code>wasm32-wasi</code> is ran with <code>enable_fs</code> and <code>enable_net</code> disabled and has <code>sandbox</code> mode enabled so it runs on a REPL-only system.</p>
</li>
<li><p><code>arm-linux-*</code> toolchains have been removed due to issues with the <code>LLD</code> link when running on <code>build_multi.py</code> and will continually be tested to see if I can put the toolchain back in.</p>
</li>
</ul>
<p>There is still a lot of code cleanup that needs to be done, and there are still differences between the implementations of the collection types. While making the builtin function arguments easier, type lookup for better error handling. I'd like to make <code>build_multi.py</code> to be smarter and help more with debugging certain toolchains, so this is why <code>v0.6.0</code> is taking a lot longer than other releases.</p>
]]></content:encoded></item></channel></rss>