Releases: ocaml/opam
2.5.0
This is the final release of opam 2.5.0.
Binaries and full archive are signed by the opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92).
Changes
No significant change compared to 2.5.0~beta1.
To get the detailed list of changes compared to 2.4.1, you can look at the pre-releases' release notes:
For a more descriptive and simplified list of changes, please read our blog post.
2.5.0~rc1
This is the first release candidate of opam 2.5.0.
Binaries and full archive are signed by the opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92).
Please see our blog post for the upgrade instructions.
Changes
No significant change compared to 2.5.0~beta1.
2.5.0~beta1
This is the first beta release of opam 2.5.0.
Binaries and full archive are signed by the opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92).
Please see our blog post for a highlight on the major changes and upgrade instructions.
Fixes
Sandbox
- Allow the macOS sandbox to write in the
/var/folders/and/var/db/mds/directories as it is required by some of macOS core tools [#4797 @kit-ty-kate - fix #4389 #6460]
Update
- Fixed a bug occurring on version-equivalent package rename (i.e.
pkg.00 -> pkg.0) leading to the package being completely removed [#6774 @arozovyk - fix #6754]
Dry-run mode
- Stop
opam switch create --dry-runfrom creating switch root directory by stopping the creation of build directory and writing the switch-state cache [#6540 @hannesm - fix #5918] - Stop cleaning the build directory when installing packages with
--dry-run[#6540 @hannesm]
Other changes
Build changes
- Add the upcoming OCaml 5.5 (trunk) support when using dune's dev profile [#6670 @kit-ty-kate]
- opam no longer depends on
cmdliner[#6755 @kit-ty-kate - fix #6425] - Clean variables before calling
makeon different projects (e.g. downlodad-if-missing OCaml compiler) to avoid clashes with other variables set by these projects [#6769 @kit-ty-kate]
Internal changes
Improve the release script
- Fix the placement of the vendored archives in the release tarball [#6765 @kit-ty-kate - fix #6762]
- Fix the Windows build [#6769 @kit-ty-kate]
Testing
- Improve and extend the testsuite [#6540 #6774 @arozovyk @kit-ty-kate]
- Improve and extend the test infrastructure [#6732 @kit-ty-kate]
API updates
opam-state
OpamRepositoryState.load_opams_from_diff: track added packages to avoid removing version-equivalent packages [#6774 @arozovyk - fix #6754]
opam-core
OpamCmdliner: was added. It is the new internal interface forCmdliner, accessible through a newopam-core.cmdlinersub-library, however it is meant for internal use only. [#6755 @kit-ty-kate]
2.5.0~alpha1
This is the first alpha release of opam 2.5.0.
Binaries and full archive are signed by the opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92).
Please see our blog post for a highlight on the major changes and upgrade instructions.
Major changes
Opam update performance enhancement
- Implement incremental opam file loading to process only changed files during repository updates and repository state loading [#6614 @arozovyk - fix #5824]
Shell integration
- The
variables.*shscript used for shell hooks now only updates the environment ifOPAM_SWITCH_PREFIXis unset-or-empty [#6729 @dra27 - fix dbuenzli/topkg#142, #4649, #5761] - Default to the
.bashrcfile instead of the.profilewhen writing the shell hook withbashduringopam init[#6603 @kit-ty-kate - fix #5819 #4201 #3990] - csh: Don't double-set unconditional variables in
variables.cshandenv_hook.csh[#6729 @dra27]
Installer script
- The
shell/install.shscript now installs an appropriate apparmor profile on systems configured with apparmor [#6647 @kit-ty-kate - fix #5968]
Miscellaneous changes
Install
- Archives without checksums now fetch only once per call of
opam installif their url match [#6627 @psafont - fix #5638] - Do not ignore extra-files whose name is invalid and fail early in that case [#6679 @rjbou @kit-ty-kate]
- No longer ignore
extra-fileswhose name is invalid and raise a warning in that case [#6679 @rjbou @kit-ty-kate] - Raise a warning instead of a fatal uncaught exception when an item of
extra-filesis missing [#6696 @rjbou] - [BUG] Fix erroneous recompilations on opam files with empty but present
build/runtest/install/removefield [#6505 @kit-ty-kate - fix #5814] - [BUG] Fix
opam install pkg --depext-onlyexiting with code 0 instead of 20 (not found) [#6516 @rjbou - fix #6488]
Init
- Remove
getconffrom the list of required runtime tools, which allowsopam initto work out-of-the-box on Haiku [#6634 @kit-ty-kate - fix #6632]
Var / Option
- Refine the specification of
pkg:opamfilevariable and update its computation accordingly [#6659 @kit-ty-kate - fix #5346] - Make global option
default-invariantmodifiable [#6730 @rjbou]
Download
- [BUG] Fix parsing of
OPAMFETCH(support quotes / proper POSIX shell syntax) [#5492 @kit-ty-kate - fix #5490] - [BUG] Check the status of git submodules when checking if a repository is up-to-date [#6132 @kit-ty-kate]
Remove
- [BUG] Fix
opam remove --forcethat was launching commands in current directory [#6672 @rjbou - fix #6570]
Lock
- [BUG] Fix
opam lock's error message on pinned packages with no git remote by handling exit code 2 fromgit remote get-url[#6422 @rjbou]
Update
- [BUG] Fix the false-positive mismatch debug warning during
opam updatewhen faced with nested extra-files on Windows [#6715 @kit-ty-kate]
Depexts
- [BUG] Harden the parsing of
apk policyon Alpine [#6742 @kit-ty-kate]
Improve the UI
- Show the invalid character when detecting an erroneous package name [#6638 @lefessan - fix #6396]
- Improve the error messages on
opam source, especially in case ofFailure[#6696 @rjbou] - The name of missing or erroneous
extra-filesare now displayed instead of their path in error messages [#6679 @kit-ty-kate @rjbou] - Remove duplicated directory separator when displaying some rare filenames [#6703 @rjbou]
- Handle non-displayable characters when detecting an erroneous package name or version [#6640 @kit-ty-kate]
- More fine grained error message in
opam installin case of bad hash or missingextra-fileserror (and remove raw fatal error) [#6696 @rjbou] - Update warning messages when the git remote is not found and when skipping local pins [#6422 @rjbou]
- Add an upgrade advice if the repository is 1.2 version, for all
opam admincommands exceptupgrade[#6385 @rjbou]
Internal Changes
- Replace every polymorphic uses of
List.memby a version that doesn't useRepr.equal[#6644 @kit-ty-kate] - Simplify the
src_ext/update-sources.shscript [#6701 @kit-ty-kate] - Homogeneise verbose command output between sandboxed and non sandboxed one [#6675 @rjbou]
- Add the
install-pin-depends,ignore-pin-depends,proceed-actionsandswitch-clean-upnamed questions (for opam developers use only) [#6611 @kit-ty-kate @rjbou] - Add logging for file reads and writes [#6679 @rjbou]
- Add cli version 2.5 [#6709 @kit-ty-kate]
- Add mechanism for the
OPAMAUTOANSWERenvironment variable (for opam developers use only) [#6709 @kit-ty-kate] - Complete upgrade mechanism to permit on the fly upgrade and write upgrade from repo and switch level [#6416 @rjbou]
- Enforce repository root check for every
opam admincommands [#6385 @rjbou]
Build changes
- Update the dependency constraint on
patchto now require its stable version [#6663 @kit-ty-kate] - Update the download-if-missing dependencies to their latest version (re.1.14.0, dune.3.20.2, menhir.20250903) [#6700 @kit-ty-kate]
- Remove
seqfrom the list of packages to download-if-missing as it is no longer a dependency ofre[#6700 @kit-ty-kate] ./configure --enable-staticis now supported on OpenBSD [#6705 @flumf]- Add missing constraints to avoid cmdliner 2.0.0 [#6707 @kit-ty-kate]
- Add patch library dependency to opam-state [#6614 @arozovyk]
- Update the bootstrap compiler's flexdll to 0.44 [#6592 @MisterDA]
- Update the
msvs-detectscript used on Windows during compiler bootstrap to 0.7.0 [#6592 @MisterDA]
Improve the release script
- The OpenBSD binary now a full static binary [#6705 @flumf @kit-ty-kate - fix #6241]
- The release archive (
opam-full-*.tar.gz) is now reproducible [#6706 @kit-ty-kate - fix #6619]
Testing and documentation
- Improve and extend the testsuite [#6673 #6450 #6638 #6627 #6640 #6671 #6690 #6688 #6691 #6659 #6659 #6675 #6715 #6614 #6719 #6611 #6679 #6153 #6516 #6672 #6741 #6729 #6505 #6422 #5492 #6385 @rjbou @kit-ty-kate @arozovyk @dra27]
- Improve and extend the benchmarks [#6681 @arozovyk]
- Improve and extend the test infrastructure [#6624 #6450 #6663 #6675 #6710 #6708 #6734 #6643 #6652 #6648 #6582 #6394 #6656 #6655 #6657 #6666 #6676 #6701 #6741 #6745 @kit-ty-kate @rjbou @arozovyk]
- Improve and extend the documentation [#6620 #6631 #6650 #6653 #6653 #6596 #6364 #6660 @kit-ty-kate @jmid @gahr @mbarbin @arozovyk]
API updates
opam-client
OpamAdminRepoUpgrade: addupgradefrom_versionthat have version "1.2" hardcoded [#6391 @rjbou]OpamClientConfig.opam_init: now takes an optionalauto_answerargument [#6709 @kit-ty-kate]
opam-repository
OpamLocal.rsync_*: change the return type fromOpamFilename.*tounit[#6658 @kit-ty-kate]OpamRepository.update: changed the'Changesreturn type to includePatch.operation listof changes. [#6614 @arozovyk]OpamRepositoryBackend.updatetype : include thePatch.t listinUpdate_patchvariant [#6614 @arozovyk]OpamRepositoryBackend.get_diff: includePatch.t listin the return type (along withfilename) [#6614 @arozovyk]
opam-state
OpamRepositoryState: addload_opams_from_diffto update package definitions based on file change operations (diff) [#6614 @arozovyk]OpamRepositoryState.get_repo_files: was added [#6679 @kit-ty-kate @rjbou]OpamSwitchState.files: was removed [#6662 @kit-ty-kate]OpamSwitchState.overlay_opam_file: was added [6679 @rjbou]
opam-format
OpamFile.OPAM.get_metadata_dir: was removed [#6679 @kit-ty-kate]OpamFile.OPAM.get_extra_files: no longer takes a namedrepos_rootsargument and instead takes a namedget_repo_filesargument. It also now returns the content of the files instead of their path [#6679 @kit-ty-kate @rjbou]OpamFormula: addequalfunction forOpamFormula.t[#6730 @rjbou]OpamFormula.equal_relop: was added [#6644 @kit-ty-kate]OpamTypesBase.{action,pkg_flag,simple_arg,arg,filter,command}_equal: were added [#6644 @kit-ty-kate]OpamVariable.variable_contents_equal: was added [#6644 @kit-ty-kate]
opam-core
OpamConsole.confirm: now takes an optionalnameargument (for opam developers use only) [#6709 @kit-ty-kate]OpamConsole.log: does not keep log messages before initialization if the code is ran through a library [#6487 @kit-ty-kate]OpamCoreConfig.auto_answer: field and arguments were added [#6709 @kit-ty-kate]OpamCoreConfig.{answer,anwser_is,answer_is_yes}: now take anamelabeled argument (for opam developers use only) [#6709 @kit-ty-kate]OpamCoreConfig.in_opam: was added [#6487 @kit-ty-kate]OpamCompat.Lazy: addmap_val[#6679 @rjbou]OpamCompat.List.fold_left_map: was added [#6442 @kit-ty-kate]OpamCompat.List.equal: was added [#6644 @kit-ty-kate]OpamCompat.Map.filter_map: was added [#6442 @kit-ty-kate]OpamCompat.MAP: was added [#6442 @kit-ty-kate]OpamCompat.Pair.equal: was added [#6644 @kit-ty-kate]OpamCompat.String.{starts_with,ends_with,for_all,fold_left}: were added [#6442 @kit-ty-kate]OpamFilename.create: deduplicate the directory separator character when the basename starts with one [#6703 @rjbou]OpamFilename: addparse_patchthat preprocesses and parses a patch file. [#6614 @arozovyk]OpamFilename.patch: use variants to make the input eitherFilename.tor reusePatch.diffsdirectly. Remove the?preprocessargument since the preprocess logic is moved to the `OpamFilename.parse_pa...
2.4.1
This is the release of opam 2.4.1.
Binaries and full archive are signed by the opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92).
Please see our blog post for the upgrade instructions.
Changes
- Fix
pin-dependsbeing ignored on simulated pins (e.g.opam install --deps-only) [#6612 @kit-ty-kate - fix #6610] - Improve and extend the testsuite [#6612 @kit-ty-kate]
2.4.0
This is the final release of opam 2.4.0.
Binaries and full archive are signed by the opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92).
Changes
- Fix a regression in
opam pin listwhich crashed when the source of the pinned package doesn't exist [#6598 @kit-ty-kate - fix #6600] - Improve and extend the testsuite [#6598 @kit-ty-kate]
To get the detailed list of changes compared to 2.3.0, you can look at the pre-releases' release notes:
- the release note for 2.4.0~alpha1
- the release note for 2.4.0~alpha2
- the release note for 2.4.0~beta1
- the release note for 2.4.0~rc1
For a more descriptive and simplified list of changes, please read our blog post.
Special thanks to the whole haematology department of the NHS Greater Glasgow for making this release – in the state that it is – possible. Fighting cancer is not easy but it is much more bearable with great people <3
2.4.0~rc1
This is the first release candidate of opam 2.4.0.
Binaries and full archive are signed by the opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92).
Please see our blog post for a highlight on the major changes and upgrade instructions.
Changes
- Fix
opam switch create <version>when all compilers of that version are flagged withavoid-version[#6571 @rjbou - fix #6563] - Opam update performance: No longer copy VCS directories when adding or updating local non-VCS repositories [#6575 @kit-ty-kate - fix #6560]
- Do not remove the generated patch file during updates when debug-mode is on [#6575 @kit-ty-kate]
Release script
- Switch the host of qemu-base-images from gitlab to github [#6510 @kit-ty-kate]
- Speedup the initial clone of qemu-base-images when missing [#6510 @kit-ty-kate]
- Update some of the platforms the prebuilt binaries are built on to Alpine 2.21, FreeBSD 14.3, OpenBSD 7.7 and NetBSD 10.1 [#6510 @kit-ty-kate]
Build changes
- Use coreutils'
sha512suminstead of perl'sshasumutility when using./configure --with-cygwin-setup[#6566 @kit-ty-kate - fix #6557] - Upgrade the download-if-missing dependencies to
dune 3.19.1,opam-file-format 2.2.0,spdx_licenses 1.4.0andpatch 3.0.0[#6580 @kit-ty-kate]
Testing and documentation
- Improve and extend the testsuite [#6473 #6571 @rjbou @kit-ty-kate]
- Improve and extend the test infrastructure [#6575 @kit-ty-kate]
API updates
opam-format
OpamLocal:fetch_repo_updateno longer copies vcs directories [#6575 @kit-ty-kate]
opam-core
OpamSystem: Addcopy_dir_except_vcs[#6575 @kit-ty-kate]OpamSystem: Addget_files_except_vcs[#6575 @kit-ty-kate]
2.4.0~beta1
This is the first beta release of opam 2.4.0.
Binaries and full archive are signed by the opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92).
Please see our blog post for a highlight on the major changes and upgrade instructions.
New option/command/subcommand are prefixed with ◈.
Changes
Install of dependencies --deps-only
Behaviour
- ◈ Change the behaviour of
--deps-only, where it no longer requires unicity of package version between the request and the installed packages. In other words, if you havepkg.1installed, installing dependencies ofpkg.2no longer removespkg.1. This also allows to install dependencies of conflicting packages when their dependencies are compliant. [#6520 @rjbou]
Fixes
Fixed some bugs in opam install --deps-only (and other commands simulating package pins, such as --depext-only) more visible in 2.4:
- When a package
pkgis already installed andopam install ./pkg --depsis called, if there is a conflict between the installedpkgdependencies and the definition of the localpkg, the conflict was not seen and the already installedpkgwas kept [#6530 @rjbou - fix #6529] - No longer fetch and write the sources when simulating packages that were already pinned [#6533 @rjbou - fix #6532]
- opam was triggering the reinstall of the package based on the already pinned packages instead of the expected newly simulated pinned packages [#6522 @rjbou - partial fix #6501]
- opam was using the opam description of the wrong package in some cases [#6544 @kit-ty-kate - fix #6535]
Reinstall
- Fix a regression where the internal
sourcesdirectory was removed unexpectedly on reinstall actions, making opam re-fetch the package [#6550 @rjbou - fix #6551]
Update
Fixed a couple of regressions in opam update:
- An unexpected stack overflow exception was raised when updating repositories with large files when opam is compiled with OCaml <
5.1[#6527 @kit-ty-kate - fix #6513] - Updating a repository where a line was added at the end of a file without final newline character was making the update fail [#6527 @kit-ty-kate - fix hannesm/patch#28]
Windows
- Improve the prebuilt Windows binaries by including Cygwin's
setup-x86_64.exein the binary itself as fallback, in casecygwin.comis inaccessible [#6538 @kit-ty-kate]
Build changes
- Bump the downloaded-if-missing
duneto3.19.0,cppoto1.8.0,ocamlgraphto2.2.0,uutfto1.0.4andpatchto3.0.0~beta1[#6527 @kit-ty-kate] - Allows
./configure --without-duneto build with OCaml5.4[#6527 @kit-ty-kate] - Add a
--with-cygwin-setupoption to theconfigurescript, only available on Windows and disabled by default, which includes the optionally givensetup-x86_64.exebinary inside the opam binary. If the option is given without a filename, the file with be fetched fromcygwin.com[#6526 @kit-ty-kate @dra27 @rjbou - fix #6498]
Testing and documentation
- Improve and extend the testsuite [#6530 #6533 #6539 #6544 #6550 #6520 @rjbou @kit-ty-kate]
- Improve and extend the test infrastructure [#6524 #6553 #6549 @kit-ty-kate @rjbou]
API updates
opam-client
2.4.0~alpha2
This is the second alpha release of opam 2.4.0.
Binaries and full archive are signed by the opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92).
Please see our blog post for a highlight on the major changes and upgrade instructions.
Changes
- Do not include compiler packages flagged with
avoid-version/deprecatedin the generated invariant when callingopam switch create [name] <version>[#6494 @kit-ty-kate] - Cygwin: Fallback to the existing
setup-x86_64.exeif its upgrade failed to be fetched [#6482 @kit-ty-kate - fix #6495, partial fix #6474] - Fix a memory leak happening when running large numbers of commands or opening large number of opam files [#6485 @hannesm - fix #6484]
- Remove handling of the
OPAMSTATSenvironment variable [#6485 @hannesm]
Regression fixes from 2.4.0~alpha1
- Fix a crash when updating a repository that is deleting or adding empty files [#6490 @kit-ty-kate]
- Fix an extreme performance issue (takes several hours) when applying a large repository update [#6490 @kit-ty-kate]
- Fix a crash when updating a git repository that moved a file to a new directory [#6490 @kit-ty-kate]
Build changes
- Update the requirement for the
patchlibrary to3.0.0~alpha2[#6490 @kit-ty-kate] - Upgrade the downloaded-if-missing
patchlibrary to3.0.0~alpha2[#6490 @kit-ty-kate]
Testing and documentation
- Improve and extend the testsuite [#6490 #6494 @rjbou @kit-ty-kate]
- Improve and extend the test infrastructure [#6277 @rjbou @kit-ty-kate]
API updates
opam-core
OpamArg.environment_variable: makeSTATSas removed from cli 2.3 [#6485 @rjbou]OpamClientConfig: removeSTATSvariant and relatedprint_statsfield in config record [#6485 @hannesm]
opam-format
opam-core
OpamSystem: removeprint_statsfunction [#6485 @hannesm]OpamSystem: add thermdir_cleanupfunction [#6490 @kit-ty-kate]OpamSystem.dir_is_empty: Speedup and change its type to handle unreachable directories better [#6490 @kit-ty-kate]OpamSystem.internal_patch: remove parent directories when all of their content has been moved somewhere else [#6490 @kit-ty-kate]OpamSystem.internal_patch: fix moving files to new directories when receiving a git diff [#6490 @kit-ty-kate]
2.4.0~alpha1
This is the first alpha release of opam 2.4.0.
Binaries and full archive are signed by the opam dev team (fingerprint 92C5 26AE 50DF 3947 0EB2 911B ED4C F1CA 67CB AA92).
Please see our blog post for a highlight on the major changes and upgrade instructions.
Possibly scripts breaking changes are prefixed with ✘.
New option/command/subcommand are prefixed with ◈.
Major changes
Init
- Remove
ocaml-systemfrom the list of default compilers chosen atopam inittime [#6307 @kit-ty-kate - fix #3509]
Patch: update & install
- Patches are now applied using the
patchOCaml library instead of GNU Patch [#5892 @kit-ty-kate - fix #6019 #6052 #3782 ocaml/setup-ocaml#933]- Context diffs are not supported anymore, only Unified diffs are (including its git extensions)
- Stop support of file permission changes via git extension to the unified diff specification
- GNU
patchand thediffcommand are no longer runtime dependencies
Depexts
- Support providing external dependencies with Nix by adding support for stateless depexts systems [#5982 @RyanGibb @rjbou @kit-ty-kate - fix #5124]
Show
opam shownow displays the version number of packages flagged withavoid-version/deprecatedgray [#6358 @kit-ty-kate - fix #6354]
Install
- Fix
opam install <local_dir>not updating or storing pinned packages' metadata [#6209 @kit-ty-kate - fix #5567] - Fix
opam install --deps-only/--show-action <local_dir>not updating (without storing) pinned packages' metadata [#6209 @kit-ty-kate - fix #5567]
Pin
- ✘ Fail when trying to pin a package whose definition could not be found instead of forcing interactive edition (e.g. this could happen when making a typo in the package name of a pin-depends) [#6319 @kit-ty-kate - fix #6322]
- ◈
opam pin/opam pin listnow displays the current revision of a pinned repository in a new column [#6274 @desumn - fix #5533]
Admin
- ◈ Add
opam admin compare-versionsto compare package versions for sanity checks [#6197 @mbarbin] - ◈ Add
opam admin migrate-extrafileswhich moves allextra-filesof an existing opam repository intoextra-sources[#5960 @hannesm @rjbou @kit-ty-kate] - ✘ The
-i/--ignore-test-docargument has been removed fromopam admin check[#6335 @kit-ty-kate] - ✘
opam admin checknow setswith-testandwith-doctofalseinstead oftrue[#6335 @kit-ty-kate]
Miscellaneous changes
Global CLI
Install
- Remove the build directories of pinned packages after successful builds [#6436 @kit-ty-kate]
UI
- Improve the messages when a package is not up-to-date on opam upgrade [#6272 @kit-ty-kate - fix #6270]
- Use a non-underline uppercase character to denote the default when asking a question [#6289 @hannesm @kit-ty-kate - fix #6288]
- Do not pre-write the answer to questions with the default anwser [#6376 @kit-ty-kate]
- Display Windows
NTSTATUSexit codes in hex [#6401 @dra27 @MisterDA]
Switch
- Fix
opam switch remove <dir>failure when it is a linked switch [#6276 @btjorge - fix #6275] - Fix
opam switch list-availablewhen given several arguments [#6318 @kit-ty-kate] - Correctly handle
pkg.versionpattern inopam switch list-available[#6186 @arozovyk - fix #6152]
Upgrade
- Do not show the not-up-to-date message with packages tagged with
avoid-version/deprecated[#6273 @kit-ty-kate - fix #6271] - Fix a regression on
opam upgrade <package>upgrading unrelated packages [#6373 @AltGr] - Fix a regression on
opam upgrade --all <uninstalled-pkg>not upgrading the whole switch [#6373 @kit-ty-kate]
Source
Lint
- ◈ Add W74 to
opam lintto detectpin-dependspackages that are neither present in thedependsnodepoptsfield [#6317 @rjbou - fix #5795] - ◈ Add E63 to
opam lintto check for availability guard in case an opam file contains asubpathfield [#6438 @rjbou @kit-ty-kate]
Lock
- Fix
pin-dependsforwith-*dependencies when creating a lock file [#5471 @rjbou - fix #5428] - ◈ Add
opam lock --keep-localto keep local pins url inpin-dependsfield [#6411 @rjbou - fix #4897]
Env
- Add the
OPAMSOLVERTOLERANCEenvironment variable to allow users to fix solver timeouts for good [#5510 @kit-ty-kate - fix #3230] - Don't write empty environment update segments to
variables.sh(FOO += ""no longer addsFOO='':"$FOO"; export FOO;) [#6198 @dra27]
Sandbox
- Respect the
DUNE_CACHE_ROOTenvironment variable if it exists [#6326 @smorimoto] - Fix sandboxing support in NixOS [#6333 @kit-ty-kate]
Software Heritage
- Rework Software heritage fallback to have a more correct archive retrieval and more fine grained error handling [#6036 @rjbou - fix #5721]
- Fix Software Heritage liveness check [#6036 @rjbou - fix #5721]
- Update the Software Heritage API requests [#6036 @rjbou]
- Remove
wgetsupport for Software Heritage fallback [#6036 @rjbou - fix #5721]
Repository
- Fix
curldownload command selection when loaded from global config file [#6302 @rjbou] - Check that the repositories given to
opam repository removeactually exist [#5014 @kit-ty-kate - fixes #5012] - ✘ Symlinks in repositories are no longer supported [#5892 @kit-ty-kate]
- Fix
subpathhandling in opam files defining a local archive [#6439 @rjbou]
Init
- Fix the detection of
ZDOTDIRwhen usingzsh[#6299 @acasta-yhliu - fix #6281]
External dependencies (depexts)
- ◈ Add
apt-rpm/ALTLinux family support for depexts [#6207 @RiderALT] - Fix the detection of installed external packages on OpenBSD to not just consider manually installed packages [#6362 @semarie]
- Speedup the detection of available system packages with
pacmanandbrew[#6324 @kit-ty-kate] - Change probing tool for SUSE-based distributions from
zyppertorpm[#6464 @kit-ty-kate] - Disable the detection of available system packages on SUSE-based distributions [#6464 @kit-ty-kate]
- Add support for stateless depexts systems, by keeping synchronised already installed systems dependencies with switch state [#5982 @RyanGibb @rjbou @kit-ty-kate]
Pin
- Don't ask confirmation when pinning an unknown package (absent from repositories) [#6309 @kit-ty-kate @rjbou - fix #3199]
- Do not ask to install
pin-dependstwice [#6375 @kit-ty-kate - fix #6374] - Ensure the right version (the pinned one) of packages are used when simulating pinning [#6256 @rjbou @kit-ty-kate - fix #6248 #6379]
- No longer double pin of packages located in ./opam/opam [#6343 @kit-ty-kate - fix #6342]
Build changes
- Simplify the making of stripped binaries by introducing the
make opam-strippedtarget [#6208 @kit-ty-kate] - Fix compilation on macOS with OCaml 5.3 by bumping the downloaded-if-missing
mccsto 1.1+19 [#6192 @kit-ty-kate] - Upgrade the downloaded-if-missing
opam-file-formatto 2.2.0~alpha1,spdx_licensesto 1.3.0 andduneto 3.16.1 [#6321 #6370 #6192 @kit-ty-kate - fix #6369] menhiris now part of the transitive dependency of opam (viaopam-file-format) [#6321 @kit-ty-kate]
Admin
- Fix
opam admin checkin the presence of thewith-dev-setupvariable [#6331 @kit-ty-kate - fix #6329]
Download
- Add
fetchon DragonFlyBSD andftpon NetBSD to the list of download tools to use, if available [#6304 #6305 @kit-ty-kate] - Prefer
curlover any other download tools on every systems, if available [#6305 @kit-ty-kate] - Avoid issues when using
wget2as download-tool where the requested url might return an HTML page instead of the expected content [#6303 @kit-ty-kate]
Internal
- Allow running some opam commands on machines with limited amount of memory by running
Gc.compactwhile the main process is waiting for the children processes [#5396 @kkeundotnet] - Use a C stub to call the
unamefunction from the C standard library instead of calling theunamePOSIX command [#6217 @kit-ty-kate] - Only download Cygwin's
setup.exewhen the command is actually going to be displayed or used [#6467 @kit-ty-kate]
Testing and documentation
- Improve and extend the tests [#5892 #6276 #6331 #6343 #6378 #6273 #6380 #6373 #6307 #6256 #6412 #6438 #6439 #6436 #6166 #6209 #6198 #6319 #6467 #5643 #5982 @rjbou @kit-ty-kate @btjorge]
- Improve and extend the benchmarks [#6212 #6443 @kit-ty-kate]
- Improve and extend the test infrastructure [#5349 #6296 #6274 #6313 #6363 #6192 #5663 #6383 #6444 #6447 #6471 #6469 #5982 @kit-ty-kate @rjbou @RyanGibb]
- Improve and extend the documentation [#6226 #6231 #6252 #6150 #6267 #6251 #6306 #6315 #5659 #6320 #6338 #6361 #6358 #5627 #6372 #6470 @kit-ty-kate @rjbou @RyanGibb @gridbugs @fccm2 @shym @hannesm @tobil4sk @juergenhoetzel @MisterDA]
API updates
opam-client
OpamAction.prepare_package_build: now returnsexn optioninstead ofexn option OpamProcess.joband no longer calls the system GNU Patch [#5892 @kit-ty-kate]OpamArg.InvalidCLI: export exception [#6150 @rjbou]OpamArg.hash_kinds: was added [#5960 @kit-ty-kate]OpamArg: exportrequire_checksumsandno_checksums, that are shared withbuild_options[#5563 @rjbou]OpamAuxCommands.{simulate_autopin,autopin ~simulate:true}: now updates thereinstallfield of the returnedswitch_stateif necessary [#6209 @kit-ty-kate]OpamLockCommand.lock_opam: add~keep_localargument to add local pins to pin-depends (and not resolve them) [#6411 @rjbou]OpamLockCommand.lock_opam: make the?only_directargument non-optional [#6411 @kit-ty-kate]- `OpamRepositoryCommand.switc...