Changelog of @hackage/code-conjure 0.5.2

Changelog for (Code) Conjure

0.5.2

  • show number of tested candidates
  • complete Conjurable derivation functions
  • reference related work on README
  • add switch to unique-modulo-testing candidates (slow) to allow computing the near upper/lower limit on pruning

v0.5.0

  • allow synthesizing/conjuring from properties with conjureFromSpec;
  • complete Haddock documentation;
  • remove several unused functions;
  • add stub conjurableDerive functions;
  • Makefile: add targets to run GPS(2) and TerpreT benches.

v0.4.4

  • remove need for explicit deconstructions:
    • use - and 1 instead of dec;
    • allow mod and div as deconstructions;
  • bump Express requirement to v1.0.6 (bugfix);
  • complete the GPS1 benchmark;
  • add GPS2 and TerpreT benchmarks;
  • minor fixes in the README.

v0.4.2

  • default to using top-level patterns on generated functions;
  • memoize function evaluation;
  • double-check theory at the end and report warning on incorrect properties;
  • add prif to Conjure;
  • simplify deconstructor discovery and add conjureSize to Conjurable;
  • add cevaluate, ceval and cvl to Conjure.Conjurable;
  • add bench/gps and bench/lowtests;
  • improve tests and benchmarks.

v0.4.0

  • background primitives are now provided with pr and prim.
  • report number of rules used in pruning
  • require Express v1.0.4 and Speculate v0.4.12
  • allow .. notation
  • add benchmarks, replicate, subset, p12, p30 and candidates
  • add and use the Defn type and conjureDefns
  • minor changes in benchmarks
  • cleanup unused code

v0.3.6

  • add switch for descending recursions to allow generation of gcd
  • refactor recursion generation (replace a hole later)
  • change conjpureWith to take Args
  • rename two args fields to maxBodyRecursions and maxEvalRecursions at this point, the old names were misnomers.

v0.3.4

  • reallow recursions under && and || (simplifies the generated or, and, set and elem functions)
  • only require deconstructions on a non-empty subset of arguments (allows fib01 to be produced)
  • limit number of terminal evaluations in recursiveToDynamic
  • fix bug in recursiveToDynamic (not counting some recursions)
  • add 4 new benchmarks: count, gcd, tree and setelem

v0.3.2

  • significant runtime reduction in several benchmarks, e.g.:
    • take is now reachable in about 5 seconds
  • improved candidate generation:
    • faster runtime
    • fewer redundant/invalid candidates
  • limit recursive calls to use deconstructors
    • test to find deconstructors automatically
  • improve recursion evaluation method (revaluate replaces recursexpr)
  • add fibonacci benchmark
  • minor:
    • record runtimes with one decimal place instead of two
    • add longshot benchmark
    • add intercalate to the list benchmark
    • add stub Conjure.Constructors module

v0.3.0

  • only automatically include an if for the return type of the given function
  • add the take-drop benchmark
  • make bottom-up enumeration more type directed

v0.2.8

  • export the A, B, C, D, E and F helper types

v0.2.6

  • require Express v0.1.10 due to hasHole being now exported there
  • require Eq result on conjure1, conjure2 and conjure3
  • code cleanup and more tests

v0.2.4

  • allow conjuring from specifications in addition to partial definitions (conjure1, conjure2, conjure3 and related functions)
  • improve examples
  • improve criteria for automatic primitive inclusion:
    • only include if :: ... -> Bool if there are Bool primitives
    • include False and True automatically only on Speculate's background
  • add code-optional candidate nubbing and debug functions

v0.2.2

  • by default, search for 60 argument combinations among 100000 enumerated combinations

v0.2.0

  • search until 100% match is found and exit
  • other misc changes

v0.1.2

For the changelog of earlier versions, check the git commit history.