Commit graph

376 commits

Author SHA1 Message Date
Peter Taoussanis
f37f54e1da [mod] Rename "rate-limit" -> "limit"
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.
2025-03-10 13:02:57 +01:00
Peter Taoussanis
1f4b49a21a [mod] Rename "sample-rate" -> "sample"
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.
2025-03-10 13:02:57 +01:00
Peter Taoussanis
7cccf672f5 [mod] Rename "middleware" -> "transform" (xfn)
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.
2025-03-10 13:02:57 +01:00
Peter Taoussanis
c78eb07385 [mod] [#56] utils/clean-signal-fn exclude :schema by default
It's probably more common for users to NOT want the `:schema` key
to be included, so let's make that the default.
2025-03-10 13:02:57 +01:00
Peter Taoussanis
82f4c31651 [new] [#57] File handling: make file stream more robust
1. Check `.canWrite` rather than just `.exists`
2. Recreate file and/or dir/s if needed any time
   file stream is recreated.
2025-03-10 13:02:57 +01:00
Peter Taoussanis
af45ffc396 [fix] [#57] File handling: use nio API to create missing parent dirs
Skimming the docs, it seems that the nio API might be better able to
create dirs for edge cases like symbolic links, etc.?
2025-03-10 13:02:57 +01:00
Peter Taoussanis
79173a68cc [fix] [#55] SLF4J signals should include *ctx* 2025-03-10 13:02:57 +01:00
Peter Taoussanis
c60f33edeb [fix] [#32] Fix clj-kondo warnings
Note also related Encore-side PR:
https://github.com/taoensso/encore/pull/84
2025-03-10 13:02:57 +01:00
Peter Taoussanis
bb3d351be8 [nop] Bump deps 2025-03-10 13:02:57 +01:00
Peter Taoussanis
2510c5dbb9 v1.0.0-SNAPSHOT 2025-03-10 13:02:57 +01:00
Peter Taoussanis
9ba4bd986d v1.0.0-RC4 (2025-03-03) 2025-03-03 16:52:44 +01:00
Peter Taoussanis
b03b06de6a [nop] Housekeeping 2025-03-03 16:52:44 +01:00
Peter Taoussanis
6b0e0b9fff [doc] Mention :inst monotonicity 2025-03-03 11:31:52 +01:00
Peter Taoussanis
bfea51570f [new] Alias keep-callsite, mention in signal! docs 2025-03-03 11:30:10 +01:00
Peter Taoussanis
ac5feb4723 [mod] [#53] Breaking: change return value of log!, event!
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!
2025-03-03 11:19:36 +01:00
Peter Taoussanis
e32ed8deb5 [new] Add base-opts arg to impl signal creator 2025-03-03 11:01:39 +01:00
Peter Taoussanis
46e82f0816 [nop] Callsite housekeeping 2025-03-03 11:01:39 +01:00
Peter Taoussanis
ea20f6836b [nop] Un-alias public signal-allowed?, signal! macros 2025-03-03 11:01:39 +01:00
Peter Taoussanis
634cc53405 [mod] [#52] signal-preamble-fn should ignore nil :kind (@marksto)
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.
2025-03-03 11:01:39 +01:00
Peter Taoussanis
410ed8914c [fix] [#52] signal-preamble-fn should use host info in signal (@marksto) 2025-03-03 11:01:39 +01:00
Peter Taoussanis
78ed4d7f14 [mod] [#51] Make default console handler synchronous by default
This might be less surprising for beginners and new users, so
should probably be the default.
2025-03-03 11:01:39 +01:00
Peter Taoussanis
4fdc55e9b8 [nop] Misc docs houskeeping 2025-03-03 11:01:39 +01:00
Peter Taoussanis
a60f5b8d7c [nop] Bump deps 2025-03-03 11:01:39 +01:00
Peter Taoussanis
dd9f4b2a33 v1.0.0-RC3 (2025-02-27) 2025-02-27 13:04:29 +01:00
Peter Taoussanis
b7d2b4a1ed [nop] Bump deps 2025-02-27 12:45:01 +01:00
Peter Taoussanis
4a6771a907 [doc] Update info on experimental vars 2025-02-27 12:45:01 +01:00
Peter Taoussanis
824f8e3d53 [doc] Rename "signal filters" -> "call filters", etc.
The new terminology hopefully makes the distinction clearer
between call filters and handler filters, etc.
2025-02-27 12:45:01 +01:00
Peter Taoussanis
fda22ce80c [mod] Signal options: drop :location, add :coords
This is the input-side change related to [1], and only
affects folks who've been providing custom callsite info to
Telemere signals (usually in the context of wrapper macros).

To provide custom callsite info BEFORE this commit:
  (tel/signal! {:location {:ns "my-ns", :line 10, :column 20}})

To provide custom callsite info AFTER this commit:
  (tel/signal! {:ns "my-ns", :coords [10 20]})

Motivation for the new override API:

  - It's shorter and cleaner.
  - It's less likely to cause confusion since it avoids the
    redundant signal keys (signals previously contained callsite
    info in 2 duplicate places).
  - The underlying implementation is simpler.
  - The util for manually getting coords is easier to use and doesn't
    require macro-time environment info, making it easier for folks
    to write wrapper macros that include line + column info.
  - When embedded, the new callsite info is shorter and easier for
    Cljs advanced compilation to de-duplicate (so helps reduce .js
    build size).

[1] Commit 1f99f7186b
2025-02-27 12:44:55 +01:00
Peter Taoussanis
1f99f7186b [mod] Signal content: drop :location, add :coords
This is a BREAKING change to get in before v1 final.

Signal keys BEFORE this commit:
  `:location` ---- ?{:keys [ns file line column]} signal creator callsite
  `:ns` ---------- ?str namespace of signal creator callsite, same as (:ns     location)
  `:line` -------- ?int line      of signal creator callsite, same as (:line   location)
  `:column` ------ ?int column    of signal creator callsite, same as (:column location)
  `:file` -------- ?str filename  of signal creator callsite, same as (:file   location)

Signal keys AFTER this commit:
  `:ns` ---------- ?str namespace of signal creator callsite
  `:coords` ------ ?[line column] of signal creator callsite

Motivation for the breaking change:

  The new callsite schema is simpler to use/override, reduces noise, and can reduce
  code expansion size (and so Cljs build size).

  - `:file` was rarely useful, but often added large embedded strings.
  - `:location` was redundant, and often difficult for Closure's
    advanced build to properly de-duplicate.

  This schema will be shared by Truss v2 and Tufte v3.
2025-02-27 12:44:30 +01:00
Peter Taoussanis
bb715fb206 [mod] OpenTelemetry: use standard attribute names when possible 2025-02-26 19:25:23 +01:00
Peter Taoussanis
2c5599c234 [nop] Update to Truss v2 2025-02-26 19:25:23 +01:00
Peter Taoussanis
97efef3d40 [doc] Update signal flow diagram 2025-02-26 17:11:30 +01:00
Peter Taoussanis
2795a6cd52 [nop] Drop enc/pred pattern 2025-02-26 17:11:30 +01:00
Peter Taoussanis
94f13e44f9 [nop] Tweak macro hygiene 2025-02-24 21:56:38 +01:00
Peter Taoussanis
fc7e748ac8 [nop] Stop using optimised binding by default
The improved performance rarely matters in practice, and can
cause issues for folks using deep-walking macros.

Better solution would be to eventually get the optimisation
implemented upstream in Clojure core.
2025-02-24 10:28:24 +01:00
Peter Taoussanis
feb2f64f92 [nop] Drop codox docs 2025-02-20 22:56:30 +01:00
Peter Taoussanis
af14494637 [doc] Misc improvements 2025-02-12 09:18:44 +01:00
Peter Taoussanis
35606d971d [fix] [#45] spy! docstring typo (@rafd) 2025-01-22 14:52:38 +01:00
Peter Taoussanis
7d4aed60d8 [doc] Misc improvements 2025-01-22 14:52:38 +01:00
Peter Taoussanis
f984cdd213 [nop] Simplify dir structure 2025-01-14 10:35:25 +01:00
Peter Taoussanis
db26a5d683 [fix] Fix environment val docs 2025-01-13 23:30:56 +01:00
Vladimir Pouzanov
413cce87c3 [new] [#44] Open Telemetry handler: add span kind option (@farcaller) 2025-01-03 16:19:09 +01:00
lvh
db0498b22c [doc] [#43] Note that ns filters work for SLF4J logger names (@lvh) 2024-12-31 16:16:36 +01:00
Peter Taoussanis
0e642ba21f [fix] Timbre shim: don't attach empty :vargs data 2024-12-31 12:28:22 +01:00
Peter Taoussanis
1517f30abf [doc] [#42] Timbre shim: document different spy error handling 2024-12-31 12:28:22 +01:00
Peter Taoussanis
3a9ffc6206 [fix] [#42] Timbre shim: rename spy! -> spy (@lvh) 2024-12-31 12:17:43 +01:00
Peter Taoussanis
8c7caf45fa v1.0.0-SNAPSHOT 2024-12-31 09:46:02 +01:00
Peter Taoussanis
17dcde97aa v1.0.0-RC2 (2024-12-24) 2024-12-24 11:19:33 +01:00
Peter Taoussanis
a04f255146 [new] Add & opts support to signal!, signal-allowed? 2024-12-24 10:35:11 +01:00
Peter Taoussanis
8cd4ca97e6 [doc] [#33] Add community examples link to Bling Gist 2024-12-24 10:35:07 +01:00