all repos — min @ 76bd27f29b470b3d4444fcce7160389a84346d8a

A small but practical concatenative programming language.

Preparing for release.
h3rald h3rald@h3rald.com
Wed, 03 Jun 2026 16:31:58 +0200
commit

76bd27f29b470b3d4444fcce7160389a84346d8a

parent

1eb454736511dbee47340425e370fb2cc92e0e4e

M min.nimsmin.nims

@@ -10,7 +10,6 @@ switch("amd64.linux.gcc.linkerexe", "x86_64-linux-musl-gcc")

switch("opt", "size") switch("mm", "orc") -switch("deepCopy", "on") switch("threadAnalysis", "off") when not defined(nossl):
M min.vimmin.vim

@@ -1,8 +1,8 @@

" Vim syntax file " Language: min " Maintainer: Fabio Cevasco -" Last Change: 22 May 2026 -" Version: 0.47.0 +" Last Change: 03 Jun 2026 +" Version: 0.48.0 if exists("b:current_syntax") finish
M next-release.mdnext-release.md

@@ -1,4 +1,3 @@

- ### BREAKING CHANGES * The symbol `aes` now requires min to be compiled with `-d:ssl`.
M site/contents/get-started.mdsite/contents/get-started.md

@@ -20,35 +20,22 @@ ### Building from source

By default, min should run without issues on any [platform supported by the Nim programming language](https://github.com/nim-lang/Nim/blob/devel/lib/system/platforms.nim). -To build min, you can clone the [git repository](https://github.com/h3rald/min) and also build the following static libraries first: - -* libssl (OpenSSL) -* libcrypto (OpenSSL) -* libpcre (PCRE) - -When compiling, specify additional flags to specify where to get the static libraries from: - -`nim c -d --passL:"-static -L<dir> -lpcre -lssl -lcrypto"` +To build min, you can clone the [git repository](https://github.com/h3rald/min) and compile it using Nim, like this: -Where `<dir>` is the directory containing the `*.a` files for the static libraries listed above. - -> %tip% -> -> Alternatively, if you can also opt out from OpenSSL and PCRE support by: -> -> * Specifying `-d:nossl` -> * Specifying `-d:nopcre` +```shell +nim c -d:release +``` ### Additional build options -#### -d:ssl +#### -d:ssl / -d:nossl -If the **-d:ssl** flag is specified when compiling, min will be built with SSL support, so it will be possible to: +By default, this build option will be _on_ by default so that min is built with SSL support, so it will be possible to: * perform HTTPS requests with the {#link-module||http#}. * use all the cryptographic symbols defined in the {#link-module||crypto#}. -If this flag is not specified: +If this flag is not specified (by setting `-d:nossl`): * It will not be possible to perform HTTPS requests * Only the following symbols will be exposed by the {#link-module||crypto#}:

@@ -60,13 +47,23 @@ * {#link-operator||crypto||decode#}

#### -d:nopcre -If the **-d:nopcre** is specified when compiling, min will be built _without_ PCRE support, so it will not be possible to use regular expressions and the following symbols will _not_ be exposed by the {#link-module||global#}: +If `-d:nopcre` is specified when compiling, min will be built _without_ PCRE support, so it will not be possible to use regular expressions and the following symbols will _not_ be exposed by the {#link-module||global#}: * {#link-global-operator||search#} * {#link-global-operator||match?#} * {#link-global-operator||search-all#} * {#link-global-operator||replace#} * {#link-global-operator||replace-apply#} + +#### -d:static + +If `-d:static` is specified, min will attempt to statically link the following libraries: + +* libssl (OpenSSL) +* libcrypto (OpenSSL) +* libpcre (PCRE) + +Note that for this to work, the relevant `.a` file _must_ be placed in the appropriate `vendor/<library>/<os>/<arch>` subdirectory. For some architectures and operating systems, the correct files are versioned along with the source code &mdash; if your architecture is not listed, you need to place your libraries in a `vendor/<library>/unknown` subdirectory. ## Running the min shell
A site/contents/news/v0.48.0.md

@@ -0,0 +1,29 @@

+----- +content-type: "post" +title: "Version 0.48.0 released" +slug: v0.48.0 +date: 2026-06-03 +----- +{@ _defs_.md || 0 @} + +This is a minor release with some new functionalities and a small breaking change. The main focus is _performance_ and improve overall memory usage. + +### BREAKING CHANGES + +* The symbol `aes` now requires min to be compiled with `-d:ssl`. + +### New Features + +* By default, nimble builds are no longer statically linking other libraries. +* Removed acyclic pragmas and now successfully compiling with `--mm:orc` for better memory management. + +### Fixes and Improvements + +* Ensured that all the relevant procs are gcsafe. +* No longer using ref for `MinValue` objects. +* No longer performing a deep copy when dequoting. +* Optimized the way debug information is stored to reduce memory usage. +* Avoiding creating unnecessary scopes when possible (withScope macro already creates a scope). +* Fixed `setSigil` incorrectly calling `setSymbol`. +* Improved handling of hash bang. +* No longer using (unoptimised) tail-recursion for symbol resolution, now doing iterative lookups.
M site/rules.minsite/rules.min

@@ -140,33 +140,7 @@ output-fwrite

) ) :: -( - symbol download-latest-min-exes - (==>) - ( - "Downloading latest min executables..." io.notice! - settings.version :version - ("windows" "macosx" "linux") - ( - :opsys - "https://github.com/h3rald/min/releases/download/v$1/min_v$1_$2_x64.zip" (version opsys) =% :remote - "min_$#.zip" (opsys) =% :local - "wget $# -O $#" (remote local) =% :cmd - cmd sys.system - "assets/downloads/$#/" (opsys) =% :dir - "assets/downloads/" sys.mkdir - "unzip $# -o -d $#" (local dir) =% @cmd - cmd system! - local sys.rm - ) foreach - ) -) :: - ;Main - -((('wget "" !=) ('zip sys.which "" !=)) &&) - (download-latest-min-exes) -when "Processing contents..." io.notice!