• Reached v1.0 in September • REPL and byte-code compiler • All the goodness of Erlang, without the pain! • Ruby-like syntax (“better” than Prolog!) • First class processes • OTP; fault tolerance; managed parallelism • “Let it crash” philosophy and hot code swapping • Functional language • First-class functions and closures • TCO • Pattern matching (even on binary streams) • Homoiconic representation and hygienic macros; DSLs
String.split("\n") |> Enum.filter(fn line -> String.length(line) > 0 end) |> Enum.map(&transform/1) end def transform(line) do [name, email, _] = line |> String.split(",") |> Enum.map(&String.strip/1) %{name: name, email: email} end end Adapted from http://bitwalker.org/blog/2014/03/10/what-is-elixir-and-why-do-i-care/
Reached v1.0 in May • Self-hosted compiler with LLVM backend • Functional background: • First-class functions and closures • Type inference • Hygienic macros • Pattern matching • Package/module system • Memory (and thread) safety without garbage collection • “Owner and borrower” model