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.