Jelaskan Fitur-fitur dari Elixir (bahasa pemrograman)

A language that compiles to bytecode for the Erlang Virtual Machine (BEAM)

Erlang functions can be called from Elixir without run time impact, due to compilation to Erlang bytecode, and vice versa

Meta programming allowing direct manipulation of AST

Polymorphism via a mechanism called protocols. Like in Clojure, protocols provide a dynamic dispatch mechanism. However, this is not to be confused with multiple dispatch as Elixir protocols dispatch on a single type.

Support for documentation via Python-like docstrings in the Markdown formatting language

Shared nothing concurrent programming via message passing (Actor model)

Emphasis on recursion and higher-order functions instead of side-effect-based looping

Lightweight concurrency utilizing Erlang's mechanisms

Railway oriented programming via the with construct

Built-in tooling for managing dependencies, code compilation, running tests, formatting code, remote debugging and more

Lazy and async collections with streams

Pattern matching to promote assertive code

Unicode support and UTF-8 strings