Skip to content

v2.0.0 (2025-02-27)

Compare
Choose a tag to compare
@ptaoussanis ptaoussanis released this 27 Feb 14:36
· 15 commits to master since this release

This is a major rewrite of Truss that expands the library's scope, and modernises its implementation. There are breaking changes to the ex-data produced by the 4x assertion macros (have, have?, have!, have!?) in Truss and Encore.

This is a non-breaking update for folks not using assertion ex-data.

Apologies for any inconvenience! - Peter Taoussanis 🙏

CHANGES since v1.x

Deprecated assertion API

Changes to assertion ex-data

The ex-data included in assertion failures has changed!

Old ex-data:

:pred ------ (Unchanged) Predicate form
:arg ------- (Unchanged) {:keys [form value type]}

:dt -------- `js/Error` or `java.util.Date`
:loc ------- {:keys [ns line column]}
:data ------ {:keys [arg dynamic]}

:env ------- {:keys [elidable? *assert*]}
:msg ------- String
:err ------- Error thrown during pred check

New ex-data:

:pred ------ (Unchanged) Predicate form
:arg ------- (Unchanged) {:keys [form value type]}

:inst ------ `js/Error` or `java.time.Instant`
:ns -------- Namespace string
:coords ---- [line column]
:data ------ Optional `:data` value (replaces :data/arg)
:truss/ctx - `truss/*ctx*` value (replaces :data/dynamic)

:msg ------- REMOVED (use `ex-message` instead)
:error ----- REMOVED (use `ex-cause`   instead)
  • You can customise ex-data by modifying *failed-assertion-handler*.
  • You can keep the old ex-data by setting the taoensso.truss.legacy-assertion-ex-data JVM property to true.

New since v1.x