<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
    <channel>
        <title>min programming language</title>
        <link>https://min-lang.org/rss.xml</link>
        <description>The latest news about the min programming language</description>
        <item>
            <title>Version 0.46.0 released</title>
            <link>https://min-lang.org/news/v0.46.0</link>
            <description>
            <p>This release delivers a few improvements mainly concerning syntax highlighting, and addresses some inconsistencies between the implementation and the documentation.</p>

<h3>BREAKING CHANGES</h3>

<ul>
<li>Actually removed the <span class='min-code'><span class="min-tkSymbol">invoke</span><span class="min-tkEof"></span></span> symbol and <span class='min-code'><span class="min-tkGlobalSymbol">*</span><span class="min-tkEof"></span></span> sigil that were supposed to be removed in v0.44.0 but didn’t.</li>
<li>Removed Dockerfile and Notepad++ highlighter (no longer maintained).</li>
<li>When defining or deleting a sigil, a symbol with the same name is now defined/deleted as well.</li>
<li>Removed obsolete aliases <span class='min-code'><span class="min-tkDict">io</span><span class="min-tkDot">.</span><span class="min-tkSymbol">read</span><span class="min-tkEof"></span></span> and <span class='min-code'><span class="min-tkDict">io</span><span class="min-tkDot">.</span><span class="min-tkSymbol">write</span><span class="min-tkEof"></span></span>.</li>
</ul>


<h3>Fixes and Improvements</h3>

<ul>
<li>Implemented <span class='min-code'><span class="min-tkGlobalSymbol">define-sigil</span><span class="min-tkEof"></span></span> (was documented but not actually implemented).</li>
<li>Reviewed documentation making sure that documented operators match with implementation.</li>
<li>The <span class='min-code'><span class="min-tkGlobalSymbol">help</span><span class="min-tkEof"></span></span> symbol now correctly displays help for namespaced symbols.</li>
<li>Enhanced the <span class='min-code'><span class="min-tkSymbol">tokenizer</span><span class="min-tkEof"></span></span> symbol to provide additional information for symbols.</li>
<li>Enhanced min shell highlighting to support dot notation, sigils, autopop, global symbols.</li>
<li>Enhanced Vim syntax file to support latest constructs.</li>
</ul>

            </description>
        </item>
        <item>
            <title>Version 0.45.0 released</title>
            <link>https://min-lang.org/news/v0.45.0</link>
            <description>
            <p>This is by far the release with most breaking changes in a long time. The ideas behind all this are
* Leveraging the new dot notation to access symbols in modules
* Avoid polluting global scope with too many imported symbols
* Avoid using prefixed symbols like <span class='min-code'><span class="min-tkSymbol">fread</span><span class="min-tkEof"></span></span> (now <span class='min-code'><span class="min-tkDict">fs</span><span class="min-tkDot">.</span><span class="min-tkSymbol">read</span><span class="min-tkEof"></span></span>) or <span class='min-code'><span class="min-tkSymbol">dget</span><span class="min-tkEof"></span></span> (now <span class='min-code'><span class="min-tkDict">dict</span><span class="min-tkDot">.</span><span class="min-tkGlobalSymbol">get</span><span class="min-tkEof"></span></span>) to avoid collisions in the global scope</p>

<p>The good news is… you can run <span class='min-code'><span class="min-tkSymbol">min</span> <span class="min-tkSymbol">run</span> <span class="min-tkSymbol">min-upgrade</span> <span class="min-tkSymbol">&lt;folder&gt;</span><span class="min-tkEof"></span></span> to migrate all your code automatically!</p>

<h3>BREAKING CHANGES</h3>

