all repos — min @ d0d644faeeecdd1812927dbd61b3061ab3e81187

A small but practical concatenative programming language.

site/contents/news/v0.44.0.md

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
-----
content-type: "post"
title: "Version 0.44.0 released"
slug: v0.44.0
date: 2024-06-18
-----
{@ _defs_.md || 0 @}

This minor release brings a lot of refactoring and a few breaking changes related to sigils and introduces a new concept of _dot notation_ for symbols.

In previous releases, it was possible to use the `invoke` symbol (and the `*` sigil) to access members of a dictionary or modules, e.g. `*crypto/encode` to access the {#link-operator||crypto||encode#} symbol of the {#link-module||crypto#} module. This was fine, but a little bit verbose... plus this didn't work for setting values, for example.

As of this release, you can no longer use `.` in symbols, because that will be used as a namespace separator, so you'll be able to do things like this:

```
{} :example
(dup *) :example.square
(dup dup * *) :example.cube

2 example.square example.cube puts! # Prints 64
```

> %tip%
> Tip
>
> You can run `min run min-upgrade <folder>` to automatically upgrade all the `.min` files in `<folder>` and all its subfolders.

### BREAKING CHANGES

- User-defined symbols can no longer contain dots (`.`).
- The symbol `invoke` and the `*` sigil have been removed in favor of symbol dot notation.
- The `.` and `..` symbols have been renamed to `pwd` and `parent-dir` respectively.
- The `!` symbol has been removed; use `system` instead.
- The `!` sigil has been removed; use `system` instead.
- The `&` symbol has been removed; use `run` instead.
- The `&` sigil has been removed; use `run` instead.
- The `/` sigil has been removed; use `dget` or symbol dot notation instead.
- The `%` sigil has been removed; use `dset` or symbol dot notation instead.
- The `>` sigil has been removed; use `save-symbol` innstead.
- The `<` sigil has been removed; use `load-symbol` innstead.
- Moved `get-env`, `put-env`, `$` symbol and `$` sigil from `sys` to `global` module.

### New Features

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

### Fixes and Improvements

- Fixed `tokenize` symbol (wasn't processing commands correctly)