Commit graph

376 commits

Author SHA1 Message Date
Peter Taoussanis
ecf4824f6b [nop] Bump deps 2024-10-29 09:48:36 +01:00
Peter Taoussanis
980439c646 v1.0.0-SNAPSHOT 2024-09-25 09:21:05 +02:00
Peter Taoussanis
0a3e3e80c6 v1.0.0-beta25 (2024-09-25) 2024-09-25 09:14:48 +02:00
Peter Taoussanis
ce9864a57b v1.0.0-SNAPSHOT 2024-09-23 09:23:22 +02:00
Peter Taoussanis
262c6d4324 v1.0.0-beta24 (2024-09-23) 2024-09-23 09:17:49 +02:00
Peter Taoussanis
88f7a3c7d6 [fix] Don't count non-list run forms 2024-09-23 09:14:29 +02:00
Peter Taoussanis
69df7aa86d v1.0.0-SNAPSHOT 2024-09-22 12:30:14 +02:00
Peter Taoussanis
7e348465ac v1.0.0-beta23 (2024-09-22) 2024-09-22 12:20:14 +02:00
Peter Taoussanis
85772f7335 [new] Cap length of displayed run-form when tracing 2024-09-22 10:38:10 +02:00
Peter Taoussanis
c9e84e8b38 [new] Avoid duplicated trace bodies
Trade off a small performance hit with tracing to avoid duplication
of potentially large expansions, and to help further eliminate potential
issues when embedding within IOT-style macros (`core.async/go`, etc.)
2024-09-20 22:55:12 +02:00
Peter Taoussanis
cbab57be66 [fix] [#21] Work around issue with use in Cljs core.async/go bodies
Problem:
  (clojure.core.async/go (taoensso.telemere/log! "hello")) ; Compiles fine
  (cljs.core.async/go    (taoensso.telemere/log! "hello")) ; Compile fails

I could try to get to the bottom of exactly what's going on - but ultimately
IOC mechanisms like `go` are always going to be a bit fragile, especially for
heavily-optimized/unusual code.

In this case, the problem is thankfully only with Cljs - and Telemere's Cljs
performance isn't too critical - so I think we can afford to just bypass any
potential fiddling by the `go` macro by wrapping Cljs Telemere expansions in
an IIFE ((fn [] ...)).

Downside is the (small) added cost of a function construction and call.
Upside   is avoiding potential issues with core.async and other similar
IOC-style systems (Electric Clojure, etc.)
2024-09-20 22:55:12 +02:00
Peter Taoussanis
568906c96b [fix] [#20] Wrong :arglists meta on spy! 2024-09-20 22:55:12 +02:00
Peter Taoussanis
d9c3583631 [new] Add :rate-limit-by option to all signal creators
When present, will cause limits to be per [expansion, by-value]
2024-09-20 22:55:12 +02:00
Peter Taoussanis
f703630914 [mod] Update pr-signal-fn to use clean-signal-fn 2024-09-20 22:55:12 +02:00
Peter Taoussanis
be55f44a87 [new] Add clean-signal-fn util 2024-09-20 22:55:12 +02:00
Peter Taoussanis
d12b0b145b [new] Add signal-allowed? util
Useful for using Telemere's filtering features without generating
any signals, etc.
2024-09-20 22:55:12 +02:00
Peter Taoussanis
a9005e7f1c [mod] Rename taoensso.telemere.api -> taoensso.telemere.shell 2024-09-20 22:55:12 +02:00
Peter Taoussanis
965c2277fd [new] Allow compile-time config of uid kind 2024-09-20 22:55:12 +02:00
Peter Taoussanis
a09c628f23 [nop] Signal fields: revert to initial behaviour
Seems issue with "Electric Clojure" might not be on Telemere's side.
2024-09-20 22:55:12 +02:00
Peter Taoussanis
9b24b54215 [fix] Signal fields: define same fields regardless of platform
Attempted fix for possible issue with "Electric Clojure"
2024-09-20 22:55:12 +02:00
Peter Taoussanis
92a7aee530 [fix] Signal fields: define based on target (not macro) platform
Attempted fix for possible issue with "Electric Clojure"
2024-09-20 22:55:12 +02:00
Peter Taoussanis
f52a04b4dc [fix] [#18] Support {:uid :auto} for non-tracing signal creators 2024-09-20 22:55:12 +02:00
Peter Taoussanis
974df3e152 [doc] Drop suggested edn suffixes from env config 2024-09-20 22:55:12 +02:00
Peter Taoussanis
e4a0a41a1b [doc] Misc improvements 2024-09-20 22:55:12 +02:00
Peter Taoussanis
f9564b2fc5 [nop] Misc improvements 2024-09-20 09:37:28 +02:00
Peter Taoussanis
7e8f692b93 v1.0.0-SNAPSHOT 2024-08-28 18:43:36 +02:00
Peter Taoussanis
97f0eb5efd v1.0.0-beta22 (2024-08-28) 2024-08-28 18:35:25 +02:00
Peter Taoussanis
77ed27cfd1 [mod] Move dep: com.taoensso/slf4j-telemere -> com.taoensso/telemere-slf4j 2024-08-28 18:26:52 +02:00
Peter Taoussanis
ece51b2ef6 [new] Add experimental facade API for lib authors, etc. 2024-08-28 18:26:52 +02:00
Peter Taoussanis
0f09b797ed [fix] More robust mechanism for retaining nested macro callsite info 2024-08-28 16:54:57 +02:00
Peter Taoussanis
0e4942e99c [fix] :line unit tests 2024-08-28 16:54:55 +02:00
Peter Taoussanis
19cd1af3a4 [nop] Restructure repo 2024-08-28 16:53:31 +02:00
Peter Taoussanis
824ebc7802 [doc] Update docs and examples 2024-08-28 09:17:33 +02:00
Peter Taoussanis
96cc9e51f4 [nop] Misc housekeeping 2024-08-27 14:36:32 +02:00
Peter Taoussanis
3388103acf v1.0.0-SNAPSHOT 2024-08-26 22:14:56 +02:00
Peter Taoussanis
6032d2405e v1.0.0-beta21 (2024-08-26) 2024-08-26 13:19:43 +02:00
Peter Taoussanis
3068ccf8d7 [new] Simplify signal expansion 2024-08-26 13:13:33 +02:00
Peter Taoussanis
bbfe61106c [new] Add basic "full" bench numbers (to handled signals) 2024-08-26 13:13:33 +02:00
Peter Taoussanis
b4b06f324b [nop] Micro-optimize binding conveyance
Avoid repeatedly capturing the same callsite binding frame for each registered
handler. While the perf benefit of this change is minimal, the approach is also
conceptually cleaner.
2024-08-26 13:13:33 +02:00
Peter Taoussanis
8066776a80 [doc] Update docs and examples 2024-08-26 09:57:29 +02:00
Peter Taoussanis
54129e91a0 [nop] Misc housekeeping 2024-08-24 11:14:50 +02:00
Peter Taoussanis
9a0bdf92f2 v1.0.0-SNAPSHOT 2024-08-24 11:14:50 +02:00
Peter Taoussanis
b997a3549e v1.0.0-beta20 (2024-08-23) 2024-08-23 14:08:23 +02:00
Peter Taoussanis
ddc9480d20 [doc] Update docs and examples 2024-08-23 14:06:02 +02:00
Peter Taoussanis
84957c6d0a [new] OpenTelemetry handler: improve span interop
When this feature is enabled (see `otel-tracing?`), Telemere's tracing
signal creators (`trace!`, `spy!`, etc.) will now manipulate OpenTelemetry's
span context when relevant.

Before this commit:

  Telemere would detect and use OpenTelemetry span context, but
  the inverse wasn't true: OpenTelemetry instrumentation wouldn't
  recognize Telemere spans.

After this commit:

  Telemere detects OpenTelemetry span context, and the inverse is
  also true: OpenTelemetry instrumentation will recognize Telemere
  spans.

The net effect:

  When you use Telemere to trace forms that may themselves do
  auto/manual OpenTelemetry instrumentation - the resulting spans
  will now properly identify Telemere's spans as parents.

Note that this is interop is implemented in a unique way that retains
Telemere's usual benefits re: low costs at signal callsite, and ability
to skip costs when filtering / sampling / rate-limiting / etc.
2024-08-23 14:06:02 +02:00
Peter Taoussanis
ef678bcc36 [mod] Generalize "intake", rename -> "interop"
Extending feature to cover general interop like OpenTelemetry tracing, etc.
2024-08-23 14:05:46 +02:00
Peter Taoussanis
88eb5211f7 [mod] Make :host output opt-in for default signal handlers 2024-08-23 13:59:22 +02:00
Peter Taoussanis
331bea7a51 [nop] Misc housekeeping 2024-08-22 17:40:17 +02:00
Peter Taoussanis
58b3af893c v1.0.0-SNAPSHOT 2024-08-22 16:20:04 +02:00
Peter Taoussanis
b44eb106a3 v1.0.0-beta19 (2024-08-20) 2024-08-20 19:28:16 +02:00