Skip to content

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 14:36
· 9 commits to master since this release
Immutable release. Only release title and notes can be modified.
v0.16.0
1407be3

Breaking changes:

  • LogLevel and its parse error are re-exports of freeswitch-types rather than local types. Severity follows switch_log_level_t numbering, so the less severe level compares greater and a level >= min filter has to become level <= min. The variant is Error rather than Err, a Disable variant exists that is not a severity, FromStr is case sensitive, and the free level_from_bracketed replaces LogLevel::from_bracketed.
  • A channel variable's name is a VarName: on MessageKind::Variable, on a CHANNEL_DATA block's variable keys, and on the warnings that name a cut variable. It holds the bare name, Display renders the variable_ spelling the log uses, and it implements no comparison against str, so a consumer comparing with a prefixed literal fails to compile instead of silently matching nothing.
  • MessageKind::ChannelLifecycle carries a typed LifecycleEvent beside its raw detail.
  • An originate success line classifies as MessageKind::OriginateSuccess, carrying the channel name and a validated peer UUID, where it previously arrived as a channel lifecycle message. fslog --category selects it as originate-success.
  • MessageKind::Execute's depth is Option<u32>: a missing or unreadable [depth=N] no longer reads as zero.
  • ParseStats::unaccounted_lines returns a signed difference, so an over-count is visible instead of clamped to zero.
  • Removed: FieldKind::SipUri, UnclassifiedReason::UnknownMessageFormat, UnclassifiedReason::TruncatedField, and the is_peer_uuid_var export.

New features:

  • stamp_lower_bound and stamp_upper_bound pad a partial date into the rotation stamp form, which every consumer windowing a log had been re-deriving.
  • The fixtures and corpus cargo features gate the production-log tests. Without a corpus they compile to nothing rather than skipping silently, and the whole-corpus sweep runs before a release rather than on every commit.

Bug fixes:

  • A peer's back-link survives another leg relinking through the same key, and removing a session no longer leaves a reverse pointer that a later channel could follow into a resurrected empty session.
  • A conference move that keeps its instance re-seats on the new name instead of leaving the registry keyed on the old one.
  • One validator now reads the log header grammar, and a record starts only where the level field closes, so a write cut inside that field no longer opens an entry.
  • An originate peer UUID the write buffer cut is reported as unreadable instead of being indistinguishable from a build that omits it.
  • fslog: a log file it cannot open fails the search instead of reporting no matches and exiting zero; a mid-file read error ends the command and names the file; errors print their whole source chain; a corrupt timestamp no longer panics the printer; invalid UTF-8 is counted once per file instead of warned per line; monitor --dump reads the configuration the TUI reads; one rule resolves a FILE argument for read, tail and monitor; --level says which way it was wrong and rejects disable.

Build:

  • Requires freeswitch-types 1.5.
  • The release image is built on bookworm, raising the binary's glibc floor to 2.34. A Debian 11 target can no longer install the package.

Refactoring:

  • The parser's internals were split and deduplicated throughout, including the collision detector and the stream's own iterator, with parser output verified byte-identical against the fixture corpus.