It is very unsafe implementation. Super simple example of how you can run arbitrary code with it:
Formular.eval(~S{
import Kernel
apply(IO, :puts, ["Hi"])
}, [])
And as soon as you have access to apply/3 (or any of the spawn_*/3 family) then you can run any code you want. In general as soon as you have access to import then you can do anything, and you do not prevent import in any way (it is imported by default as it is part of Kernel.SpecialForms).
If you want something like that, it is better to use any embedded language that is distinct from the Elixir and give it access only to needed primitives. You can take a look on Luerl or Erlog for example.


















