CharlesO

CharlesO

Compiling any app dependent on Rustler is not working on Elixir v12.0 and OTP-24

Anyone having similar issues?

Could not compile :rustler, no "mix.exs", "rebar.config" or "Makefile" (pass :compile as an option to customize compilation, set it to "false" to do nothing)
Unchecked dependencies for environment prod:
* rustler (https://github.com/rusterlium/rustler.git)
  could not find an app file at "c:/Projects/bat/_build/prod/lib/rustler/ebin/rustler.app". This may happen if the dependency was not yet compiled or the dependency indeed has no app file (then you can pass app: false as option)
could not compile dependency :xler, "mix compile" failed. You can recompile this dependency with "mix deps.compile xler", update it with "mix deps.update xler" or clean it with "mix deps.clean xler"

Showing Posts 18 to 9

myobie

myobie

Ah OK, that makes perfect sense and I didn’t realize. Thanks for letting me know :purple_heart:

dimitarvp

dimitarvp

The reason the approach above has been recommended is just one: rustler maintainers seem to be active again and we can expect a stable next release soon.

If not for that factor then I’d go with what you recommended.

myobie

myobie

(Gah, I’m sorry to double post, I messed up making an edit.)

You can override the version rustler is looking for with an ENV variable:

$ RUSTLER_NIF_VERSION=2.15 mix compile

This is the easiest way to make progress (I’ve found) without having to re-target any deps or anything.

Am I missing some downsides to doing this? I think rustler works just fine targeting the older nif version in my experience.

dimitarvp

dimitarvp

I’d try both things:

  • Use the commented out line in your mix.exs:
{:rustler, git: "git://github.com/rusterlium/rustler.git" branch: "master", sparse: "rustler_mix"},
rustler = {git = "git://github.com/rusterlium/rustler.git", branch="master"}
CharlesO

CharlesO OP

defp deps do

    [

      {:tzdata, "~> 1.1.0"},

      {:gen_smtp, "~> 1.0"},

      {:mime, "~> 1.4"},

      {:fs, "~> 4.10.0"},

      # {:circuits_uart, "~> 1.4"},

      {:jason, "~> 1.2"},

      {:meeseeks, "~> 0.15.1"},

      {:decimal, "~> 2.0"},

      {:tesla, "~> 1.3"},

      {:castore, "~> 0.1.0"},

      # {:rustler, git: "git://github.com/rusterlium/rustler.git" branch: "master", sparse: "rustler_mix"},

      {:rustler, "~> 0.22.0-rc.1", override: true}

    ]

  end
dimitarvp

dimitarvp

Show us your mix.exs?

CharlesO

CharlesO OP

Still have the same issues after this update. Previously working code will not compile anymore.


   Compiling quote v1.0.7
   Compiling rustler_codegen v0.22.0-rc.1
error[E0432]: unresolved imports `rustler_sys::TWinDynNifCallbacks`, `rustler_sys::WIN_DYN_NIF_CALLBACKS`
  --> C:\Users\Charles Okwuagwu\.cargo\registry\src\github.com-1ecc6299db9ec823\rustler-0.22.0-rc.1\src\codegen_runtime.rs:16:23
   |
16 | pub use rustler_sys::{TWinDynNifCallbacks, WIN_DYN_NIF_CALLBACKS};
   |                       ^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^ no `WIN_DYN_NIF_CALLBACKS` in the root
   |                       |
   |                       no `TWinDynNifCallbacks` in the root

error: aborting due to previous error

For more information about this error, try `rustc --explain E0432`.
error: could not compile `rustler`

To learn more, run the command again with --verbose.

== Compilation error in file lib/nif.ex ==
** (RuntimeError) Rust NIF compile error (rustc exit code 101)
    (rustler 0.22.0-rc.1) lib/rustler/compiler.ex:36: Rustler.Compiler.compile_crate/2
    lib/nif.ex:2: (module)
    (stdlib 3.15) erl_eval.erl:685: :erl_eval.do_apply/6
dimitarvp

dimitarvp

There’s a 0.22.0-rc.1 release that got out like 45 minutes ago.

@maciejgryka What you have shown have worked for me for Elixir 1.12.0-otp-24 and Erlang 24.0.1. Thanks!

(I still used rustler from the master branch, though.)

CharlesO

CharlesO OP

no luck compiling {:meeseeks, "~> 0.15.1"}, even with the specified updates.

maciejgryka

maciejgryka

I had the same problem - it all seems to work after you use the git checkout option both in your mix.exs as well as Cargo.toml (a short blog post about this here).

I was missing the Cargo.toml step for a long time leading me to being stuck with 0.22.0-rc.0 there and still getting the version error.

To summarize, I’ve added this to mix.exs (thanks for the sparse tip @josevalim):

{:rustler, git: "git://github.com/rusterlium/rustler.git", branch: "master", sparse: "rustler_mix"},

And this to Cargo.toml:

rustler = {git = "git://github.com/rusterlium/rustler.git", branch="master"}

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
apz
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews