From b156b84ff3fe1df89b1c4e2dc034672ceded88b7 Mon Sep 17 00:00:00 2001 From: Ivan FB Date: Fri, 12 Jun 2026 17:34:40 +0200 Subject: [PATCH] docs(changelog): drop premature 0.2.0; fold into Unreleased at 0.1.4 The branch carried a dated `[0.2.0] - 2026-06-04` release section and `version = "0.2.0"` while the active release line is still 0.1.x, which misrepresents unshipped work as a released version. Treat 0.1.4 as the latest release and move everything above it back under `[Unreleased]`, merging the 0.2.0 bullets into the existing Added/Changed/Fixed groups. Set the package version to 0.1.4 and realign the example `requires` (>= 0.2.0 -> >= 0.1.4) so they stay satisfiable. Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 43 ++++++++++++++----------------------- examples/echo/echo.nimble | 2 +- examples/timer/timer.nimble | 2 +- ffi.nimble | 2 +- 4 files changed, 19 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 52ce175..dada7b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,38 +4,12 @@ All notable changes to this project are documented in this file. ## [Unreleased] -### Changed -- Enforce `-d:noSignalHandler` at compile time: the build now fails with an - actionable message unless the consumer sets `-d:noSignalHandler` (libraries - embedded in a foreign host such as Go/Rust) or `-d:ffiAllowSignalHandler` - (standalone Nim binaries). Prevents the Nim runtime from installing its own - OS signal handlers and clobbering the host's — the cause of a real status-go - regression. -- User event callbacks now run on a dedicated event thread fed by a - bounded SPSC queue (default capacity 1024), so a slow listener can no - longer block the FFI thread or concurrent `add_event_listener` / - `remove_event_listener` calls - ([#6](https://github.com/logos-messaging/nim-ffi/issues/6)). -- Replaced the dedicated watchdog thread with a heartbeat check that - runs on the event thread. The FFI thread advances an atomic heartbeat - each loop iteration; if it stalls for more than 1s past the start-up - grace window, the event thread emits the `not_responding` event. - ### Added - Queue-overflow handling: when the bounded event queue is full, the library sets a sticky "stuck" flag, logs an error, fires `not_responding` from the event thread, and rejects subsequent `sendRequestToFFIThread` calls with `event queue stuck - library cannot accept new requests`. - -## [0.2.0] - 2026-06-04 - -Major release introducing the CBOR-based wire format, CBOR-backed FFI events -with a multi-listener registry, multi-language binding generation (C++, Rust, -CDDL), CI hardening with sanitizers, and several robustness fixes around -context lifetime and memory safety. - -### Added - **CBOR serialization** as the FFI wire format, replacing the previous JSON/string-based `serial.nim` ([#23](https://github.com/logos-messaging/nim-ffi/pull/23)). @@ -70,6 +44,21 @@ context lifetime and memory safety. ([#41](https://github.com/logos-messaging/nim-ffi/pull/41)). ### Changed +- Enforce `-d:noSignalHandler` at compile time: the build now fails with an + actionable message unless the consumer sets `-d:noSignalHandler` (libraries + embedded in a foreign host such as Go/Rust) or `-d:ffiAllowSignalHandler` + (standalone Nim binaries). Prevents the Nim runtime from installing its own + OS signal handlers and clobbering the host's — the cause of a real status-go + regression. +- User event callbacks now run on a dedicated event thread fed by a + bounded SPSC queue (default capacity 1024), so a slow listener can no + longer block the FFI thread or concurrent `add_event_listener` / + `remove_event_listener` calls + ([#6](https://github.com/logos-messaging/nim-ffi/issues/6)). +- Replaced the dedicated watchdog thread with a heartbeat check that + runs on the event thread. The FFI thread advances an atomic heartbeat + each loop iteration; if it stalls for more than 1s past the start-up + grace window, the event thread emits the `not_responding` event. - Removed the redundant `ffiType` macro; the `ffi` macro is now the single authoring entry point ([#22](https://github.com/logos-messaging/nim-ffi/pull/22)). @@ -97,7 +86,7 @@ context lifetime and memory safety. and `rust_client`, the latter with a Tokio async variant) (#15). - JSON/string-based FFI (de)serialization via `ffi/serial.nim` (`ffiSerialize`/`ffiDeserialize`), with `tests/test_serial.nim` coverage. - (CBOR replaced this layer later, in 0.2.0.) + (CBOR replaced this layer later.) - FFI context pool (`ffi/ffi_context_pool.nim`) using a fixed array of contexts. - Test suite expansion: `test_alloc.nim`, `test_ctx_validation.nim`, `test_ffi_context.nim`, `test_gc_compat.nim`. diff --git a/examples/echo/echo.nimble b/examples/echo/echo.nimble index 013a49e..8243d43 100644 --- a/examples/echo/echo.nimble +++ b/examples/echo/echo.nimble @@ -9,7 +9,7 @@ requires "nim >= 2.2.4" requires "chronos" requires "chronicles" requires "taskpools" -requires "https://github.com/logos-messaging/nim-ffi >= 0.2.0" +requires "https://github.com/logos-messaging/nim-ffi >= 0.1.4" const nimFlags = "--mm:orc -d:chronicles_log_level=WARN" diff --git a/examples/timer/timer.nimble b/examples/timer/timer.nimble index 0b1966d..7c23f00 100644 --- a/examples/timer/timer.nimble +++ b/examples/timer/timer.nimble @@ -8,7 +8,7 @@ requires "nim >= 2.2.4" requires "chronos" requires "chronicles" requires "taskpools" -requires "https://github.com/logos-messaging/nim-ffi >= 0.2.0" +requires "https://github.com/logos-messaging/nim-ffi >= 0.1.4" const nimFlags = "--mm:orc -d:chronicles_log_level=WARN" diff --git a/ffi.nimble b/ffi.nimble index edd9558..ef15405 100644 --- a/ffi.nimble +++ b/ffi.nimble @@ -1,6 +1,6 @@ # ffi.nimble -version = "0.2.0" +version = "0.1.4" author = "Institute of Free Technology" description = "FFI framework with custom header generation" license = "MIT or Apache License 2.0"