Ο κώδικας της Elixir εκτελείται στην εικονική μηχανή BEAM. Η BEAM αποτελεί μέρος του συστήματος χρόνου εκτέλεσης (Run-Time System) της Erlang. Εμπνευσμένη από την Erlang και μοιραζόμενη το περιβάλλον εκτέλεσής της, η Elixir προσφέρει εξαιρετική διαλειτουργικότητα με τις βιβλιοθήκες της Erlang. Αυτό σημαίνει ότι οι προγραμματιστές της Elixir μπορούν να χρησιμοποιούν βιβλιοθήκες της Erlang μέσα από τον κώδικά τους σε Elixir. Μάλιστα, η συγγραφή βιβλιοθηκών Elixir για λειτουργικότητα που παρέχεται ήδη από βιβλιοθήκες της Erlang αποθαρρύνεται στην κοινότητα της Elixir.
Κατά συνέπεια, ορισμένες λειτουργίες, όπως οι μαθηματικές πράξεις ή οι συναρτήσεις χρονοδιακόπτη, είναι διαθέσιμες στην Elixir μόνο μέσω της Erlang.
Αυτή η στενή σχέση ανάμεσα στην Elixir και την Erlang σημαίνει ότι, για να γίνεις ένας ικανός προγραμματιστής Elixir, ίσως θελήσεις να αφιερώσεις λίγο χρόνο για να μάθεις τη βασική σύνταξη της Erlang.
Η πρότυπη βιβλιοθήκη της Erlang είναι διαθέσιμη για χρήση στον κώδικά μας σε Elixir χωρίς να χρειάζονται επιπλέον βήματα.
Οι συναρτήσεις της Erlang μπορούν να κληθούν με τον ίδιο τρόπο που καλούμε τις συναρτήσεις της Elixir, με μία μικρή διαφορά. Τα ονόματα των module της Erlang είναι atoms σε snake_case. Για παράδειγμα, για να καλέσεις τη συνάρτηση pi/0 της Erlang από το module math, θα έγραφες:
:math.pi()
# => 3.141592653589793
Τα πιο συχνά χρησιμοποιούμενα module της Erlang παρέχουν λειτουργικότητα που λείπει από την πρότυπη βιβλιοθήκη της Elixir. Αυτά είναι:
timer, το οποίο παρέχει συναρτήσεις όπως οι sleep/1, send_after/2 και send_interval/2.rand, το οποίο παρέχει συναρτήσεις όπως οι uniform/0, normal/0 και seed/2.:io_lib.format/2, το οποίο παρέχει μορφοποίηση συμβολοσειρών σε στυλ C (με ακολουθίες ελέγχου).math, το οποίο παρέχει μαθηματικές συναρτήσεις όπως οι sin/1, cos/1, log2/1, log10/1, pow/2 και άλλες.queue, το οποίο παρέχει μια δομή δεδομένων ουράς.crypto, το οποίο παρέχει κρυπτογραφικές συναρτήσεις.zip, το οποίο παρέχει συναρτήσεις για εργασία με αρχεία zip.calendar, το οποίο παρέχει συναρτήσεις για εργασία με ημερομηνίες και ώρα, όπως η iso_week_number/1. Για να περάσεις μια δομή Date, Time ή NaiveDateTime σε κάποια από τις συναρτήσεις της Erlang, πρέπει να τη μετατρέψεις στη μορφή της Erlang με μια συνάρτηση to_erl από το αντίστοιχο module.Για να ανακαλύψεις την πρότυπη βιβλιοθήκη της Erlang, εξερεύνησε το Εγχειρίδιο αναφοράς STDLIB.
Η διαλειτουργικότητα της Elixir με τις βιβλιοθήκες της Erlang δεν περιορίζεται στην πρότυπη βιβλιοθήκη της Erlang. Οποιαδήποτε βιβλιοθήκη της Erlang μπορεί να χρησιμοποιηθεί στον κώδικα της Elixir.