Ivan FB 914c70a131
fix(codegen): C++ bindings target the *_cbor exports
The C++ wrapper speaks CBOR, but after the native/CBOR split it still called the
bare `<name>` symbols — which are now the *native* (typed-args) entry points, so
every C++ call hit the wrong ABI and the C++ e2e failed 19/19 (also reddening
the ASan/TSan jobs, which run the same suite). Point the generated extern
declarations and call sites at `<name>_cbor` for `{.ffi.}` procs and the ctor;
the destructor has no CBOR variant and stays bare. Regenerated the timer and
echo C++ bindings. C++ e2e back to 19/19.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 16:31:12 +02:00
..
2026-05-16 01:08:42 +02:00
2026-05-25 15:51:56 +02:00
2026-05-21 16:33:38 +02:00

timer example

This example is a self-contained Nimble project demonstrating how to import nim-ffi and use the .ffiCtor. / .ffi. abstraction.

Usage

  1. Change into the example directory:

    cd examples/timer
    
  2. Install the local ffi dependency:

    nimble install -y ../..
    
  3. Build the example library:

    nimble build
    
  4. Generate bindings:

    nimble genbindings_rust
    nimble genbindings_cpp
    

Rust example clients

The Rust client lives in examples/timer/rust_client.

  • Run the sync example:

    cd examples/timer/rust_client
    cargo run --bin rust_client
    
  • Run the Tokio example:

    cd examples/timer/rust_client
    cargo run --bin tokio_client
    

C++ example

The generated C++ example lives in examples/timer/cpp_bindings.

Build and run it with:

cd examples/timer/cpp_bindings
cmake -S . -B build
cmake --build build
./build/example