<ul>
<li>All symbols defined in the <strong>num</strong> module have been moved to the <strong>global</strong> module.</li>
<li>All symbols defined in the <strong>logic</strong> module have been moved to the <strong>global</strong> module.</li>
<li>All symbols defined in the <strong>str</strong> module have been moved to the <strong>global</strong> module.</li>
<li>All symbols defined in the <strong>seq</strong> module have been moved to the <strong>global</strong> module.</li>
<li>Removed <strong>lambdabind</strong> (use <strong>lambda-bind</strong> instead).</li>
<li>The <strong>stack</strong> module is no longer imported.</li>
<li><strong>stack</strong> module: removed symbol <strong>id</strong>.</li>
<li><strong>stack</strong> module: renamed <strong>clear-stack</strong> to <strong>clear</strong>.</li>
<li><strong>stack</strong> module: removed <strong>clearstack</strong> (use <strong>stack.clear</strong> instead).</li>
<li><strong>stack</strong> module: renamed <strong>get-stack</strong> to <strong>get</strong>.</li>
<li><strong>stack</strong> module: removed <strong>getstack</strong> (use <strong>stack.get</strong> instead).</li>
<li><strong>stack</strong> module: renamed <strong>set-stack</strong> to <strong>set</strong>.</li>
<li><strong>stack</strong> module: removed <strong>setstack</strong> (use <strong>stack.set</strong> instead).</li>
<li>The <strong>io</strong> module is no longer imported.</li>
<li><strong>io</strong> module: renamed <strong>fwrite</strong> and <strong>write</strong> to <strong>fs.write</strong></li>
<li><strong>io</strong> module: renamed <strong>fread</strong> and <strong>read</strong> to <strong>fs.read</strong></li>
<li><strong>io</strong> module: renamed <strong>fappend</strong> to <strong>fs.append</strong></li>
<li><strong>io</strong> module: moved <strong>print</strong> to the <strong>global</strong> module.</li>
<li><strong>io</strong> module: removed <strong>newline</strong> (use <span class='min-code'><span class="min-tkString">""</span> <span class="min-tkSymbol">puts</span><span class="min-tkAutopop">!</span><span class="min-tkEof"></span></span> instead).</li>
<li>The <strong>fs</strong> module is no longer imported.</li>
<li><strong>fs</strong> module: renamed <strong>fperms</strong> to <strong>fs.permissions</strong></li>
<li><strong>fs</strong> module: renamed <strong>fsize</strong> to <strong>fs.size</strong></li>
<li><strong>fs</strong> module: renamed <strong>fstats</strong> to <strong>fs.stats</strong></li>
<li><strong>fs</strong> module: renamed <strong>ftype</strong> to <strong>fs.type</strong></li>
<li>The <strong>time</strong> module is no longer imported.</li>
<li><strong>time</strong> module: renamed <strong>tformat</strong> to <strong>time.format</strong></li>
<li><strong>time</strong> module: renamed <strong>timeinfo</strong> to <strong>time.info</strong></li>
<li><strong>time</strong> module: renamed <strong>timestamp</strong> to <strong>time.stamp</strong></li>
<li>The <strong>dict</strong> module is no longer imported.</li>
<li><strong>dict</strong> module: renamed <strong>dhas?</strong> to <strong>dict.has?</strong></li>
<li><strong>dict</strong> module: renamed <strong>dget</strong> to <strong>dict.get</strong></li>
<li><strong>dict</strong> module: renamed <strong>dget-raw</strong> to <strong>dict.get-raw</strong></li>
<li><strong>dict</strong> module: renamed <strong>dset</strong> to <strong>dict.set</strong></li>
<li><strong>dict</strong> module: renamed <strong>dset-sym</strong> to <strong>dict.set-sym</strong></li>
<li><strong>dict</strong> module: renamed <strong>ddel</strong> to <strong>dict.del</strong></li>
<li><strong>dict</strong> module: renamed <strong>dkeys</strong> to <strong>dict.keys</strong></li>
<li><strong>dict</strong> module: renamed <strong>dvalues</strong> to <strong>dict.values</strong></li>
<li><strong>dict</strong> module: renamed <strong>dpairs</strong> to <strong>dict.pairs</strong></li>
<li><strong>dict</strong> module: renamed <strong>ddup</strong> to <strong>dict.dup</strong></li>
<li><strong>dict</strong> module: renamed <strong>dpick</strong> to <strong>dict.pick</strong></li>
<li><strong>dict</strong> module: renamed <strong>dtype</strong> to <strong>dict.type</strong></li>
<li>The <strong>sys</strong> module is no longer imported.</li>
<li>The <strong>dstore</strong>  module has been renamed to <strong>store</strong>, and is no longer imported.</li>
<li><strong>store</strong> module: renamed <strong>dsinit</strong> to <strong>store.init</strong></li>
<li><strong>store</strong> module: renamed <strong>dsget</strong> to <strong>store.get</strong></li>
<li><strong>store</strong> module: renamed <strong>dshas?</strong> to <strong>store.has?</strong></li>
<li><strong>store</strong> module: renamed <strong>dsput</strong> to <strong>store.put</strong></li>
<li><strong>store</strong> module: renamed <strong>dspost</strong> to <strong>store.post</strong></li>
<li><strong>store</strong> module: renamed <strong>dsdelete</strong> to <strong>store.delete</strong></li>
<li><strong>store</strong> module: renamed <strong>dsquery</strong> to <strong>store.query</strong></li>
<li><strong>store</strong> module: renamed <strong>dswrite</strong> to <strong>store.write</strong></li>
<li><strong>store</strong> module: renamed <strong>dsread</strong> to <strong>store.read</strong></li>
<li>The <strong>crypto</strong> module is no longer imported.</li>
<li>The <strong>math</strong> module is no longer imported.</li>
<li><strong>math</strong> module: renamed <strong>r2g</strong> to <strong>math.r2d</strong></li>
<li>The <strong>net</strong> module is no longer imported.</li>
<li>The <strong>http</strong> module is no longer imported.</li>
<li>The <strong>xml</strong> module is no longer imported.</li>
<li><strong>xml</strong> module: renamed <strong>xcomment</strong> to <strong>xml.comment</strong></li>
<li><strong>xml</strong> module: renamed <strong>xentity</strong> to <strong>xml.entity</strong></li>
<li><strong>xml</strong> module: renamed <strong>xtext</strong> to <strong>xml.text</strong></li>
<li><strong>xml</strong> module: renamed <strong>xentity2utf8</strong> to <strong>xml.entity2utf8</strong></li>
<li><strong>xml</strong> module: renamed <strong>xcdata</strong> to <strong>xml.cdata</strong></li>
<li><strong>xml</strong> module: renamed <strong>xescape</strong> to <strong>xml.escape</strong></li>
<li><strong>xml</strong> module: renamed <strong>xelement</strong> to <strong>xml.element</strong></li>
<li><strong>xml</strong> module: renamed <strong>xquery</strong> to <strong>xml.query</strong></li>
<li><strong>xml</strong> module: renamed <strong>xqueryall</strong> to <strong>xml.query-all</strong></li>
<li>The <strong>prompt</strong> symbol is no longer unsealed.</li>
</ul>


