Skip to content

Releases: hakatashi/esolang-box

2.6.0

28 Apr 04:23
52f3252

Choose a tag to compare

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.v and tail.v helper 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 time package to the Ubuntu base image, making the /usr/bin/time utility 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.c to replace the deprecated sys_errlist/sys_nerr idiom with strerror(), and added -std=gnu89 to the compiler flags

Bug Fixes

brainfuck-esotope

  • Migrated the base image from esolang/python2 to esolang/rust; esotope-bfc is now built from source using Cargo and installed as a native binary, removing the Python 2 dependency
  • Fixed the disasm and script paths to use the new /usr/local/bin/esotope-bfc binary

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 .function extension to .fnc to 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-lang to tckmn/snowman-lang, following the maintainer's GitHub rename

c-gcc

  • Updated GCC invocation to use -fpermissive -Wno-error -Wno-implicit -Wno-int-conversion -w instead of -Wall, improving compatibility with a wider range of C programs
  • Added a new cat-golfed test 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

18 Apr 18:28
ac399f7

Choose a tag to compare

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) to resolute (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 run to bal run to 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++2a to c++2c
  • Added -fconstexpr-depth=1024, -fconstexpr-steps=524288, and -fexperimental-library flags, 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 swiftenv installer 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 list prefix in output that appeared in the previous version

mines

  • Now installs the mines-esolang package 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/esolangs upgrade 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\n line 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