← Back to context

Comment by josevalim

9 hours ago

There are multiple people working on the JIT within the last 5-6 years. The WhatsApp folks also contribute meaningfully.

I suspect once the Erlang/OTP team squeezes all performance in the JIT, they will look into optimizing across modules, which will probably open up many new possibilities, but it requires rethinking some runtime primitives.

A few years ago, I was working on an interpreter implemented in elixir for a domain specific language. It was a pretty basic metacircular interpreter. It relied heavily on function signature dispatch. When I tried breaking up the massive “interpret” function across modules, performance tanked. I got it all back by using some macro shenanigans, but understandably the team did not like this.

Knowing what I know now, I would’ve tried to push for a threaded interpreter to get rid of the runtime overhead of dispatching altogether. I don’t know if they’ve changed the architecture of that module much since I left :-)

Hi Jose

You’re an inspiration for many. Thank you.

I’m curious to know what your top 3 hopes for BEAM itself are for the coming years (in any area that you think would make it better).

  • Thanks for the kind words and the nice question!

    1. The cross module optimizations I mentioned above 2. Have a WASM target for the runtime itself 3. Make it easier to ship single file executables with the whole VM

    But they are really “nice-to-have”s. I have been a happy user for 15+ years!