Corresponding HOL commit: HOL-Theorem-Prover/HOL@77fad20
Changes since release v3213:
Source language and front‑end
flatLangop wrapped in aSrc ast$opconstructor (#1337, issue #1336).
This unifies how source‑level operations are propagated intoflatLang;
flat_elimProofand friends are updated.- OCaml front‑end (#1345, #1360). Desugaring from OCaml to the CakeML AST
is reworked, and the earlier handling oftrue/falsein the OCaml parser
is reverted. - Verified string comparisons (#1331).
Testgains semantics for string
comparisons, and a newMemOp StringCmpis implemented and verified through
the back‑end. MODfixity follow‑up. HOL changedMODfromInfixl 650to
Infixl 600(matching*). Explicit parentheses are added across the tree
so thata * b MOD ckeeps its old meaninga * (b MOD c).
Basis library and runtime
TextIO.inputLine→TextIO.inputLineWith(#1340). The old name is
reused/renamed to better reflect the configurable line‑terminator behaviour;
callers throughout the tree are updated.Runtime.customFFIadded. New basis entry point with a matching C
helper, giving user programs a sanctioned way to invoke a custom FFI.
Configuration
inc_configremoved (#1335, issue #1081). The incremental‑compilation
configuration record is retired in favour of the regular configuration.
Compiler backend
- New
Loopconstruct instackLang(#1355).Whileis removed and
replaced by a more generalLooptogether withBreak/Continuethat can
jump out of (or continue) any enclosing loop.stack_alloc,word_to_stack,
stack_to_lab, and the cv translator are updated, and the new semantics is
proved correct (including removing all earlier cheats). - Variable‑length shifts (#1341). Support for variable shift amounts is
added inwordLangand all lower compiler phases. - 32‑bit memory ops refactor (#1339).
mem_load_32/mem_store_32are
rewritten on top of the existingword_of_bytes/get_byteprimitives. - Store read/write peephole optimisation in
wordLangis the change that
shipped with v3213 (#1327) and forms the baseline for this range.
Register allocator
- Four IRC register‑allocator bugs fixed (#1338).
- Pancake entry points now save callee‑saved registers (#1332). Missing
RISC‑V, MIPS and ARMv8 callee‑saved register entries are added to the MEP
assembly stubs.
Pancake
- Callee‑saved register fix above (#1332).
- Pancake proofs migrated to the new
suspend/Resume/Finalisestyle and
simplified by inlining theorem goals and removingind_thmindirection
(#1356).
Candle / theorem prover
cv_ifre‑defined in Candle (#1351).mcandidateprinter‑API fix (#1344).temp_remove_user_printercalls
are updated for the new HOLmcandidateAPI.- Candle and REPL
evaluateproofs are ported to
suspend/Resume/Finalise(#1356).
Examples
- Pseudo‑Boolean (PB) checker example refreshed (#1353).
Build infrastructure
- Unverified sexp bootstrap reinstated in the build (#1358). The
unverified sexp bootstrap target is fixed up and added back to the standard
build sequence; a small error intypes.txtis corrected on the way.
Proof engineering and tooling
suspend/Resume/Finaliserollout (#1356). A large clean‑up replaces
ad‑hoc proof bookkeeping inflat_to_closProof,bvl_to_bvi,word_cse,
word_to_stack,wordProps, the pancake proofs, and the Candle/REPL
evaluate proofs. Every use ofget_goalis removed from the codebase.- No more parsing in library files (#1357, #1348). Library‑level
Definition/Theoremboilerplate is rewritten to use explicitSyntax
constructors instead of HOL term‑parser quotations, with assorted fix‑ups
(correct theories for type operators, missing imports ofastSyntaxbefore
astToSexprLib, regenerated READMEs, type‑variable / constant fixes). type_varsordering swap.type_varsandtype_vars_in_termnow
return their results in the reversed (HOL‑canonical) order in the local
Libfiles; downstream code adjusted accordingly.SmartOp2_thmsped up (#1361).- Two
data_to_wordProofproofs sped up. - HOLSet addition no longer goes via
List.rev.
Miscellaneous
- Typo fixes (#1354) and several stray‑character / mismatched‑quote fixes.