# \[ANN\] DotEnv.jl 1.0

**URL:** https://discourse.julialang.org/t/ann-dotenv-jl-1-0/110770
**Category:** Package Announcements
**Created:** [February 26, 2024, 11:41am UTC](https://discourse.julialang.org/t/ann-dotenv-jl-1-0/110770 "2024-02-26T11:41:58Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![tecosaur](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tecosaur/32/23206_2.png) [@tecosaur](https://discourse.julialang.org/u/tecosaur)
#### Post date: [February 26, 2024, 11:41am UTC](https://discourse.julialang.org/t/ann-dotenv-jl-1-0/110770/1 "2024-02-26T11:41:58Z")

</div>

I’ve recently resurrected the [DotEnv.jl](https://github.com/tecosaur/DotEnv.jl) package, and am delighted to announce the 1.0 release! 🥳

The codebase has been entirely rewritten, and should now be both more robust and featureful.  
In particular, we now have:

- A specified `.env` parsing methodology, with support for everything but multi-line values and shell execution from the canonical (Ruby) `.env` implementation. This includes
  - Interpolated values, e.g. `$foo`
  - Default values, e.g. `${foo:-bar}`

- The ability to load and _unload_ multiple `.env` files, and have values and interpolations re-resolved correctly
- The ability to load `.env` files into arbitrary `Dict{String,String}`s
- Functions (`config`/`parse`) to read/parse a `.env` file without modifying any env dicts

Enjoy!

* * *

I’m well aware that in the meantime ConfigEnv.jl has popped up, but I think it’s well worth having DotEnv.jl be a great package for `.env` files in its own right. Comparatively, ConfigEnv has a more sophisticated/complicated methodology for resolving dependencies in interpolations (I just run with the “if it works in the shell, it will work here, and vice versa” approach), and does not support the unloading functionality implemented in DotEnv.
