Skip to content

Latest commit

 

History

History
257 lines (213 loc) · 6.9 KB

CHANGELOG.md

File metadata and controls

257 lines (213 loc) · 6.9 KB

Version 3.3.0

Changes

  • variable names can now contain digits (but they must start with a letter)
  • added Term::{has_free_variables, is_isomorphic_to}

Thanks

  • @AgentElement for all the changes in this release

Version 3.2.2

Changes

  • fixed the names of free variables when printing in classic notation

Thanks

  • @hiratara for implementing the fix

Version 3.2.1

Changes

  • fixed the parsing of free variables in classic notation

Thanks

  • @hiratara for implementing the fix

Version 3.2.0

Changes

  • add support for crates like anyhow by implementing Error for errors

Thanks

  • @Zicklag for adding languages to code-blocks in README
  • @hiratara for implementing Error for ParseError and TermError

Version 3.1.0

Changes

  • a pass with the current clippy
  • bumped Rust edition to 2021

Version 3.0.2

Changes

  • a pass with the current clippy
  • the removal of outdated benches

Version 3.0.1

Changes

  • a pass with the current clippy

Version 3.0.0

Changes

  • use only one Box in Term::App

Version 2.2.0

Thanks

@billpmurphy for adding list::pair::{drop, drop_while, replicate} and a docfix

Changes

  • parse now accepts Unicode variables in Classic mode
  • improve parser code (~25% speedup in Classic mode)
  • add list::pair::{drop, drop_while, replicate}

Version 2.1.0

Thanks

@billpmurphy for creating num::signed and data::result and their applicable Into conversions, adding signed::{add, modulus, neg, simplify, sub, to_signed, mul}, result::{ok, err, is_ok, is_err, option_ok, option_err, unwrap_or, map, map_err, and_then} and stumpfu::{mul, to_church, to_scott, to_parigot}

Changes

  • add boolean::{xnor, imply}
  • add signed numbers
  • add result data type
  • add signed::{add, modulus, neg, simplify, sub, to_signed, mul}
  • add result::{ok, err, is_ok, is_err, option_ok, option_err, unwrap_or, map, map_err, and_then}
  • add stumpfu::{mul, to_church, to_scott, to_parigot}
  • add num::convert::{Encoding, IntoSignedNum}
  • impl IntoSignedNum for i32

Version 2.0.0

Thanks

@billpmurphy for the idea to make reduction::beta IO-free, splitting conversions (and thus allowing all encodings to be compiled together), adding term::is_supercombinator, option::{map, unwrap_or, and_then}, church::{to_scott, to_parigot, to_stumpfu}, combinators::T and scott::{is_zero, to_church}, improving conversions into terms and adding impl<T> IntoChurch for Option<T> where T: IntoChurch

Breaking changes

  • restructure and rename modules
  • rework compilation features
  • remove impl Term from Church data types
  • remove reduction::compare
  • remove Term::{app, apply, eval}
  • rename term::Error to term::TermError
  • rename TermError variant names
  • rename combinators
  • rename *::numerals::plus to add
  • rename *::numerals::mult to mul
  • rename church::numerals::{lshift, rshift} to {shl, shr}
  • rename Term::beta to Term::reduce
  • rename church::lists::null to is_nil
  • rename parser::Error to ParseError
  • rename combinators::T to R
  • simplify term::Error
  • unify test and bench names
  • make reduction::beta IO-free
  • turn reduction::apply into a method on Term
  • make ParseError::InvalidCharacter 0-indexed
  • split Into<Term> conversion into IntoChurch, IntoScott and IntoParigot

Changes

  • fix the empty case in list::take_while
  • refactor benchmarks using macros
  • refactor integration tests using macros
  • improve documentation
  • implement conversions to pair, list and option for all numeral types
  • add Stump-Fu numeral encoding
  • add binary numeral encoding
  • add Church-, Scott- and Parigot-encoded list
  • add tuple data type
  • add macros for automated creation of conversion traits and implementations
  • add an encoding feature and make it default
  • add an undefined term term::UD
  • add tuple::{tuple, projection}
  • add binary::{b0, b1, zero, is_zero, one, lsb, shl0, shl1, strip, succ, pred}
  • add option::{map, unwrap_or, and_then}
  • add term::is_supercombinator
  • add stumpfu::{zero, is_zero, one, succ, pred, add}
  • add parigot::{is_zero, one, mult, sub}
  • add impl<T> IntoChurch for Option<T> where T: IntoChurch
  • add num::scott::{is_zero, one, add, mul, pow, to_church}
  • add num::church::{to_scott, to_parigot, to_stumpfu}
  • add combinators::T (Turing combinator)
  • add list::{church, scott, parigot}::{nil, is_nil, cons, head, tail}
  • ensure all functions match their definition in documentation

Version 1.4.0

Thanks

@billpmurphy for creating church::option, adding option::{none, some, is_none, is_some, map_or}, adding church::lists::{init, zip, zip_with, take, take_while} and simplifying church::lists::last

Changes

  • add Scott encoding as a compilation feature
  • add a Scott numerals module
  • add scott::{zero, succ, pred}
  • add Parigot encoding as a compilation feature
  • add a Parigot numerals module
  • add parigot::{zero, succ, pred, plus}
  • add a Church option module
  • add church::option::{is_none, is_some, map_or}
  • add church::pairs::swap
  • add church::lists::{init, zip, zip_with, take_while}
  • simplify church::lists::last
  • more fine-grained parser benchmarks
  • add Church list benchmarks

Version 1.3.0

Thanks

@billpmurphy for adding church::lists::last

Changes

  • add church::lists::last
  • change all instances of try!() to ?
  • replace 2 clone()s with replace()s (big performance wins)
  • simplify doctest imports in booleans.rs
  • simplify and improve doctests in combinators.rs, lists.rs, pairs.rs and numerals.rs
  • reorganize unit tests in lists.rs
  • remove lots of doctest boilerplate
  • some code readability improvements
  • more benchmarks

Version 1.2.0

Thanks

@billpmurphy for adding church::numerals::{min, max, lshift, rshift, is_even, is_odd} and church::pairs::uncurry

Changes

  • add church::numerals::{min, max, lshift, rshift, is_even, is_odd} for Church numerals
  • add church::pairs::uncurry
  • add abs!() macro for multiple abstraction and use it internally
  • simplify many church::numerals functions using church::numerals::{one, pred}
  • move integration tests to a tests folder

Version 1.1.1

Changes

  • remove one unnecessary mutability
  • add maintenance badges

Version 1.1.0

Changes

  • core tests no longer use Church-encoded data
  • adhere to C-REEXPORT
  • improved parser performance
  • improved readability of reduction::compare
  • added benchmarks
  • fixed two doc links
  • minor code improvements

Version 1.0.0

First stable release.