mirror of
https://github.com/logos-messaging/nim-ffi.git
synced 2026-08-05 22:43:17 +00:00
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 <noreply@anthropic.com>
This commit is contained in:
parent
79e5dc64c6
commit
b156b84ff3
43
CHANGELOG.md
43
CHANGELOG.md
@ -4,38 +4,12 @@ All notable changes to this project are documented in this file.
|
|||||||
|
|
||||||
## [Unreleased]
|
## [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
|
### Added
|
||||||
- Queue-overflow handling: when the bounded event queue is full, the
|
- Queue-overflow handling: when the bounded event queue is full, the
|
||||||
library sets a sticky "stuck" flag, logs an error, fires
|
library sets a sticky "stuck" flag, logs an error, fires
|
||||||
`not_responding` from the event thread, and rejects subsequent
|
`not_responding` from the event thread, and rejects subsequent
|
||||||
`sendRequestToFFIThread` calls with `event queue stuck - library
|
`sendRequestToFFIThread` calls with `event queue stuck - library
|
||||||
cannot accept new requests`.
|
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
|
- **CBOR serialization** as the FFI wire format, replacing the previous
|
||||||
JSON/string-based `serial.nim`
|
JSON/string-based `serial.nim`
|
||||||
([#23](https://github.com/logos-messaging/nim-ffi/pull/23)).
|
([#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)).
|
([#41](https://github.com/logos-messaging/nim-ffi/pull/41)).
|
||||||
|
|
||||||
### Changed
|
### 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
|
- Removed the redundant `ffiType` macro; the `ffi` macro is now the single
|
||||||
authoring entry point
|
authoring entry point
|
||||||
([#22](https://github.com/logos-messaging/nim-ffi/pull/22)).
|
([#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).
|
and `rust_client`, the latter with a Tokio async variant) (#15).
|
||||||
- JSON/string-based FFI (de)serialization via `ffi/serial.nim`
|
- JSON/string-based FFI (de)serialization via `ffi/serial.nim`
|
||||||
(`ffiSerialize`/`ffiDeserialize`), with `tests/test_serial.nim` coverage.
|
(`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.
|
- 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 suite expansion: `test_alloc.nim`, `test_ctx_validation.nim`,
|
||||||
`test_ffi_context.nim`, `test_gc_compat.nim`.
|
`test_ffi_context.nim`, `test_gc_compat.nim`.
|
||||||
|
|||||||
@ -9,7 +9,7 @@ requires "nim >= 2.2.4"
|
|||||||
requires "chronos"
|
requires "chronos"
|
||||||
requires "chronicles"
|
requires "chronicles"
|
||||||
requires "taskpools"
|
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"
|
const nimFlags = "--mm:orc -d:chronicles_log_level=WARN"
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ requires "nim >= 2.2.4"
|
|||||||
requires "chronos"
|
requires "chronos"
|
||||||
requires "chronicles"
|
requires "chronicles"
|
||||||
requires "taskpools"
|
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"
|
const nimFlags = "--mm:orc -d:chronicles_log_level=WARN"
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
# ffi.nimble
|
# ffi.nimble
|
||||||
|
|
||||||
version = "0.2.0"
|
version = "0.1.4"
|
||||||
author = "Institute of Free Technology"
|
author = "Institute of Free Technology"
|
||||||
description = "FFI framework with custom header generation"
|
description = "FFI framework with custom header generation"
|
||||||
license = "MIT or Apache License 2.0"
|
license = "MIT or Apache License 2.0"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user