<h3>Fixes and Improvements</h3>

<ul>
<li>Upgraded OpenSSL to v3.3.2.</li>
</ul>

            </description>
        </item>
        <item>
            <title>Version 0.44.0 released</title>
            <link>https://min-lang.org/news/v0.44.0</link>
            <description>
            <p>This minor release brings a lot of refactoring and a few breaking changes related to sigils and introduces a new concept of <em>dot notation</em> for symbols.</p>

<p>In previous releases, it was possible to use the <span class='min-code'><span class="min-tkSymbol">invoke</span><span class="min-tkEof"></span></span> symbol (and the <span class='min-code'><span class="min-tkGlobalSymbol">*</span><span class="min-tkEof"></span></span> sigil) to access members of a dictionary or modules, e.g. <span class='min-code'><span class="min-tkSymbol">*crypto/encode</span><span class="min-tkEof"></span></span> to access the <a href="/reference-crypto#op-encode"><span class='min-code'><span class="min-tkDict">crypto</span><span class="min-tkDot">.</span><span class="min-tkSymbol">encode</span><span class="min-tkEof"></span></span></a> symbol of the <a href="/reference-crypto/"><span class='min-code'><span class="min-tkGlobalSymbol">crypto</span><span class="min-tkEof"></span></span> Module</a> module. This was fine, but a little bit verbose… plus this didn’t work for setting values, for example.</p>

<p>As of this release, you can no longer use <span class='min-code'><span class="min-tkDict"></span><span class="min-tkDot">.</span><span class="min-tkSymbol"></span><span class="min-tkEof"></span></span> in symbols, because that will be used as a namespace separator, so you’ll be able to do things like this:</p>

