Skip to content

Update the Rust dependencies to their latest compatible versions - #94

Merged
rubas-agent[bot] merged 1 commit into
mainfrom
rust-deps-2026-10
Oct 23, 2026
Merged

rubas-agent[bot] merged 1 commit into
mainfrom
rust-deps-2026-10

Conversation

@rubas-agent

@rubas-agent rubas-agent Bot commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Before. cargo update in native/exmpeg_native finds newer compatible versions of 9 crates:

Locking 9 packages to latest Rust 1.98 compatible versions
note: pass `--verbose` to see 1 unchanged dependencies behind latest

Problem. The lock file of the NIF is behind the compatible releases on crates.io.

After. The lock file has the newest compatible versions. Only Cargo.lock changes.

Crate Before After
bon, bon-macros 3.10.1 3.10.3
either 1.18.0 1.19.0
inventory 0.3.24 0.3.25
libc 0.2.189 0.2.191
syn (3.x) 3.0.6 3.0.9
thiserror, thiserror-impl 2.0.20 2.0.21
unicode-ident 1.0.26 1.0.27
rustler 0.38.0 0.38.0 (not changed)
rsmpeg (git, rubas/rsmpeg) 5055c6d 5055c6d (not changed)

rustler stays at 0.38. Version 0.39 breaks cargo test on Linux.

Details

Why rustler 0.39 is not in this PR. In 0.38, rustler::sys called the enif_* functions through a table that it filled at load time. In 0.39 (#749, "Generate rustler::sys directly from the upstream header"), Linux links the enif_* symbols directly (otp_headers/*/api.8.direct.rs). The test binary of the crate has no BEAM to supply these symbols, so the link fails:

/usr/bin/ld.bfd: ... rustler-0.39.0/src/codegen_runtime.rs:84: undefined reference to `enif_schedule_nif'
/usr/bin/ld.bfd: ... rustler-0.39.0/src/types/tuple.rs:21: undefined reference to `enif_make_tuple_from_array'
mold: error: undefined symbol: enif_snprintf

The NIF itself builds with 0.39: clippy passes and task test:integration passes (107 tests). Only task test:rust fails. A linker flag such as -Wl,--unresolved-symbols=ignore-all makes the 19 Rust tests link and pass, but that is a workaround for an upstream change. The Elixir package rustler on Hex is still 0.38.0, so mix.exs and mix.lock do not change.

Checks (local, Rust 1.98.1, FFmpeg 9).

  • task check: format, mix compile --warnings-as-errors with the NIF built from source, credo, clippy, mix test (43 passed), cargo test (19 passed), zizmor.
  • task test:integration: 107 passed.

@rubas-agent
rubas-agent Bot merged commit cc5a3f2 into main Oct 23, 2026
1 check passed
@rubas-agent
rubas-agent Bot deleted the rust-deps-2026-10 branch October 23, 2026 10:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant