Skip to content

Latest commit

 

History

History
158 lines (98 loc) · 5.9 KB

CHANGELOG.md

File metadata and controls

158 lines (98 loc) · 5.9 KB

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

Fixed

  • Do not simplify /(x, 0) and %(x, 0) to avoid incorrect panic messages (issue mazeppa-dev#25).
  • Hide empty reduction paths in CLI error messages (issue mazeppa-dev#27).

0.4.3 - 2024-11-11

Changed

  • Set the minimum checked_oint version requirement to 0.3.0.

0.4.2 - 2024-10-19

Changed

  • Do not extract operands from calls to primitive operations like + (issue mazeppa-dev#24).

0.4.1 - 2024-10-18

Fixed

  • Set the minimum menhir version requirement to 20180905.

0.4.0 - 2024-10-17

Changed

  • Preserve the order of built-in panics in residual programs (issue mazeppa-dev#23).
    • Algebraic simplification now requires operands to be either variables or constants, not compound values.
  • 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_oint version requirement to 0.2.1.

Removed

  • The function Const.escape_char is 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

0.3.2 - 2024-10-02

Added

  • Expose the Gensym module in the public API (previously private).

0.3.1 - 2024-09-23

Added

  • The Mazeppa-to-C translator (with GNU11 extensions) via the new translate CLI command (issue mazeppa-dev#1).
  • The translate_to_c and mazeppa_h API functions.

0.3.0 - 2024-08-16

Added

  • The --print-gc-stats flag for run and eval to observe total memory usage.
  • Expose the check function in the public API.

Changed

  • Optimize homeomorphic embedding by maintaining a local result cache (issue mazeppa-dev#20).
  • Other homeomorphic embedding performance tweaks (issue mazeppa-dev#17).
    • In particular, utilize Weak hash consing while building function bodies.
  • Rename the functions 1) Symbol.kind to op_kind, 2) Symbol.is_lazy to is_lazy_op for clarity [BC].
  • Hide the middles of long reduction paths with (N more...) (issue mazeppa-dev#21).

Fixed

  • Evaluation of built-in panics raising an exception (issue mazeppa-dev#22).

Removed

  • The function Raw_term.is_immediate is no longer public [BC].

0.2.0 - 2024-08-03

Added

  • Propagate positive information for inequality (!=) tests (issue mazeppa-dev#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
  • Add the check command to the CLI for checking program well-formedness (issue mazeppa-dev#18).
  • Expose the Symbol.list function in the public API.

Changed

Fixed

  • Internal compiler errors when analyzing T/F-patterns during driving. Instead, show proper error messages (issue mazeppa-dev#6).
  • Incorrect exception backtraces (issue mazeppa-dev#8).
  • Require constructors to be used consistently [BC] (issue mazeppa-dev#10).

0.1.2 - 2024-07-20

Added

  • Function productivity analysis for preventing unneeded specializations (issue mazeppa-dev#2).
  • pattern_to_string and pattern_verbatim (Raw_term).

Changed

  • Simplify horizontal configuration analysis by only checking for renamings instead of matching arbitrary safe instances.
  • 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 mazeppa-dev#5).
  • Expose the Const module in the public API.

Changed

  • The following simplification rules have been upgraded to handle arbitrary values instead of variables:
    • *(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.