Repository navigation
v1.0.0
The toolchain stands on its own. v0.1.0 said the number would reach 1.0.0
"when the toolchain stands on its own, not when the language does" — and this is
that release. selfhost/compiler.pas is the only compiler, seed/pascalc.ll
builds it, and a clone with no C++ compiler and no LLVM development files
compiles the compiler, passes 435 tests, reaches the stage-2/stage-3 fixed point
and proves 43 SMT rules.
The language is unchanged from 0.1.0 — both standards were already complete. The
major version is about what it takes to build this, and about pascalc-s0
disappearing from the command line.
Removed
- Stage 0, the C++ compiler.
src/andselfhost/difftest.share deleted;
selfhost/compiler.pasis the only compiler.seed/pascalc.ll— a working
compiler in LLVM IR, committed — is what builds it, so a checkout still builds
itself. (ADR-0085) - LLVM as a build dependency. Nothing links
libLLVM;cmakeneeds no
LLVM_DIR, onlyclangon PATH to assemble IR. - The differential test, which compared two independent implementations over 436
sources. Nothing replaces it, and ADR-0085 says what that costs.
Added
tools/pascalcc— compile and link.pascalcwrites IR and stops,
permanently: no standard Pascal program can start an assembler.--dump-tokens,--dump-ast,--dump-sema,--dump-allonpascalc, and
157 error-path sources adopted as real test cases with.errgoldens, taking
the suite from 279 to 435.
Changed
pascalcis quiet on success and writesfile:line:col: error: message
on failure, where it used to write three dump sections unconditionally.- The repository is x86-64 Linux only: the seed carries a target triple.
Tagv0.1.0is the last commit where a C++ compiler could reproduce a
compiler from source alone.
Fixed
cmake --buildleft a stalebuild/bin/pascalcwhen the compiler failed to
build, soctestpassed against a compiler that did not match the source.- A fresh configure could not create
build/binonce no C++ executable target
remained. selfhost/badparse/variant-in-variant.pashad been accepted by both compilers
since ADR-0026 and was no longer a negative test; a differential oracle cannot
see a test that has stopped testing anything. Deleted — the feature is covered
bytests/nested_variants.pas.