nahoj

nahoj

Hello, I’m a newcomer to both Elixir and Erlang and I’ve run into an issue and I hope someone here can help me.

When using mix compile I seem to be getting a compatibility error, that the beam file is compiled for a later version of the runtime system.


16:05:42.441 [error] beam/beam_load.c(184): Error loading module luerl:

This BEAM file was compiled for a later version of the runtime system than the current (Erlang/OTP 25).

To fix this, please re-compile this module with an Erlang/OTP 25 compiler.

(Use of opcode 181; this emulator supports only up to 180.)

A simple cleanup of deps/ and _build/ will recover from the issue, but that isn’t desired.

I’ve isolated it to only show up on Elixir version 1.15.x using below Erlang/OTP


mix --version

Erlang/OTP 25 [erts-13.2.2.3] [source] [64-bit] [smp:20:20] [ds:20:20:10] [async-threads:1] [jit:ns]

Mix 1.15.7 (compiled with Erlang/OTP 24)

I’ve created a sample repository https://github.com/JohanKarlbergg/01e3c763592bbc85568a28a81ae6f5f732d8d183f7f533080a0998e7229127fe and put a command in the README reproduce the issue.

I’ve tried to search for similar issues without success.

Showing Posts 1 to 10

Eiji

Eiji

Because this is not considered as an issue. The message is clear enough and as you said there is solution of cleanup which you know without searching. In such case if people know something without searching they don’t create any issue and just your question is not common. :smiley:

Keep in mind that on the forum many users reading your post have no idea how you think like they have no idea why recompiling all dependencies is not desired for you. As you said recompiling all dependencies is of course good idea and people do it by default in almost all cases - at least those I am aware of. However if for some reason you don’t want to compile all dependencies then you can simply recompile just one. :bulb:

mix deps.compile dep_name --force

You need to improve your documentation research skills. What’s may be interesting is mix help task which lists all tasks available and mix help task.name which shows the documentation for said task. I believe that deps.compile is obvious naming, so there is no need to describe what it does. Finally the documentation in mix help deps.compile should be enough clear for you. :+1:

Personally I recommend reading documentation a lot. Of course not to remember everything, but to more or less know where you can find some information and also you may find lots of interesting things that would be helpful for you now or in near future and you were just was not aware of their existence. The common mistake is to not read Erlang documentation assuming that Elixir core is all what you need. For example I have found :erlang.term_to_binary/1 and :erlang.binary_to_term/1 very useful. This is pretty basic and simple to understand thing new developers have completely no idea about. :thinking:

Edit: As @kokolegorille said firstly you need to fix the problem with your Elixir installation. After this you can use mix deps.compile to recompile only those dependencies you want.

nahoj

nahoj OP

After some further debugging it seems luerl might be the issue. When I pin it to 1.1.0 I have no issue.

kokolegorille

kokolegorille

How did You install Elixir and Erlang? With asdf?

You have an Elixir version for OTP24, but You have OTP25

You need to change the Elixir version to be OTP 25

Latest for now is OTP 26…

tj0

tj0

This is a rather curious problem. I could not re-create it with luerl 1.0 as given in the repo. And I added luerl 1.0 to one of my own projects without error.

Did you download a pre-compiled luerl from somewhere @nahoj ? The only other way I can think this might happen is that you installed erlang, tried luerl. Upgraded something installing elixir. And then ran into this problem.

elixir --version
Erlang/OTP 26 [erts-14.2.1] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1] [jit:ns]

Elixir 1.15.7 (compiled with Erlang/OTP 26)

nahoj

nahoj OP

Hey, I did not download luerl from somewhere. I use asdf to manage elixir/erlang.

In the mix.lock file it is version 1.1.1, I should have had the same in mix.exs.

I’m also unable to re-create this with luerl 1.0.

tj0

tj0

Hmmm…that makes sense. So the only logical explanation I can think of is if you installed multiple versions of erlang or elixir? Otherwise, I have no idea how this could possibly occur.

Edit: Also, I’m super-curious how you ended up on luerl as a starting point as a newcomer to Elixir/Erlang? :grinning:

Eiji

Eiji

You need to use an Elixir version with -otp-25 suffix if you use Erlang version 25.

LostKobrakai

LostKobrakai

While it’s certainly to be preferred that’s not completely correct. You need that for elixir to integrate with OTP 25 features, but using an elixir version compiled with an older otp version should generally work.

Eiji

Eiji

Should work or maybe could work? Should sounds like it’s supported and therefore such behaviour looks like a bug. I guess it could work, but since it’s not supported it’s recommended to make an update in order to avoid such problems now and in the future.

dimitarvp

dimitarvp

Should, yes, but I’d never recommend it.

Where Next? Top

Trending in Questions Top

Blokh
Hey guys, I’ve got a huge CSV ( around 10 GB ) that needs to be processed hourly Do you guys have any suggestions what is the best prac...
New
kszambelanczyk
Hello! Could someone please give me a help/sample code, how to delete a file from s3 using waffle/waffle_ecto from Phoenix app. I creat...
New
Onor.io
I have what I’ve heard referred to as a “lookup table” in my database. This is a way of assigning codes to common values. One common lo...
New
jaybe78
Hello, I’m developing a online persistent chat system (what’s app) like using elixir/dynamodb/aws for a mobile app(flutter). The diffic...
New
Trolleger
What approach to take when sending live updates to “random” users Hi! I have a question, I have a little chat app, and when I create a DM...
New
matt-savvy
Anyone here using Honeybadger? My Honeybadger account is being overwhelmed with noise from some bots. Seeing a lot of Bandit.HTTPError...
New
RemyXRenard
I’m seeing that a list inside a Kino.DataTable will be interpreted as a charlist, even if the Kino.configure() is set to charlists: :as_l...
New

Other Trending Topics Top

garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Damirados
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve. They are GUI (Emerge) and State management (S...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
wintermeyer
There are three potential reasons for members of this forum to have a look at https://vutuv.de You are tired or annoyed of LinkedIn. Yo...
New
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews