Skip to content

[pull] master from JuliaLang:master #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 153 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
153 commits
Select commit Hold shift + click to select a range
83e1363
Run CI on backport branch too (#4094)
IanButterworth Nov 23, 2024
814949e
Increase version of `StaticArrays` in `why` tests (#4077)
fhagemann Dec 2, 2024
b610661
rename FORMER_STDLIBS -> UPGRADABLE_STDLIBS (#4070)
IanButterworth Dec 2, 2024
cd75456
Fix heading (#4102)
nilshg Dec 2, 2024
d84a1a3
Allow use of a url and subdir in [sources] (#4039)
tecosaur Dec 3, 2024
f9ad1c0
Fix a couple of bad JULIA_DEPOT_PATH settings (#4110)
IanButterworth Dec 9, 2024
e7c37f3
status: highlight when deps have different loaded versions (#4109)
IanButterworth Dec 9, 2024
47ad7e3
add some explicit precompile statements for `Pkg.status`. For some re…
KristofferC Dec 16, 2024
a1cfc6d
Improve latency for `Pkg.add` (#4115)
KristofferC Dec 17, 2024
b995782
avoid writing and reparsing the artifact usage file once per artifact…
KristofferC Dec 17, 2024
c7e611b
support before/after openssl switch (#4123)
IanButterworth Dec 30, 2024
739a64a
check source path is found when getting package_info (#4126)
IanButterworth Jan 1, 2025
8d3cf02
Fix OpenSSL_jll detection (#4127)
IanButterworth Jan 1, 2025
1eb09be
slightly improve memory in resolver code (#4119)
KristofferC Jan 2, 2025
bc9fb21
Fix JLL version fix fix (#4130)
IanButterworth Jan 10, 2025
2609a94
don't set up callbacks if using cli git (#4128)
IanButterworth Jan 16, 2025
df1931a
Use copy_test_packages in some places, and ensure that the copied tes…
rbvermaa Jan 16, 2025
938e9b2
app support in Pkg (#3772)
KristofferC Jan 24, 2025
a3626bf
add `PREV_ENV_PATH` to globals getting reset and move the reset to be…
KristofferC Jan 28, 2025
ecdf6aa
rename rot13 app in test to avoid name conflicts on systems where suc…
KristofferC Jan 28, 2025
6091533
fix ambiguity in apps `rm` (#4144)
KristofferC Jan 29, 2025
7aeec76
Update LineEdit internal for hints (#4146)
IanButterworth Feb 3, 2025
834c62d
reset caching of STDLIBs reading after precompilation is done (#4148)
KristofferC Feb 5, 2025
5e6c457
Add Aqua tests. Add missing compats (#4150)
IanButterworth Feb 11, 2025
ebfc041
Fix artifact directories not having traversal permissions (#4075)
staticfloat Feb 11, 2025
0333d55
Fixes for julia_version. Expand and consolidate julia_version tests. …
IanButterworth Feb 13, 2025
c54ee59
tests: make sure we're in an active project and that it's clean (#4155)
IanButterworth Feb 13, 2025
92595ec
Add more tests for BinaryBuilder usage (#4156)
IanButterworth Feb 16, 2025
14831ed
enable windows tree_hash checking (#4167)
IanButterworth Feb 23, 2025
f517489
Changed Pkg.test to prioritise julia_args --threads over current proc…
stemann Feb 25, 2025
2779d42
Update toml-files.md (#4177)
Heptazhou Feb 28, 2025
cf6191b
Pidlock source and artifact installation. Registry pidlock fixes. (#4…
IanButterworth Mar 1, 2025
6fa32d5
use temp dir on same filesystem for source install (#4180)
IanButterworth Mar 1, 2025
61115be
fix the right temp dir (#4181)
IanButterworth Mar 2, 2025
60e3185
Test fix: handle if tested Pkg is shipped version (#4182)
IanButterworth Mar 2, 2025
c0ba694
rename depot tmp dir to temp (#4183)
IanButterworth Mar 7, 2025
c9d161f
store temp packages in packages/temp (#4188)
IanButterworth Mar 14, 2025
26bdeee
`Project` construction, `Manifest` construction: improve type stabili…
nsajko Mar 15, 2025
6ac0df4
allow authors to be a TOML array (#3710)
simonbyrne Mar 16, 2025
ab53704
Create dependabot.yml (#4190)
vtjnash Mar 19, 2025
dfd0b83
Update codecov-action to v5 (#4191)
vtjnash Mar 19, 2025
b808cb1
Add a helper script for making missing Pkg tags (#4194)
IanButterworth Mar 20, 2025
b323a38
Artifacts: Add download size to `Artifacts.toml` (#4171)
staticfloat Mar 25, 2025
93fb66d
help debug freebsd test failure (#4199)
IanButterworth Mar 29, 2025
895e9d3
Lock io within printpkgstyle to avoid print tearing (#4202)
IanButterworth Mar 30, 2025
6f309f1
fix eagerly stopping hint completions (#4201)
IanButterworth Mar 30, 2025
5210c0d
Use `git -C` instead of `cd` (#4206)
fredrikekre Apr 1, 2025
a99f05c
fix flaky debug prints (#4210)
IanButterworth Apr 6, 2025
5432fdd
Don't warn about git General if people are opting out of the pkgserve…
IanButterworth Apr 6, 2025
bde7ce0
also collect packages tracking a repo when "traversing" developed pac…
KristofferC Apr 9, 2025
4c9b084
Stop using the `module Mod; using Mod; end` pattern [NFC] (#3750)
LilithHafner Apr 11, 2025
cda9881
Fix compat example for `~0.0.3` (#4178)
omus Apr 15, 2025
8f013c7
some small `Box` removals from `download_artifacts` code (#4219)
KristofferC Apr 15, 2025
7b293e2
Update extensions.jl (#4224)
adienes Apr 29, 2025
4951268
Add backticks and syntax highlight tags in docstrings (#4226)
abhro May 5, 2025
54b46b9
Re-land: Add entries to [sources] automatically if package is added b…
lassepe May 5, 2025
2afba2c
Add note about character minimums (#4166)
wylie39 May 5, 2025
244b421
set version to 1.13.0 (#4147)
KristofferC May 5, 2025
80d2e75
Export PkgArtifacts from itself under the name Artifacts for compat (…
LilithHafner May 5, 2025
cb88750
add some missing hash definitions (#4228)
KristofferC May 12, 2025
afac85b
[test] Use permalinks for `ArtifactInstallation` artifacts (#4240)
giordano May 21, 2025
cf2d47a
Clean up CHANGELOG.md (#4231)
lassepe May 21, 2025
1b26c92
improve package syntax parsing a bit (#4227)
KristofferC May 21, 2025
8a88709
Make threads test more robust + fix bug parsing JULIA_NUM_THREADS (#4…
gbaraldi May 21, 2025
88629b5
Disallow precompiling Pkg in Pkg tests (#4176)
IanButterworth May 21, 2025
5577f68
Isolate threads test from parent state (#4243)
IanButterworth Jun 3, 2025
313fddc
Internals: Add fallback `Base.show(::IO, ::RegistryInstance)` method …
DilumAluthge Jun 9, 2025
a94a6bc
fix dev taking when the app is already installed (#4259)
KristofferC Jun 13, 2025
a420462
don't use tree hash from manifest if the path is set from sources (#4…
KristofferC Jun 19, 2025
cae9ce0
Fix historical stdlib fixup if `Pkg` is in the Manifest (#4264)
Keno Jun 20, 2025
e3d4561
add update function to apps and fix a bug when adding an already inst…
KristofferC Jun 20, 2025
4d1c6b0
explain no reg installed when no reg installed (#4261)
IanButterworth Jun 20, 2025
eefbef6
feat(errors): Improve error message for incorrect package UUID (#4270)
KristofferC Jun 27, 2025
8b1f0b9
prompt for confirmation before removing compat entry (#4254)
IanButterworth Jun 27, 2025
e9a0552
fix what project file to look at when package without path but with a…
KristofferC Jun 30, 2025
e02bcab
Registry: Properly pass down `depot` (#4268)
Keno Jun 30, 2025
d2e6102
Fix leading whitespace in REPL commands with comma-separated packages…
KristofferC Jun 30, 2025
c78b40b
copy the app project instead of wrapping it (#4276)
KristofferC Jun 30, 2025
25c2390
feat(apps): Add support for multiple apps per package via submodules …
KristofferC Jun 30, 2025
109eaea
Various app improvements (#4278)
KristofferC Jun 30, 2025
0640da5
Document [sources] section keys (#4281)
KristofferC Jul 1, 2025
aaff8f2
Various improvements to docs and docstrings (#4279)
KristofferC Jul 1, 2025
95490a5
Create docs site favicon (#4275)
abhro Jul 1, 2025
2097cdb
collect paths for input packages that are in a workspace (#4229)
KristofferC Jul 1, 2025
fe73f6a
Add readonly field support for Project.toml environments (#4284)
KristofferC Jul 1, 2025
4fc3086
Doc section for Pkg and Storage Protocols (#4234)
tanmaykm Jul 1, 2025
833aa7f
update CHANGELOG with some new things (#4285)
KristofferC Jul 2, 2025
5b95227
Clarify guidelines (#4096)
rayegun Jul 2, 2025
175a1ff
Switch to more portable shell shebang (#4162)
tecosaur Jul 2, 2025
ffdb668
fix a header when cloning and use credentials when fetching (#4286)
KristofferC Jul 2, 2025
c93d6f0
Show preserve strategy in resolve (#3761)
jariji Jul 2, 2025
96a10b5
update the Pkg.test docs (#3173)
KristofferC Jul 2, 2025
5b4790c
`Pkg.test`: add more detail to the "Could not use exact versions of p…
DilumAluthge Jul 2, 2025
f3ed29e
Update development instructions (#3625)
glennmoy Jul 2, 2025
799f7de
Fix bind_artifact! when platform has compare_strategy (#3624)
glennmoy Jul 2, 2025
4f122a8
Add more info to deprecation warning of `installed` (#3452)
KronosTheLate Jul 2, 2025
a704d2e
generate: use the same default code as Example.jl (#2601)
fonsp Jul 2, 2025
eab1b8b
propagate `include_lazy` through `download_artifacts` (#3106)
KristofferC Jul 2, 2025
00ef215
warn & strip on accidental leading `]` (#3122)
t-bltg Jul 2, 2025
ae65b1e
Note disabling autoprecompilation in Pkg.instantiate docstring (#3613)
mortenpi Jul 2, 2025
d1d6a2b
`Pkg.Operations.install_archive`: when unpacking the archive, always …
DilumAluthge Jul 3, 2025
3440600
Refactor: Extract geturl function and improve error message (#4272)
KristofferC Jul 3, 2025
3869055
Enhance fuzzy matching algorithm with multi-factor scoring (#4287)
KristofferC Jul 3, 2025
69b50d7
fixup CHANGELOG for automatic source additions (#4294)
KristofferC Jul 3, 2025
6636197
Implement atomic TOML writes to prevent data corruption (#4293)
KristofferC Jul 3, 2025
7381ccf
Change refs/* to refs/heads/* to speed up repo cloning w/ many branch…
quinnj Jul 3, 2025
d0c6d50
also use a bare repo when cloning for `add` using cli GIT (#4296)
KristofferC Jul 3, 2025
ad9551b
improve error message info for bad compat entries (#4302)
IanButterworth Jul 4, 2025
8793b13
Make tips show the repl mode when in repl mode (#3854)
IanButterworth Jul 4, 2025
232c623
Implement lazy loading for RegistryInstance to improve startup perfor…
KristofferC Jul 4, 2025
e7a2dfe
add support for `Pkg.add(path="/path/to/git-submodule.jl")` directly.…
Fenyutanchan Jul 4, 2025
95e0ab7
Fix reference_manifest_isolated_test to use temporary directory (#4306)
KristofferC Jul 4, 2025
06dc7eb
prevent error when updating sources with a non-existing manifest (#4307)
KristofferC Jul 4, 2025
cb6099a
Add more info when package is missing (#4303)
IanButterworth Jul 4, 2025
c1d5f73
fix resolve to not suceed when giving a non-existing version for a pa…
KristofferC Jul 4, 2025
115e303
add option for Pkg.build to allow_reresolve=false (#3329)
IanButterworth Jul 4, 2025
4ef5a5d
Add a tip when trying to upgrade a specific package that's possible t…
IanButterworth Jul 4, 2025
94d9551
Fix parsing to better handle branch/tag/subdir specifiers in complex …
KristofferC Jul 5, 2025
902b2c2
warn if adding a local path containing a dirty repo (#4309)
KristofferC Jul 5, 2025
d2c81db
Add support for GitHub pull request URLs (#4295)
KristofferC Jul 7, 2025
393f601
consider a package with a rev (but without a source) to not be "track…
KristofferC Jul 7, 2025
ca7d997
fix assert from triggering with different path separators (#4305)
KristofferC Jul 7, 2025
32921ac
fix `status --diff` to work when package is in a non-root path (#4312)
KristofferC Jul 7, 2025
6ae6499
Fix stack overflow in `safe_realpath` (#4313)
visr Jul 7, 2025
4e49307
Add error that explains PackageSpec.repo is a private field (#4170)
IanButterworth Jul 8, 2025
4544cd9
Add a docs page about Depots (#2245)
mauro3 Jul 8, 2025
eb6320c
Warn about yanked versions. Add docs about yanked versions. (#4310)
IanButterworth Jul 8, 2025
6e84091
More registry status (#4300)
GunnarFarneback Jul 8, 2025
21c4aa4
add `pkg> compat --current` mode (#3266)
IanButterworth Jul 8, 2025
10ae389
Update registry update log also when adding a registry by copying or …
GunnarFarneback Jul 9, 2025
4197dd7
make more descriptive errors if `first` fails on empty urls when inst…
KristofferC Jul 9, 2025
98098f2
only try download artifacts from pkg server if the corresponding pack…
KristofferC Jul 9, 2025
7f4e170
Fix typos and inconsistencies in documentation (#4315)
KristofferC Jul 9, 2025
61a8447
Add more autoprecompilation controls and `Pkg.precompile() do` to del…
IanButterworth Jul 12, 2025
92440c6
Fix lack of color in CI and don't warn about loaded packages in test …
IanButterworth Jul 12, 2025
48d5577
Add missing recent changelogs (#4317)
IanButterworth Jul 12, 2025
a842283
Format code base with runic and set up runic CI (#4320)
IanButterworth Jul 13, 2025
d2bc406
add a pre-commit note to the readme (#4321)
IanButterworth Jul 13, 2025
b85e294
Stop discover_repo when reaching the depot (#4322)
IanButterworth Jul 14, 2025
b518c03
fix parsing of multiple packages with modifiers on some of them (#4325)
KristofferC Jul 15, 2025
0e123a2
Update registries during `dev` (#4186)
IanButterworth Jul 15, 2025
38d2b36
Make leading `]` fix silent, and not during completions (#4328)
IanButterworth Jul 18, 2025
542ca0c
Add a pkg message if julia_version is being specified (#4331)
IanButterworth Jul 24, 2025
a8e394b
Add a test for behavior that BinaryBuilder relies on (#4332)
IanButterworth Jul 25, 2025
d94f8a1
Error if the stdlib version requested mismatches current version (#4335)
IanButterworth Jul 25, 2025
dd5b8ae
Merge pull request #4338 from JuliaLang/kc/blame
KristofferC Jul 29, 2025
1bb49bd
Registry: Add lock to lazy fields in RegistryInstance and PkgEntry (#…
IanButterworth Jul 30, 2025
8cee071
rm old hook (#4342)
IanButterworth Jul 30, 2025
3cfe013
Fix missed rename of Operations._compat. Add tests for interactive co…
IanButterworth Aug 1, 2025
7ea0a19
Revert "Error if the stdlib version requested mismatches current vers…
KristofferC Aug 7, 2025
697e823
Make sure source pidfile is in a writable location (#4346)
IanButterworth Aug 8, 2025
1fca1d2
avoid deprecated RadioMenu method (#4357)
IanButterworth Aug 9, 2025
bcab03a
Actually avoid depwarn, and enable --depwarn=error in CI (#4358)
IanButterworth Aug 10, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# ran runic on the code base
a84228360d6cff568a55911733e830cdf1c492da
11 changes: 11 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/" # Location of package manifests
schedule:
interval: "weekly"
groups:
all-actions:
patterns:
- "*"
30 changes: 30 additions & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Code checks

on:
pull_request:
push:
branches: ["master"]

jobs:

pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: pre-commit/action@2c7b3805fd2a0fd8c1884dcaebf91fc102a13ecd # v3.0.1
env:
# Skip runic-pre-commit since we use runic-action below instead
SKIP: runic

runic:
name: "Runic"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: julia-actions/setup-julia@v2
with:
version: '1.11'
- uses: julia-actions/cache@v2
- uses: fredrikekre/runic-action@v1
with:
version: "1.4" # Keep version in sync with .pre-commit-config.yaml
8 changes: 6 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@ on:
branches:
- 'master'
- 'release-*'
- 'backports-release-*'
push:
branches:
- 'master'
- 'release-*'
- 'backports-release-*'
tags: '*'
defaults:
run:
Expand Down Expand Up @@ -71,6 +73,7 @@ jobs:
- uses: julia-actions/julia-runtest@v1
with:
coverage: true
depwarn: error
env:
JULIA_PKG_SERVER: ${{ matrix.pkg-server }}
JULIA_TEST_VERBOSE_LOGS_DIR: ${{ github.workspace }}
Expand All @@ -82,9 +85,10 @@ jobs:
- uses: julia-actions/julia-processcoverage@v1
env:
JULIA_PKG_SERVER: ${{ matrix.pkg-server }}
- uses: codecov/codecov-action@v3
- uses: codecov/codecov-action@v5
with:
file: lcov.info
files: lcov.info
token: ${{ secrets.CODECOV_TOKEN }}
docs:
runs-on: ubuntu-latest
timeout-minutes: 60
Expand Down
17 changes: 17 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
repos:
- repo: 'https://github.com/pre-commit/pre-commit-hooks'
rev: v5.0.0
hooks:
- id: check-added-large-files
- id: check-case-conflict
# - id: check-toml # we have tomls with invalid syntax for tests
- id: check-yaml
- id: end-of-file-fixer
- id: mixed-line-ending
- id: trailing-whitespace
- repo: 'https://github.com/fredrikekre/runic-pre-commit'
rev: v2.0.1
hooks:
- id: runic
additional_dependencies:
- '[email protected]' # Keep version in sync with .github/workflows/Check.yml
109 changes: 106 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,69 @@
Pkg v1.13 Release Notes
=======================

- Project.toml environments now support a `readonly` field to mark environments as read-only, preventing modifications.
([#4284])
- `Pkg.build` now supports an `allow_reresolve` keyword argument to control whether the build process can re-resolve
package versions, similar to the existing option for `Pkg.test`. ([#3329])
- Packages are now automatically added to `[sources]` when they are added by url or devved. ([#4225])
- `update` now shows a helpful tip when trying to upgrade a specific package that can be upgraded but is held back
because it's part of a less optimal resolver solution ([#4266])
- `Pkg.status` now displays yanked packages with a `[yanked]` indicator and shows a warning when yanked packages are
present. `Pkg.resolve` errors also display warnings about yanked packages that are not resolvable. ([#4310])
- Added `pkg> compat --current` command to automatically populate missing compat entries with the currently resolved
package versions. Use `pkg> compat --current` for all packages or `pkg> compat Foo --current` for specific packages.
([#3266])
- Added `Pkg.precompile() do` block syntax to delay autoprecompilation until after multiple operations complete,
improving efficiency when performing several environment changes. ([#4262])
- Added `Pkg.autoprecompilation_enabled(state::Bool)` to globally enable or disable automatic precompilation for Pkg
operations. ([#4262])
- Implemented atomic TOML writes to prevent data corruption when Pkg operations are interrupted or multiple processes
write simultaneously. All TOML files are now written atomically using temporary files and atomic moves. ([#4293])
- Implemented lazy loading for RegistryInstance to significantly improve startup performance for operations that don't
require full registry data. This reduces `Pkg.instantiate()` time by approximately 60% in many cases. ([#4304])
- Added support for directly adding git submodules via `Pkg.add(path="/path/to/git-submodule.jl")`. ([#3344])
- Enhanced REPL user experience by automatically detecting and stripping accidental leading `]` characters in commands.
([#3122])
- Improved tip messages to show REPL mode syntax when operating in REPL mode. ([#3854])
- Enhanced error handling with more descriptive error messages when operations fail on empty URLs during git repository
installation or registry discovery. ([#4282])
- Improved error messages for invalid compat entries to provide better guidance for fixing them. ([#4302])
- Added warnings when attempting to add local paths that contain dirty git repositories. ([#4309])
- Enhanced package parsing to better handle complex URLs and paths with branch/tag/subdir specifiers. ([#4299])
- Improved artifact download behavior to only attempt downloads from the Pkg server when the package is registered on
that server's registries. ([#4297])
- Added comprehensive documentation page about depots, including depot layouts and configuration. ([#2245])
- Enhanced error handling for packages missing from registries or manifests with more informative messages. ([#4303])
- Added more robust error handling when packages have revisions but no source information. ([#4311])
- Enhanced registry status reporting with more detailed information. ([#4300])
- Fixed various edge cases in package resolution and manifest handling. ([#4307], [#4308], [#4312])
- Improved handling of path separators across different operating systems. ([#4305])
- Added better error messages when accessing private PackageSpec.repo field. ([#4170])

Pkg v1.12 Release Notes
=======================

- Pkg now has support for "workspaces" which is a way to resolve multiple project files into a single manifest.
The functions `Pkg.status`, `Pkg.why`, `Pkg.instantiate`, `Pkg.precompile` (and their REPL variants) have been updated
to take a `workspace` option. Read more about this feature in the manual about the TOML-files.
The functions `Pkg.status`, `Pkg.why`, `Pkg.instantiate`, `Pkg.precompile` (and their REPL variants) have been
updated to take a `workspace` option, with fixes for workspace path collection and package resolution in workspace
environments. Read more about this feature in the manual about the TOML-files. ([#3841], [#4229])
- Pkg now supports "apps" which are Julia packages that can be run directly from the terminal after installation.
Apps can be defined in a package's Project.toml and installed via Pkg. Apps now support multiple apps per package
via submodules, allowing packages to define multiple command-line applications, with enhanced functionality including
update capabilities and better handling of already installed apps. ([#3772], [#4277], [#4263])
- `status` now shows when different versions/sources of dependencies are loaded than that which is expected by the
manifest ([#4109])
- When adding or developing a package that exists in the `[weakdeps]` section, it is now automatically removed from
weak dependencies and added as a regular dependency. ([#3865])
- Enhanced fuzzy matching algorithm for package name suggestions with improved multi-factor scoring for better package
name suggestions. ([#4287])
- The Pkg REPL now supports GitHub pull request URLs, allowing direct package installation from PRs via
`pkg> add https://github.com/Org/Package.jl/pull/123` ([#4295])
- Improved git repository cloning performance by changing from `refs/*` to `refs/heads/*` to speed up operations on
repositories with many branches. ([#2330])
- Improved REPL command parsing to handle leading whitespace with comma-separated packages. ([#4274])
- Improved error messages when providing incorrect package UUIDs. ([#4270])
- Added confirmation prompts before removing compat entries to prevent accidental deletions. ([#4254])

Pkg v1.11 Release Notes
=======================
Expand All @@ -21,7 +81,7 @@ Pkg v1.10 Release Notes
=======================

Pkg v1.9 Release Notes
=======================
======================

- New functionality: `Pkg.why` and `pkg> why` to show why a package is inside the environment (shows all "paths" to a package starting at the direct dependencies).
- When code coverage tracking is enabled for `Pkg.test` the new path-specific code-coverage option is used to limit coverage
Expand Down Expand Up @@ -83,6 +143,16 @@ Pkg v1.7 Release Notes
- The `mode` keyword for `PackageSpec` has been removed ([#2454]).

<!--- Generated by NEWS-update.jl --->
[#4225]: https://github.com/JuliaLang/Pkg.jl/issues/4225
[#4284]: https://github.com/JuliaLang/Pkg.jl/issues/4284
[#3526]: https://github.com/JuliaLang/Pkg.jl/issues/3526
[#3708]: https://github.com/JuliaLang/Pkg.jl/issues/3708
[#3732]: https://github.com/JuliaLang/Pkg.jl/issues/3732
[#3772]: https://github.com/JuliaLang/Pkg.jl/issues/3772
[#3783]: https://github.com/JuliaLang/Pkg.jl/issues/3783
[#3841]: https://github.com/JuliaLang/Pkg.jl/issues/3841
[#3865]: https://github.com/JuliaLang/Pkg.jl/issues/3865
[#4109]: https://github.com/JuliaLang/Pkg.jl/issues/4109
[#2284]: https://github.com/JuliaLang/Pkg.jl/issues/2284
[#2431]: https://github.com/JuliaLang/Pkg.jl/issues/2431
[#2432]: https://github.com/JuliaLang/Pkg.jl/issues/2432
Expand All @@ -101,3 +171,36 @@ Pkg v1.7 Release Notes
[#2995]: https://github.com/JuliaLang/Pkg.jl/issues/2995
[#3002]: https://github.com/JuliaLang/Pkg.jl/issues/3002
[#3021]: https://github.com/JuliaLang/Pkg.jl/issues/3021
[#3266]: https://github.com/JuliaLang/Pkg.jl/pull/3266
[#4266]: https://github.com/JuliaLang/Pkg.jl/pull/4266
[#4310]: https://github.com/JuliaLang/Pkg.jl/pull/4310
[#3329]: https://github.com/JuliaLang/Pkg.jl/pull/3329
[#4262]: https://github.com/JuliaLang/Pkg.jl/pull/4262
[#4293]: https://github.com/JuliaLang/Pkg.jl/pull/4293
[#4304]: https://github.com/JuliaLang/Pkg.jl/pull/4304
[#3344]: https://github.com/JuliaLang/Pkg.jl/pull/3344
[#2330]: https://github.com/JuliaLang/Pkg.jl/pull/2330
[#3122]: https://github.com/JuliaLang/Pkg.jl/pull/3122
[#3854]: https://github.com/JuliaLang/Pkg.jl/pull/3854
[#4282]: https://github.com/JuliaLang/Pkg.jl/pull/4282
[#4302]: https://github.com/JuliaLang/Pkg.jl/pull/4302
[#4309]: https://github.com/JuliaLang/Pkg.jl/pull/4309
[#4299]: https://github.com/JuliaLang/Pkg.jl/pull/4299
[#4295]: https://github.com/JuliaLang/Pkg.jl/pull/4295
[#4277]: https://github.com/JuliaLang/Pkg.jl/pull/4277
[#4297]: https://github.com/JuliaLang/Pkg.jl/pull/4297
[#2245]: https://github.com/JuliaLang/Pkg.jl/pull/2245
[#4303]: https://github.com/JuliaLang/Pkg.jl/pull/4303
[#4254]: https://github.com/JuliaLang/Pkg.jl/pull/4254
[#4270]: https://github.com/JuliaLang/Pkg.jl/pull/4270
[#4263]: https://github.com/JuliaLang/Pkg.jl/pull/4263
[#4229]: https://github.com/JuliaLang/Pkg.jl/pull/4229
[#4274]: https://github.com/JuliaLang/Pkg.jl/pull/4274
[#4311]: https://github.com/JuliaLang/Pkg.jl/pull/4311
[#4300]: https://github.com/JuliaLang/Pkg.jl/pull/4300
[#4307]: https://github.com/JuliaLang/Pkg.jl/pull/4307
[#4308]: https://github.com/JuliaLang/Pkg.jl/pull/4308
[#4312]: https://github.com/JuliaLang/Pkg.jl/pull/4312
[#4305]: https://github.com/JuliaLang/Pkg.jl/pull/4305
[#4170]: https://github.com/JuliaLang/Pkg.jl/pull/4170
[#4287]: https://github.com/JuliaLang/Pkg.jl/pull/4287
18 changes: 17 additions & 1 deletion Project.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"
keywords = ["package management"]
license = "MIT"
desc = "The next-generation Julia package manager."
version = "1.12.0"
version = "1.13.0"

[workspace]
projects = ["test", "docs"]
Expand Down Expand Up @@ -32,4 +32,20 @@ REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb"
REPLExt = "REPL"

[compat]
Artifacts = "1.11"
Dates = "1.11"
Downloads = "1.6"
FileWatching = "1.11"
LibGit2 = "1.11"
Libdl = "1.11"
Logging = "1.11"
Markdown = "1.11"
Printf = "1.11"
Random = "1.11"
REPL = "1.11"
SHA = "0.7"
TOML = "1"
Tar = "1.10"
UUIDs = "1.11"
julia = "1.12"
p7zip_jll = "17.5"
19 changes: 18 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,29 @@ If you want to develop this package do the following steps:
- Make a fork and then clone the repo locally on your computer
- Change the current directory to the Pkg repo you just cloned and start julia with `julia --project`.
- `import Pkg` will now load the files in the cloned repo instead of the Pkg stdlib.
- To test your changes, simply do `include("test/runtests.jl")`.
- To test your changes, simply do `Pkg.test()`.

If you need to build Julia from source with a Git checkout of Pkg, then instead use `make DEPS_GIT=Pkg` when building Julia. The `Pkg` repo is in `stdlib/Pkg`, and created initially with a detached `HEAD`. If you're doing this from a pre-existing Julia repository, you may need to `make clean` beforehand.

If you need to build Julia from source with Git checkouts of two or more stdlibs, please see the instructions in the [`Building Julia from source with a Git checkout of a stdlib`](https://github.com/JuliaLang/julia/blob/master/doc/src/devdocs/build/build.md#building-julia-from-source-with-a-git-checkout-of-a-stdlib) section of the [`doc/src/devdocs/build/build.md`](https://github.com/JuliaLang/julia/blob/master/doc/src/devdocs/build/build.md) file within the Julia devdocs.

## Pre-commit hooks

This repository uses pre-commit hooks to automatically check and format code before commits. The hooks perform various checks including:

- File size and case conflict validation
- YAML syntax checking
- Trailing whitespace removal and line ending fixes
- Julia code formatting with Runic

To install and use the pre-commit hooks:

1. Install pre-commit: `pip install pre-commit` (or use your system's package manager)
2. Install the hooks: `pre-commit install` from the root of the repository
3. Run on all files: `pre-commit run --all-files` from the root of the repository

Once installed, the hooks will run automatically on each commit. You can also run them manually anytime with `pre-commit run`.

## Synchronization with the Julia repo

To check which commit julia master uses see [JuliaLang/julia/stdlib/Pkg.version](https://github.com/JuliaLang/julia/blob/master/stdlib/Pkg.version).
Expand Down
89 changes: 89 additions & 0 deletions contrib/list_missing_pkg_tags.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
using LibGit2

const JULIA_REPO_URL = "https://github.com/JuliaLang/julia.git"
const JULIA_REPO_DIR = "julia"
const PKG_VERSION_PATH = "stdlib/Pkg.version"
const PKG_REPO_URL = "https://github.com/JuliaLang/Pkg.jl.git"
const PKG_REPO_DIR = "Pkg.jl"

function checkout_or_update_repo(url, dir)
return if isdir(dir)
println("Updating existing repository: $dir")
repo = LibGit2.GitRepo(dir)
LibGit2.fetch(repo)
else
println("Cloning repository: $url")
LibGit2.clone(url, dir)
end
end

function get_tags(repo)
refs = LibGit2.ref_list(repo)
tags = filter(ref -> startswith(ref, "refs/tags/"), refs)
return sort!(replace.(tags, "refs/tags/" => ""))
end

function is_stable_v1_release(tag)
return occursin(r"^v\d+\.\d+\.\d+$", tag) && VersionNumber(tag) >= v"1.0.0"
end

function extract_pkg_sha1(text::AbstractString)
m = match(r"PKG_SHA1\s*=\s*([a-f0-9]{40})", text)
return m !== nothing ? m[1] : nothing
end

function get_commit_hash_for_pkg_version(repo, tag)
return try
tag_ref = LibGit2.GitReference(repo, "refs/tags/" * tag)
LibGit2.checkout!(repo, string(LibGit2.GitHash(LibGit2.peel(tag_ref))))
version_file = joinpath(JULIA_REPO_DIR, PKG_VERSION_PATH)
if isfile(version_file)
return extract_pkg_sha1(readchomp(version_file))
else
println("Warning: Pkg.version file missing for tag $tag")
return nothing
end
catch
println("Error processing tag $tag")
rethrow()
end
end

tempdir = mktempdir()
cd(tempdir) do
# Update Julia repo
checkout_or_update_repo(JULIA_REPO_URL, JULIA_REPO_DIR)
julia_repo = LibGit2.GitRepo(JULIA_REPO_DIR)

# Get Julia tags, filtering only stable releases
julia_tags = filter(is_stable_v1_release, get_tags(julia_repo))
version_commit_map = Dict{String, String}()

for tag in julia_tags
println("Processing Julia tag: $tag")
commit_hash = get_commit_hash_for_pkg_version(julia_repo, tag)
if commit_hash !== nothing
version_commit_map[tag] = commit_hash
end
end

# Update Pkg.jl repo
checkout_or_update_repo(PKG_REPO_URL, PKG_REPO_DIR)
pkg_repo = LibGit2.GitRepo(PKG_REPO_DIR)

# Get existing tags in Pkg.jl
pkg_tags = Set(get_tags(pkg_repo))

# Filter out versions that already exist
missing_versions = filter(v -> v ∉ pkg_tags, collect(keys(version_commit_map)))

# Sort versions numerically
sort!(missing_versions, by = VersionNumber)

# Generate `git tag` commands
println("\nGit tag commands for missing Pkg.jl versions:")
for version in missing_versions
commit = version_commit_map[version]
println("git tag $version $commit")
end
end
4 changes: 2 additions & 2 deletions docs/NEWS-update.jl
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ s = read(NEWS, String)

m = match(r"\[#[0-9]+\]:", s)
if m !== nothing
s = s[1:m.offset-1]
s = s[1:(m.offset - 1)]
end

footnote(n) = "[#$n]: https://github.com/JuliaLang/Pkg.jl/issues/$n"
N = map(m -> parse(Int,m.captures[1]), eachmatch(r"\[#([0-9]+)\]", s))
N = map(m -> parse(Int, m.captures[1]), eachmatch(r"\[#([0-9]+)\]", s))
foots = join(map(footnote, sort!(unique(N))), "\n")

open(NEWS, "w") do f
Expand Down
Loading