@@ -4,38 +4,12 @@ All notable changes to this project are documented in this file.
44
55## [ Unreleased]
66
7- ### Changed
8- - Enforce ` -d:noSignalHandler ` at compile time: the build now fails with an
9- actionable message unless the consumer sets ` -d:noSignalHandler ` (libraries
10- embedded in a foreign host such as Go/Rust) or ` -d:ffiAllowSignalHandler `
11- (standalone Nim binaries). Prevents the Nim runtime from installing its own
12- OS signal handlers and clobbering the host's — the cause of a real status-go
13- regression.
14- - User event callbacks now run on a dedicated event thread fed by a
15- bounded SPSC queue (default capacity 1024), so a slow listener can no
16- longer block the FFI thread or concurrent ` add_event_listener ` /
17- ` remove_event_listener ` calls
18- ([ #6 ] ( https://github.com/logos-messaging/nim-ffi/issues/6 ) ).
19- - Replaced the dedicated watchdog thread with a heartbeat check that
20- runs on the event thread. The FFI thread advances an atomic heartbeat
21- each loop iteration; if it stalls for more than 1s past the start-up
22- grace window, the event thread emits the ` not_responding ` event.
23-
247### Added
258- Queue-overflow handling: when the bounded event queue is full, the
269 library sets a sticky "stuck" flag, logs an error, fires
2710 ` not_responding ` from the event thread, and rejects subsequent
2811 ` sendRequestToFFIThread ` calls with `event queue stuck - library
2912 cannot accept new requests`.
30-
31- ## [ 0.2.0] - 2026-06-04
32-
33- Major release introducing the CBOR-based wire format, CBOR-backed FFI events
34- with a multi-listener registry, multi-language binding generation (C++, Rust,
35- CDDL), CI hardening with sanitizers, and several robustness fixes around
36- context lifetime and memory safety.
37-
38- ### Added
3913- ** CBOR serialization** as the FFI wire format, replacing the previous
4014 JSON/string-based ` serial.nim `
4115 ([ #23 ] ( https://github.com/logos-messaging/nim-ffi/pull/23 ) ).
@@ -70,6 +44,21 @@ context lifetime and memory safety.
7044 ([ #41 ] ( https://github.com/logos-messaging/nim-ffi/pull/41 ) ).
7145
7246### Changed
47+ - Enforce ` -d:noSignalHandler ` at compile time: the build now fails with an
48+ actionable message unless the consumer sets ` -d:noSignalHandler ` (libraries
49+ embedded in a foreign host such as Go/Rust) or ` -d:ffiAllowSignalHandler `
50+ (standalone Nim binaries). Prevents the Nim runtime from installing its own
51+ OS signal handlers and clobbering the host's — the cause of a real status-go
52+ regression.
53+ - User event callbacks now run on a dedicated event thread fed by a
54+ bounded SPSC queue (default capacity 1024), so a slow listener can no
55+ longer block the FFI thread or concurrent ` add_event_listener ` /
56+ ` remove_event_listener ` calls
57+ ([ #6 ] ( https://github.com/logos-messaging/nim-ffi/issues/6 ) ).
58+ - Replaced the dedicated watchdog thread with a heartbeat check that
59+ runs on the event thread. The FFI thread advances an atomic heartbeat
60+ each loop iteration; if it stalls for more than 1s past the start-up
61+ grace window, the event thread emits the ` not_responding ` event.
7362- Removed the redundant ` ffiType ` macro; the ` ffi ` macro is now the single
7463 authoring entry point
7564 ([ #22 ] ( https://github.com/logos-messaging/nim-ffi/pull/22 ) ).
@@ -97,7 +86,7 @@ context lifetime and memory safety.
9786 and ` rust_client ` , the latter with a Tokio async variant) (#15 ).
9887- JSON/string-based FFI (de)serialization via ` ffi/serial.nim `
9988 (` ffiSerialize ` /` ffiDeserialize ` ), with ` tests/test_serial.nim ` coverage.
100- (CBOR replaced this layer later, in 0.2.0 .)
89+ (CBOR replaced this layer later.)
10190- FFI context pool (` ffi/ffi_context_pool.nim ` ) using a fixed array of contexts.
10291- Test suite expansion: ` test_alloc.nim ` , ` test_ctx_validation.nim ` ,
10392 ` test_ffi_context.nim ` , ` test_gc_compat.nim ` .
0 commit comments