Releases: hakatashi/esolang-box
Releases · hakatashi/esolang-box
2.6.0
esolang-box 2.6.0 Release Notes
New Languages
16 new language boxes have been added in this release.
A
- Added A, a joke language by snuke designed to write programs with minimal separators, where all variable and function names must be single letters
BASIC (FreeBASIC)
- Added FreeBASIC 1.10.1, a free BASIC compiler compatible with QuickBASIC
bc / dc
- Added bc (GNU bc 1.08.2), an arbitrary-precision calculator language
- Added dc (GNU dc 1.5.2), a stack-based reverse-polish calculator
Bespoke
- Added Bespoke, an imperative esoteric language by WinslowJosiah with flexible syntax based on word lengths, loosely based on the author's earlier language Poetic
CheLang
- Added CheLang, an esoteric language written in Argentine Spanish slang ("che" is a common Argentine colloquial expression)
Factor
- Added Factor 0.100, a practical stack-based language
Foldy
- Added Foldy, a 2D stack-based esoteric language where code starts as a 1D sequence and can be "folded" into two dimensions using
{and}commands
Nibbles
- Added Nibbles, a code golf language where programs are encoded as nibbles (4-bit values)
Pikt
- Added Pikt, a pixel-based dynamically typed esoteric language where programs are written as color-coded images; it compiles to native executables via the Kotlin compiler
気 (Qi)
- Added 気 (Qi), a lightweight, fast programming language by AnonymousAAArdvark whose keywords and syntax are written in Chinese characters
Q# (QDK)
- Added Q#, Microsoft's quantum programming language using the QDK runtime
Solidity
- Added Solidity, an object-oriented language for writing Ethereum smart contracts, using Foundry as the runtime
Terra
- Added Terra, a low-level systems programming language that is meta-programmed by Lua
Uiua
- Added Uiua, a tacit (point-free) array programming language
Vala
- Added Vala, an object-oriented language targeting the GLib/GNOME ecosystem, compiled to C
Language Runtime Upgrades
coq → Rocq
- The Coq proof assistant has been officially renamed to Rocq; the box display name and opam repository have been updated accordingly
- Upgraded from Coq 8.x (via
coq-io-system) to Rocq 9.2.0 (rocq-core+rocq-stdlib) - The underlying OCaml version was upgraded from 4.10.0 to 4.14.2
- Programs are now fully self-contained: the previous dependency on
io_header.vandtail.vhelper files has been removed, and both hello and cat test programs have been rewritten to use Rocq's standard I/O directly
befunge98
- Upgraded cfunge from 0.9.0 to 1.001 (migrated from SourceForge tarball to the GitHub repository)
compile-time-typescript
- Bumped compile-time-typescript from 1.4.0 to 1.4.1
zig
- Upgraded Zig from 0.10.1 to 0.16.0
Base Image Upgrades
base
- Upgraded base Alpine Linux from 3.22.4 to 3.23.4
ubuntu-base
- Added the
timepackage to the Ubuntu base image, making the/usr/bin/timeutility available in all Ubuntu-based language containers
Re-enabled Languages
perl1
- Perl 1.0 has been re-enabled after being disabled since version 2.4.0
- Fixed the build for GCC 14: patched
stab.cto replace the deprecatedsys_errlist/sys_nerridiom withstrerror(), and added-std=gnu89to the compiler flags
Bug Fixes
brainfuck-esotope
- Migrated the base image from
esolang/python2toesolang/rust; esotope-bfc is now built from source using Cargo and installed as a native binary, removing the Python 2 dependency - Fixed the
disasmandscriptpaths to use the new/usr/local/bin/esotope-bfcbinary
function2d (Funciton)
- Fixed the language display name: corrected the spelling from "Function" to "Funciton" (the intentional misspelling used by the language)
- Renamed asset files from
.functionextension to.fncto match the canonical file extension
piet
- Replaced the Hello World program with Thomas Schoch's canonical Pikt sample
- Corrected the expected output from
"Hello, World!"to"Hello, world!\n"to match the program's actual output
snowman
- Updated the repository URL and credits from the old
KeyboardFire/snowman-langtotckmn/snowman-lang, following the maintainer's GitHub rename
c-gcc
- Updated GCC invocation to use
-fpermissive -Wno-error -Wno-implicit -Wno-int-conversion -winstead of-Wall, improving compatibility with a wider range of C programs - Added a new
cat-golfedtest case
streem
- Applied source-level patches to fix a function-signature mismatch (
node_pattern_new) that caused build failures with newer GCC versions
Disassembly Tests
Automated disassembly tests have been added for 11 language boxes that already had disassembly support (disasm: true). These tests verify that the /root/disasm script produces the expected human-readable representation:
| Language | Test file |
|---|---|
| brainfuck-esomer | hello.bf |
| brainfuck-esotope | hello.bf |
| fugue | hello.mid |
| hexagony | cat.hxg |
| produire | sjis.rdr |
| pure-folders | hello.tar |
| starry | hello.starry |
| unreadable | hello.unreadable |
| vim | disasm-test.vim |
| whitespace | hello.ws |
| z80 | hello.z8b |
Internal Cleanups
The following changes are internal only (build fixes, dependency updates, repository reorganization) with no user-visible behavior change:
| Language / Component | Change |
|---|---|
| scripts/ | Moved build.rb, push.rb, and box_readme.md.erb into a scripts/ subdirectory; added scripts/generate-matrix.rb and scripts/utils.rb |
| CI workflow | Removed asdf setup; streamlined Ruby installation; added test report and Shields.io badge jobs to CI |
| box.yaml schema | Fixed schema to require expected or expected_file in test cases; added expected_file and options properties |
| docker-bake.hcl | Switched to multiline HCL list format to reduce merge conflicts |
| .vscode/ | Added VSCode extension recommendations and YAML schema settings for box.yaml editing |
| aheui | Parallelized build (make -j$(nproc)) |
| alphabeta | Parallelized build |
| apl | Parallelized build |
| bash-pure | Parallelized jailkit build |
| befunge93 | Parallelized build |
| brainfuck-bfi | Added ESOLANG_BOX_VERSION env var (previously absent from this image's Dockerfile) |
| cmm | Parallelized all four sub-builds |
| cobol | Added -fpermissive -std=gnu17 CFLAGS to fix build with Alpine 3.23's GCC |
| cubically | Parallelized build |
| cyclicbrainfuck | Parallelized build |
| fish-shell-pure | Parallelized jailkit build |
| glass | Parallelized build |
| goruby | Parallelized build |
| imagemagick | Parallelized build |
| intercal | Pinned GCC to 14.2.0-r6 from Alpine 3.22 to fix build regression with Alpine 3.23 |
| lolcode | Migrated CMake invocation to modern cmake --build style; added -DCMAKE_POLICY_VERSION_MINIMUM=3.5 |
| olang | Parallelized build |
| python1 | Parallelized build |
| python2 | Pinned GCC to 14.2.0-r6 from Alpine 3.22 to fix build regression with Alpine 3.23 |
| rapira | Parallelized build (was -j5) |
| rescript | Pinned GCC to 14.2.0-r6 from Alpine 3.22 to fix build regression with Alpine 3.23 |
| ruby0.49 | Parallelized build |
| simula | Added cat test case; parallelized build |
| snobol | Parallelized build |
| snowman | Parallelized build |
| squared-cool | Parallelized build |
| streem | Parallelized build |
| verilog | Parallelized build (was -j5) |
| vlang | Fixed ENV syntax (VFLAGS assignment); parallelized build |
| wat | Parallelized build (was -j5) |
| whitespace | Parallelized both sub-builds |
| wierd | Parallelized build |
| wren | Parallelized build |
| z80 | Parallelized build |
| zsh-pure | Parallelized build |
| befunge98, intercal, rescript, vlang, and others | Added missing credits information in box.yaml |
2.5.0
esolang-box 2.5.0 Release Notes
Base Image Upgrades
base
- Upgraded base Alpine Linux from 3.19 to 3.22.4
- Removed bundled AWS CLI from the base image
ubuntu-base
- Upgraded Ubuntu base from
jammy(22.04) toresolute(26.04) - Removed bundled AWS CLI from the ubuntu-base image
dotnet-base
- Upgraded .NET SDK from 7.0.203 to 10.0.202
Language Runtime Upgrades
ruby
- Upgraded Ruby from 3.2.0 to 4.0.2
ruby-trunk
- Updated Ruby development snapshot to track the 4.0-dev branch
goruby
- Upgraded the underlying Ruby from 3.2.0 to 4.0.2
ballerina
- Upgraded Ballerina from 1.2.13 to 2201.13.2 (Swan Lake series)
- Upgraded Java runtime from OpenJDK 8 to OpenJDK 21
- The runner command changed from
ballerina runtobal runto match the new release
c-gcc
- Upgraded C standard from C99 to C23 (
-std=c23)
cpp-clang
- Upgraded Clang from 11 to 22
- Upgraded C++ standard from
c++2atoc++2c - Added
-fconstexpr-depth=1024,-fconstexpr-steps=524288, and-fexperimental-libraryflags, allowing more complex constexpr programs
cpp-compile-time-clang
- Updated to use Clang 22 (following cpp-clang upgrade)
fsharp-dotnet
- Updated to target .NET 10 framework
- Improved startup time by pre-building the project template at image build time instead of creating a new project on each run
function2d (Funciton)
- Migrated runtime from Mono to .NET 10; Mono is no longer required
- Updated repository source to Codeberg
java
- Upgraded OpenJDK from 17 to 25
kotlin
- Upgraded Kotlin compiler from 1.9.23 to 2.3.20
llvm-ir
- Upgraded LLVM from 15 to 20
php
- Upgraded PHP from 8.1 to 8.5
ring
- Upgraded Ring from 1.14 to 1.22
snobol
- Upgraded SNOBOL4 (CSNOBOL4) from 2.3.1 to 2.3.3
swift
- Replaced the deprecated
swiftenvinstaller with swiftly (the official Swift toolchain installer) - Updated runtime dependencies for the new Swift release
verilog
- Upgraded Icarus Verilog from v12 to v13
Bug Fixes
imagemagick
- Updated ImageMagick to the latest release
- Fixed spurious
listprefix in output that appeared in the previous version
mines
- Now installs the
mines-esolangpackage via pip for a cleaner execution path
encapsulation / functional / transceternal
- Fixed I/O handling to correctly pass bit-level binary data to the interpreter (following
@hakerh400/esolangsupgrade from v1.3.4 to v1.4.18)
ada
- Fixed: cat program no longer outputs a spurious
\r(CRLF → LF)
alphabeta
- Fixed: cat program no longer outputs a spurious
\r(CRLF → LF)
ed
- Fixed: cat program no longer outputs a spurious
\r(CRLF → LF)
fetlang
- Fixed: cat program no longer outputs a spurious
\r(CRLF → LF)
cmd
- Corrected test expectation: CMD cat output correctly uses
\r\nline endings (Windows behavior)
Internal Cleanups
The following languages received internal-only changes (build fixes, dependency updates, asset renames) with no user-visible behavior change:
| Language | Change |
|---|---|
| abc | Updated i386 ncurses library dependency for Ubuntu Resolute compatibility |
| apache2-rewrite | Asset files renamed; pip install flags updated |
| blc | Replaced Makefile-based build with explicit gcc command |
| brainfuck-bfi | Updated MAINTAINER to LABEL syntax; asset file renamed |
| calc | Asset files renamed |
| cobol | Removed libxml2 dependency; configure now uses --without-xml2 |
| compile-time-typescript | Asset files renamed |
| concise-folders | Asset file renamed |
| coq | Asset files renamed |
| crystal | Updated GPG key import to modern keyring format |
| d-dmd | Fixed download mirror URL for D-APT repository |
| emojicode | Fixed libtinfo5 installation for Ubuntu Resolute compatibility |
| ezhil | Asset files renamed |
| ffb | Use shallow git clone |
| fish-shell-pure | Removed unnecessary library copies from jail |
| floater | Asset files renamed |
| fugue | Asset file renamed |
| i4004asm | Asset files renamed |
| irc | Updated to use php85 (following PHP upgrade) |
| js-rhino | Asset files renamed |
| lolcode | Added readline-dev build dependency |
| octave | Octave is now available in the main Alpine repository (no edge repo needed) |
| osecpu-aska | Fixed compiler warning in ASKA assembler build |
| picfunge | Asset files renamed |
| piet | Asset files renamed |
| powershell | Updated Microsoft APT repository GPG key import to modern format |
| pure-folders | Asset file renamed; use shallow git clone |
| python1 | Multiple source patches for GCC compatibility (newer Alpine) |
| python2 | Asset file renamed; use shallow git clone for pyenv |
| python3 | Now pulls from Alpine edge repository for the latest Python 3 |
| qlb | Updated jsdom API call from sendTo to forwardTo |
| rescript | Removed unnecessary build dependencies |
| riscv | Asset files renamed |
| ruby0.49 | Asset files renamed |
| ruby1 | Fixed build under newer GCC by passing -std=gnu89 |
| simula | Fixed build with -std=gnu89 for newer GCC |
| sqlite3 | Asset files renamed |
| taxi | Use shallow git clone |
| ubergenes | Use shallow git clone |
| velato | Asset file renamed |
| vlang | Asset files renamed; use shallow git clone |
| width | Suppress Python DeprecationWarnings in output |
| wordcpu | Updated GCC flags for C89 compatibility |
| x86asm-nasm | Asset files renamed |