Atoms are Not GC’d, and therefore the BEAM puts a limit on how many are allowed to exist. This limit is 2**20 by default.
Therefore using String.to_atom/1
at runtime is considered a flaw.
Instead String.to_existing_atom/1
is preferred or even better an explicit conversion function built from a whitelist.