Before commit: {:run nil} didn't register as a tracing signal
After commit: {:run nil} correctly registers as a tracing signal with `nil` form
nil forms aren't typically useful or used, but can come up by accident
so it's important to handle these correctly.
The `trace!` docstring also promises that the return value will always be
equal to the given input. This didn't hold before.
Motivation:
These vars aren't used often, are are supplementary rather than
a key part of Telemere's API.
Having them listed in the API docs adds to the noise there and makes
the API seem more overwhelming than necessary.
Users caught by this change should receive a clear compile-time error.
Apologies for the nuissance!! This change is part of a final review
of names before the release of v1 final.
Users caught by this change should receive a clear compile-time error.
Apologies for the nuissance!! This change is part of a final review
of names before the release of v1 final.
Users caught by this change should receive a clear compile-time error.
Apologies for the nuissance!! This change is part of a final review
of names before the release of v1 final.
Motivations:
- "xfn" is a lot shorter than "middleware", making it more
convenient to use at signal calls, compare:
(log! {:middleware my-fn} "msg")
(log! {:xfn my-fn} "msg"}
- "middleware" was originally chosen to match Timbre's terminology,
but actually carries some misleading connotations that in hindsight
are probably better avoided while we still have the chance to change
this.
This change will only affect rare advanced users that depend on
the return value of `log!` or `event!`. For all other users this
will be a non-breaking change.
Before this commit:
`log!` and `event!` returned true iff signal was allowed.
After this commit:
`log!` and `event!` now ALWAYS return nil.
`log!?` and `event!?` have been added that keep the old behaviour.
Motivation:
It's pretty rare to use the return value when generating log or event
signals. I originally included the return value since it CAN be handy,
and I figured it could just be ignored by those that don't need it.
But #53 showed that there's a downside I hadn't anticipated - some
users may actually depend on / prefer a nil return to prevent
accidentally affecting program flow.
I think that's a legitimate enough concern to still make a change now
before v1 final.
Apologies for the nuissance!
Before this commit: A nil signal `:kind` renders as "DEFAULT".
After this commit: A nil signal `:kind` isn't rendered at all.
The previous behaviour wasn't particularly useful, and as Mark
helpfully pointed out - makes it difficult to skip `:kind` rendering.
The new behaviour also better matches the behaviour for other signal
keys, which can mostly be dissoc'ed to skip rendering.