fresh-borzoni opened a new pull request, #452:
URL: https://github.com/apache/fluss-rust/pull/452

   ## Summary
   
   Adds Elixir client bindings via Rustler NIFs, following the same approach as 
the Python and C++ bindings - wrapping the shared Rust client rather than 
reimplementing the protocol. This PR covers log table operations (append + 
scan).
   
   ## Approach
   
   The NIF layer (`native/fluss_nif/`) bridges async Rust to the BEAM. One-shot 
operations (connect, create table, subscribe, flush) run on dirty I/O 
schedulers. The scanner poll path spawns a background thread and delivers 
results as `{:fluss_records, records}` messages as this avoids holding dirty 
scheduler threads during continuous consumption, which matters because the BEAM 
only has 10 by default and a streaming consumer polls indefinitely.
   
   Column names in result maps are interned as atoms once per poll call and 
reused across all rows. Type conversions are symmetric, matching other 
binding's approach.
   
   Fire-and-forget writes work the same way as in Python and C++: `append/2` 
returns a `WriteHandle` that can be ignored for throughput or waited on for 
per-record acknowledgment.
   
   ## What's missing
   
   Projection (the `TableScan` builder), batch scanning via Arrow 
RecordBatches, partitioned table support, offset queries, and KV tables. These 
are hopefully additive, nothing in this PR needs to change to support them. 
   Precompiled NIF binaries (`rustler_precompiled`) are also not included, so 
building currently requires a Rust toolchain. CI/CD, docs also left for next 
PRs.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to