# \[ANN\] Jumbo - a scientific Julia distribution

**URL:** <https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856>\
**Category:** Tooling\
**Created:** [November 13, 2025, 9:39pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856 "2025-11-13T21:39:22Z")\
**Posts on this page:** 20\
**Page:** 3

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [November 19, 2025, 10:30am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/41 "2025-11-19T10:30:36Z")

</div>

Thank you, everyone, for voting! Given the strong preference for Jumbo, I have decided to go with that name. I’ve made an updated release that also includes CSV and JuMP packages. The release assets will be uploaded over the next 2 hours as GitHub CI completes the builds.

I’ll update the title and announcement with the new name and links once the builds finish.

---

<div class="post-metadata">

**Author:** ![Datseris](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/datseris/32/13406_2.png) [@Datseris](https://discourse.julialang.org/u/Datseris)\
**Post date:** [November 19, 2025, 4:08pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/42 "2025-11-19T16:08:21Z")

</div>

Thank you Janis, this sounds absolutely perfect for me. I am using Julia in my university lectures and we have big problems with installation on the university machines: the university effectively deletes the user directory on log out. So all julia packages get deleted, so on new log in, you’re hit with a 30-minutes delay to reinstall everything…

Sounds like a custom Jumbo (which I would have hoped would have been renamed to Jukebox instead, it fits better) is the perfect solution. I will write here, or anywhere else you prefer, the outcome of my attempt to use Jumbo to solve the problem.

---

<div class="post-metadata">

**Author:** ![benz0li](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/benz0li/32/37040_2.png) [@benz0li](https://discourse.julialang.org/u/benz0li)\
**Post date:** [November 20, 2025, 9:38am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/43 "2025-11-20T09:38:10Z")

</div>

@Janis_Erdmanis Please be aware of Julia’s precompilation targets.

Cross references:

- [System Image Building · The Julia Language](https://docs.julialang.org/en/v1/devdocs/sysimg/#Specifying-multiple-system-image-targets)
- [Is it possible to make precompilation portable (for docker images built with a different CPU)?](https://discourse.julialang.org/t/is-it-possible-to-make-precompilation-portable-for-docker-images-built-with-a-different-cpu/95913)

---

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [November 20, 2025, 9:55am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/44 "2025-11-20T09:55:36Z")

</div>

I already take thoose into account - [AppBundler.jl/src/Utils/Stage.jl at f5aec5b1e61cb731954dd3fa1a000d3232dc6afa · PeaceFounder/AppBundler.jl · GitHub](https://github.com/PeaceFounder/AppBundler.jl/blob/f5aec5b1e61cb731954dd3fa1a000d3232dc6afa/src/Utils/Stage.jl#L431) Have you had precompilation cache invalidation?

---

<div class="post-metadata">

**Author:** ![benz0li](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/benz0li/32/37040_2.png) [@benz0li](https://discourse.julialang.org/u/benz0li)\
**Post date:** [November 20, 2025, 10:15am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/45 "2025-11-20T10:15:03Z")

</div>

I overlooked AppBundler.jl. Just looked at [Jumbo](https://github.com/JanisErdmanis/Jumbo).

* * *

> Have you had precompilation cache invalidation?

I do not use Jumbo.

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [November 22, 2025, 8:48pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/46 "2025-11-22T20:48:28Z")

</div>

JuSci ?

---

<div class="post-metadata">

**Author:** ![digital\_carver](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/digital_carver/32/33818_2.png) [@digital\_carver](https://discourse.julialang.org/u/digital_carver)\
**Post date:** [November 22, 2025, 11:55pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/47 "2025-11-22T23:55:46Z")

</div>

_Juicy_ 🥤 😎

But the name decision has been taken, and Jumbo has been decided as the new name now.

> [@Janis\_Erdmanis](#):
>
> Given the strong preference for Jumbo, I have decided to go with that name.

---

<div class="post-metadata">

**Author:** ![KSepetanc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ksepetanc/32/10841_2.png) [@KSepetanc](https://discourse.julialang.org/u/KSepetanc)\
**Post date:** [December 10, 2025, 11:25pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/48 "2025-12-10T23:25:41Z")

</div>

Is there consensus on how often should Jumbo have updates? Considering it packs more than 800 packages, I think it should be on regular basis, i.e. once a week, once every two weeks? Preferably automated updates. Also Jumbo release name could be both Julia version and date so that if someone needs older Julia version bundled that it is easy to find it.

---

<div class="post-metadata">

**Author:** ![ParadaCarleton](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/paradacarleton/32/20005_2.png) [@ParadaCarleton](https://discourse.julialang.org/u/ParadaCarleton)\
**Post date:** [December 11, 2025, 3:42am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/49 "2025-12-11T03:42:46Z")

</div>

This is great and I’ve wanted something like it for a long time. Thank you so much! 🙂

---

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [December 11, 2025, 4:22pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/50 "2025-12-11T16:22:29Z")

</div>

I can commit to releasing a new version every two months. This is straightforward, and I plan to streamline the process by creating a GitHub Action that automatically updates the project with the current Julia version and modifies the Project.toml version field. Once that’s in place, I’ll only need to click a few buttons in the web interface—and eventually, I may automate releases entirely.

The most pressing issue right now is code signing for distributions. Without it, installing a Jumbo distribution requires detailed workarounds, which isn’t ideal. I’d like to resolve this as soon as possible, but it’s frustrating: cheaper Windows code signing certificates only come with hardware tokens, which breaks CI workflows. I’m not keen on committing to manually downloading releases, signing them on my computer, and re-uploading them every two months—especially while paying for certificates long-term. That said, I may have access to a code signing certificate for about a year as part of developing the AppBundler project.

---

<div class="post-metadata">

**Author:** ![KSepetanc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ksepetanc/32/10841_2.png) [@KSepetanc](https://discourse.julialang.org/u/KSepetanc)\
**Post date:** [December 21, 2025, 1:16pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/51 "2025-12-21T13:16:34Z")

</div>

Is there any list of included packages? Would it make sense to make a file on github that lists them all including versions?

---

<div class="post-metadata">

**Author:** ![digital\_carver](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/digital_carver/32/33818_2.png) [@digital\_carver](https://discourse.julialang.org/u/digital_carver)\
**Post date:** [December 21, 2025, 7:05pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/52 "2025-12-21T19:05:30Z")

</div>

The [Project.toml](https://github.com/JanisErdmanis/Jumbo/blob/main/Project.toml) on the repo conveniently has both of those.

---

<div class="post-metadata">

**Author:** ![KSepetanc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ksepetanc/32/10841_2.png) [@KSepetanc](https://discourse.julialang.org/u/KSepetanc)\
**Post date:** [December 21, 2025, 9:08pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/53 "2025-12-21T21:08:34Z")

</div>

How so? I see there only 19 dependencies, but Jumbo should come with about 800 installed.

---

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [December 21, 2025, 10:40pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/54 "2025-12-21T22:40:34Z")

</div>

The 800 includes indirect dependencies you can’t import, skim the [Manifest.toml](https://github.com/JanisErdmanis/Jumbo/blob/main/Manifest.toml) and review the fundamentals here:

- [11. Project.toml and Manifest.toml · Pkg.jl](https://pkgdocs.julialang.org/v1/toml-files/)
- [Code Loading · The Julia Language](https://docs.julialang.org/en/v1/manual/code-loading/#Environments)

Though now I look at the project, my question is why not all of them have version constraints. Earlier it was mentioned that the stdlib path is used to prevent changes to the pre-installed dependencies, but wouldn’t it have been more informative to specify the direct dependencies’ versions without having to run Julia and `Pkg.status`?

---

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [December 21, 2025, 11:03pm UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/55 "2025-12-21T23:03:15Z")

</div>

The version constraints were added automatically to the `Project.toml` when packages were added. They may be removed from there in the future, but for now they provide a general sense of how fresh the included packages are. They are somewhat redundant here, as the repo already contains `Manifest.toml` which lists all dependencies.

If someone has the energy, one could build a static web page, preferably with Franklin.jl, which parses the `Manifest.toml` file and lists all dependencies in a user-readable form.

> [@Benny](#):
>
> wouldn’t it have been more informative to specify the direct dependencies’ versions without having to run Julia and `Pkg.status`?

This would be unmaintainable by hand. At that point one would write a tool for updating, listing all dependecies in `Project.toml` which is what `Manifest.toml` already is for.

---

<div class="post-metadata">

**Author:** ![Benny](https://avatars.discourse-cdn.com/v4/letter/b/49beb7/32.png) [@Benny](https://discourse.julialang.org/u/Benny)\
**Post date:** [December 22, 2025, 12:39am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/56 "2025-12-22T00:39:54Z")

</div>

> [@Janis\_Erdmanis](#):
>
> listing all dependecies in `Project.toml` which is what `Manifest.toml` already is for.

I agree that it’s technically redundant, but it’s fairly tough to spot the 19 direct dependencies among the 800, and there’s a reasonable ask right here for those versions in one visible place without having to install everything first. But you do have a point that this kind of modification to `compat` should be automated from the manifest somehow.

---

<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:** [December 22, 2025, 4:39am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/57 "2025-12-22T04:39:00Z")

</div>

> [@Benny](#):
>
> this kind of modification to `compat` should be automated from the manifest somehow.

Perhaps the `freeze()` function of [GitHub - ufechner7/PkgHelpers.jl: Helper functions for the Julia package manager](https://github.com/ufechner7/PkgHelpers.jl) might be able to do that?

---

<div class="post-metadata">

**Author:** ![technocrat](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/technocrat/32/220947_2.png) [@technocrat](https://discourse.julialang.org/u/technocrat)\
**Post date:** [December 22, 2025, 7:45am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/58 "2025-12-22T07:45:31Z")

</div>

I _think_ this is a great idea if it keeps to assembling parts from the Registry. I’d hate to see it become a vehicle for fragmenting the language, however.

I’ll throw out another name: **Joomba** , which seems primarily a term for something pleasing to the eye.

---

<div class="post-metadata">

**Author:** ![KSepetanc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ksepetanc/32/10841_2.png) [@KSepetanc](https://discourse.julialang.org/u/KSepetanc)\
**Post date:** [December 24, 2025, 11:55am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/59 "2025-12-24T11:55:57Z")

</div>

`pkg> compat --current` maybe could do that. Coming in 1.13.

---

<div class="post-metadata">

**Author:** ![Janis\_Erdmanis](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/janis_erdmanis/32/10869_2.png) [@Janis\_Erdmanis](https://discourse.julialang.org/u/Janis_Erdmanis)\
**Post date:** [April 12, 2026, 7:11am UTC](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856/60 "2026-04-12T07:11:51Z")

</div>

A new version [Jumbo 26.04.12](https://github.com/JanisErdmanis/Jumbo/releases/tag/v26.04.12) is out. The main change is that QuantumOptics.jl has been dropped from the default environment — its compat bounds on KrylovKit were blocking the SciML stack (OrdinaryDiffEq, ModelingToolkit, Symbolics) from moving to its latest major versions. With that resolved, sixty-four packages step forward in this release, with no downgrades. Users who need QuantumOptics can still add it to their own project environments.

_Written by Claude based on the Manifest.toml changes._

[Previous page](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856.md?page=2)

[Next page](https://discourse.julialang.org/t/ann-jumbo-a-scientific-julia-distribution/133856.md?page=4)
