# Determining lower bound of compat statement

**URL:** https://discourse.julialang.org/t/determining-lower-bound-of-compat-statement/117248
**Category:** General Usage
**Tags:** package, versions, compatibility, versioning, compathelper
**Created:** [July 19, 2024, 5:58pm UTC](https://discourse.julialang.org/t/determining-lower-bound-of-compat-statement/117248 "2024-07-19T17:58:36Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![bclyons12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bclyons12/32/33734_2.png) [@bclyons12](https://discourse.julialang.org/u/bclyons12)
#### Post date: [July 19, 2024, 5:58pm UTC](https://discourse.julialang.org/t/determining-lower-bound-of-compat-statement/117248/1 "2024-07-19T17:58:36Z")

</div>

Is there a way to test the lower bound compatibility of a package systematically, say by doing a binary search to find the lowest version for which tests pass? When adding a new compat entry to a Project.toml, CompatHelper sets the lower bound to the latest major or `0.x` minor release version, so you might get `Roots = "2"` or `Interpolations = "0.15"`. It’s possible that earlier versions are compatible as well. That’s less likely for a major release (though not impossible), but it’s common for the `0.x` minor releases. I want to avoid making my compat entries overly restrictive, which can make large environments impossible to solve.

---

<div class="post-metadata">

### Author: ![scheidan1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/scheidan1/32/24771_2.png) [@scheidan1](https://discourse.julialang.org/u/scheidan1)
#### Post date: [August 19, 2024, 1:45pm UTC](https://discourse.julialang.org/t/determining-lower-bound-of-compat-statement/117248/2 "2024-08-19T13:45:19Z")

</div>

Thanks @bclyons12 for rising this question. I was always puzzled how to handle this.

What is the recommended practice to determine the lower bounds of the combat entries? For example I use `Distributions.jl` but only very basics functionalities that are probably existing since a long time. So it feels very wrong to simply use the current version as lower bound…

Realistically, I also don’t see me digging through the code of all my dependencies to figure out when the required functionalities were added.

I would be happy to learn how people here usually handle this.
