- The
defstate
macro now declares the resulting var as:dynamic
. This enables the use ofbinding
in tests. - The State object now implements
IPersistentStack
, thus now supports Clojure'speek
. This can be used to inspect the value, without starting it.
- The string representation of an unrealized State object now says
:unrealized
instead of:not-delivered
. - The string representation of a realized State object now adheres to a
*print-length*
of 10. - ❗️BREAKING: The low-level
state*
function now takes a:name
key, instead of:ns-str
and:name-str
. The new entry must be a symbol and is still optional. - ❗️BREAKING: The State object now implements
IReference
instead ofIObj
. This means thatwith-meta
support has been replaced withalter-meta!
andreset-meta!
. This way updating meta data does not result in a new State object anymore. - ❗️BREAKING: The notifications to the
watchpoint
now receive one of:starting
,:started
,:stopping
or:stopped
as the third argument, and the State object as the fourth argument.
- The
defstate
macro could sometimes mistake a string or map value for a docstring or attribute map. For example, this would fail(defstate foo "bar" :stop (println this))
. This is now fixed.
- The function
close!
was added, which closes a State by force by skipping its stop logic.
- Trying to redefine an active (i.e. realized)
defstate
is skipped and yields a warning.
- The low-level
state*
function no longer requires a:stop-fn
function.
- The low-level
state*
function is now public and documented.
Initial release