Elixir is heavily dependent on Maps, which didn't show up until Erlang 17.
That means most of the ecosystem is not available to you, regardless of which path you choose. The benefit of Elixir at that point is basically syntactic sugar and macros. (Protocols are only partially useful without Structs, and structs require maps.)
If you plan on doing heavy macro work I'd recommend LFE. If you just want syntactic sugar, I'd say forget it and just do Erlang.
--
You received this message because you are subscribed to the Google Groups "elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elixir-lang-co...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/FC47A718-6C04-4FFC-8C48-767651B29DE5%40gmail.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/elixir-lang-core/CAOMhEnweDZx-z5HXL19D%3Dqvw%3DbN%3DuSdEdUOPV74RQqYPuMReEQ%40mail.gmail.com.
It's very unfortunate that Basho have not yet upgraded Riak from an OTP version that is 3 years old. I think you have to wait until they do so or use an Elixir version that works on OTP 16.
> So is there an easy way to use latest Elixir to produce beam bytecode that runs properly on an older beam VM?There is not, Elixir uses features of OTP 17 and 18 both when compiling and running Elixir code.> - try to compile Elixir on R16, and violently discard what doesn't compile, or replace it by older versions. But that sounds like a lot of work.> - use current Elixir, don't use features and modules that won't work on R16, and hope for the best.Both of these options would be very fragile and I would be very surprised if you were able to make it work.It's very unfortunate that Basho have not yet upgraded Riak from an OTP version that is 3 years old. I think you have to wait until they do so or use an Elixir version that works on OTP 16.
> Also, what is the Elixir philosophy about backward compat, in term of bytecode, feature and syntax?Breaking changes in the language (features and syntax) only happen on major version changes, the next major version is Elixir 2.0.0.Regarding bytecode compatability you have to consider both version changes in OTP and Elixir. For OTP version changes Elixir gives the same guarantees as OTP itself; bytecode generated with version N of OTP will also run on version N+1, i.e. code compiled with OTP 17 will run on OTP 18. For Elixir version changes there are less guarantees, we try to keep bytecode compatibility between minor version changes but there is no promise. To be safe you should only run code with the same Elixir version it was compiled with and Mix automatically handles this for you.
Elixir is heavily dependent on Maps, which didn't show up until Erlang 17.
That means most of the ecosystem is not available to you, regardless of which path you choose. The benefit of Elixir at that point is basically syntactic sugar and macros. (Protocols are only partially useful without Structs, and structs require maps.)
If you plan on doing heavy macro work I'd recommend LFE. If you just want syntactic sugar, I'd say forget it and just do Erlang.