diff --git a/CHANGELOG.md b/CHANGELOG.md index 8906848..e4c763e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,21 @@ All notable changes to this project are documented in this file. -## [Unreleased] +## [0.3.0] - 2026-07-24 + +[Full changelog](https://github.com/logos-messaging/nim-ffi/compare/v0.2.0...v0.3.0) + +Breaking release. `declareLibrary` is now required before any FFI annotation; +the per-request handler timeout and its `{.ffi: "timeout = ".}` override are +replaced by the non-terminal `RET_STALE_WARN` progress callback; reaching an +`enum` from an `abi = c` type or proc is a compile error; and the generated C +`_ctx_destroy()` returns `int` instead of `void`. + +New surface: `{.ffiStatic.}` for context-independent procs, `{.ffiConst.}`, +`{.ffi.}` enums, doc-comment propagation into the generated bindings, a C +binding generator (`-d:targetLang=c`), and a CBOR-free `abi = c` path in both +directions. Internally the watchdog thread is gone — the heartbeat now runs on +the dedicated event thread that also isolates user callbacks from the FFI thread. ### Changed - **`abi = c` non-scalar procs no longer marshal through CBOR.** The foreign diff --git a/README.md b/README.md index 89ccd85..4312573 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ No hand-written `.h` files, no manual request enums, no shared-memory plumbing. Add nim-ffi to your library's `.nimble`, then `import ffi`: ```nim -requires "https://github.com/logos-messaging/nim-ffi >= 0.2.0" +requires "https://github.com/logos-messaging/nim-ffi >= 0.3.0" ``` ## Mental model diff --git a/examples/echo/echo.nimble b/examples/echo/echo.nimble index 9128987..1bc69d1 100644 --- a/examples/echo/echo.nimble +++ b/examples/echo/echo.nimble @@ -9,7 +9,7 @@ requires "nim >= 2.2.6" 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.3.0" const nimFlags = "--mm:orc -d:chronicles_log_level=WARN" diff --git a/examples/timer/timer.nimble b/examples/timer/timer.nimble index 149043a..0a5e3e5 100644 --- a/examples/timer/timer.nimble +++ b/examples/timer/timer.nimble @@ -8,7 +8,7 @@ requires "nim >= 2.2.6" 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.3.0" const nimFlags = "--mm:orc -d:chronicles_log_level=WARN" diff --git a/ffi.nimble b/ffi.nimble index bc01f2f..489343c 100644 --- a/ffi.nimble +++ b/ffi.nimble @@ -1,6 +1,6 @@ # ffi.nimble -version = "0.2.0" +version = "0.3.0" author = "Institute of Free Technology" description = "FFI framework with custom header generation" license = "MIT or Apache License 2.0"