Speculoos library changelog
changelog metaversion 2
2024  
Brad Losavio (blosavio@sagevisuals.com)
Description: Work on addressing comments.
Project status: experimental
Urgency: low
Breaking: yes
added functions: predicates-without-collections, thoroughly-valid-collections?, thoroughly-valid-scalars?
renamed functions: - map-2→- map*
- map-indexed-2→- map-indexed*
- reduce-2→- reduce*
- reduce-indexed-2→- reduce-indexed*
- validate-fn-meta-spec→- validate-fn
 moved functions: recover-literal-path, reduce-indexed
removed functions: bazooka-swatting-files, bed-of-procrustes, map*, map-indexed*, nil-out, reduce*, reduce-indexed*, smash-data
altered functions: instrument, scalars-without-predicates, thoroughly-valid?, validate-collections, validate-fn-meta-spec, validate-fn-with, validate-scalars, validate-set-elements
Breaking changes
- Adjusted `scalars-without-predicates` to return a set of all-paths elements, instead of a sequence, to be consistent with `collections-without-predicates`. 
- Re-named functions in collection-functions namespace from `blah-2` to `blah` to emphasize they're not merely a new version, but that they operate on *any* Clojure collection type, and to be consistent with `fn-in` namespace members. 
- Removed Speculoos project's internal 'fn-in' namespace to an external lib. 'fn-in' is a new dependency. 
- Moved `recover-literal-path` and helper functions from utility namespace to core namespace; moved attendant tests from utility-tests to core-tests. In preparation for adding feature to `validate-collections`. 
- GitHub Issue #1- : Changed validation report key returned `validate-set-elements` from `:datum` to `:datums-set` to emphasize that *every* datum in the set is validated. 
 
- Removed un-serious utility functions of dubious usefulness. 
- Removed function arg-vs-ret scalar/collection validation feature from `validate-fn-with`. It was too complex, and difficult to use. 
- Re-named `validate-fn-meta-spec` to `validate-fn`. 
Non-breaking changes
- Added `thoroughly-valid-scalars?` and `thoroughly-valid-collections?` utilities. 
- Adjusted `thoroughly-valid?` to internally use new functions. 
- Removed hard-coded collection hierarchy derivation and replaced with a `load` from a single file. 
- Expanded docstrings and examples to provide clarity, completeness, and better convey how functions behave and what they're intended for, especially for a user who looks at the API doc before html documentation. 
- Internalized `reduce-indexed` into 'core' namespace, plus unit tests into core-tests. Removed 'collection-functions' namespace because Speculoos does not use `map*`, `map-indexed*`, nor `reduce*`. 
- Removed Speculoos project's own version of the derived collection hierarchy; now refers to the one provided by the 'fn-in' dep. 
- Upgraded `validate-collections` report so that entries now indicate the literal path to the collection datum, at keyword `:path-datum`. 
- GitHub Issue #2- : Upgraded `validate-scalars` to accept 'bare' scalar and 'bare' predicate. This is intentionally undocumented behavior, but provided for convenience and least surprise. 
 
- GitHub Issue #1- : Fixed incorrect `:path` reporting in `validate-set-elements`. 
 
- GitHub Issue #3- : Fixed bug in `validate-collections` that validated un-paired collection predicates against `nil`. 
 
- Added `predicates-without-collections` to complete feature matrix. 
- GitHub Issue #4- : Fixed ignored return collection validations in `valdiate-fn-with`. 
 
- Adjusted `validate-fn-with` to take advantage of `validate-scalars` upgraded ability to validate bare scalars with bare predicates. 
- Added a completely new argument/return relationship validation to `validate-fn-with` that is much cleaner. Old, complex way remains. 
- Added `:canonical` option to `exercise` and `exercise-fn` to use canonical values instead of randomly-generated values. 
- GitHub Issue #9- : Fixed `valid-collections?` to properly handle collection predicates that yield truthy/falsey values. 
 
version 1
2024 July 26
Brad Losavio (blosavio@sagevisuals.com)
Description: Request for comments.
Project status: experimental
Urgency: low
Breaking: yes
added functions: lazy-seq?, thoroughly-valid?
renamed functions: - collections-without-specs→- collections-without-predicates
- data-with-specs→- scalars-with-predicates
- data-without-specs→- scalars-without-predicates
- valid-collection-spec?→- valid-collections?
- valid-macro-spec?→- valid-macro?
- valid-scalar-spec?→- valid-scalars?
- validate-collection-spec→- validate-collections
- validate-scalar-spec→- validate-scalars
 altered functions: data-with-specs, data-without-specs, defpred, specs-without-data
Breaking changes
- Re-named functions for clarity, correctness, and conciseness.
Also updated documentation to correspond to new function names. 
- Re-naming functions to more accurately convey purpose and action.
`data-without-specs` to `scalars-without-predicates`, `data-with-specs` to
 `scalars-with-predicates`, and `collections-without-specs` to
 `collections-without-predicates`. 
Non-breaking changes
- Upgraded `defpred` predicate definition macro that can inspect
 a function S-expression and create a random sample generator. Also added
 documentation and illustrations. 
- Added `thoroughly-valid?` utility function. 
- Improved `data-without-specs`, `specs-without-data`,
 `data-with-specs` to properly handle scalars within a set. 
- Removed un-needed/redundant api.clj and api.html pages because
they're automatically generated by Codox. 
- Added a `*max-tries*` dynamic var that governs random sample
 generators. 
- Added tests to verify handling of sequences emitted by
`interpose`, `interleave`, `lazy-cat`, `mapcat`, and `zipmap`. 
- Added `lazy-seq?` utility predicate. 
- Various documentation edits spanning 2024July10 through 2024July26. 
version 0
2024 June 6
Brad Losavio (blosavio@sagevisuals.com)
Description: Initial public release.
Project status: experimental
Urgency: low
Breaking: no
Breaking changes
Non-breaking changes
Changelog info
A human- and machine-readable changelog.edn will accompany each version at the project's root directory. changelog.edn is tail-appended file constructed from all previous releases, possibly automatically-composed of per-version changelog-vN.edn files in a sub-directory.
A changelog.md file, intended for display on the web, is generated by a script. This script also contains specifications describing the changelog data.
Tentative policy: Bug fixes are non-breaking changes.