Miało być o use, ale jest okres między świąteczny i trzeba trochę odpocząć, więc dziś to co miało być bonusem. Krótko i zwięźle. W elixir możemy mieć dwa rozszerzenia plików ex i exs. Czym one się różnią między sobą i czy w ogóle jest jakaś różnica?

Według różnych źródeł w sieci, różnica jest taka, że ex będzie kompilowany, a exs interpretowany. Czyli ex spowoduje przekompilowanie, załadowanie i stworzenie pliku beam na dysku twardym, zaś exs zrobi to samo, ale nie zapisze pliku na dysku.

Dokumentacja zaś mówi, że ex i exs to jest to samo, różnią się jedynie intencją. ex to rozszerzenie dla plików które mają zostać skompilowane, zaś exs to rozszerzenie dla skryptów lub plików dynamicznych, które mogą ulegać zmianie i ich wykonanie wymaga za każdym razem ponownego załadowania ich do pamięci.

Ok, mając taką wiedzę, stworzyłem plik z wczorajszego drzewka i nazwałem go xmas.txt. Następnie odpalałem to na różne sposoby:

iex xmas.txt
elixir xmas.txt
elixirc xmas.txt

Wynik?

elixirc generuje plik beam, reszta robi to on fly bez zapisu pliku na dysku. Zaś wszystkie wyświetlą drzewko :) Nie zależnie jaki rozszerzenie pliku bym użył i co bym robił, efekt był taki sam.

Możliwe więc, że ta różnica gdzieś istnieje, ale gdzie? To ja nie wiem. Jednak rozumiem to co mówi dokumentacja i zgadzam się, że rozszerzenie w zależności od intencji ma ręce i nogi. Ale aktualnie nie zgadzam się z tym, że to ma wpływ na uruchomienie czy działanie.