package mazeppa
- unreleased
- 0.7.2 - 2025-12-05
- 0.7.1 - 2025-12-05
- 0.7.0 - 2025-11-22
- 0.6.3 - 2025-11-22
- 0.6.2 - 2025-11-22
- 0.6.1 - 2025-11-22
- 0.6.0 - 2025-10-29
- 0.5.2 - 2025-04-08
- 0.5.1 - 2025-03-27
- 0.5.0 - 2025-03-23
- 0.4.3 - 2024-11-11
- 0.4.2 - 2024-10-19
- 0.4.1 - 2024-10-18
- 0.4.0 - 2024-10-17
- 0.3.4 - 2024-10-12
- 0.3.3 - 2024-10-03
- 0.3.2 - 2024-10-02
- 0.3.1 - 2024-09-23
- 0.3.0 - 2024-08-16
- 0.2.0 - 2024-08-03
- 0.1.2 - 2024-07-20
- 0.1.1 - 2024-07-15
- 0.1.0 - 2024-07-11
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=b6ab238d59a0afaad8f3079f4e2f0cc1
sha512=67b3d0946e110b6d070eac68c7373075d32ef29ef40dbf8e54f2d07a08d91db7216323815884a41095a7ea32da871a8bc27668db805eba79f6b6ebd5629bbc17
doc/CHANGELOG.html
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
unreleased
0.7.2 - 2025-12-05
Fixed
- Remove
List.is_emptyusage because is is only supported on versions 5.1 or higher.
0.7.1 - 2025-12-05
Changed
- An integer x embeds in integer y of the same type iff x is less than or equal to y (issue https://github.com/hirrolot/mazeppa/issues/35).
- Enhance horizontal configuration analysis by checking calls that match on all neutrals, not just variables (issue https://github.com/hirrolot/mazeppa/issues/33).
- Emit run-time panics on invalid program states instead of failing (issue https://github.com/hirrolot/mazeppa/issues/34).
- Implement a more reasonable pretty-printer for output code.
- Only require
bisect_ppxandalcotestfor testing, not for production builds.
Fixed
- Properly special-case pretty printing of FFI calls:
call "mz_ffi_xxx" (...). - A non-termination scenario of endless whistling and splitting (issue https://github.com/hirrolot/mazeppa/issues/36).
0.7.0 - 2025-11-22
Fixed
- The incorrect version number of the previous release to account for the backwards-incompatible change.
0.6.3 - 2025-11-22
Removed
- The
--print-gc-statsflag for therunandevalcommands (no longer needed) [BC].
0.6.2 - 2025-11-22
Fixed
- Use proper spacing for
switch-statements in C output:switch (x)notswitch(x).
0.6.1 - 2025-11-22
Fixed
- Treat FFI calls as neutrals (issue https://github.com/hirrolot/mazeppa/issues/31).
0.6.0 - 2025-10-29
Added
C FFI support [BC].
- We introduced the
callkeyword, for which reason this change is not backwards-compatible.
- We introduced the
Changed
- Set the exact
checked_ointversion requirement to1.0.0.
Fixed
- Emit errors for primitive operations with an incorrect number of arguments.
0.5.2 - 2025-04-08
Changed
Set the minimum
checked_ointversion requirement to0.5.0.- Internally, this enables proper integer conversion instead of going to
stringand parsing it back.
- Internally, this enables proper integer conversion instead of going to
0.5.1 - 2025-03-27
Fixed
- The outdated version number in the CLI output.
0.5.0 - 2025-03-23
Added
- The
Symbol.freshenfunction that generates a fresh symbol according to a given predicate. - The
Raw_term.let'shortcut function.
Changed
- Do not share syntactically equal arguments during postprocessing.
- Preserve names of global unknowns and constructor parameters in residual code (refreshing if necessary).
- Use a more lenient WQO for strings: set(s1) = set(s2) /\ length(s1) <= length(s2).
Set the minimum
checked_ointversion requirement to0.4.1.- This fixes compilation on Fedora Linux, openSUSE, FreeBSD, and Oracle Linux.
Fixed
- Do not simplify /(x, 0) and %(x, 0) to avoid incorrect panic messages (issue https://github.com/hirrolot/mazeppa/issues/25).
- Hide empty reduction paths in CLI error messages (issue https://github.com/hirrolot/mazeppa/issues/27).
- Do not overshadow user-specified symbols during residualization (issue https://github.com/hirrolot/mazeppa/issues/28).
- Perform correct variable shadowing in C output via extra scoping (issue https://github.com/hirrolot/mazeppa/issues/29).
0.4.3 - 2024-11-11
Changed
- Set the minimum
checked_ointversion requirement to0.3.0.
0.4.2 - 2024-10-19
Changed
- Do not extract operands from calls to primitive operations like
+(issue https://github.com/hirrolot/mazeppa/issues/24).
0.4.1 - 2024-10-18
Fixed
- Set the minimum
menhirversion requirement to20180905.
0.4.0 - 2024-10-17
Changed
Preserve the order of built-in panics in residual programs (issue https://github.com/hirrolot/mazeppa/issues/23).
- Algebraic simplification now requires operands to be either variables or constants, not compounds.
Eliminate let-bindings for "innocent terms" via postprocessing.
- Innocent terms are variables, integer constants, and zero-arity constructor calls.
- Set the minimum supported OCaml version to 4.14.0.
- Set the minimum
checked_ointversion requirement to0.2.1.
Removed
- The function
Const.escape_charis no longer public [BC].
0.3.4 - 2024-10-12
Changed
Reuse predefined thunks for variables standing as constructor arguments.
- This improves output code size and compilation times when C code generation is used.
0.3.3 - 2024-10-03
Fixed
- Tweak the dependencies in
dune-projectafter trying to publish the package.
0.3.2 - 2024-10-02
Added
- Expose the
Gensymmodule in the public API, which was previously private to users.
0.3.1 - 2024-09-23
Added
- The Mazeppa-to-C translator via the new
translatecommand (issue https://github.com/hirrolot/mazeppa/issues/1). - The
translate_to_candmazeppa_hAPI functions.
0.3.0 - 2024-08-16
Added
- The
--print-gc-statsflag forrunandevalto observe total memory usage. - Expose the
checkfunction in the public API.
Changed
- Optimize homeomorphic embedding by maintaining a local result cache (issue https://github.com/hirrolot/mazeppa/issues/20).
Other homeomorphic embedding performance tweaks (issue https://github.com/hirrolot/mazeppa/issues/17).
- In particular, utilize
Weakhash consing while building function bodies.
- In particular, utilize
- Rename the functions 1)
Symbol.kindtoop_kind, 2)Symbol.is_lazytois_lazy_op[BC]. - Hide the middles of long reduction paths with
(N more...)(issue https://github.com/hirrolot/mazeppa/issues/21).
Fixed
- Evaluation of built-in panics raising an exception (issue https://github.com/hirrolot/mazeppa/issues/22).
Removed
- The function
Raw_term.is_immediateis no longer public [BC].
0.2.0 - 2024-08-03
Added
- Propagate positive information for inequality (
!=) tests (issue https://github.com/hirrolot/mazeppa/issues/7). More simplification rules:
- op(op(t)) -> op(t), where op is one of
u8,u16,u32,u64,u128,i8,i16,i32,i64,i128,string. - /(0, t) -> 0
- |(t, all ones), |(all ones, t) -> all ones
- &(t, all ones), &(all ones, t) -> t
- op(op(t)) -> op(t), where op is one of
- Add the
checkcommand to the CLI for checking program well-formedness (issue https://github.com/hirrolot/mazeppa/issues/18). - Expose the
Symbol.listfunction in the public API.
Changed
- Only whistle on terms with equal redex signatures (issues https://github.com/hirrolot/mazeppa/issues/9, https://github.com/hirrolot/mazeppa/issues/11).
- Only whistle on equal integers (issue https://github.com/hirrolot/mazeppa/issues/12).
- Rebuild as less terms as possible when substituting contractions (issue https://github.com/hirrolot/mazeppa/issues/14).
- Optimize homeomorphic embedding by storing term sizes (issue https://github.com/hirrolot/mazeppa/issues/17).
Fixed
- Internal compiler errors when analyzing
T/F-patterns during driving. Instead, show proper error messages (issue https://github.com/hirrolot/mazeppa/issues/6). - Incorrect exception backtraces (issue https://github.com/hirrolot/mazeppa/issues/8).
- Require constructors to be used consistently [BC] (issue https://github.com/hirrolot/mazeppa/issues/10).
0.1.2 - 2024-07-20
Added
- Function productivity analysis for preventing unneeded specializations (issue https://github.com/hirrolot/mazeppa/issues/2).
pattern_to_stringandpattern_verbatim(Raw_term).
Changed
- Only check for renamings instead of arbitrary safe instances when analyzing configurations horizontally.
- Do not emit 1) linear let-bindings for redexes, 2) unused let-bindings for immediate terms.
0.1.1 - 2024-07-15
Added
mazeppa eval: A built-in evaluator for the Mazeppa language (issue https://github.com/hirrolot/mazeppa/issues/5).- Expose the
Constmodule in the public API.
Changed
The following simplification rules are upgraded to handle any values instead of variables only:
- *(x, 0), *(0, x) -> 0
- &(x, 0), &(0, x) -> 0
- %(x, 1) -> 0
- /(x, 0), %(x, 0) -> out of range
- |(x, x), &(x, x) -> x
- =(x, x), >=(x, x), <=(x, x) -> T()
- !=(x, x), >(x, x), <(x, x) -> F()
0.1.0 - 2024-07-11
Added
- The Mazeppa supercompiler.
- unreleased
- 0.7.2 - 2025-12-05
- 0.7.1 - 2025-12-05
- 0.7.0 - 2025-11-22
- 0.6.3 - 2025-11-22
- 0.6.2 - 2025-11-22
- 0.6.1 - 2025-11-22
- 0.6.0 - 2025-10-29
- 0.5.2 - 2025-04-08
- 0.5.1 - 2025-03-27
- 0.5.0 - 2025-03-23
- 0.4.3 - 2024-11-11
- 0.4.2 - 2024-10-19
- 0.4.1 - 2024-10-18
- 0.4.0 - 2024-10-17
- 0.3.4 - 2024-10-12
- 0.3.3 - 2024-10-03
- 0.3.2 - 2024-10-02
- 0.3.1 - 2024-09-23
- 0.3.0 - 2024-08-16
- 0.2.0 - 2024-08-03
- 0.1.2 - 2024-07-20
- 0.1.1 - 2024-07-15
- 0.1.0 - 2024-07-11