NEWS
rtemis.core 0.2.0
New features
- New
abort() dual-channel error signaller (in log.R): emits a styled
one-line event to the operator console (most-specific class name +
caller bracket) and signals a condition whose $message field is plain
text - safe to serialize into JSON/HTML/any ANSI-unaware sink.
abort() captures the call stack at the signal site and attaches it to
the condition as $trace. Unlike base R's traceback() (which only
populates .Traceback for uncaught errors), $trace survives
tryCatch() and travels with the condition - useful for server-side
handlers that ship errors to a browser-side debug pane.
- New exported
format_trace() helper: renders the $trace pairlist (or
the condition itself) as a numbered, one-line-per-frame string.
abort() resolves the user's calling function via a stack walk that
skips frames in this package and in base (tryCatch, doTryCatch,
etc.). Both the console bracket and the condition's $call field point
to the same user frame - so R's default error printer shows
Error in my_func(x) : ... instead of bare Error: ..., regardless
of how many check_* / clean_* wrappers sit between abort() and
the caller.
- New
info(), warn(), success(), dbg() log helpers, all routed
through msg() for consistent timestamp + glyph + caller-bracket
formatting.
- Error class hierarchy: every
check_* / clean_* abort carries
failure-mode classes (rtemis_null_input, rtemis_na_input,
rtemis_type_error, rtemis_length_error, rtemis_range_error,
rtemis_value_error, rtemis_dependency_error), all inheriting from
rtemis_input_error - callers can catch input failures broadly or
narrow to a specific failure mode via tryCatch().
- New global option
rtemis.show_caller (default TRUE): set to FALSE
in .Rprofile to suppress the caller bracket on all log lines for the
session.
format_caller() now auto-suppresses non-name expressions (anonymous
function literals, inline do.call-style invocations) - no more
[function (ws, req) {...] brackets cluttering logs from
callback-heavy code.
Breaking changes
- All
check_* and clean_* functions now signal errors via abort()
with structured condition classes rather than via cli::cli_abort().
Error message text changes from cli's {.var x} styling to plain
backtick-quoted names (e.g. `x` cannot be NULL.). Code that
matches on exact error message strings will need to be updated.
Generic tryCatch(error = ...) handlers continue to work; handlers
keyed on the previous rlang_error / cli-specific classes will
need to be updated to the new rtemis_error hierarchy (which also
gains structured failure-mode subclasses).
rtemis.core 0.1.0 (2026-05-09)
- Added custom S7 properties set
- Expanded
check_* function set
rtemis.core 0.0.3 (2026-04-21)