Enviable - Robust environment variable conversion

Over last four weeks, I added a couple of releases of Enviable:

Enviable 2.0.0 (2025-12-26)

This is a breaking change supporting Elixir 1.17+ or higher.

Deprecated functions have been removed: get_env_boolean/2, get_env_integer/2, fetch_env_boolean/2, fetch_env_integer/2, fetch_env_boolean!/2, and fetch_env_integer!/2.

The default value for boolean_downcase and downcase for boolean conversion is :default. This also required changing some conversion types to distinguish between boolean case conversion and atom case conversion.

The default value for case on base16, base32, and hex32 conversion has changed from :upper to :mixed.

Enviable 2.1.0 (2026-01-13)

This is an incremental change that adds no new features to Enviable itself, but as part of a focus on security, a couple of Credo checks have been added. These were developed with the assistance of Kiro.

  • When Enviable.Credo.UnsafeAtom is enabled in .credo.exs, it will report on the use of Enviable functions and conversion options that may result in atom exhaustion. This includes the *_as_atom* and *_as_module* functions, the :atom or :module conversion type, or an encoded conversion which uses :atom or :module. Warnings will not be shown when the :allow option is provided.

  • When Enviable.Credo.UnsafeEval is enabled in .credo.exs, it will report on the use of unsafe code evaluation checks (the *_as_elixir* and *_as_erlang* functions).

As always, Credo checks are advisory and you are best placed to know what the right choice for your application is. It’s dangerous to go alone, take Enviable with you.

2 Likes