<div class='min-codeblock'><span class="min-tkBraceLe">{</span><span class="min-tkBraceRi">}</span> <span class="min-tkSystemSigil">:</span><span class="min-tkSymbol">example</span>
<span class="min-tkBracketLe">(</span><span class="min-tkSymbol">dup</span> <span class="min-tkGlobalSymbol">*</span><span class="min-tkBracketRi">)</span> <span class="min-tkSystemSigil">:</span><span class="min-tkDict">example</span><span class="min-tkDot">.</span><span class="min-tkSymbol">square</span>
<span class="min-tkBracketLe">(</span><span class="min-tkSymbol">dup</span> <span class="min-tkSymbol">dup</span> <span class="min-tkGlobalSymbol">*</span> <span class="min-tkGlobalSymbol">*</span><span class="min-tkBracketRi">)</span> <span class="min-tkSystemSigil">:</span><span class="min-tkDict">example</span><span class="min-tkDot">.</span><span class="min-tkSymbol">cube</span>

<span class="min-tkInt">2</span> <span class="min-tkDict">example</span><span class="min-tkDot">.</span><span class="min-tkSymbol">square</span> <span class="min-tkDict">example</span><span class="min-tkDot">.</span><span class="min-tkSymbol">cube</span> <span class="min-tkSymbol">puts</span><span class="min-tkAutopop">!</span> <span class="min-tkSymbol">#</span> <span class="min-tkSymbol">Prints</span> <span class="min-tkInt">64</span>
<span class="min-tkEof"></span></div>

<div class="tip"><p>Tip</p>

<p>You can run <span class='min-code'><span class="min-tkSymbol">min</span> <span class="min-tkSymbol">run</span> <span class="min-tkSymbol">min-upgrade</span> <span class="min-tkSymbol">&lt;folder&gt;</span><span class="min-tkEof"></span></span> to automatically upgrade all the <span class='min-code'><span class="min-tkDict"></span><span class="min-tkDot">.</span><span class="min-tkSymbol">min</span><span class="min-tkEof"></span></span> files in <span class='min-code'><span class="min-tkSymbol">&lt;folder&gt;</span><span class="min-tkEof"></span></span> and all its subfolders.</p></div>

<h3>BREAKING CHANGES</h3>

