# Version-named manifests by default?

**URL:** https://discourse.julialang.org/t/version-named-manifests-by-default/123618
**Category:** Internals & Design
**Tags:** manifest
**Created:** [December 9, 2024, 1:33pm UTC](https://discourse.julialang.org/t/version-named-manifests-by-default/123618 "2024-12-09T13:33:57Z")
**Posts on this page:** 11
**Page:** 1

<div class="post-metadata">

### Author: ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)
#### Post date: [December 9, 2024, 1:33pm UTC](https://discourse.julialang.org/t/version-named-manifests-by-default/123618/1 "2024-12-09T13:33:57Z")

</div>

Julia 1.11 supports versioning by manifests, but one has first to manually rename the manifest to use this feature.

Should not all newly created manifests be created with the versioned name?

---

<div class="post-metadata">

### Author: ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)
#### Post date: [July 4, 2025, 9:18am UTC](https://discourse.julialang.org/t/version-named-manifests-by-default/123618/2 "2025-07-04T09:18:29Z")

</div>

Very much in favor of this. If this is considered a braking change, perhaps use an environmental variable or command line parameter to enable this feature?

And if I want to submit an issue for this, should it be an issue for Pkg.jl or for Julia itself?

---

<div class="post-metadata">

### Author: ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)
#### Post date: [July 5, 2025, 1:26pm UTC](https://discourse.julialang.org/t/version-named-manifests-by-default/123618/3 "2025-07-05T13:26:48Z")

</div>

I don’t see in which way it could be a breaking change

---

<div class="post-metadata">

### Author: ![davidanthoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/davidanthoff/32/223493_2.png) [@davidanthoff](https://discourse.julialang.org/u/davidanthoff)
#### Post date: [July 5, 2025, 4:44pm UTC](https://discourse.julialang.org/t/version-named-manifests-by-default/123618/4 "2025-07-05T16:44:26Z")

</div>

We also want to use the version recorded in the manifest to launch the correct Julia version via Juliaup eventually, and this proposal would probably make this more complicated, so I think I’m not in favor 🙂

---

<div class="post-metadata">

### Author: ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)
#### Post date: [July 5, 2025, 4:55pm UTC](https://discourse.julialang.org/t/version-named-manifests-by-default/123618/5 "2025-07-05T16:55:38Z")

</div>

Having non-versioned Manifest and changing between Julia versions, especially if “downgrading” Julia, can result in compatibility issues. That was the reason behind the introduction of the versioned manifests in the first place, if I understand that correctly.

I’d say, for launching Julia over Juliaup: by default start the latest stable Julia version of those registered in (multiple) manifests, otherwise let the user decide.

P.S. Having some indication under which Julia version an environment has been used the last time could be another solution. E.g. writing the date into the corresponding manifest each time, or let juliaup write date + Julia version into a separated file (personally I think it’s not worth it however).

---

<div class="post-metadata">

### Author: ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)
#### Post date: [July 5, 2025, 5:18pm UTC](https://discourse.julialang.org/t/version-named-manifests-by-default/123618/6 "2025-07-05T17:18:49Z")

</div>

> [@davidanthoff](#):
>
> We also want to use the version recorded in the manifest to launch the correct Julia version

Why that? Why not using the version in `Project.toml`, and if there are multiple versions then use the newest stable version that is installed? In most cases a `Manifest.toml` file is only working for one Julia version.

If you want to look at the Manifest files to decide which Julia version to use, you could also:

- check all versioned Manifest files and use the one with the highest, stable version
- if no versioned Manifest file exist, use Manifest.toml

---

<div class="post-metadata">

### Author: ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)
#### Post date: [July 5, 2025, 6:42pm UTC](https://discourse.julialang.org/t/version-named-manifests-by-default/123618/7 "2025-07-05T18:42:52Z")

</div>

> [@davidanthoff](#):
>
> launch the correct Julia version via Juliaup eventually

Whether versioned manifests are created by default or not, there is already probably a substantial proportion of users who are using this feature, especially under those users who do switch between different Julia versions.

---

<div class="post-metadata">

### Author: ![GHTaarn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ghtaarn/32/216007_2.png) [@GHTaarn](https://discourse.julialang.org/u/GHTaarn)
#### Post date: [July 6, 2025, 11:22am UTC](https://discourse.julialang.org/t/version-named-manifests-by-default/123618/8 "2025-07-06T11:22:09Z")

</div>

> [@Eben60](#):
>
> P.S. Having some indication under which Julia version an environment has been used the last time could be another solution. E.g. writing the date into the corresponding manifest each time, or let juliaup write date + Julia version into a separated file (personally I think it’s not worth it however).

I am not in favour of writing the last access date in the manifest itself as this would then make version control see the file as changed. Recording this in a separate file would be acceptable, maybe the best place to put this would be in the `~/.julia` directory as it then would be user/machine specific and would not clutter the working directory.

I agree that defaulting to the latest available stable version that has a manifest file would also make a lot of sense

---

<div class="post-metadata">

### Author: ![hz-xiaxz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/hz-xiaxz/32/209585_2.png) [@hz-xiaxz](https://discourse.julialang.org/u/hz-xiaxz)
#### Post date: [July 7, 2025, 1:02am UTC](https://discourse.julialang.org/t/version-named-manifests-by-default/123618/9 "2025-07-07T01:02:15Z")

</div>

sorry, but is it advised to store `manifest.toml` in version control?

---

<div class="post-metadata">

### Author: ![GHTaarn](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ghtaarn/32/216007_2.png) [@GHTaarn](https://discourse.julialang.org/u/GHTaarn)
#### Post date: [July 7, 2025, 4:12am UTC](https://discourse.julialang.org/t/version-named-manifests-by-default/123618/10 "2025-07-07T04:12:22Z")

</div>

When it is part of a package, then I normally don’t, but when it is part of an environment for some independent scripts then I usually do. I expect that a lot of people do like me. It is nice to be able to recreate the exact environment for scripts, whereas packages should be made to be able to run with any package versions that they are compatible with. As far as I know, there is no official recommendation regarding this, it is the developers choice.

---

<div class="post-metadata">

### Author: ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)
#### Post date: [July 7, 2025, 4:55am UTC](https://discourse.julialang.org/t/version-named-manifests-by-default/123618/11 "2025-07-07T04:55:45Z")

</div>

When I have tested a new version of my packages, I create a copy like “Manifest-v1.11.toml.default” and commit that copy to git. So I always have a copy of the last, working manifest.

But I use it only if things go wrong. Normally I use Project.toml only.
