This website requires JavaScript.
Explore
Help
Sign In
logos-messaging
/
nim-ffi
Watch
1
Star
0
Fork
0
You've already forked nim-ffi
mirror of
https://github.com/logos-messaging/nim-ffi.git
synced
2026-06-26 03:09:31 +00:00
Code
Issues
Packages
Projects
Releases
Wiki
Activity
nim-ffi
/
examples
/
timer
/
rust_native_bindings
/
Cargo.toml
5 lines
63 B
TOML
Raw
Normal View
History
Unescape
Escape
feat(codegen): native (non-CBOR) Rust generator + rust.nim -> rust_cbor.nim split Splits the Rust codegen the way C++ is split: rename `rust.nim` -> `rust_cbor.nim` (CBOR) and add `rust_native.nim` (native). Dispatch on `targetLang=rust` now honours `-d:ffiMode` (native/cbor); the crates share file names so each mode writes its own dir (rust_bindings vs rust_native_bindings). `rust_native.nim` emits a `<lib>_native` crate — the Rust analogue of `cpp_native`: `#[repr(C)]` POD mirrors + `extern "C"` native entry points (ffi.rs); idiomatic structs with `to_c`/`from_c`, a holder owning the CStrings for the call (types.rs); and a `<Lib>Node` whose methods marshal typed args in / read typed struct returns out, blocking via std mpsc (api.rs). First cut: scalar/string/bool/float/nested-struct fields (create/version/echo); seq/Option params are SKIPPED, native events next. Verified end-to-end — the generated crate builds and the demo round-trips a typed EchoResponse. Tasks: genbindings_rust (CBOR), genbindings_rust_native. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 18:51:06 +02:00
[
package
]
refactor(codegen): reconcile Rust crate names with the native/cbor convention Aligns the Rust crate names with the C generator and the symbol naming: the native (zero-serialization, same-process) crate is the bare `<lib>` and the CBOR (inter-process) crate carries the `_cbor` suffix — mirroring `<lib>.h` / `<lib>_cbor.h` and the `<name>` / `<name>_cbor` exports. Previously the native crate was `<lib>_native` and the CBOR crate was the bare `<lib>`, which is backwards from the symbol convention. Only the Cargo package name changes; the linked dylib stays `lib<lib>.dylib` (the `#[link]` name and build.rs are untouched). Consumers updated: rust_client depends on `my_timer_cbor` and imports from it; the native demo imports from the bare `my_timer`. Validated: rust_client builds against the renamed CBOR crate; the native demo round-trips version / echo / event / complex / schedule against the bare crate; check_bindings_rust regen is deterministic. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 19:38:35 +02:00
name
=
"my_timer"
feat(codegen): native (non-CBOR) Rust generator + rust.nim -> rust_cbor.nim split Splits the Rust codegen the way C++ is split: rename `rust.nim` -> `rust_cbor.nim` (CBOR) and add `rust_native.nim` (native). Dispatch on `targetLang=rust` now honours `-d:ffiMode` (native/cbor); the crates share file names so each mode writes its own dir (rust_bindings vs rust_native_bindings). `rust_native.nim` emits a `<lib>_native` crate — the Rust analogue of `cpp_native`: `#[repr(C)]` POD mirrors + `extern "C"` native entry points (ffi.rs); idiomatic structs with `to_c`/`from_c`, a holder owning the CStrings for the call (types.rs); and a `<Lib>Node` whose methods marshal typed args in / read typed struct returns out, blocking via std mpsc (api.rs). First cut: scalar/string/bool/float/nested-struct fields (create/version/echo); seq/Option params are SKIPPED, native events next. Verified end-to-end — the generated crate builds and the demo round-trips a typed EchoResponse. Tasks: genbindings_rust (CBOR), genbindings_rust_native. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 18:51:06 +02:00
version
=
"0.1.0"
edition
=
"2021"
Reference in New Issue
Copy Permalink