Provide Elixir frontend #156
Description
In order to have a way to compile a Mix project via Lumen in the near term, we are going to use a Mix task which compiles the Elixir source via BEAM, converts the compiled code to Erlang source using the Erlang compiler API, and places it in an incremental compilation directory under _build
. This will then be fed to Lumen as the input for compilation to native code.
The code for this initial tooling is located at https://github.com/lumen/lumen_elixir, it is currently in a draft state.
In the long term, we will ultimately want the Lumen compiler to be bootstrapped with its own OTP standard library, with a compiler
module that invokes the Lumen compiler infrastructure instead. This would then be used to build a version of the compiler that can build from Elixir source directly, without requiring the BEAM at all. Unfortunately there are a lot of technical challenges involved here, so we need to use the above workaround until we have time to dedicate to the bootstrapping process.