<ul>
<li>User-defined symbols can no longer contain dots (<span class='min-code'><span class="min-tkDict"></span><span class="min-tkDot">.</span><span class="min-tkSymbol"></span><span class="min-tkEof"></span></span>).</li>
<li>The symbol <span class='min-code'><span class="min-tkSymbol">invoke</span><span class="min-tkEof"></span></span> and the <span class='min-code'><span class="min-tkGlobalSymbol">*</span><span class="min-tkEof"></span></span> sigil have been removed in favor of symbol dot notation.</li>
<li>The <span class='min-code'><span class="min-tkDict"></span><span class="min-tkDot">.</span><span class="min-tkSymbol"></span><span class="min-tkEof"></span></span> and <span class='min-code'><span class="min-tkDict"></span><span class="min-tkDot">.</span><span class="min-tkDict"></span><span class="min-tkDot">.</span><span class="min-tkSymbol"></span><span class="min-tkEof"></span></span> symbols have been renamed to <span class='min-code'><span class="min-tkSymbol">pwd</span><span class="min-tkEof"></span></span> and <span class='min-code'><span class="min-tkSymbol">parent-dir</span><span class="min-tkEof"></span></span> respectively.</li>
<li>The <span class='min-code'><span class="min-tkSymbol"></span><span class="min-tkAutopop">!</span><span class="min-tkEof"></span></span> symbol has been removed; use <span class='min-code'><span class="min-tkSymbol">system</span><span class="min-tkEof"></span></span> instead.</li>
<li>The <span class='min-code'><span class="min-tkSymbol"></span><span class="min-tkAutopop">!</span><span class="min-tkEof"></span></span> sigil has been removed; use <span class='min-code'><span class="min-tkSymbol">system</span><span class="min-tkEof"></span></span> instead.</li>
<li>The <span class='min-code'><span class="min-tkSymbol">&amp;</span><span class="min-tkEof"></span></span> symbol has been removed; use <span class='min-code'><span class="min-tkSymbol">run</span><span class="min-tkEof"></span></span> instead.</li>
<li>The <span class='min-code'><span class="min-tkSymbol">&amp;</span><span class="min-tkEof"></span></span> sigil has been removed; use <span class='min-code'><span class="min-tkSymbol">run</span><span class="min-tkEof"></span></span> instead.</li>
<li>The <span class='min-code'><span class="min-tkGlobalSymbol">/</span><span class="min-tkEof"></span></span> sigil has been removed; use <span class='min-code'><span class="min-tkSymbol">dget</span><span class="min-tkEof"></span></span> or symbol dot notation instead.</li>
<li>The <span class='min-code'><span class="min-tkGlobalSymbol">%</span><span class="min-tkEof"></span></span> sigil has been removed; use <span class='min-code'><span class="min-tkSymbol">dset</span><span class="min-tkEof"></span></span> or symbol dot notation instead.</li>
<li>The <span class='min-code'><span class="min-tkSymbol">&gt;</span><span class="min-tkEof"></span></span> sigil has been removed; use <span class='min-code'><span class="min-tkGlobalSymbol">save-symbol</span><span class="min-tkEof"></span></span> innstead.</li>
<li>The <span class='min-code'><span class="min-tkSymbol">&lt;</span><span class="min-tkEof"></span></span> sigil has been removed; use <span class='min-code'><span class="min-tkGlobalSymbol">load-symbol</span><span class="min-tkEof"></span></span> innstead.</li>
<li>Moved <span class='min-code'><span class="min-tkGlobalSymbol">get-env</span><span class="min-tkEof"></span></span>, <span class='min-code'><span class="min-tkGlobalSymbol">put-env</span><span class="min-tkEof"></span></span>, <span class='min-code'><span class="min-tkGlobalSymbol">$</span><span class="min-tkEof"></span></span> symbol and <span class='min-code'><span class="min-tkGlobalSymbol">$</span><span class="min-tkEof"></span></span> sigil from <span class='min-code'><span class="min-tkGlobalSymbol">sys</span><span class="min-tkEof"></span></span> to <span class='min-code'><span class="min-tkGlobalSymbol">global</span><span class="min-tkEof"></span></span> module.</li>
</ul>


<h3>New Features</h3>

<ul>
<li>It is now possible to access dictionary (and module) keys (even nested) via dot notation. This replaces the <span class='min-code'><span class="min-tkSymbol">invoke</span><span class="min-tkEof"></span></span> symbol.</li>
<li>Added shell auto-completion for symbols using dot notation</li>
<li>Added a new <span class='min-code'><span class="min-tkSymbol">color</span><span class="min-tkEof"></span></span> symbol to the <span class='min-code'><span class="min-tkGlobalSymbol">io</span><span class="min-tkEof"></span></span> module to enable/disable terminal color output.</li>
<li>Added a new <span class='min-code'><span class="min-tkSymbol">from-html</span><span class="min-tkEof"></span></span> symbol to the <span class='min-code'><span class="min-tkGlobalSymbol">xml</span><span class="min-tkEof"></span></span> module to parse HTML documents and fragments.</li>
<li>Added a new <span class='min-code'><span class="min-tkSymbol">xentity2utf8</span><span class="min-tkEof"></span></span> symbol to the <span class='min-code'><span class="min-tkGlobalSymbol">xml</span><span class="min-tkEof"></span></span> module to convert an XML entity to its corresponding UTF-8 string.</li>
<li>Added a new <span class='min-code'><span class="min-tkSymbol">xescape</span><span class="min-tkEof"></span></span> symbol to the <span class='min-code'><span class="min-tkGlobalSymbol">xml</span><span class="min-tkEof"></span></span> module to convert special XML characters into the corresponding XML entities.</li>
</ul>


<h3>Fixes and Improvements</h3>

<ul>
<li>Fixed <span class='min-code'><span class="min-tkGlobalSymbol">tokenize</span><span class="min-tkEof"></span></span> symbol (wasn’t processing commands correctly)</li>
</ul>

            </description>
        </item>
        <item>
            <title>Version 0.43.1 released</title>
            <link>https://min-lang.org/news/v0.43.1</link>
            <description>
            <p>This is a small patch release to address an issue related to Nimble metadata and update OpenSSL.</p>

