packages feed

code-conjure-0.5.2: changelog.md

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.