Changelog
View SourceAll notable changes to this project are documented in this file. The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
Unreleased
0.1.1 - 2026-04-23
Fixed
BoltexNif.Nativelooked for a checksum file namedchecksum-boltex_nif-<version>.exsthatrustler_precompilednever generates — the real filename ischecksum-Elixir.BoltexNif.Native.exs(derived from the module name). The mismatch meantforce_buildwas alwaystruewhen installing from Hex, so every consumer needed a Rust toolchain despite the README promising the opposite. The lookup now uses the correct name anchored at__DIR__(instead of the unreliableFile.cwd!()), so precompiled binaries are picked up transparently. Thanks to the users who hit this on a freshmix deps.get.
0.1.0 - 2026-04-22
Added
- First public release.
- Rustler-based NIF wrapping
neo4rs0.9.0-rc.9with theunstable-v1feature bundle (Bolt v5 protocol, result summaries, packstream serde). - Precompiled binaries shipped via
rustler_precompiled— no Rust toolchain required to install on macOS (ARM/Intel), Linux (glibc/musl, x86_64/ARM64) and Windows (MSVC x86_64).FORCE_BOLTEX_BUILD=1opts into building from source. - Async NIF pattern built on a global Tokio runtime: every call returns a
fresh
refsynchronously and the driver sends{ref, result}back throughOwnedEnv::send_and_clear. - Auto-commit queries:
BoltexNif.connect/1,run/4,execute/4,run_with_summary/4. - Explicit transactions:
begin_transaction/2,txn_run/4,txn_execute/4,commit/2,rollback/2, plus thetransaction/3helper (commit on{:ok, _}, rollback on{:error, _}, rollback + re-raise on exception). - Lazy row streaming:
stream_start/4,stream_next/2,stream_close/2. - Full Bolt type marshalling to idiomatic Elixir:
- Primitives and collections.
- Graph types:
%BoltexNif.Node{},%BoltexNif.Relationship{},%BoltexNif.UnboundRelationship{},%BoltexNif.Path{}. - Spatial:
%BoltexNif.Point{}(2D/3D). - Temporal:
%Date{},%Time{},%NaiveDateTime{}, plus%BoltexNif.Time{},%BoltexNif.DateTime{},%BoltexNif.DateTimeZoneId{},%BoltexNif.Duration{}.
%BoltexNif.Summary{}+Counters+Notificationfor operational metadata (available/consumed-after ms, query type, counters, notifications with source position).- Structured Neo4j errors as
%BoltexNif.Neo4jError{code, message, kind}with 13 classified kinds andNeo4jError.retryable?/1. - TLS configuration (CA, mutual, skip-validation), user impersonation, bookmarks on commit.
Unreleased / future
element_idon Nodes/Relationships (requires decoding via the Bolt v5 serde path, not the classictypes/*tree we currently use).- Feature flags for
jsonanduuidinneo4rs. - Richer streaming (per-stream
fetch_sizeoverride, streaming within a transaction).