Repository navigation
The 0.4.0 release adds self-reporting. The library writes a
syslog record about its own failures,
on by default, so a collector learns which audit-processing fault occurred rather
than only that records are missing. It adds wolfSSL as a third TLS pack, with both
at-rest policies, tested on Linux and built from source under QEMU. The block store
is now tested adversarially in CI, with every single media fault applied at every
position. A failed connect or a refused handshake is reported once per outage, not
once per attempt. Every CI run's test results and coverage, gated at 99%, are
published with the documentation.
Still 0.x: the label describes platform breadth and the absence of field
integrations, not the maturity of the code. Two changes break source compatibility,
both under Before you upgrade.
Before you upgrade
These break source compatibility with 0.3.0:
- FreeRTOS-Plus-TCP V4.3.0 or later. The Plus-TCP pack uses the names V4.3.0 gave
the next-hop lookup result. No SolidSyslog header changed; upgrade Plus-TCP. SOLIDSYSLOG_BLOCK_STORE_ERROR_DISCARD_FAILEDis removed. A rejected record is
no longer marked on the device, so the failure cannot arise.
These build unchanged but behave differently:
- Reports need room. A report carries one more SD-ELEMENT than the application's
records, so aSOLIDSYSLOG_MAX_MESSAGE_SIZEfitted tightly to those truncates it;
the hardening path's example grew from 400 to 560 octets. A report also occupies
store capacity, one per kind per run of the fault, and the table of pending events
adds sixteen slots of 16 bytes of static RAM on a 32-bit target. SolidSyslogConfighas three new fields:Scratch,IsEventReportingOnand
EventReportingContext. Zero keeps the defaults; a positional initialiser needs
them.- Two new categories reach a handler:
SOLIDSYSLOG_CAT_LOGGER_HALTEDand
SOLIDSYSLOG_CAT_STORE_THRESHOLD_CROSSED. - A NULL mutex or NULL ring is refused at Create.
SolidSyslogCircularBuffer_Create
andSolidSyslogPosixMessageQueueBuffer_CreatereportBAD_CONFIGand return the
NullBuffer, where 0.3.0 dereferenced the NULL at the first write. A wiring that
logs and services on one thread passesSolidSyslogNullMutex_Get().
RFC compliance at this release
| RFC | Total | Supported | Partial | Not Met | N/A |
|---|---|---|---|---|---|
| RFC 5424 | 40 | 33 | 0 | 0 | 7 |
| RFC 5425 | 21 | 16 | 0 | 0 | 5 |
| RFC 5426 | 16 | 7 | 0 | 0 | 9 |
| RFC 6587 | 8 | 7 | 0 | 0 | 1 |
No clause changed status since 0.3.0, and no row was added or removed. The records
the logger writes about itself carry an SD-ID under the maintainer's IANA private
enterprise number, as RFC 5424 section 7.2.2 requires.
The maintainer's assessment, not a certification; each status assumes a conforming
platform supplying the roles it needs. The full matrix:
docs/rfc-compliance.md at v0.4.0.
Known limitations
No defect is tracked at this release.
Verifying this release
Six assets are attached: the CycloneDX SBOM, the content-tree SHA-256 and the offline
documentation bundle, each with a cosign signature bundle. Signing is keyless via
GitHub OIDC; there is no personal key. The bundle carries the test report and
coverage of the tagged commit. Commands:
docs/security/release-verification.md at v0.4.0.
⚠ BREAKING CHANGES
- S47.04 upstream pins move to current releases; Plus-TCP needs V4.3.0 (#1171)
- S25.02 a rejected record is stepped past unmarked (#1113)
Features
- a refused TLS peer's dates are named ahead of its name, on all three packs (#1140) (ac49cf5)
- S38.01 injectable log scratch so the message buffer costs RAM once, not once per task (#1096) (a5b766e)
- S44.02 pending-kind table behind SolidSyslog_Error, capture only (#1131) (3bebe32)
- S44.03 Service reports a buffer loss as a record of its own (#1137) (6897120)
- S44.04 the full first-cut set of reported kinds, each with its scenario invariant (#1146) (6c3f514)
- S44.05 store threshold crossed and logger halted are raised as events and reported (#1149) (5f32716)
- S47.05 a browsable test report of every CI run is published with the documentation (#1181) (2e099f1)
- S47.06 coverage can be inspected line by line on the documentation site (#1176) (a88c0fe)
- wolfSSL is supported - the stream and credentials role over Posix TCP, pinned fingerprints, cipher policy and mutual TLS, both at-rest policies, on Linux and built from source on the CMSIS-RTOS2 lwIP Sockets QEMU target (#1125) (430bfc8)
Bug Fixes
- a reset that lands before Open reads its pcb is a refusal, not a missing endpoint (#1130) (04ba6f3)
- a stream reports a failed connect once per outage, not once per attempt (#1112) (5cab846)
- a TLS credentials source reports a refusal that fails Install once per run, not once per attempt (#1142) (a9a99c9)
- CircularBuffer and PosixMessageQueueBuffer report a NULL mutex instead of dereferencing it (#1097) (a838a9a)
- S25.02 a rejected record is stepped past unmarked (#1113) (34445e2)
- S25.03 a hole in the block set no longer wraps the resume run or evicts an intact block (#1111) (1c63bce)
- S25.05 a block the read has finished with is disposed of however its last record was passed (#1117) (0c41265)
- S47.04 upstream pins move to current releases; Plus-TCP needs V4.3.0 (#1171) (510a6f2)
- the circular buffer reports a NULL ring at Create and returns the NullBuffer (#1102) (7ff7e9d)
- the three TLS streams report a refusal that ends an Open once per run, not once per attempt (#1141) (83aaea3)