Skip to content

Upgradable stdlibs #50697

@vchuravy

Description

@vchuravy

A long-term goal for me is to enable upgradable stdlibs. Essentially leveraging pkgimages to move as many stdlibs out of the base system image and allow upgradeability without requiring Julia upgrades.

Currently the only upgradeable stdlib is DelimitedFiles. And maybe soon (tm) Statistics #46501

@KristofferC recently described to me on Slack the steps necessary to make a stdlib upgradeable?

The steps for an upgradable stdlib are:
1. Move the stdlib to an external repo:
2. Remove the stdlib from the sysimage
3. Make the version of the stdlib to the same as the current Julia version
4. Run https://github.com/KristofferC/StdlibRegistryCompatUpdater/blob/d79d66f7734e3d8d71213a4cf6250bea84dafe43/src/StdlibRegistryCompatUpdater.jl#L40 with the stdlib name and UUID to generate a PR to the registry equivalent to JuliaRegistries/General#66039
5. do something like JuliaLang/Pkg.jl#3373

For Step 2. one can look at pkgimage.mk if the stdlib has a pkgbuilder defined for it. (x-ref: #50684)

Would be great if we could crowd-source this process!

### Tasks
- [x] DelimitedFiles.jl JuliaLang/julia#45540 JuliaLang/julia#48671
- [x] Statistics.jl JuliaLang/julia#46501
- [ ] Distributed  https://github.com/JuliaLang/julia/pull/51621
- [ ] SparseArrays
- [ ] https://github.com/JuliaLang/julia/issues/57993
- [ ] SharedArrays
- [ ] Test https://github.com/JuliaLang/julia/pull/51632
- [ ] Pkg.jl https://github.com/JuliaLang/Pkg.jl/pull/3638
- [ ] LinearAlgebra https://github.com/JuliaLang/LinearAlgebra.jl/issues/1027
- [ ] Random https://github.com/JuliaLang/julia/pull/51432
- [ ] FileWatching https://github.com/JuliaLang/julia/pull/51463
- [ ] Require compat annotations in registry https://github.com/JuliaRegistries/RegistryCI.jl/pull/516
- [ ] ...

How to split a stdlib into a seperate repository

contrib/excise_stdlib.sh Test

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    stdlibJulia's standard library

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions