min programming language https://min-lang.org/rss.xml The latest news about the min programming language Version 0.46.0 released https://min-lang.org/news/v0.46.0

This release delivers a few improvements mainly concerning syntax highlighting, and addresses some inconsistencies between the implementation and the documentation.

BREAKING CHANGES

  • Actually removed the invoke symbol and * sigil that were supposed to be removed in v0.44.0 but didn’t.
  • Removed Dockerfile and Notepad++ highlighter (no longer maintained).
  • When defining or deleting a sigil, a symbol with the same name is now defined/deleted as well.
  • Removed obsolete aliases io.read and io.write.

Fixes and Improvements

  • Implemented define-sigil (was documented but not actually implemented).
  • Reviewed documentation making sure that documented operators match with implementation.
  • The help symbol now correctly displays help for namespaced symbols.
  • Enhanced the tokenizer symbol to provide additional information for symbols.
  • Enhanced min shell highlighting to support dot notation, sigils, autopop, global symbols.
  • Enhanced Vim syntax file to support latest constructs.
Version 0.45.0 released https://min-lang.org/news/v0.45.0

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 fread (now fs.read) or dget (now dict.get) to avoid collisions in the global scope

The good news is… you can run min run min-upgrade <folder> to migrate all your code automatically!

BREAKING CHANGES

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

Fixes and Improvements

  • Upgraded OpenSSL to v3.3.2.
Version 0.44.0 released https://min-lang.org/news/v0.44.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 crypto.encode symbol of the crypto Module 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

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)
Version 0.43.1 released https://min-lang.org/news/v0.43.1

This is a small patch release to address an issue related to Nimble metadata and update OpenSSL.

Fixes and Improvements

  • Upgraded OpenSSL to version 3.3.0.
  • Nimble metadata are now specified statically in the min.nimble file (Fixes #193).
  • Minor documentation fixes.
Version 0.43.0 released https://min-lang.org/news/v0.43.0

This is minor release introduces a breaking change, but also provides a way to automatically migrate your code using the min-upgrade managed module.

BREAKING CHANGES

  • Renamed ROOT symbol to global. Also the built-in lang module is now called global.

Tip

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

New Features

  • Upgraded OpenSSL to v3.2.0
  • Added the min run <mmm> command to (download, install globally, and) execute the main symbol of the the specified managed module. For example this functionality can be used to upgrade .min files using the min-upgrade managed module.
  • mmm: It is now possible to install, uninstall, and update modules by specifying them via <name>@<version>.
  • 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).

Fixes and Improvements

  • Added check to prevent installing local managed modules in the HOME directory or $HOME/mmm.
  • Changed tokenize symbol so that it returns the full token, including delimiters (for strings and comments).
  • Fixed regression in min compile command introduced in the previews version due to parses changes.