Changelog of @hackage/eo-phi-normalizer 3.1.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.

v3.1.0 - 2024-12-28

Breaking changes

  • Use new.yaml in the CLI by default (#658)

Changes and fixes

  • Simplify pipeline config format (#648)
  • Use dependencies for EO 0.50.0 (#653)
  • Add tests from hone-maven-plugin (#655)

v3.0.0 - 2024-12-28

Breaking changes

  • Switch to built-in rules in the pipeline until new.yaml rules work (#619)
  • Update EO to 0.50.0, use yegor.yaml by default (#617, #641)

Changes and fixes

  • Rename Normal form to NF (#627)
  • Run CI on PRs to develop (#638)
  • Sort options in command help messages (#642)

Documentation and maintenance

  • Add quick start to the README (#632)
  • Remove the description of dataization (#635)
  • chore(deps): update baptiste0928/cargo-install action to v3.2.0 (#640)

v2.3.0 - 2024-12-05

Breaking changes

  • Fix issues related to LaTeX (#598)
  • Support syntax for constant objects (strings, ints, floats) (#602)

Changes and fixes

Documentation and maintenance

  • Fix site generation (#612)
  • Add examples to rewrite docs (#608)
  • chore(deps): update dependency prettier to v3.4.2 (#597)

v2.2.2 - 2024-11-29

New

  • Add --single-line option to the rewrite command (#588)

Changes and fixes

  • Fix pretty printing (#577, #586, #589)
  • Allow optional when and tests keys in rule files (#578)
  • Improve TeX output (#579)
  • Fix typo in rule R_rho and add more tests (#587)

Documentation and maintenance

  • Update haskell-actions/run-fourmolu action to v11 (#516)
  • Update dependency prettier to v3.4.1 (#552)
  • Update dependency pre-commit to v4 - autoclosed (#503)
  • Update dependency eolang to ^0.24.0 (#520)
  • Add CONTRIBUTING.md (#576)

v2.2.1 - 2024-11-27

Changes and fixes

  • Fix rules file not included into the released Haskell package (#568)

v2.2.0 - 2024-11-26

Breaking changes

  • Use rules from new.yaml by default (#555)

Changes and fixes

  • Fix pretty-printing (#550)

Documentation and maintenance

  • Fix menu on the site (#551)

v2.1.0 - 2024-11-22

Breaking changes

  • Rename transform to rewrite in the eo-phi-normalizer CLI (#369)

New

  • Add new rules (#523)
  • Add new rules tests (#540)

Documentation and maintenance

  • Annotate files with copyright (#536)
  • Move docs for user-defined rules to a separate page (#524)
  • Document the release procedure (#532)

v2.0.0 - 2024-11-18

Breaking changes

  • Rename normalizer to eo-phi-normalizer everywhere (#494)

New

  • Add eo-phi-normalizer version command (#493)
  • Add eo-phi-normalizer test command (#498)

Changes and fixes

  • Fix pretty-printer for applications and program (#529)

Documentation and maintenance

  • Make site Markdown generation reproducible (#513, #514)
  • Describe how to install a specific normalizer version (#525)
  • Speed up CI (#533)
  • Switch the EO version from 0.38.4 to 0.41.2 in CI (#528)
  • Switch to macos-latest in CI (#539)

v1.1.0 - 2024-10-03

New

  • Add unit tests (#461)
  • Add R_DOT_ρ (#468)
  • Support printing rules in LaTeX (#474)
  • Automatically create an output directory (#499)

Changes and fixes

  • Update the COPY rule as in phi-paper (#445)
  • Remove special case for delta binding since VTX is removed (#356)
  • Replace normalizer report command with the normalizer pipeline report command (#456)
  • Fix sorting in numeric columns (#460)
  • Run mdbook in the pipeline job (#463)

Documentation and maintenance

  • Document all dependencies in a single doc in eo/phi/normalizer/data for each eo version (#446).
  • Create a metrics page on the site (#453)
  • Chore(deps): update dependency pre-commit to v3.8.0 (#455)
  • Provide instructions for the customer to check that we've completed the contract requirements (#458)
  • Bump stack action version (#459)
  • Update proposal process (#464)
  • Document creating custom atoms on the site (#467)

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/eo-phi-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.