Changelog for code-conjure-0.5.10
Changelog for (Code) Conjure
v0.5.10 (February 2024)
- improve pruning of candidate functions;
Conjure
: un-export experimentalequalModuloTesting
Conjure.Conjurable
: addconjureListFor
,conjureSizeFor
&conjureGrounds
;- Reorganize internal modules
- Add
Conjure.Defn.Redundancy
module for redundant candidates; - Add
Conjure.Defn.Test
module testing candidate definitions; - Add
Conjure.Reason
module for term-rewriting-based reasoning; - Add
Conjure.Red
module for recursive descent; Conjure.Expr
: add a few auxiliary functions- Move functions out of
Conjure.Engine
into new modules - add more examples and benchmarks;
- improved testing of Conjure itself;
- and several other improvements and fixes.
v0.5.8 (January 2024)
- prune redundant mutants using a few new rules
- rework numeric recursion criteria
- improve pretty-printing
- improve error handling
- refactor and lint throughout
- Conjurable tuples up to 12-tuples
- bump Express requirement to v1.0.14 (bugfix)
v0.5.6 (November 2023)
Conjure
module: no main API changesConjure.Engine
: addequalModuloTesting
Conjure.Utils
: add some misc functions- add
bench/redundants
that reports groups of redundant candidates
v0.5.4 (November 2023)
This has been the "dev" version after v0.5.2 for almost a couple of years:
- report invalid theories-from-testing
- weed-out some redundant candidates:
- add and use
isRedundantDefn
- update how deconstructions are handled
- add and use
- add (but not use)
conjureSize
toConjurable
v0.5.2 (March 2022)
- 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 (September 2021)
- 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 (September 2021)
- remove need for explicit deconstructions:
- use
-
and1
instead ofdec
; - allow
mod
anddiv
as deconstructions;
- use
- 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 (August 2021)
- 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
toConjure
; - simplify deconstructor discovery and add
conjureSize
toConjurable
; - add
cevaluate
,ceval
andcvl
toConjure.Conjurable
; - add
bench/gps
andbench/lowtests
; - improve tests and benchmarks.
v0.4.0 (July 2021)
- background primitives are now provided with
pr
andprim
. - 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 andconjureDefns
- minor changes in benchmarks
- cleanup unused code
v0.3.6 (June 2021)
- add switch for descending recursions
to allow generation of
gcd
- refactor recursion generation (replace a hole later)
- change
conjpureWith
to takeArgs
- rename two args fields to
maxBodyRecursions
andmaxEvalRecursions
at this point, the old names were misnomers.
v0.3.4 (June 2021)
- reallow recursions under
&&
and||
(simplifies the generatedor
,and
,set
andelem
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
andsetelem
v0.3.2 (June 2021)
- 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
replacesrecursexpr
) - 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 (May 2021)
- 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 (May 2021)
- export the
A
,B
,C
,D
,E
andF
helper types
v0.2.6 (May 2021)
- require Express v0.1.10 due to
hasHole
being now exported there - require Eq result on
conjure1
,conjure2
andconjure3
- code cleanup and more tests
v0.2.4 (May 2021)
- 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 areBool
primitives - include
False
andTrue
automatically only on Speculate's background
- only include
- add code-optional candidate nubbing and debug functions
v0.2.2 (May 2021)
- by default, search for 60 argument combinations among 100000 enumerated combinations
v0.2.0 (May 2021)
- search until 100% match is found and exit
- other misc changes
v0.1.2 (April 2021)
For the changelog of earlier versions, check the git commit history.