<h3>Fixes and Improvements</h3>

<ul>
<li>Upgraded OpenSSL to version 3.3.0.</li>
<li>Nimble metadata are now specified statically in the <span class='min-code'><span class="min-tkDict">min</span><span class="min-tkDot">.</span><span class="min-tkSymbol">nimble</span><span class="min-tkEof"></span></span> file (Fixes #193).</li>
<li>Minor documentation fixes.</li>
</ul>

            </description>
        </item>
        <item>
            <title>Version 0.43.0 released</title>
            <link>https://min-lang.org/news/v0.43.0</link>
            <description>
            <p>This is minor release introduces a breaking change, but also provides a way to automatically migrate your code using the <span class='min-code'><span class="min-tkSymbol">min-upgrade</span><span class="min-tkEof"></span></span> managed module.</p>

<h2>BREAKING CHANGES</h2>

<ul>
<li>Renamed <span class='min-code'><span class="min-tkSymbol">ROOT</span><span class="min-tkEof"></span></span> symbol to <span class='min-code'><span class="min-tkGlobalSymbol">global</span><span class="min-tkEof"></span></span>. Also the built-in <span class='min-code'><span class="min-tkSymbol">lang</span><span class="min-tkEof"></span></span> module is now called <span class='min-code'><span class="min-tkGlobalSymbol">global</span><span class="min-tkEof"></span></span>.</li>
</ul>


<div class="tip"><p>Tip</p>

<p>You can run <span class='min-code'><span class="min-tkSymbol">min</span> <span class="min-tkSymbol">run</span> <span class="min-tkSymbol">min-upgrade</span> <span class="min-tkSymbol">&lt;folder&gt;</span><span class="min-tkEof"></span></span> to automatically upgrade all the <span class='min-code'><span class="min-tkDict"></span><span class="min-tkDot">.</span><span class="min-tkSymbol">min</span><span class="min-tkEof"></span></span> files in <span class='min-code'><span class="min-tkSymbol">&lt;folder&gt;</span><span class="min-tkEof"></span></span> and all its subfolders.</p></div>

<h2>New Features</h2>

<ul>
<li>Upgraded OpenSSL to v3.2.0</li>
<li>Added the <span class='min-code'><span class="min-tkSymbol">min</span> <span class="min-tkSymbol">run</span> <span class="min-tkSymbol">&lt;mmm&gt;</span><span class="min-tkEof"></span></span> command to (download, install globally, and) execute the <span class='min-code'><span class="min-tkSymbol">main</span><span class="min-tkEof"></span></span> symbol of the the specified <a href="/learn-mmm/">managed module</a>. For example this functionality can be used to upgrade <span class='min-code'><span class="min-tkDict"></span><span class="min-tkDot">.</span><span class="min-tkSymbol">min</span><span class="min-tkEof"></span></span> files using the <span class='min-code'><span class="min-tkSymbol">min-upgrade</span><span class="min-tkEof"></span></span> managed module.</li>
<li>mmm: It is now possible to install, uninstall, and update modules by specifying them via <span class='min-code'><span class="min-tkSymbol">&lt;name&gt;@&lt;version&gt;</span><span class="min-tkEof"></span></span>.</li>
<li>mmm: The version is now optional when installing, uninstalling, and updating modules (the name of the HEAD branch will be used, e.g. “master” or “main”, typically).</li>
</ul>


<h2>Fixes and Improvements</h2>

<ul>
<li>Added check to prevent installing local managed modules in the HOME directory or $HOME/mmm.</li>
<li>Changed <a href="/reference-global#op-tokenize"><span class='min-code'><span class="min-tkGlobalSymbol">tokenize</span><span class="min-tkEof"></span></span></a> symbol so that it returns the full token, including delimiters (for strings and comments).</li>
<li>Fixed regression in <span class='min-code'><span class="min-tkSymbol">min</span> <span class="min-tkSymbol">compile</span><span class="min-tkEof"></span></span> command introduced in the previews version due to parses changes.</li>
</ul>

            </description>
        </item>
    </channel> 
</rss>
