Elixir is a pretty fun language, but I have been running into some issues with it (and these same issues do exist under Erlang, so no buli pls).
So, my domain is trying to write a game engine (why? because fuarrrk you that's why!)--this has some inherent workloads that color the problems I'm running into.
First and foremost, Erlang/Elixir/BEAM will *never* be top-of-the-line when it comes to numerics. IEEE754 floating point is not fully supported, there is no real support for NaN (a value important for interop), and arithmetic exceptions are handled differently than we're used to in other languages.
Furthermore, collections of numbers (say, for vectors) are stored in either cons-lists (ala Lisp), maps (hashmaps), tuples (array of pointers to numeric values), or keyword lists (array of tuples acting as an attribute list). This means that the numbers themselves are stored discontiguously in memory, and as such prevents the use of modern SIMD instructions.
You can work around this with binaries and NIFs, but that has other problems--especially from a development standpoint.
Second, memory is immutable. This means that certain workloads--updating a framebuffer, doing vector arithmetic of any real size--are by their nature going to create a lot of garbage. This has negative impacts on performance, to the point of breaking everything.
Third, Elixir supports arbitrary precision integers. This is fine and all, but when you try and move those values into a fixed-width integer (for, say, a binary message used for interop) the runtime elects to truncate instead of saturate, and so the resulting fixed-width int will often just contain the lower bits (assuming you've picked the correct endianess) of what you'd prefer to be an 0xffffffff pattern or similar.
It's a wonderful language, but there are some things that make it a little rough in certain problem domains. That's just the nature of the beast. :)