Skip to content

MiniLang Compiler 1.2.15

Choose a tag to compare

@n1k0m0 n1k0m0 released this 02 Oct 16:14
· 7 commits to main since this release

MiniLang Compiler 1.2.15

This patch release brings bounded code-generation optimizations to both compiler
implementations. Both CLI version flags and compile-time MINILANG_VERSION
report 1.2.15. No language, standard-library or native-media ABI change.

Improvements

  • Eliminate immediate field projections of small temporary structs when all
    positional arguments are total integer expressions and contracts cannot fail.
    Effectful constructors and escaping objects keep their existing behavior.
  • Hoist stable array/bytes roots in dynamic-length loops, retaining bounds
    checks, descending empty-range semantics, GC roots and cancellation polls.
  • Reduce operand spills for proven integer arithmetic.
  • Share constant runtime-error construction to reduce generated code size,
    retaining error codes, messages, source locations and catchability.
  • Specialize integer literals inside existing single-return inline expansions
    without creating additional function copies or removing callable fallbacks.

These are conservative local optimizations, not a general escape-analysis pass,
whole-function register allocator, loop-versioning pass or PGO implementation.

Evaluation and trade-offs

Twenty-one CPU-pinned, alternating pre-release A/B pairs per workload on Windows
and Linux/WSL measured:

  • 94–95% less time and 16 MB fewer allocations in the targeted temporary
    struct-projection benchmark.
  • 35–39% less time in the literal-inline arithmetic benchmark.
  • 3–5% less time for the local-register workload; 1–2% less time on Linux
    and 2.3% less time on Windows for dynamic indexing.
  • About 15.6% smaller compiler binaries, and 6.5–7.7% smaller benchmark images.

There is no universal speedup. On Windows the caught-error stress benchmark
takes 10.7% longer and a local-CSE control takes 11.5% longer. Other
controls also show mixed changes. Shared error construction deliberately trades
an extra cold-path call/frame for much less code. These microbenchmarks are not
whole-application MiniSQL/MiniQuake/HollowKeep performance claims.

See the evaluation and raw samples. That report preserves
pre-version-stamp image hashes; release-stamped artifact checksums are below.

Validation

  • Python regression suite: 156 passed, 0 failed, 0 skipped.
  • Self-hosted suite: 136 core cases passed, 0 failed, plus the outer
    language/runtime, structure, object-pipeline and smoke checks.
  • Code-generation structural checks passed in both implementations.
  • All 53 standard-library modules are byte-identical between repositories.
  • Both CLI version flags and compile-time MINILANG_VERSION report 1.2.15.
  • Version/runtime fixtures execute successfully and have six-way byte parity
    per target across Python, Windows ML and Linux ML hosts, with normal/object
    pipeline options. Python accepts the object option but emits its monolithic
    equivalent.
  • Windows Python bootstrap and native selfbuild are byte-identical. Python and
    Windows ML Linux cross-builds are also byte-identical. A full Linux-native
    compiler selfbuild was not repeated for this release.
  • MiniDoc compiler reference regenerated: 37 files, 3,285 symbols, 0 warnings.

The existing native cstr return-lowering exception to general byte parity
remains unchanged; see compatibility scope.

Release-stamped compiler checksums

Executable Bytes SHA-256
Windows mlc.exe 54,494,720 4357346D79C3C3D9E3A2D8FB20CAE974C5B94D0A66830B95762B15EBC65AFBBA
Linux mlc 54,497,120 D0C73E7CD0CC83BCBB195F2D10E5FD4EAB271F6562452CFD7ADC36A6A9DF42B4

Archive checksums are supplied separately as .sha256 release downloads.

Downloads

Ready-to-run Windows x64 ZIP and Linux x64 tar.gz packages contain the compiler,
matching standard library, native media runtime, license, quick-start example,
release notes, BUILD_INFO.json and SHA-256 sidecars. Extract the entire archive;
Python is not required. Generated binaries remain outside Git.