# Semver and exporting variables

**URL:** <https://discourse.julialang.org/t/semver-and-exporting-variables/68225>\
**Category:** General Usage\
**Created:** [September 15, 2021, 6:40pm UTC](https://discourse.julialang.org/t/semver-and-exporting-variables/68225 "2021-09-15T18:40:27Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![cjdoris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/cjdoris/32/213133_2.png) [@cjdoris](https://discourse.julialang.org/u/cjdoris)\
**Post date:** [September 15, 2021, 6:40pm UTC](https://discourse.julialang.org/t/semver-and-exporting-variables/68225/1 "2021-09-15T18:40:27Z")

</div>

Semver is great, Julia is great, but it very mildly bothers me that any code which does `using` can’t strictly adhere to semver.

For example:

```julia
using A, B
f(x)

```

Initially `A` exports `f` and `B` doesn’t. A later version of `B` does export (a different) `f`. The ambiguity now makes the above code fail. Hence adding a new exported variable should be a major version change.

Of course nobody does this. What’s the official line? Are packages supposed to explicitly import everything they use?

---

<div class="post-metadata">

**Author:** ![kristoffer.carlsson](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kristoffer.carlsson/32/22_2.png) [@kristoffer.carlsson](https://discourse.julialang.org/u/kristoffer.carlsson)\
**Post date:** [September 15, 2021, 6:59pm UTC](https://discourse.julialang.org/t/semver-and-exporting-variables/68225/2 "2021-09-15T18:59:40Z")

</div>

Join the discussion [https://github.com/JuliaLang/julia/pull/42080](https://github.com/JuliaLang/julia/pull/42080) 🙂
