Changelog of @hackage/eo-phi-normalizer 1.0.0

Changelog for eo-phi-normalizer

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 the Haskell Package Versioning Policy.

v1.0.0 - 2024-07-19

New

  • Align reductions from application to with the paper (#418, #435)
  • Support enabling/disabling particular atoms (#426)
  • Support custom rules (#432)
    • Test ruleset streams.yaml with the example rule equipped with a passing test, matching https://github.com/objectionary/normalizer/issues/423#issue-2366637410
    • Allow rules to go inside abstract objects (and add explicit apply_in_abstract_subformations option to maintain correctness for yegor.yaml rules)
    • Support tail patterns (restricted one-hole contexts)
      • Matching against objects inside dispatch
      • Matching against objects inside application (left only)
    • Properly generate fresh names
    • Allow explicit forall to keep track of all metavariables for extra safety (force in the future, see #441).
    • Distinguish types of metavariables for extra safety.

Changes and fixes

  • Update decoration rule (#420)
  • Generalize Φ-dispatch to rewrite Φ instead of Φ.a (#419)

Documentation and maintenance

  • Update EO to 0.38.4 (#426)

v0.4.1 — 2024-06-12

Changes and fixes:

  • Undo injection of top-level Package lambda (#392)

  • Fix dataization (#395)

    • Fix dataization inside \(\varphi\) when --minimize-stuck-terms is enabled (closes #393)
    • Fix evaluation of atoms stuck on other atoms (fixes while-dataizes-only-first-cycle in while-tests.phi)
    • Improve pretty-printing (closes #292)
  • Fix pipeline script to run tests on normalized EO (#396)

  • Changes to normalizer (#396)

    • Add --wrap-raw-bytes to automatically convert raw bytes (and terminations) in the output. This is a temporary fix, pending the change mentioned in https://github.com/objectionary/eo/issues/3213#issuecomment-2150032168
    • Fix builtin normalizer to produce termination in some situations
    • Fix dataization inside application/dispatch
    • Fix encoding for strings to follow UTF-8 (compatibility with EO)
    • Fix bool representation to require one byte (compatibility with EO)
    • Fix integer division to truncate toward zero (compatibility with EO)
    • Improve pretty-printer (use indentation)
    • Update some examples/docs on the site
    • Support up to 3 positional arguments in the builtin normalizer
  • Fix directory used in CI for:

Documentation and maintenance:

  • Bring rules up to date (#401)
  • Update dependency prettier to v3.3.2 (#385)

v0.4.0 — 2024-06-03

This version supports fast dataization with built-in rules and improves metrics with both built-in and user-defined rules (via YAML).

New:

  • Add built-in rules
  • Add more built-in dataization functions (#291)
  • Support LaTeX format in output (#308)
  • Speed up pipeline by caching EO compilation results (#340)
  • Write generated PHI files as eo-phi-normalizer data files (#286)
  • Update and commit docs in CI (#286)

Changes and fixes:

  • Switch to EO 0.38.0 (#335)
  • Remove VTX and Sigma (#335)
  • Fix normalization and dataization rules w.r.t. xi and rho (see #297)
  • Fix confluence tests (#319)
  • Fix pipeline tests (#338)
  • Integrate transform-eo-tests into normalizer (#365)
  • Switch to GHC 9.6.4 (#263)

Documentation and maintenance:

  • Add the Quick Start page (#317)
  • Add the Pipeline page (#261)

v0.3.1 — 2024-04-12

This version supports proper dataization of test programs with dependencies.

New:

  • Add --dependency-file FILE option to enable dependencies (e.g. bool.phi, bytes.phi) (see #265)

Changes and fixes:

  • Fix handling of Package atom (also improves related code, see #239 and #265)
  • Update the dataless objects metric (see #234)
  • Improve reports (see #225)

Documentation and maintenance:

  • Establish proposals format and process (see #248)
  • Improve the docs job, improve the site, fix minor errors (see #228)
  • Fix hlint warnings (see #241)
  • CI: run doctests (see #230)
  • CI: switch back to the official stack-action (see #246)
  • CI: publish extra files in artifacts (in particular, dependencies like bool.phi, see #245)

v0.3.0 — 2024-03-26

In this version the main executable has been renamed to normalizer and several commands have been implemented for normalization, dataization, and reporting.

New:

  • Command Line Interface:
    • Add commands:
      • normalizer transform to perform normalization without executing any atoms (was default behavior before)
      • normalizer metrics to compute metrics of a given φ-expression (see #153)
      • normalizer dataize to run partial evaluation of φ-expressions with atoms (see #187)
      • normalizer report to generate report based on the results of testing against the EO compiler (see #213)
    • Add --single flag (see #131)
    • Add --json flag for machine-readable output format (see #143)
    • Add --max-depth=N and --max-term-size=N options to control limits for the normalizer (see #173)
    • Improve --chain option to provide better elaboration on the applied normalization rules and the dataization process (see #195)
  • Update rule set for φ-calculus (see #152 and some changes in #136 and #166)
  • Add property-based and regression tests for confluence (see #136 and #166)
  • Tests and metrics against the EO compiler and standard EO test suite (see #98, #191)

Fixes:

  • Count metrics, including dataless objects, correctly (see #142, #193, #211)
  • Fix metavariables in context patterns (see #174)
  • Support empty Δ-bindings (see #184)

Documentation has been improved (see #134, #221).

Maintenance:

  • Run CI on all pull requests (see #156)
  • Downgrade Stackage snapshot (see #146)
  • Add HLint to CI (see #157)

v0.2.0 — 2024-02-16

  • Complete implementation of Yegor's rules (see #109, #112)
    • Support global counter in user-defined rules (see #105)
    • Context matching (global object and this object, see #99)
  • Fix grammar for \(\varphi\)-calculus (see #97 and #127)
  • Improve documentation:
    • Set up wesbite for documentation (see #104, #124, and #128)
    • Update CLI documentation (see #113)
  • Improve command line interface:
    • Support --output/-o command line option (see #92)
    • Remove logs from default output (see #106)
  • Allow collection of metrics for \(\varphi\)-terms (see #121)

v0.1.0 - 2024-02-02

First version of the normalizer.