diff --git a/data/changelog/merlin/2020-03-02-merlin-3.3.4~4.10preview1.md b/data/changelog/merlin/2020-03-02-merlin-3.3.4~4.10preview1.md deleted file mode 100644 index 470516f573..0000000000 --- a/data/changelog/merlin/2020-03-02-merlin-3.3.4~4.10preview1.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: Merlin 3.3.4~4.10preview1 -tags: [merlin, platform] -changelog: | - Oops, we went looking but didn't find the changelog for this release 🙈 ---- - -This is a preview release that adds support for OCaml 4.10. -Short-path is disabled. Other versions of OCaml are not supported. diff --git a/data/changelog/ocaml-lsp/2022-07-28-ocaml-lsp-1.13.2~5.0preview.md b/data/changelog/ocaml-lsp/2022-07-28-ocaml-lsp-1.13.2~5.0preview.md deleted file mode 100644 index a5c6192261..0000000000 --- a/data/changelog/ocaml-lsp/2022-07-28-ocaml-lsp-1.13.2~5.0preview.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Ocaml-lsp 1.13.2~5.0preview -tags: [ocaml-lsp, platform] -changelog: | - Oops, we went looking but didn't find the changelog for this release 🙈 ---- diff --git a/data/changelog/ocaml-lsp/2022-12-16-ocaml-lsp-1.15.0~5.0preview1.md b/data/changelog/ocaml-lsp/2022-12-16-ocaml-lsp-1.15.0~5.0preview1.md deleted file mode 100644 index c7679035d2..0000000000 --- a/data/changelog/ocaml-lsp/2022-12-16-ocaml-lsp-1.15.0~5.0preview1.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Ocaml-lsp 1.15.0~5.0preview1 -tags: [ocaml-lsp, platform] -changelog: | - Oops, we went looking but didn't find the changelog for this release 🙈 ---- diff --git a/data/changelog/ocaml/2022-10-12-ocaml-5.0.beta1.md b/data/changelog/ocaml/2022-10-12-ocaml-5.0.beta1.md deleted file mode 100644 index fce229d48e..0000000000 --- a/data/changelog/ocaml/2022-10-12-ocaml-5.0.beta1.md +++ /dev/null @@ -1,185 +0,0 @@ ---- -title: OCaml 5.0.0 - First Beta -description: First beta release of OCaml 5.0.0 -tags: [ocaml] -changelog: | - ## Changes Since Last Alpha Release - - ### `Stdlib` Changes - - + [#11309](https://github.com/ocaml/ocaml/issues/11309), [#11424](https://github.com/ocaml/ocaml/issues/11424), [#11427](https://github.com/ocaml/ocaml/issues/11427), +[#11545](https://github.com/ocaml/ocaml/issues/11545): Add Domain.recommended_domain_count. - (Christiano Haesbaert, Konstantin Belousov, review by David Allsopp, - KC Sivaramakrishnan, Gabriel Scherer, Nicolas Ojeda Bar) - - - [#11423](https://github.com/ocaml/ocaml/issues/11423): Move the effect exceptions to the Effect module - (KC Sivaramakrishnan, Xavier Leroy, Florian Angeletti, review by - Florian Angeletti, Xavier Leroy, and KC Sivaramakrishnan) - - - [#11593](https://github.com/ocaml/ocaml/issues/11593): Remove Domain.at_each_spawn - (Florian Angeletti, review by Guillaume Munch-Maccagnoni - and KC Sivaramakrishnan) - - ### Bug Fixes - - - [#11303](https://github.com/ocaml/ocaml/issues/11303): Ensure that GC is not invoked from bounds check failures - (Stephen Dolan, review by Sadiq Jaffer and Xavier Leroy) - - - [#5299](https://github.com/ocaml/ocaml/issues/5299), [#4787](https://github.com/ocaml/ocaml/issues/4787), [#11138](https://github.com/ocaml/ocaml/issues/11138), [#11272](https://github.com/ocaml/ocaml/issues/11272), [#11506](https://github.com/ocaml/ocaml/issues/11506): To help debugging, `Caml_state` - now dynamically checks that the domain lock is held and fails - otherwise (with a fatal error at most entry points of the C API, or - systematically in debug mode). A new variable `Caml_state_opt` is - introduced and is `NULL` when the domain lock is not held. This - allows to test from C code if the current thread holds its domain lock. - (Guillaume Munch-Maccagnoni, review by Florian Angeletti, Damien - Doligez, Sadiq Jaffer, Xavier Leroy, and Gabriel Scherer) - - - [#11223](https://github.com/ocaml/ocaml/issues/11223): The serialisation format of custom blocks changed in 4.08, - but the deserialiser would still support the pre-4.08 format. OCaml - 5.x removed support for this old format and provided a clear error message - in this case. - (Hugo Heuzard, review by Gabriel Scherer) - - - [#11504](https://github.com/ocaml/ocaml/issues/11504), [#11522](https://github.com/ocaml/ocaml/issues/11522): Use static allocation for `caml_make_float_vect` in - no-flat-float-array mode, it's more efficient and avoids a race condition - (Xavier Leroy, report by Guillaume Munch-Maccagnoni, review by David Allsopp) - - - [#11461](https://github.com/ocaml/ocaml/issues/11461), [#11466](https://github.com/ocaml/ocaml/issues/11466): Fix `gethostbyaddr` for IPv6 arguments and make it domain-safe - (Olivier Nicole, NicolĂĄs Ojeda BĂ€r, David Allsopp and Xavier Leroy, - review by the same) - - - [#11479](https://github.com/ocaml/ocaml/issues/11479): Make Unix.symlink domain-safe on Windows - (Olivier Nicole, review by Xavier Leroy and David Allsopp) - - - [#11294](https://github.com/ocaml/ocaml/issues/11294): Switch minimum required autoconf to 2.71. - (David Allsopp, review by Xavier Leroy) - - - [#11370](https://github.com/ocaml/ocaml/issues/11370), [#11373](https://github.com/ocaml/ocaml/issues/11373): Don't pass CFLAGS to flexlink during configure. - (David Allsopp, report by William Hu, review by Xavier Leroy and - SĂ©bastien Hinderer) - - - [#11487](https://github.com/ocaml/ocaml/issues/11487): Thwart FMA test optimization during configure - (William Hu, review by David Allsopp and SĂ©bastien Hinderer) - - - [#11468](https://github.com/ocaml/ocaml/issues/11468): Fix regression from [#10186](https://github.com/ocaml/ocaml/issues/10186) (OCaml 4.13) detecting IPv6 on Windows for - mingw-w64 i686 port. - (David Allsopp, review by Xavier Leroy and SĂ©bastien Hinderer) - - - [#11482](https://github.com/ocaml/ocaml/issues/11482), [#11542](https://github.com/ocaml/ocaml/issues/11542): Fix random crash in large closure allocation - (Damien Doligez, report by Thierry Martinez and Vincent Laviron, review by - Xavier Leroy) - - - [#11508](https://github.com/ocaml/ocaml/issues/11508), [#11509](https://github.com/ocaml/ocaml/issues/11509): make Bytes.escaped domain-safe - (Christiano Haesbaert and Gabriel Scherer, - review by Xavier Leroy, - report by Jan Midtgaard and Tom Kelly) - - - [#11516](https://github.com/ocaml/ocaml/issues/11516), [#11524](https://github.com/ocaml/ocaml/issues/11524): Fix the `deprecated_mutable` attribute. - (Chris Casinghino, review by NicolĂĄs Ojeda BĂ€r and Florian Angeletti) - - - [#11576](https://github.com/ocaml/ocaml/issues/11576): Fix bug in Bigarray.Genarray.init in the the case of zero-dimensional - arrays. - (NicolĂĄs Ojeda BĂ€r, Jeremy Yallop, report by Masayuki Takeda, review by Jeremy - Yallop and Florian Angeletti) - - - [#11587](https://github.com/ocaml/ocaml/issues/11587): Prevent integer comparison from being used on pointers - (Vincent Laviron, review by Gabriel Scherer) - - ### Documentation Changes - - - [#11093](https://github.com/ocaml/ocaml/issues/11093): Add tutorials on parallelism features and the relaxed memory model - (KC Sivaramakrishnan, review by Damien Doligez, Anil Madhavapeddy, Gabriel - Scherer, Thomas Leonard, Tom Ridge, Xavier Leroy, Luc Maranget, Fabrice - Buoro, Olivier Nicole, Guillaume Munch-Maccagnoni, Jacques-Henri Jourdan) ---- - -The release of OCaml 5.0.0 is drawing near. -The standard library has been stabilized and many opam packages already -work with this release. -After two alpha releases, we have released the first beta version to help you update your software and libraries ahead of the release (see below for the installation instructions). - -If you find any bugs, please report them [on GitHub issues](https://github.com/ocaml/ocaml/issues). - -Compared to the last alpha release, this beta contains many small, internal -runtime fixes (in particular in the `systhreads` library). - -At the user level, the interface of the Domain and Effect module has been tweaked to be (hopefully) more forward-compatible: - -- Exceptions related to effects are now defined in the EffecƧ module. -- The value `Domain.recommended_domain_count` is no longer a constant and the function `Domain.at_each_spawn` has been removed. - -With those changes, the standard library should be stable now. - -If you are interested in the ongoing list of bug fixes, the -updated change log for OCaml 5.0.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.0/Changes). - -You can also follow the state of the opam ecosystem on [this `opam-repository` issues](https://github.com/ocaml/opam-repository/issues/21526), and at [check.ocamllabs.io](http://check.ocamllabs.io/) - -A short summary of the changes since the last alpha release is also available -below. - - -Installation Instructions -------------------------- - -The base compiler can be installed as an opam switch with the following commands -on opam 2.1: -```bash -opam update -opam switch create 5.0.0~beta1 -``` - -For previous versions of opam, the switch creation command line is slightly more verbose: -```bash -opam update -opam switch create 5.0.0~beta1 --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git -``` - -It might also be interesting to check the new support for parallelism by installing -the `domainslib` library with - -```bash -opam install domainslib -``` - -The source code for the beta release is also available at these addresses: - -* [https://github.com/ocaml/ocaml/archive/5.0.0-beta1.tar.gz](https://github.com/ocaml/ocaml/archive/5.0.0-beta1.tar.gz) -* [https://caml.inria.fr/pub/distrib/ocaml-5.0/ocaml-5.0.0~beta1.tar.gz](https://caml.inria.fr/pub/distrib/ocaml-5.0/ocaml-5.0.0~beta1.tar.gz) - -## Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: -```bash -opam update -opam switch create ocaml-variants.5.0.0~beta1+options -``` -where `option_list` is a comma-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: -```bash -opam switch create 5.0.0~beta1+flambda+nffa ocaml-variants.5.0.0~beta1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` -The command line above is slightly more complicated for opam versions before 2.1: -```bash -opam update -opam switch create --packages=ocaml-variants.5.0.0~beta1+options, --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git -``` - -In both cases, all available options can be listed with `opam search ocaml-option`. - -## Optional opam Alpha Repository - -During the beta release, if your dependencies are not yet compatible with OCaml 5.0.0, -you might want to check the alpha opam repository: [https://github.com/kit-ty-kate/opam-alpha-repository](https://github.com/kit-ty-kate/opam-alpha-repository). - -Which can be installed with -```bash -opam repo add alpha git+https://github.com/kit-ty-kate/opam-alpha-repository.git -``` -You can check that the alpha repository has been correctly installed with -```bash -$ opam repo -<><> Repository configuration for switch 5.0.0~beta1 <><><><><><><><><><><><><> - 1 alpha git+https://github.com/kit-ty-kate/opam-alpha-repository.git - 2 default https://opam.ocaml.org -``` -This alpha repository contains various fixes that are in the process of being upstreamed, -but it should be less and less required with the progress of the beta release. diff --git a/data/changelog/ocaml/2022-11-28-ocaml-5.0.beta2.md b/data/changelog/ocaml/2022-11-28-ocaml-5.0.beta2.md deleted file mode 100644 index 2cb6589c40..0000000000 --- a/data/changelog/ocaml/2022-11-28-ocaml-5.0.beta2.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: OCaml 5.0.0 - Second Beta -description: Second beta release of OCaml 5.0.0 -tags: [ocaml] -changelog: | - ## Changes since the first beta - - ### Configuration changes - - - [#11097](https://github.com/ocaml/ocaml/issues/11097): Build native-code - compilers on NetBSD/aarch64 (Kate Deplaix, review by Anil Madhavapeddy) - - ### Bug fixes - - - [#10875](https://github.com/ocaml/ocaml/issues/10875), - +[#11731](https://github.com/ocaml/ocaml/issues/11731): Add option to allocate - fiber stacks and sigaltstacks with mmap(MAP_STACK) instead of malloc. This is - exposed via a configure –enable-mmap-map-stack option, and is enabled by default - on OpenBSD where it is mandatory. (Anil Madhavapeddy, review by Gabriel Scherer, - Tom Kelly, Michael Hendricks and KC Sivaramakrishnan). - - [#11652](https://github.com/ocaml/ocaml/issues/11652): Fix benign off-by-one - error in Windows implementation of caml_mem_map. (David Allsopp, review by - Gabriel Scherer) - - [#11669](https://github.com/ocaml/ocaml/issues/11669), - [#11704](https://github.com/ocaml/ocaml/issues/11704): Fix construction of - Effect.Unhandled exceptions in the bytecode interpreter. (David Allsopp and - Xavier Leroy, report by Samuel Hym, review by Xavier Leroy and Gabriel Scherer) - - [#11184](https://github.com/ocaml/ocaml/issues/11184), - +[#11670](https://github.com/ocaml/ocaml/issues/11670): Stop calling ranlib on - created / installed libraries (SĂ©bastien Hinderer and Xavier Leroy, review by - the same) - - [#11194](https://github.com/ocaml/ocaml/issues/11194), - [#11609](https://github.com/ocaml/ocaml/issues/11609): Fix inconsistent type - variable names in “unbound type var” messages (Ulysse GĂ©rard and Florian - Angeletti, review Florian Angeletti and Gabriel Scherer) - - [#11622](https://github.com/ocaml/ocaml/issues/11622): Prevent stack overflow - when printing a constructor or record mismatch error involving recursive types. - (Florian Angeletti, review by Gabriel Scherer) - - [#11662](https://github.com/ocaml/ocaml/issues/11662), - [#11673](https://github.com/ocaml/ocaml/issues/11673): fix a memory leak when - using Dynlink, the bug was only present in development version of OCaml 5. - (Stephen Dolan, report by Andre Maroneze, review by Gabriel Scherer) - - [#11732](https://github.com/ocaml/ocaml/issues/11732): Ensure that types from - packed modules are always generalised (Stephen Dolan and Leo White, review by - Jacques Garrigue) - - [#11737](https://github.com/ocaml/ocaml/issues/11737): Fix segfault condition - in Unix.stat under Windows in the presence of multiple threads. (Marc Lasson, - NicolĂĄs Ojeda BĂ€r, review by Gabriel Scherer and David Allsopp) - - ### Documentation - - - [#11193](https://github.com/ocaml/ocaml/issues/11193), - [#11227](https://github.com/ocaml/ocaml/issues/11227): documentation on - concurrency safety for mutable data types and states in the standard library. A - unsynchronized_access alert have been added for functions that require user - synchronizations on concurrent access. The new alert is diabled by default. - (Florian Angeletti, review by François Pottier and KC Sivaramakrishnan ) - - [#11526](https://github.com/ocaml/ocaml/issues/11526), add a unstable alert to - the Domain and Effect modules. The new alert is disabled by default. (Florian - Angeletti, review by NicolĂĄs Ojeda BĂ€r, Daniel BĂŒnzli, and Kate Deplaix) - - [#11640](https://github.com/ocaml/ocaml/issues/11640): Add Flambda - commonly-used options to the ocamlopt manpage (Amandine Nangah, review by David - Allsopp, Florian Angeletti, SĂ©bastien Hinderer, and Vincent Laviron) ---- - -The release of OCaml 5.0.0 is drawing close. - -In order to test the most recent bug fixes and to help you update your software -and libraries ahead of the release, we have released a second beta version of -OCaml 5.0.0, (see below for the installation instructions). - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -Compared to the first beta release, this second beta contains many small -internal standard library fixes, one configuration fix and many small bug fixes. - -We also have few updates of the documentation, which introduce two new alerts: -one for the unstable modules Domain and Effect, and another for functions doing -unsynchronized_access to mutable state in the standard library. Those two alerts -are disabled by default, but are available for interested users. - -The first release candidate for OCaml 5.0.0 is expected to follow closely this -second beta release. - -If you are interested in the ongoing list of bug fixes, the updated change log -for OCaml 5.0.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.0/Changes). - -You can also follow the state of the opam ecosystem on [http://check.ocamllabs.io/](http://check.ocamllabs.io/). - -A short summary of the changes since the first beta release is also available below. - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands -on opam 2.1: -```bash -opam update -opam switch create 5.0.0~beta2 -``` - -For previous versions of opam, the switch creation command line is slightly more verbose: -```bash -opam update -opam switch create 5.0.0~beta2 --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git -``` - -It might also be interesting to check the new support for parallelism by installing -the `domainslib` library with -```bash -opam install domainslib -``` - -The source code for the beta release is also available at these addresses: - -* [https://github.com/ocaml/ocaml/archive/5.0.0-beta2.tar.gz](https://github.com/ocaml/ocaml/archive/5.0.0-beta2.tar.gz) -* [https://caml.inria.fr/pub/distrib/ocaml-5.0/ocaml-5.0.0~beta2.tar.gz](https://caml.inria.fr/pub/distrib/ocaml-5.0/ocaml-5.0.0~beta2.tar.gz) - -## Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: -```bash -opam update -opam switch create ocaml-variants.5.0.0~beta2+options -``` -where `option_list` is a comma-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: -```bash -opam switch create 5.0.0~beta2+flambda+nffa ocaml-variants.5.0.0~beta2+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` -The command line above is slightly more complicated for opam versions before 2.1: -```bash -opam update -opam switch create --packages=ocaml-variants.5.0.0~beta2+options, --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git -``` - -In both cases, all available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2022-12-06-ocaml-5.0.rc1.md b/data/changelog/ocaml/2022-12-06-ocaml-5.0.rc1.md deleted file mode 100644 index b2751c4371..0000000000 --- a/data/changelog/ocaml/2022-12-06-ocaml-5.0.rc1.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -title: OCaml 5.0.0 - First release candidate -description: First Release Candidate of OCaml 5.0.0 -tags: [ocaml] -changelog: | - ## Changes Since the Second Beta Release - - ### Bug Fixes - - - [#11776](https://github.com/ocaml/ocaml/issues/11776): Extend environment with functor parameters in `strengthen_lazy`. - (Chris Casinghino and Luke Maurer, review by Gabriel Scherer) - - - [#11533](https://github.com/ocaml/ocaml/issues/11533), [#11534](https://github.com/ocaml/ocaml/issues/11534): follow synonyms again in #show_module_type - (this had stopped working in 4.14.0) - (Gabriel Scherer, review by Jacques Garrigue, report by Yaron Minsky) ---- - - -The release of OCaml version 5.0.0 is imminent. As a final step before the -release, we are publishing a release candidate that you can test while waiting -for the release in the upcoming weeks. - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -Compared to the second beta release, this release contains one toplevel bug fix -and a minor type system fix. - -If you are interested by the bug fixes beyond the new Multicore runtime, the -full change log for OCaml 5.0.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.0/Changes) - -A short summary of the changes since the second beta release is also available below. - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands on opam 2.1: -```bash -opam update -opam switch create 5.0.0~rc1 -``` -For previous version of opam, the switch creation command line is slightly more verbose: -```bash -opam update -opam switch create 5.0.0~rc1 --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git -``` -It might be also interesting to check the new support for parallelism by installing the `domainslib` library with -```bash -opam install domainslib -``` -The source code for the release candidate is also directly available on: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.0.0-rc1.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.0/ocaml-5.0.0~rc1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: -```bash -opam update -opam switch create ocaml-variants.5.0.0~rc1+options -``` -where `` is a comma-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: -```bash -opam switch create 5.0.0~rc1+flambda+nffa ocaml-variants.5.0.0~rc1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -The command line above is slightly more complicated for opam versions before 2.1: - -```bash -opam update -opam switch create --packages=ocaml-variants.5.0.0~rc1+options, --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git -``` -In both cases, all available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2022-12-08-ocaml-4.14.1.rc1.md b/data/changelog/ocaml/2022-12-08-ocaml-4.14.1.rc1.md deleted file mode 100644 index 83a85be303..0000000000 --- a/data/changelog/ocaml/2022-12-08-ocaml-4.14.1.rc1.md +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: OCaml 4.14.1 - Release candidate -description: Release Candidate of OCaml 4.14.1 -tags: [ocaml] -changelog: | - ## Changes Since OCaml 4.14.0 - - - ### Compiler User-Interface and Warnings: - - - [#11184](https://github.com/ocaml/ocaml/issues/11184), [#11670](https://github.com/ocaml/ocaml/issues/11670): Stop calling `ranlib` on created / installed libraries - (SĂ©bastien Hinderer and Xavier Leroy, review by the same) - - ### Build System: - - - [#11370](https://github.com/ocaml/ocaml/issues/11370), [#11373](https://github.com/ocaml/ocaml/issues/11373): Don't pass CFLAGS to flexlink during configure. - (David Allsopp, report by William Hu, review by Xavier Leroy and - SĂ©bastien Hinderer) - - - [#11487](https://github.com/ocaml/ocaml/issues/11487): Thwart FMA test optimisation during configure - (William Hu, review by David Allsopp and SĂ©bastien Hinderer) - - ### Bug Fixes: - - - [#10768](https://github.com/ocaml/ocaml/issues/10768), [#11340](https://github.com/ocaml/ocaml/issues/11340): Fix typechecking regression when combining first class - modules and GADTs. - (Jacques Garrigue, report by François ThirĂ©, review by Matthew Ryan) - - - [#11204](https://github.com/ocaml/ocaml/issues/11204): Fix regression introduced in 4.14.0 that would trigger Warning 17 when - calling virtual methods introduced by constraining the self type from within - the class definition. - (NicolĂĄs Ojeda BĂ€r, review by Leo White) - - - [#11263](https://github.com/ocaml/ocaml/issues/11263), [#11267](https://github.com/ocaml/ocaml/issues/11267): caml/{memory,misc}.h: check whether `_MSC_VER` is defined - before using it to ensure that the headers can always be used in code which - turns on `-Wundef` (or equivalent). - (David Allsopp and NicolĂĄs Ojeda BĂ€r, review by NicolĂĄs Ojeda BĂ€r and - SĂ©bastien Hinderer) - - - [#11314](https://github.com/ocaml/ocaml/issues/11314), [#11416](https://github.com/ocaml/ocaml/issues/11416): fix non-informative error message for module inclusion - (Florian Angeletti, report by Thierry Martinez, review by Gabriel Scherer) - - - [#11358](https://github.com/ocaml/ocaml/issues/11358), [#11379](https://github.com/ocaml/ocaml/issues/11379): Refactor the initialisation of bytecode threading, - This avoids a "dangling pointer" warning of GCC 12.1. - (Xavier Leroy, report by ArmaĂ«l GuĂ©neau, review by Gabriel Scherer) - - - [#11387](https://github.com/ocaml/ocaml/issues/11387), module type with constraints no longer crash the compiler in presence - of both shadowing warnings and the `-bin-annot` compiler flag. - (Florian Angeletti, report by Christophe Raffalli, review by Gabriel Scherer) - - - [#11392](https://github.com/ocaml/ocaml/issues/11392), [#11392](https://github.com/ocaml/ocaml/issues/11392): assertion failure with -rectypes and external definitions - (Gabriel Scherer, review by Florian Angeletti, report by Dmitrii Kosarev) - - - [#11417](https://github.com/ocaml/ocaml/issues/11417): Fix regression allowing virtual methods in non-virtual classes. - (Leo White, review by Florian Angeletti) - - - [#11468](https://github.com/ocaml/ocaml/issues/11468): Fix regression from [#10186](https://github.com/ocaml/ocaml/issues/10186) (OCaml 4.13) detecting IPv6 on Windows for - mingw-w64 i686 port. - (David Allsopp, review by Xavier Leroy and SĂ©bastien Hinderer) - - - [#11489](https://github.com/ocaml/ocaml/issues/11489), [#11496](https://github.com/ocaml/ocaml/issues/11496): More prudent deallocation of alternate signal stack - (Xavier Leroy, report by @rajdakin, review by Florian Angeletti) - - - [#11516](https://github.com/ocaml/ocaml/issues/11516), [#11524](https://github.com/ocaml/ocaml/issues/11524): Fix the `deprecated_mutable` attribute. - (Chris Casinghino, review by NicolĂĄs Ojeda BĂ€r and Florian Angeletti) - - - [#11194](https://github.com/ocaml/ocaml/issues/11194), [#11609](https://github.com/ocaml/ocaml/issues/11609): Fix inconsistent type variable names in "unbound type var" - messages - (Ulysse GĂ©rard and Florian Angeletti, review Florian Angeletti and - Gabriel Scherer) - - - [#11622](https://github.com/ocaml/ocaml/issues/11622): Prevent stack overflow when printing a constructor or record - mismatch error involving recursive types. - (Florian Angeletti, review by Gabriel Scherer) - - - [#11732](https://github.com/ocaml/ocaml/issues/11732): Ensure that types from packed modules are always generalised - (Stephen Dolan and Leo White, review by Jacques Garrigue) - - - [#11737](https://github.com/ocaml/ocaml/issues/11737): Fix segfault condition in `Unix.stat` under Windows in the presence of - multiple threads. - (Marc Lasson, NicolĂĄs Ojeda BĂ€r, review by Gabriel Scherer and David Allsopp) - - - [#11776](https://github.com/ocaml/ocaml/issues/11776): Extend environment with functor parameters in `strengthen_lazy`. - (Chris Casinghino and Luke Maurer, review by Gabriel Scherer) - - - [#11533](https://github.com/ocaml/ocaml/issues/11533), [#11534](https://github.com/ocaml/ocaml/issues/11534): follow synonyms again in `#show_module_type` - (this had stopped working in 4.14.0) - (Gabriel Scherer, review by Jacques Garrigue, report by Yaron Minsky) - - - [#11768](https://github.com/ocaml/ocaml/issues/11768), [#11788](https://github.com/ocaml/ocaml/issues/11788): Fix crash at start-up of bytecode programs in - no-naked-pointers mode caused by wrong initialisation of `caml_global_data` - (Xavier Leroy, report by Etienne Millon, review by Gabriel Scherer) ---- - -The release of OCaml version 4.14.1 is imminent. - -This companion release to the OCaml 5.0.0 release will backport many safe bug -fixes from the currently experimental 5.0 branch to the stable 4.14 branch. -A full list of bug fixes is available below. - -In order to ensure that the future release works as expected, we are testing -a release candidate during the upcoming weeks. - -If you find any bugs, please report them here on [GitHub](https://github.com/ocaml/ocaml/issues). - ----- - - -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands on opam 2.1: -``` -opam update -opam switch create 4.14.1~rc1 -``` -For previous version of opam, the switch creation command line is slightly more verbose: -``` -opam update -opam switch create 4.14.1~rc1 --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git -``` -It might be also interesting to check the new support for parallelism by installing the `domainslib` library with -``` -opam install domainslib -``` -The source code for the release candidate is available on - -- [GitHub](https://github.com/ocaml/ocaml/archive/4.14.1-rc1.tar.gz) -- [Inria archives](https://caml.inria.fr/pub/distrib/ocaml-4.14/) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: -```bash -opam update -opam switch create ocaml-variants.4.14.1~rc1+options -``` -where `` is a comma-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: -```bash -opam switch create 4.14.1~rc1+flambda+nffa ocaml-variants.4.14.1~rc1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` -The command line above is slightly more complicated for opam versions before 2.1: -```bash -opam update -opam switch create --packages=ocaml-variants.4.14.1~rc1+options, --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git -``` -In both cases, all available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2023-04-14-ocaml-5.1.alpha1.md b/data/changelog/ocaml/2023-04-14-ocaml-5.1.alpha1.md deleted file mode 100644 index a86bea8f7c..0000000000 --- a/data/changelog/ocaml/2023-04-14-ocaml-5.1.alpha1.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: OCaml 5.1.0 - First Alpha -description: First Alpha Release of OCaml 5.1.0 -tags: [ocaml] ---- - -Four months after the release of OCaml 5.0.0, the set of new features for the -future version 5.1.0 of OCaml has been frozen. We are thus happy to announce the -first alpha release for OCaml 5.1.0. - -This alpha version is here to help fellow hackers join us early in our bug -hunting and opam ecosystem fixing fun (see below for the installation instructions). -The progresses on stabilising the ecosystem are tracked on the [opam readiness for 5.1.0 meta-issue](https://github.com/ocaml/opam-repository/issues/23669). - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -Note that this early alpha version is missing two important fixes for the garbage -collector and Windows support. Those fixes will be available before the beta. -The full release is expected in July. - -If you are interested in the ongoing list of new features and bug fixes, the -updated change log for OCaml 5.1.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.1/Changes). - - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands -on opam 2.1: - -```bash -opam update -opam switch create 5.1.0~alpha1 -``` - -For previous version of opam, the switch creation command line is slightly more verbose: - -```bash -opam update -opam switch create 5.1.0~alpha1 --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git -``` - -The source code for the alpha is also available at these addresses: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.1.0-alpha1.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.1/ocaml-5.1.0~alpha1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: - -```bash -opam update -opam switch create ocaml-variants.5.1.0~alpha1+options -``` - -where `option_list` is a space separated list of `ocaml-option-*` packages. For instance, for a flambda and no-flat-float-array switch: - -```bash -opam switch create 5.1.0~alpha1+flambda+nffa ocaml-variants.5.1.0~alpha1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -The command line above is slightly more complicated for opam version anterior to 2.1: - - -```bash -opam update -opam switch create --packages=ocaml-variants.5.1.0~alpha1+options, --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git -``` -In both cases, all available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2023-06-01-ocaml-5.1.alpha2.md b/data/changelog/ocaml/2023-06-01-ocaml-5.1.alpha2.md deleted file mode 100644 index 5228d027ea..0000000000 --- a/data/changelog/ocaml/2023-06-01-ocaml-5.1.alpha2.md +++ /dev/null @@ -1,146 +0,0 @@ ---- -title: OCaml 5.1.0 - Second Alpha -description: Second Alpha Release of OCaml 5.1.0 -tags: [ocaml] -changelog: | - ### Runtime System - - - [#11589](https://github.com/ocaml/ocaml/issues/11589), [#11903](https://github.com/ocaml/ocaml/issues/11903): Modify the GC pacing code to make sure the GC keeps - up with allocations in the presence of idle domains. - (Damien Doligez and Stephen Dolan, report by Florian Angeletti, - review by KC Sivaramakrishnan and Sadiq Jaffer) - - * (*breaking change*) [#11865](https://github.com/ocaml/ocaml/issues/11865), [#11868](https://github.com/ocaml/ocaml/issues/11868), [#11876](https://github.com/ocaml/ocaml/issues/11876): Clarify that the operations of a custom - block must never access the OCaml runtime. The previous - documentation only mentioned the main illicit usages. In particular, - since OCaml 5.0, it is no longer safe to call - `caml_remove_global_root` or `caml_remove_generational_global_root` - from within the C finalizer of a custom block, or within the - finalization function passed to `caml_alloc_final`. As a workaround, - such a finalization operation can be registered with `Gc.finalize` - instead, which guarantees to run the finalizer at a safe point. - (Report by Timothy Bourke, discussion by Yotam Barnoy, Timothy - Bourke, Sadiq Jaffer, Xavier Leroy, Guillaume Munch-Maccagnoni, and - Gabriel Scherer) - - + [#11827](https://github.com/ocaml/ocaml/issues/11827), +[#12249](https://github.com/ocaml/ocaml/issues/12249): Restore prefetching for GC marking - (Fabrice Buoro and Stephen Dolan, review by Gabriel Scherer and Sadiq Jaffer) - - - [#12131](https://github.com/ocaml/ocaml/issues/12131): Simplify implementation of weak hash sets, fixing a - performance regression. (Nick Barnes, review by François Bobot, - Alain Frisch and Damien Doligez). - - - [#12231](https://github.com/ocaml/ocaml/issues/12231): Support MinGW-w64 11.0 winpthreads library, where the macro - to set up to get flexdll working changed - (David Allsopp and Samuel Hym, light review by Xavier Leroy) - - ### Type System - - * (*breaking change*) [#12189](https://github.com/ocaml/ocaml/issues/12189), [#12211](https://github.com/ocaml/ocaml/issues/12211): anonymous row variables in explicitly polymorphic type - annotation, e.g. `'a. [< X of 'a ] -> 'a`, are now implicitly - universally quantified (in other words, the example above is now read - as `'a 'r. ([< X of 'a ] as 'r) -> 'a`). - (Florian Angeletti and Gabriel Scherer, review by Jacques Garrigue) - - ### Code Generation And Optimizations - - - [#11712](https://github.com/ocaml/ocaml/issues/11712), [#12258](https://github.com/ocaml/ocaml/issues/12258), [#12261](https://github.com/ocaml/ocaml/issues/12261): s390x / IBM Z multicore support: - OCaml & C stack separation; dynamic stack size checks; fiber and - effects support. - (Aleksei Nikiforov, with help from Vincent Laviron and Xavier Leroy, - additional suggestions by Luc Maranget, - review by the same and KC Sivaramakrishnan) - - ### Internal/compiler-libs Changes - - + [#12119](https://github.com/ocaml/ocaml/issues/12119), +[#12188](https://github.com/ocaml/ocaml/issues/12188), +[#12191](https://github.com/ocaml/ocaml/issues/12191): mirror type constraints on value binding in the - parsetree: - the constraint `typ` in `let pat : typ = exp` is now directly stored - in the value binding node in the parsetree. - (Florian Angeletti, review by Richard Eisenberg) - - ### Bug Fixes - - - [#11846](https://github.com/ocaml/ocaml/issues/11846): Mark rbx as destroyed at C call for Win64 (mingw-w64 and Cygwin64). - Reserve the shadow store for the ABI in the c_stack_link struct instead of - explictly when calling C functions. This simultaneously reduces the number of - stack pointer manipulations and also fixes a bug when calling noalloc - functions where the shadow store was not being reserved. - (David Allsopp, report by Vesa Karvonen, review by Xavier Leroy and - KC Sivaramakrishnan) - - - [#12170](https://github.com/ocaml/ocaml/issues/12170): fix pthread_geaffinity_np configure check for android - (David Allsopp, review by SĂ©bastien Hinderer) - - - [#12252](https://github.com/ocaml/ocaml/issues/12252): Fix shared library build error on RISC-V. - (Edwin Török, review by NicolĂĄs Ojeda BĂ€r and Xavier Leroy) - - - [#12255](https://github.com/ocaml/ocaml/issues/12255), [#12256](https://github.com/ocaml/ocaml/issues/12256): Handle large signal numbers correctly (Nick Barnes, - review by David Allsopp). - - - [#12277](https://github.com/ocaml/ocaml/issues/12277): ARM64, fix a potential assembler error for very large functions by - emitting stack reallocation code before the body of the function. - (Xavier Leroy, review by KC Sivaramakrishnan) ---- - -With the progress of the ongoing stabilisation effort for OCaml 5.1.0, -I am happy to announce a second alpha release for OCaml 5.1.0. - -This second alpha release contains many noteworthy fixes: - -- a long-awaited GC fix -- a Windows ABI fix - -as announced in the first alpha but also - -- a compiler-libs (parsetree) fix -- a type system compatibility enhancement change -- a restored backed for s390x/IBM Z - -The full list of changes since the first alpha is available below. - -Once most major OCaml tools are updated to the last compiler-libs changes, -we will switch to beta releases. Hopefully, this will happen in the upcoming -weeks. The progress on stabilising the ecosystem is tracked on the -[opam readiness for 5.1.0 meta-issue](https://github.com/ocaml/opam-repository/issues/23669). - -Currently, the release is still planned for around July. - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -If you are interested in the ongoing list of new features and bug fixes, the -updated change log for OCaml 5.1.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.1/Changes). - - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands -on opam 2.1: - -```bash -opam update -opam switch create 5.1.0~alpha2 -``` - -The source code for the alpha is also available at these addresses: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.1.0-alpha2.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.1/ocaml-5.1.0~alpha2.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: - -```bash -opam update -opam switch create ocaml-variants.5.1.0~alpha2+options -``` - -where `option_list` is a space-separated list of `ocaml-option-*` packages. For instance, for a flambda and no-flat-float-array switch: - -```bash -opam switch create 5.1.0~alpha2+flambda+nffa ocaml-variants.5.1.0~alpha2+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2023-07-04-ocaml-5.1.beta1.md b/data/changelog/ocaml/2023-07-04-ocaml-5.1.beta1.md deleted file mode 100644 index b953988b07..0000000000 --- a/data/changelog/ocaml/2023-07-04-ocaml-5.1.beta1.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: OCaml 5.1.0 - First Beta -description: First Beta Release of OCaml 5.1.0 -tags: [ocaml] -changelog: | - ### Runtime System Bugfix - - - [#12037](https://github.com/ocaml/ocaml/issues/12037): Fix some data races by using volatile when necessary - (Fabrice Buoro and Olivier Nicole, review by Guillaume Munch-Maccagnoni, - Gabriel Scherer and Luc Maranget) - - - [#12253](https://github.com/ocaml/ocaml/issues/12253), [#12342](https://github.com/ocaml/ocaml/issues/12342): Fix infinite loop in signal handling. - (Guillaume Munch-Maccagnoni, report by Thomas Leonard, review by - KC Sivaramakrishnan and Sadiq Jaffer) - - ### Windows Bugfix - - - [#12184](https://github.com/ocaml/ocaml/issues/12184), [#12320](https://github.com/ocaml/ocaml/issues/12320): Sys.rename Windows fixes on directory corner cases. - (Jan Midtgaard, review by Anil Madhavapeddy) - ---- - -After two alpha releases, the release of OCaml 5.1.0 is drawing near. -We have thus released a first beta version of OCaml 5.1.0 to help you update your softwares and libraries ahead of the release (see below for the installation instructions). -Compared to the last alpha release, this beta contains two subtle internal runtime fixes and one Windows fix. -Overall, the opam ecosystem looks in a good shape for the first beta release. - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -Nearly all core development tools support OCaml 5.1.0, and you can follow the last remaining wrinkles on the -[opam readiness for 5.1.0 meta-issue](https://github.com/ocaml/opam-repository/issues/23669). - -Currently, the release is planned for the end of July or the beginning of August. - -If you are interested in full list of features and bug fixes of the new OCaml version, the -updated change log for OCaml 5.1.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.1/Changes). - - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands -on opam 2.1: - -```bash -opam update -opam switch create 5.1.0~beta1 -``` - -The source code for the alpha is also available at these addresses: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.1.0-beta1.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.1/ocaml-5.1.0~beta1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: - -```bash -opam update -opam switch create ocaml-variants.5.1.0~beta1+options -``` - -where `option_list` is a space-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: - -```bash -opam switch create 5.1.0~beta1+flambda+nffa ocaml-variants.5.1.0~beta1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2023-08-01-ocaml-5.1.rc1.md b/data/changelog/ocaml/2023-08-01-ocaml-5.1.rc1.md deleted file mode 100644 index ea9710e73f..0000000000 --- a/data/changelog/ocaml/2023-08-01-ocaml-5.1.rc1.md +++ /dev/null @@ -1,89 +0,0 @@ ---- -title: OCaml 5.1.0 - First Release Candidate -description: First Release Candidate of OCaml 5.1.0 -tags: [ocaml] -changelog: | - ## Changes Since the Beta - - ### Bug Fix - - - [#12445](https://github.com/ocaml/ocaml/issues/12445): missing GC root registrations in `runtime/io.c` - (Gabriel Scherer, review by Xavier Leroy and Jeremy Yallop) - - ### Configuration Fix (openBSD) - - - [#12372](https://github.com/ocaml/ocaml/issues/12372): Pass option `-no-execute-only` to the linker for OpenBSD >= 7.3 - so that code sections remain readable, as needed for closure marshaling. - (Xavier Leroy and Anil Madhavapeddy, review by Anil Madhavapeddy and - SĂ©bastien Hinderer) - - ### Tool Fix (ocamlmktop) - - * [#11745](https://github.com/ocaml/ocaml/issues/11745), [#12358](https://github.com/ocaml/ocaml/issues/12358): Debugger and toplevels: embed printer types rather than - reading their representations from `topdirs.cmi` at runtime. - This change also removes the ocamlmktop initialisation module introduced - in [#11382](https://github.com/ocaml/ocaml/issues/11382) which was no longer useful. - This change breaks toplevel scripts relying on the visibility of `Topdirs` - in the initial toplevel environment without loading `topfind`. - Since the opam default `.ocamlinit` file loads `topfind`, it is expected - that only scripts run with `ocaml -noinit` are affected. - For those scripts, accessing `Topdirs` now requires the `compiler-libs` - directory to be added to the toplevel search path with - ``` - #directory "+compiler-libs";; - ``` - as was already the case for the other modules in the toplevel interface - library. - (SĂ©bastien Hinderer, review by Florian Angeletti, NicolĂĄs Ojeda BĂ€r, and - Gabriel Scherer) - - ### Documentation Changes - - - - [#12201](https://github.com/ocaml/ocaml/issues/12201): in the tutorial on modules, replace priority queue example by - a simpler example based on FIFO queues. - (Xavier Leroy, review by Anil Madhavapeddy and NicolĂĄs Ojeda BĂ€r). - - - [#12352](https://github.com/ocaml/ocaml/issues/12352): Fix a typo in the documentation of Arg.write_arg - (Christophe Raffalli, review by Florian Angeletti) - ---- - - -The release of OCaml 5.1.0 is imminent. -As a final step, we are publishing a release candidate to check that everything is in order before the release in the upcoming week(s). - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -Compared to the beta release, this release contains one safe runtime fix and two configuration tweaks. - -The full change log for OCaml 5.1.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.1/Changes) -A short summary of the changes since the beta release is also available below. - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands on opam 2.1 and later: -```bash -opam update -opam switch create 5.1.0~rc1 -``` - -The source code for the release candidate is also directly available on: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.1.0-rc1.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.1/ocaml-5.1.0~rc1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: -```bash -opam update -opam switch create ocaml-variants.5.1.0~rc1+options -``` -where `` is a comma-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: -```bash -opam switch create 5.1.0~rc1+flambda+nffa ocaml-variants.5.1.0~rc1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2023-08-29-ocaml-5.1.rc2.md b/data/changelog/ocaml/2023-08-29-ocaml-5.1.rc2.md deleted file mode 100644 index 4fc80b5dac..0000000000 --- a/data/changelog/ocaml/2023-08-29-ocaml-5.1.rc2.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: OCaml 5.1.0 - Second Release Candidate -description: Second Release Candidate of OCaml 5.1.0 -tags: [ocaml] -changelog: | - ## Last Minute Bug Fixes - - ### Type System: - - * (*breaking change*) [#6941](https://github.com/ocaml/ocaml/issues/6941), [#11187](https://github.com/ocaml/ocaml/issues/11187), +[#12483](https://github.com/ocaml/ocaml/issues/12483): prohibit using classes through recursive modules - inheriting or including a class belonging to a mutually-recursive module - would previous behave incorrectly, and now results in a clean error. - (Leo White, review by Gabriel Scherer and Florian Angeletti) - - ### Runtime - - - [#12481](https://github.com/ocaml/ocaml/issues/12481), [#12505](https://github.com/ocaml/ocaml/issues/12505): Fix incorrect initialization of array expressions - `[|e1;...;eN|]` when `N` is large enough to require major heap allocation. - (Xavier Leroy, report by Andrey Popp, analysis by KC Sivaramakrishnan - and Vincent Laviron, review by Gabriel Scherer) - ---- -In the last two weeks, two significant bugs have been discovered in the release candidate for OCaml 5.1.0 (one affecting the type system, another in the runtime). - -Those bugs are now fixed and we are publishing a second release candidate to check that everything is in order before the release in the upcoming week. - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -The full changelog for OCaml 5.1.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.1/Changes). -A short summary of the two fixed bugs in this release candidate is also available below. - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands on opam 2.1 and later: -```bash -opam update -opam switch create 5.1.0~rc2 -``` - -The source code for the release candidate is also directly available on: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.1.0-rc2.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.1/ocaml-5.1.0~rc2.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: -```bash -opam update -opam switch create ocaml-variants.5.1.0~rc2+options -``` -where `` is a comma-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: -```bash -opam switch create 5.1.0~rc2+flambda+nffa ocaml-variants.5.1.0~rc2+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2023-09-06-ocaml-5.1.0.rc3.md b/data/changelog/ocaml/2023-09-06-ocaml-5.1.0.rc3.md deleted file mode 100644 index 85f57d326e..0000000000 --- a/data/changelog/ocaml/2023-09-06-ocaml-5.1.0.rc3.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: OCaml 5.1.0 - Third Release Candidate -description: Third Release Candidate of OCaml 5.1.0 -tags: [ocaml] -changelog: | - ## Last Second Bug Fixes - - [#11284](https://github.com/ocaml/ocaml/issues/11284), +[#12525](https://github.com/ocaml/ocaml/issues/12525): Use compression of entries scheme when pruning mark stack. - Can decrease memory usage for some workloads, otherwise should be - unobservable. - (Tom Kelly, review by Sabine Schmaltz, Sadiq Jaffer, and Damien Doligez) - - - [#12486](https://github.com/ocaml/ocaml/issues/12486): Fix delivery of unhandled effect exceptions on s390x - (Miod Vallat, report by Jan Midtgaard, review by Vincent Laviron and Xavier - Leroy) ---- - -Since last week, there were two significant bugs fixed in the OCaml 5.1.0 runtime (one overflow bug and a stack corruption bug in the s390x port). Since those bug fixes are as small as they are subtle, they were deemed worthy of a release of a third release candidate for OCaml 5.1.0. - -If there are no more surprises this week, the release of OCaml 5.1.0 shall happen next week. - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -The full changelog for OCaml 5.1.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.1/Changes) - -A short summary of the two fixed bugs in this release candidate is also available below. - - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands on opam 2.1 and later: -```bash -opam update -opam switch create 5.1.0~rc3 -``` - -The source code for the release candidate is also directly available on: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.1.0-rc3.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.1/ocaml-5.1.0~rc3.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: -```bash -opam update -opam switch create ocaml-variants.5.1.0~rc3+options -``` -where `` is a comma-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: -```bash -opam switch create 5.1.0~rc3+flambda+nffa ocaml-variants.5.1.0~rc3+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2023-12-1-ocaml-5.1.1.rc1.md b/data/changelog/ocaml/2023-12-1-ocaml-5.1.1.rc1.md deleted file mode 100644 index 324e2e2e22..0000000000 --- a/data/changelog/ocaml/2023-12-1-ocaml-5.1.1.rc1.md +++ /dev/null @@ -1,109 +0,0 @@ ---- -title: OCaml 5.1.1 - First Release Candidate -description: First Release Candidate of OCaml 5.1.1 -tags: [ocaml] -changelog: | - ## Changes in OCaml 5.1.1 - - ### Standard Library Dependency Fix: - - * (*breaking change*) [#12562](https://github.com/ocaml/ocaml/issues/12562), [#12734](https://github.com/ocaml/ocaml/issues/12734), [#12783](https://github.com/ocaml/ocaml/issues/12783): Remove the `Marshal.Compression` flag to the - `Marshal.to_*` functions introduced in 5.1 by [#12006](https://github.com/ocaml/ocaml/issues/12006), as it cannot - be implemented without risking to link -lzstd with all - ocamlopt-generated executables. The compilers are still able to use - ZSTD compression for compilation artefacts. - (Xavier Leroy and David Allsopp, report by Kate Deplaix, review by - NicolĂĄs Ojeda BĂ€r, Kate Deplaix, and Damien Doligez). - - ### Type System Bug Fix: - - - [#12623](https://github.com/ocaml/ocaml/issues/12623), fix the computation of variance composition - (Florian Angeletti, report by Vesa Karvonen, review by Gabriel Scherer) - - ### GC Performance Regression Fixes - - - [#12590](https://github.com/ocaml/ocaml/issues/12590), [#12595](https://github.com/ocaml/ocaml/issues/12595): Move `caml_collect_gc_stats_sample` in - `caml_empty_minor_heap_promote` before barrier arrival. - (B. Szilvasy, review by Gabriel Scherer) - - - [#12318](https://github.com/ocaml/ocaml/issues/12318): GC: simplify the meaning of custom_minor_max_size: blocks with - out-of-heap memory above this limit are now allocated directly in - the major heap. - (Damien Doligez, report by Stephen Dolan, review by Gabriel Scherer) - - - [#12439](https://github.com/ocaml/ocaml/issues/12439): Finalize and collect dead custom blocks during minor collection - (Damien Doligez, review by Xavier Leroy, Gabriel Scherer and KC - Sivaramakrishnan) - - - - [#12491](https://github.com/ocaml/ocaml/issues/12491), [#12493](https://github.com/ocaml/ocaml/issues/12493), [#12500](https://github.com/ocaml/ocaml/issues/12500), [#12754](https://github.com/ocaml/ocaml/issues/12754): Do not change GC pace when creating - sub-arrays of bigarrays - (Xavier Leroy, report by Ido Yariv, analysis by Gabriel Scherer, - - ### Miscellaneous Bug Fixes - - - [#12581](https://github.com/ocaml/ocaml/issues/12581), [#12609](https://github.com/ocaml/ocaml/issues/12609): Fix error on uses of packed modules outside their pack - to correctly handle nested packs - (Vincent Laviron, report by Javier ChĂĄvarri, review by Pierre Chambart) - - - [#12757](https://github.com/ocaml/ocaml/issues/12757): Fix ocamlnat (native toplevel) by registering frametables correctly - (Stephen Dolan, Nick Barnes and Mark Shinwell, - review by Vincent Laviron and SĂ©bastien Hinderer) - - - [#12645](https://github.com/ocaml/ocaml/issues/12645), [#12649](https://github.com/ocaml/ocaml/issues/12649) fix error messages for cyclic type definitions in presence of - the `-short-paths` flag. - (Florian Angeletti, report by Vesa Karvonen, review by Gabriel Scherer) - - ---- - -Two months (and half) after the release of OCaml 5.1.0, we have discovered three -significant regressions in OCaml 5.1.0, affecting the packaging of executables, -the typechecking of OCaml programs, and the performance of numerical codes. - -Since those regressions affect many users and could have lasting effects, we -have decided to cut a patch release of OCaml 5.1 with fixes for those issues -next week. - -To give time for opam packages to test this patch version, we -have just published a first release candidate for OCaml 5.1.1 . -The full list of changes in this release candidate is available below. - -As a major exception to our policy for patch releases, OCaml 5.1.1 will -contain one breaking change in the standard library: the `Compression` flag has -been removed from the `Marshal` module. -This drastic measure was taken because supporting zstd compression in the -standard library made zstd a dependency of all OCaml executables. Since the -compiler should not impose its dependency on end-users, the support for -compressed marshaling has been moved to a compiler internal library in 5.1.1. -This internally library might be released as an independent library in later -releases of OCaml but not in OCaml 5.1.1 to give us time to polish the library -integration and packaging. - - -Installation Instructions --------------------------- - -The base compiler can be installed as an opam switch with the following commands on opam 2.1 and later: - - opam update - opam switch create 5.1.1~rc1 - -The source code for the release candidate is also directly available on: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.1.1-rc1.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.1/ocaml-5.1.1~rc1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: - - opam update - opam switch create ocaml-variants.5.1.1~rc1+options - -where `option_list` is a space-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: - - opam switch create 5.1.1~rc1+flambda+nffa ocaml-variants.5.1.1~rc1+options ocaml-option-flambda ocaml-option-no-flat-float-array - -All available options can be listed with `opam search ocaml-option`. - diff --git a/data/changelog/ocaml/2024-02-05-ocaml-5.2.0-alpha1.md b/data/changelog/ocaml/2024-02-05-ocaml-5.2.0-alpha1.md deleted file mode 100644 index 9161102a80..0000000000 --- a/data/changelog/ocaml/2024-02-05-ocaml-5.2.0-alpha1.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -title: OCaml 5.2.0 - First Alpha -description: First Alpha Release of OCaml 5.2.0 -tags: [ocaml] ---- - -Two months after the release of OCaml 5.1.1, the set of new features for the -future version 5.2.0 of OCaml has been frozen. We are thus happy to announce the -first alpha release for OCaml 5.2.0. - -This alpha version is here to help fellow hackers join us early in our bug -hunting and opam ecosystem fixing fun (see below for the installation instructions). - -The progresses on stabilising the ecosystem are tracked on the -[opam readiness for 5.2.0 meta-issue](https://github.com/ocaml/opam-repository/issues/25182). -The full release is expected around April. - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -If you are interested in the ongoing list of new features and bug fixes, the -updated change log for OCaml 5.2.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.2/Changes). - - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands -on opam 2.1 and later: - -```bash -opam update -opam switch create 5.2.0~alpha1 -``` - -For previous version of opam, the switch creation command line is slightly more verbose: - -```bash -opam update -opam switch create 5.2.0~alpha1 --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git -``` - -The source code for the alpha is also available at these addresses: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.2.0-alpha1.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.2/ocaml-5.2.0~alpha1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: - -```bash -opam update -opam switch create ocaml-variants.5.2.0~alpha1+options -``` - -where `option_list` is a space separated list of `ocaml-option-*` packages. For instance, for a flambda and no-flat-float-array switch: - -```bash -opam switch create 5.2.0~alpha1+flambda+nffa ocaml-variants.5.2.0~alpha1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -The command line above is slightly more complicated for opam version anterior to 2.1: - - -```bash -opam update -opam switch create --packages=ocaml-variants.5.2.0~alpha1+options, --repositories=default,beta=git+https://github.com/ocaml/ocaml-beta-repository.git -``` -In both cases, all available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2024-03-07-ocaml-4.14.2.rc1.md b/data/changelog/ocaml/2024-03-07-ocaml-4.14.2.rc1.md deleted file mode 100644 index 8c134247f7..0000000000 --- a/data/changelog/ocaml/2024-03-07-ocaml-4.14.2.rc1.md +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: OCaml 4.14.2 - Release Candidate -description: Release Candidate of OCaml 4.14.2 -tags: [ocaml] -changelog: | - ## Changes Since OCaml 4.14.1 - ### Runtime System: - - - [#11764](https://github.com/ocaml/ocaml/issues/11764), [#12577](https://github.com/ocaml/ocaml/issues/12577): Add prototypes to old-style C function definitions - and declarations. - (Antonin DĂ©cimo, review by Xavier Leroy and Nick Barnes) - - - [#11763](https://github.com/ocaml/ocaml/issues/11763), [#11759](https://github.com/ocaml/ocaml/issues/11759), [#11861](https://github.com/ocaml/ocaml/issues/11861), [#12509](https://github.com/ocaml/ocaml/issues/12509), [#12577](https://github.com/ocaml/ocaml/issues/12577): Use strict prototypes on primitives. - (Antonin DĂ©cimo, review by Xavier Leroy, David Allsopp, SĂ©bastien - Hinderer and Nick Barnes) - - * (*breaking change*) [#10723](https://github.com/ocaml/ocaml/issues/10723): Do not use `-flat-namespace` linking for macOS. - (Carlo Cabrera, review by Damien Doligez) - - - [#11332](https://github.com/ocaml/ocaml/issues/11332), [#12702](https://github.com/ocaml/ocaml/issues/12702): Make sure `Bool_val(v)` has type `bool` in C++ - (Xavier Leroy, report by ygrek, review by Gabriel Scherer) - - ### Build System: - - - [#11590](https://github.com/ocaml/ocaml/issues/11590): Allow installing to a destination path containing spaces - (Élie Brami, review by SĂ©bastien Hinderer and David Allsopp) - - - [#12372](https://github.com/ocaml/ocaml/issues/12372): Pass option `-no-execute-only` to the linker for OpenBSD >= 7.3 - so that code sections remain readable, as needed for closure marshaling. - (Xavier Leroy and Anil Madhavapeddy, review by Anil Madhavapeddy and - SĂ©bastien Hinderer) - - - [#12903](https://github.com/ocaml/ocaml/issues/12903): Disable control flow integrity on OpenBSD >= 7.4 to avoid - illegal instruction errors on certain CPUs. - (Michael Hendricks, review by Miod Vallat) - - ### Bug fixes: - - - [#12061](https://github.com/ocaml/ocaml/issues/12061), [#12063](https://github.com/ocaml/ocaml/issues/12063): Don't add inconsistent equalities when computing - high-level error messages for functor applications and inclusions. - (Florian Angeletti, review by Gabriel Scherer) - - - [#12878](https://github.com/ocaml/ocaml/issues/12878): Fix incorrect treatment of injectivity for private recursive types. - (Jeremy Yallop, review by Gabriel Scherer and Jacques Garrigue) - - - [#12971](https://github.com/ocaml/ocaml/issues/12971), [#12974](https://github.com/ocaml/ocaml/issues/12974): Fix an uncaught Ctype. Escape exception on some - invalid programs forming recursive types. - (Gabriel Scherer, review by Florian Angeletti, report by Neven Villani) - - - [#12264](https://github.com/ocaml/ocaml/issues/12264), [#12289](https://github.com/ocaml/ocaml/issues/12289): Fix `compact_allocate` to avoid a pathological case - that causes very slow compaction. - (Damien Doligez, report by Arseniy Alekseyev, review by Sadiq Jaffer) - - - [#12513](https://github.com/ocaml/ocaml/issues/12513), [#12518](https://github.com/ocaml/ocaml/issues/12518): Automatically enable emulated `fma` for Visual Studio 2019+ - to allow configuration with either pre-Haswell/pre-Piledriver CPUs or running - in VirtualBox. Restores parity with the other Windows ports, which don't - require explicit `--enable-imprecise-c99-float-ops`. - (David Allsopp, report by Jonah Beckford and Kate Deplaix, review by - SĂ©bastien Hinderer) - - - [#11633](https://github.com/ocaml/ocaml/issues/11633), [#11636](https://github.com/ocaml/ocaml/issues/11636): Bug fix in `caml_unregister_frametable` - (FrĂ©dĂ©ric Recoules, review by Gabriel Scherer) - - - [#12636](https://github.com/ocaml/ocaml/issues/12636), [#12646](https://github.com/ocaml/ocaml/issues/12646): More prudent reinitialisation of I/O mutexes after a fork() - (Xavier Leroy, report by Zach Baylin, review by Enguerrand Decorne) - - * (*breaking change*) [#10845](https://github.com/ocaml/ocaml/issues/10845) Emit frametable size on AMD64 BSD (OpenBSD, FreeBSD, NetBSD) systems - (emitted for Linux in [#8805](https://github.com/ocaml/ocaml/issues/8805)) - (Hannes Mehnert, review by NicolĂĄs Ojeda BĂ€r) - - - [#12958](https://github.com/ocaml/ocaml/issues/12958): Fix `tail-modulo-cons` compilation of `try-with`, `&&`, and `||` - expressions. - (Gabriel Scherer and NicolĂĄs Ojeda BĂ€r, report by Sylvain Boilard, review by - Gabriel Scherer) - - ---- - -The release of OCaml version 4.14.2 is imminent. - -OCaml 4.14.2 is a new update to the stable 4.14 branch of OCaml. This new -release backports many safe bug fixes from the OCaml 5 branch and fixes -a handful of compatibility issues of OCaml 4.14.1 with newer operating system versions. - -A full list of bug fixes is available below. - -In order to ensure that the future release works as expected, we are planning to test a release candidate during the upcoming week. - -If you find any bugs, please report them here on [GitHub](https://github.com/ocaml/ocaml/issues). - ----- - - -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands on opam 2.1: -``` -opam update -opam switch create 4.14.2~rc1 -``` - - -The source code for the release candidate is available on - -- [GitHub](https://github.com/ocaml/ocaml/archive/4.14.2-rc1.tar.gz) -- [Inria archives](https://caml.inria.fr/pub/distrib/ocaml-4.14/ocaml-4.14.2-rc1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: -```bash -opam update -opam switch create ocaml-variants.4.14.2~rc1+options -``` -where `` is a space-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: -```bash -opam switch create 4.14.2~rc1+flambda+nffa ocaml-variants.4.14.2~rc1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2024-03-15-ocaml-4.14.2.md b/data/changelog/ocaml/2024-03-15-ocaml-4.14.2.md deleted file mode 100644 index 6c6f6bf44b..0000000000 --- a/data/changelog/ocaml/2024-03-15-ocaml-4.14.2.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: Release of OCaml 4.14.2 -description: Release of OCaml 4.14.2 -tags: [ocaml] -changelog: | - ## Changes in OCaml 4.14.2 (14 March 2024) - - ### Runtime system: - - - [#11764](https://github.com/ocaml/ocaml/issues/11764), [#12577](https://github.com/ocaml/ocaml/issues/12577): Add prototypes to old-style C function definitions - and declarations. - (Antonin DĂ©cimo, review by Xavier Leroy and Nick Barnes) - - - [#11763](https://github.com/ocaml/ocaml/issues/11763), [#11759](https://github.com/ocaml/ocaml/issues/11759), [#11861](https://github.com/ocaml/ocaml/issues/11861), [#12509](https://github.com/ocaml/ocaml/issues/12509), [#12577](https://github.com/ocaml/ocaml/issues/12577): Use strict prototypes on primitives. - (Antonin DĂ©cimo, review by Xavier Leroy, David Allsopp, SĂ©bastien - Hinderer and Nick Barnes) - - * (*breaking change*) [#10723](https://github.com/ocaml/ocaml/issues/10723): do not use `-flat-namespace` linking for macOS. - (Carlo Cabrera, review by Damien Doligez) - - - [#11332](https://github.com/ocaml/ocaml/issues/11332), [#12702](https://github.com/ocaml/ocaml/issues/12702): make sure `Bool_val(v)` has type `bool` in C++ - (Xavier Leroy, report by ygrek, review by Gabriel Scherer) - - ### Build system: - - - [#11590](https://github.com/ocaml/ocaml/issues/11590): Allow installing to a destination path containing spaces. - (Élie Brami, review by SĂ©bastien Hinderer and David Allsopp) - - - [#12372](https://github.com/ocaml/ocaml/issues/12372): Pass option -no-execute-only to the linker for OpenBSD >= 7.3 - so that code sections remain readable, as needed for closure marshaling. - (Xavier Leroy and Anil Madhavapeddy, review by Anil Madhavapeddy and - SĂ©bastien Hinderer) - - - [#12903](https://github.com/ocaml/ocaml/issues/12903): Disable control flow integrity on OpenBSD >= 7.4 to avoid - illegal instruction errors on certain CPUs. - (Michael Hendricks, review by Miod Vallat) - - ### Bug fixes: - - - [#12061](https://github.com/ocaml/ocaml/issues/12061), [#12063](https://github.com/ocaml/ocaml/issues/12063): don't add inconsistent equalities when computing - high-level error messages for functor applications and inclusions. - (Florian Angeletti, review by Gabriel Scherer) - - - [#12878](https://github.com/ocaml/ocaml/issues/12878): fix incorrect treatment of injectivity for private recursive types. - (Jeremy Yallop, review by Gabriel Scherer and Jacques Garrigue) - - - [#12971](https://github.com/ocaml/ocaml/issues/12971), [#12974](https://github.com/ocaml/ocaml/issues/12974): fix an uncaught Ctype.Escape exception on some - invalid programs forming recursive types. - (Gabriel Scherer, review by Florian Angeletti, report by Neven Villani) - - - [#12264](https://github.com/ocaml/ocaml/issues/12264), [#12289](https://github.com/ocaml/ocaml/issues/12289): Fix compact_allocate to avoid a pathological case - that causes very slow compaction. - (Damien Doligez, report by Arseniy Alekseyev, review by Sadiq Jaffer) - - - [#12513](https://github.com/ocaml/ocaml/issues/12513), [#12518](https://github.com/ocaml/ocaml/issues/12518): Automatically enable emulated `fma` for Visual Studio 2019+ - to allow configuration with either pre-Haswell/pre-Piledriver CPUs or running - in VirtualBox. Restores parity with the other Windows ports, which don't - require explicit `--enable-imprecise-c99-float-ops`. - (David Allsopp, report by Jonah Beckford and Kate Deplaix, review by - SĂ©bastien Hinderer) - - - [#11633](https://github.com/ocaml/ocaml/issues/11633), [#11636](https://github.com/ocaml/ocaml/issues/11636): bugfix in caml_unregister_frametable - (FrĂ©dĂ©ric Recoules, review by Gabriel Scherer) - - - [#12636](https://github.com/ocaml/ocaml/issues/12636), [#12646](https://github.com/ocaml/ocaml/issues/12646): More prudent reinitialization of I/O mutexes after a fork() - (Xavier Leroy, report by Zach Baylin, review by Enguerrand Decorne) - - * (*breaking change*) [#10845](https://github.com/ocaml/ocaml/issues/10845) Emit frametable size on amd64 BSD (OpenBSD, FreeBSD, NetBSD) systems - (emitted for Linux in [#8805](https://github.com/ocaml/ocaml/issues/8805)) - (Hannes Mehnert, review by NicolĂĄs Ojeda BĂ€r) - - - [#12958](https://github.com/ocaml/ocaml/issues/12958): Fix tail-modulo-cons compilation of try-with, && and || - expressions. - (Gabriel Scherer and NicolĂĄs Ojeda BĂ€r, report by Sylvain Boilard, review by - Gabriel Scherer) - - - [#12116](https://github.com/ocaml/ocaml/issues/12116), [#12993](https://github.com/ocaml/ocaml/issues/12993): explicitly build non PIE executables on x86 32bits - architectures - (Florian Angeletti, review by David Allsopp) - - - [#13018](https://github.com/ocaml/ocaml/issues/13018): Don't pass duplicate libraries to the linker when compiling ocamlc.opt - and when using systhreads (new versions of lld emit a warning). - (David Allsopp, review by NicolĂĄs Ojeda BĂ€r) ---- - -We have the pleasure of celebrating the birthday of Grace Chisholm Young by announcing the release of OCaml version 4.14.2. - -This release is a collection of safe bug fixes, cherry-picked from the OCaml 5 branch. -If you are still using OCaml 4.14 and cannot yet upgrade to OCaml 5, this release is for you. - -The 4.14 branch is expected to receive updates for at least one year, while the OCaml 5 branch is stabilising. - -Thus don't hesitate to report any bugs on the [OCaml issue tracker](https://github.com/ocaml/ocaml/issues). - -See the list of changes below for more details. - ---- - -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands: - -```bash -opam update -opam switch create 4.14.2 -``` -The source code for the release candidate is also directly available on: - -* [GitHub](https://github.com/ocaml/ocaml/archive/4.14.2.tar.gz) -* [Inria archive](https://caml.inria.fr/pub/distrib/ocaml-4.14/ocaml-4.14.2.tar.gz) diff --git a/data/changelog/ocaml/2024-03-25-ocaml-5.2.0-beta1.md b/data/changelog/ocaml/2024-03-25-ocaml-5.2.0-beta1.md deleted file mode 100644 index 6b072260ba..0000000000 --- a/data/changelog/ocaml/2024-03-25-ocaml-5.2.0-beta1.md +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: OCaml 5.2.0 - First Beta -description: First Beta Release of OCaml 5.2.0 -tags: [ocaml] -changelog: | - ### Runtime System Fixes - - - [#12875](https://github.com/ocaml/ocaml/issues/12875), [#12879](https://github.com/ocaml/ocaml/issues/12879), [#12882](https://github.com/ocaml/ocaml/issues/12882): Execute preemptive systhread switching as a - delayed pending action. This ensures that one can reason within the - FFI that no mutation happens on the same domain when allocating on - the OCaml heap from C, consistently with OCaml 4. This also fixes - further bugs with the multicore systhreads implementation. - (Guillaume Munch-Maccagnoni, bug reports and suggestion by Mark - Shinwell, review by Nick Barnes and Stephen Dolan) - - - [#12876](https://github.com/ocaml/ocaml/issues/12876): Port ThreadSanitizer support to Linux on POWER - (Miod Vallat, review by Tim McGilchrist) - - - [#12678](https://github.com/ocaml/ocaml/issues/12678), [#12898](https://github.com/ocaml/ocaml/issues/12898): free channel buffers on close rather than on finalization - (Damien Doligez, review by Jan Midtgaard and Gabriel Scherer, report - by Jan Midtgaard) - - - [#12915](https://github.com/ocaml/ocaml/issues/12915): Port ThreadSanitizer support to Linux on s390x - (Miod Vallat, review by Tim McGilchrist) - - - [#12914](https://github.com/ocaml/ocaml/issues/12914): Slightly change the s390x assembly dialect in order to build with - Clang's integrated assembler. - (Miod Vallat, review by Gabriel Scherer) - - - [#12897](https://github.com/ocaml/ocaml/issues/12897): fix locking bugs in Runtime_events - (Gabriel Scherer and Thomas Leonard, - review by Olivier Nicole, Vincent Laviron and Damien Doligez, - report by Thomas Leonard) - - - [#12860](https://github.com/ocaml/ocaml/issues/12860): Fix an assertion that wasn't taking into account the possibility of an - ephemeron pointing at static data. - (Mark Shinwell, review by Gabriel Scherer and KC Sivaramakrishnan) - - - [#11040](https://github.com/ocaml/ocaml/issues/11040), [#12894](https://github.com/ocaml/ocaml/issues/12894): Silence false data race observed between caml_shared_try_alloc - and oldify. Introduces macros to call tsan annotations which help annotate - a ``happens before'' relationship. - (Hari Hara Naveen S and Olivier Nicole, - review by Gabriel Scherer and Miod Vallat) - - - [#12919](https://github.com/ocaml/ocaml/issues/12919): Fix register corruption in caml_callback2_asm on s390x. - (Miod Vallat, review by Gabriel Scherer) - - - [#12969](https://github.com/ocaml/ocaml/issues/12969): Fix a data race in caml_darken_cont - (Fabrice Buoro and Olivier Nicole, review by Gabriel Scherer and Miod Vallat) - - ### Standard Library Fix - - - [#12677](https://github.com/ocaml/ocaml/issues/12677), [#12889](https://github.com/ocaml/ocaml/issues/12889): make Domain.DLS thread-safe - (Gabriel Scherer, review by Olivier Nicole and Damien Doligez, - report by Vesa Karvonen) - - ### Type System Fix - - - [#12924](https://github.com/ocaml/ocaml/issues/12924), [#12930](https://github.com/ocaml/ocaml/issues/12930): Rework package constraint checking to improve interaction with - immediacy - (Chris Casinghino and Florian Angeletti, review by Florian Angeletti and - Richard Eisenberg) - - ### Compiler User-Interface Fix - - - [#12971](https://github.com/ocaml/ocaml/issues/12971), [#12974](https://github.com/ocaml/ocaml/issues/12974): fix an uncaught Ctype.Escape exception on some - invalid programs forming recursive types. - (Gabriel Scherer, review by Florian Angeletti, report by Neven Villani) - - ### Build System Fixes - - - [#12198](https://github.com/ocaml/ocaml/issues/12198), [#12321](https://github.com/ocaml/ocaml/issues/12321), [#12586](https://github.com/ocaml/ocaml/issues/12586), [#12616](https://github.com/ocaml/ocaml/issues/12616), [#12706](https://github.com/ocaml/ocaml/issues/12706), +[#13048](https://github.com/ocaml/ocaml/issues/13048): continue the merge of the - sub-makefiles into the root Makefile started with [#11243](https://github.com/ocaml/ocaml/issues/11243), [#11248](https://github.com/ocaml/ocaml/issues/11248), - [#11268](https://github.com/ocaml/ocaml/issues/11268), [#11420](https://github.com/ocaml/ocaml/issues/11420) and [#11675](https://github.com/ocaml/ocaml/issues/11675). - (SĂ©bastien Hinderer, review by David Allsopp and Florian Angeletti) - - - [#12768](https://github.com/ocaml/ocaml/issues/12768), +[#13030](https://github.com/ocaml/ocaml/issues/13030): Detect mingw-w64 coupling with GCC or LLVM, detect clang-cl, - and fix C compiler feature detection on macOS. - (Antonin DĂ©cimo, review by Miod Vallat and SĂ©bastien Hinderer) - - - [#13019](https://github.com/ocaml/ocaml/issues/13019): Remove linking instructions for the Unix library from threads.cma - (this was done for threads.cmxa in OCaml 3.11). Eliminates warnings from - new lld when using threads.cma of duplicated libraries. - (David Allsopp, review by NicolĂĄs Ojeda BĂ€r) - - - [#12758](https://github.com/ocaml/ocaml/issues/12758), +[#12998](https://github.com/ocaml/ocaml/issues/12998): Remove the `Marshal.Compression` flag to the - `Marshal.to_*` functions. The compilers are still able to use - ZSTD compression for compilation artefacts. - This is a forward port and clean-up of the emergency fix that was introduced - - ### Compiler Internals Fix - - - [#12389](https://github.com/ocaml/ocaml/issues/12389), [#12544](https://github.com/ocaml/ocaml/issues/12544), [#12984](https://github.com/ocaml/ocaml/issues/12984), +[#12987](https://github.com/ocaml/ocaml/issues/12987): centralize the handling of metadata for - compilation units and artifacts in preparation for better unicode support for - OCaml source files. - (Florian Angeletti, review by Vincent Laviron and Gabriel Scherer) - - --- - -Nearly two months after the first alpha release, the release of OCaml 5.2.0 is drawing near. - -We have thus released a first beta version of OCaml 5.2.0 to help you update your softwares and libraries ahead of the release (see below for the installation instructions). - -Compared to the alpha release, this beta contains a majority of runtime system fixes, and a handful of other fixes across many subsystems. - -Overall, the opam ecosystem looks in a good shape for the first beta release. -Most core development tools support OCaml 5.2.0, and you can follow the last remaining wrinkles on the -[opam readiness for 5.2.0 meta-issue](https://github.com/ocaml/opam-repository/issues/25182). - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -Currently, the release is planned for the end of April or the beginning of May. - -If you are interested in full list of features and bug fixes of the new OCaml version, the -updated change log for OCaml 5.2.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.2/Changes). - - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands -on opam 2.1: - -```bash -opam update -opam switch create 5.2.0~beta1 -``` - -The source code for the alpha is also available at these addresses: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.2.0-beta1.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.2/ocaml-5.2.0~beta1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: - -```bash -opam update -opam switch create ocaml-variants.5.2.0~beta1+options -``` - -where `option_list` is a space-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: - -```bash -opam switch create 5.2.0~beta1+flambda+nffa ocaml-variants.5.2.0~beta1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2024-04-16-ocaml-5.2.0-beta2.md b/data/changelog/ocaml/2024-04-16-ocaml-5.2.0-beta2.md deleted file mode 100644 index 20135342b2..0000000000 --- a/data/changelog/ocaml/2024-04-16-ocaml-5.2.0-beta2.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: OCaml 5.2.0 - Second Beta -description: Second Beta Release of OCaml 5.2.0 -tags: [ocaml] -changelog: | - ### Compiler-libs API Changes - - - [#13001](https://github.com/ocaml/ocaml/issues/13001): do not read_back entire shapes to get aliases' uids when building the - usages index - (Ulysse GĂ©rard, review by Gabriel Scherer and NathanaĂ«lle Courant) - - ### Bug Fixes - - - [#13058](https://github.com/ocaml/ocaml/issues/13058): Add TSan instrumentation to caml_call_gc(), since it may raise - exceptions. - (Fabrice Buoro, Olivier Nicole, Gabriel Scherer and Miod Vallat) - - - [#13079](https://github.com/ocaml/ocaml/issues/13079): Save and restore frame pointer across Iextcall on ARM64 - (Tim McGilchrist, review by KC Sivaramakrishnan and Miod Vallat) - - - [#13094](https://github.com/ocaml/ocaml/issues/13094): Fix undefined behavior of left-shifting a negative number. - (Antonin DĂ©cimo, review by Miod Vallat and NicolĂĄs Ojeda BĂ€r) - - ### Documentation Updates - - - [#13078](https://github.com/ocaml/ocaml/issues/13078): update Format tutorial on structural boxes to mention alignment - questions. - (Edwin Török, review by Florian Angeletti) - - - [#13092](https://github.com/ocaml/ocaml/issues/13092): document the existence of the `[@@poll error]` built-in attribute - (Florian Angeletti, review by Gabriel Scherer) - - - [#13066](https://github.com/ocaml/ocaml/issues/13066), update OCAMLRUNPARAM documentation for the stack size parameter l - (Florian Angeletti, review by NicolĂĄs Ojeda BĂ€r, Tim McGilchrist, and - Miod Vallat) - --- - -Last week, we merged an update to the compiler-libs "shape" API for querying definition information from the compiler. - -Unfortunately, this small change of API breaks compatibility with at least odoc. -Generally, we try to avoid this kind of changes during the beta releases of the -compiler. However, after discussions we concluded that it will be easier on the -long term to fix the API right now in order to avoid multiplying the number of -supported versions of the shape API in the various OCaml developer tools . - -We have thus released a second beta version of OCaml 5.2.0 to give the time to developer tools to update their 5.2.0 version ahead of the release (see below for the installation instructions). - -Beyond this changes of API, the new beta contains three more bug fixes and three -documentation updates, which is a good sign in term of stability. - -As usual, you can follow the last remaining compatibility slags on the -[opam readiness for 5.2.0 meta-issue](https://github.com/ocaml/opam-repository/issues/25182). - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -Currently, the release is planned for the beginning of May. - -If you are interested in full list of features and bug fixes of the new OCaml version, the -updated change log for OCaml 5.2.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.2/Changes). - - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands -on opam 2.1: - -```bash -opam update -opam switch create 5.2.0~beta2 -``` - -The source code for the beta is also available at these addresses: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.2.0-beta2.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.2/ocaml-5.2.0~beta2.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: - -```bash -opam update -opam switch create ocaml-variants.5.2.0~beta2+options -``` - -where `option_list` is a space-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: - -```bash -opam switch create 5.2.0~beta2+flambda+nffa ocaml-variants.5.2.0~beta2+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2024-05-02-ocaml-5.2.0.rc1.md b/data/changelog/ocaml/2024-05-02-ocaml-5.2.0.rc1.md deleted file mode 100644 index 3ee212f2b2..0000000000 --- a/data/changelog/ocaml/2024-05-02-ocaml-5.2.0.rc1.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: OCaml 5.2.0 - First Release Candidate -description: First Release Candidate of OCaml 5.2.0 -tags: [ocaml] -changelog: | - ## Changes since the second beta - - - [#13130](https://github.com/ocaml/ocaml/issues/13130): Minor fixes to `pprintast` for raw identifiers and local module open - syntax for types. - (Chet Murthy, review by Gabriel Scherer) - - - [#13100](https://github.com/ocaml/ocaml/issues/13100) Fix detection of `zstd` when compiling with `musl-gcc` - (David Allsopp, review by Samuel Hym) ---- - - -The release of OCaml 5.2.0 is imminent. -As a final step, we are publishing a release candidate to check that everything is in order before the release in the upcoming week(s). - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -Compared to the second beta, this release contains one small compiler-libs printer fix and one configuration tweak. - -The full change log for OCaml 5.2.0 is available [on -GitHub](https://github.com/ocaml/ocaml/blob/5.2/Changes). A short summary of the -changes since the second beta release is also available below. - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands on opam 2.1 and later: -```bash -opam update -opam switch create 5.2.0~rc1 -``` - -The source code for the release candidate is also directly available on: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.2.0-rc1.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.2/ocaml-5.2.0~rc1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: -```bash -opam update -opam switch create ocaml-variants.5.2.0~rc1+options -``` -where `` is a space-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: -```bash -opam switch create 5.2.0~rc1+flambda+nffa ocaml-variants.5.2.0~rc1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2024-09-20-ocaml-5.3.0.alpha1.md b/data/changelog/ocaml/2024-09-20-ocaml-5.3.0.alpha1.md deleted file mode 100644 index e4680d5648..0000000000 --- a/data/changelog/ocaml/2024-09-20-ocaml-5.3.0.alpha1.md +++ /dev/null @@ -1,64 +0,0 @@ ---- -title: OCaml 5.3.0 - First Alpha -description: First Alpha Release of OCaml 5.3.0 -tags: [ocaml] ---- - -Four months after the release of OCaml 5.2.0, the set of new features for the -future version 5.3.0 of OCaml has been frozen. We are thus happy to announce the -first alpha release for OCaml 5.3.0. - -This alpha version is here to help fellow hackers join us early in our bug -hunting and opam ecosystem fixing fun (see below for the installation -instructions). More information about the whole release process is now available -in the [compiler -repository](https://github.com/ocaml/ocaml/blob/trunk/release-info/introduction.md), -and we will try to propagate this information to ocaml.org shortly. - - -The progresses on stabilising the ecosystem are tracked on the [opam readiness for 5.3.0 meta-issue](https://github.com/ocaml/opam-repository/issues/26596). - -The full release is expected around November, see the [new prospective -calendar](https://github.com/ocaml/ocaml/blob/trunk/release-info/calendar.md) -for more information. - -If you find any bugs, please report them on [OCaml's issue -tracker](https://github.com/ocaml/ocaml/issues). - -If you are interested in the ongoing list of new features and bug fixes, the -updated change log for OCaml 5.3.0 is available -[on GitHub](https://github.com/ocaml/ocaml/blob/5.3/Changes). - - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands -on opam 2.1 and later: - -```bash -opam update -opam switch create 5.3.0~alpha1 -``` - -The source code for the alpha is also available at these addresses: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.3.0-alpha1.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.3/ocaml-5.3.0~alpha1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: - -```bash -opam update -opam switch create ocaml-variants.5.3.0~alpha1+options -``` - -where `option_list` is a space separated list of `ocaml-option-*` packages. For instance, for a flambda and no-flat-float-array switch: - -```bash -opam switch create 5.3.0~alpha1+flambda+nffa ocaml-variants.5.3.0~alpha1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2024-10-31-ocaml-5.3.0.beta1.md b/data/changelog/ocaml/2024-10-31-ocaml-5.3.0.beta1.md deleted file mode 100644 index 048e922ea3..0000000000 --- a/data/changelog/ocaml/2024-10-31-ocaml-5.3.0.beta1.md +++ /dev/null @@ -1,157 +0,0 @@ ---- -title: OCaml 5.3.0 - First Beta -description: First Beta Release of OCaml 5.3.0 -tags: [ocaml] -changelog: | - ### Runtime fixes - - - [#13502](https://github.com/ocaml/ocaml/issues/13502): Fix misindexing related to `Gc.finalise_last` that could prevent - finalisers from being run. - (Nick Roberts, review by Mark Shinwell) - - - [#13402](https://github.com/ocaml/ocaml/issues/13402), [#13512](https://github.com/ocaml/ocaml/issues/13512), [#13549](https://github.com/ocaml/ocaml/issues/13549), [#13553](https://github.com/ocaml/ocaml/issues/13553): Revise bytecode implementation of callbacks - so that it no longer produces dangling registered bytecode fragments. - (Xavier Leroy, report by Jan Midtgaard, analysis by Stephen Dolan, - review by Miod Vallat) - - - [#13520](https://github.com/ocaml/ocaml/issues/13520): Fix compilation of native-code version of systhreads. Bytecode fields - were being included in the thread descriptors. - (David Allsopp, review by SĂ©bastien Hinderer and Miod Vallat) - - ### Typechecker fixes - - - [#13579](https://github.com/ocaml/ocaml/issues/13579), [#13583](https://github.com/ocaml/ocaml/issues/13583): Unsoundness involving non-injective types + gadts - (Jacques Garrigue, report by @v-gb, - review by Richard Eisenberg and Florian Angeletti) - - - [#13388](https://github.com/ocaml/ocaml/issues/13388), [#13540](https://github.com/ocaml/ocaml/issues/13540): raises an error message (and not an internal compiler error) - when two local substitutions are incompatible (for instance `module type - S:=sig end type t:=(module S)`) - (Florian Angeletti, report by Nailen Matschke, review by Gabriel Scherer, and - Leo White) - - ### Compiler flag - - - [#13471](https://github.com/ocaml/ocaml/issues/13471): add `-keywords ` flag to define the list of keywords - recognized by the lexer, for instance `-keywords 5.2` disable the `effect` - keyword. - (Florian Angeletti, review by Gabriel Scherer) - - ### Runtime event library fixes - - - [#13419](https://github.com/ocaml/ocaml/issues/13419): Fix memory bugs in runtime events system. - (B. Szilvasy and Nick Barnes, review by Miod Vallat, Nick Barnes, - Tim McGilchrist, and Gabriel Scherer) - - - [#13407](https://github.com/ocaml/ocaml/issues/13407): Add Runtime_events.EV_EMPTY_MINOR - (Thomas Leonard) - - - [#13522](https://github.com/ocaml/ocaml/issues/13522): Confirm runtime events ring is still active after callback. - (KC Sivaramakrishnan, review by Sadiq Jaffer and Miod Vallat) - - - [#13529](https://github.com/ocaml/ocaml/issues/13529): Do not write to event ring after going out of stw participant set. - (KC Sivaramakrishnan, review by Sadiq Jaffer) - - ### Documentation - - - [#13424](https://github.com/ocaml/ocaml/issues/13424): Fix `Gc.quick_stat` documentation to clarify that returned fields - `live_words`, `live_blocks`, `free_words`, and `fragments` are not zero. - (Jan Midtgaard, review by Damien Doligez and KC Sivaramakrishnan) - - - [#13440](https://github.com/ocaml/ocaml/issues/13440): Update documentation of `Gc.{control,get,set}` to reflect fields - not currently supported on OCaml 5. - (Jan Midtgaard, review by Gabriel Scherer) - - - [#13469](https://github.com/ocaml/ocaml/issues/13469), [#13474](https://github.com/ocaml/ocaml/issues/13474), [#13535](https://github.com/ocaml/ocaml/issues/13535): Document that [Hashtbl.create n] creates a hash table - with a default minimal size, even if [n] is very small or negative. - (Antonin DĂ©cimo, Nick Bares, report by Nikolaus Huber and Jan Midtgaard, - review by Florian Angeletti, Anil Madhavapeddy, Gabriel Scherer, - and Miod Vallat) - - ### Standard library internal fix - - - - [#13543](https://github.com/ocaml/ocaml/issues/13543): Remove some String-Bytes conversion from the stdlib to behave better - with js_of_ocaml - (Hugo Heuzard, review by Gabriel Scherer) - - ### Toplevel fix - - - - [#13263](https://github.com/ocaml/ocaml/issues/13263), [#13560](https://github.com/ocaml/ocaml/issues/13560): fix printing true and false in toplevel and error - messages (no more unexpected \#true) - (Florian Angeletti, report by Samuel Vivien, review by Gabriel Scherer) - - ### Compiler internals - - - [#13391](https://github.com/ocaml/ocaml/issues/13391), [#13551](https://github.com/ocaml/ocaml/issues/13551): fix a printing bug with `-dsource` when using - raw literal inside a locally abstract type constraint - (i.e. `let f: type \#for. ... `) - (Florian Angeletti, report by Nick Roberts, review by Richard Eisenberg) ---- - -One month and half after the release of the first alpha for OCaml 5.3.0, -the release of OCaml 5.3.0 is drawing near. - -The internal API of the compiler libraries has been frozen, and most core -developer tools support (or will support soon) the new version of the compiler. - -We have thus released a first beta version of OCaml 5.3.0 to help you update -your software and libraries ahead of the release (see below for the -installation instructions). More information about the whole release process is -now available in the [compiler repository](https://github.com/ocaml/ocaml/blob/trunk/release-info/introduction.md). - -Compared to the first alpha release, this beta contains a few runtime or -typechecker fixes, a handful of fixes for the runtime event library and other -miscellaneous fixes. - -Exceptionally, this beta release also introduces a new flag `-keywords` for the -compiler. This backward compatibility flag aims to help compiling old code that -are using `effect` as a normal identifier, now that `effect` is a keyword in the -new effect handler syntax. - -The progresses on stabilising the ecosystem are tracked on the [opam readiness for 5.3.0 meta-issue](https://github.com/ocaml/opam-repository/issues/26596). - -The full release is expected in the end of November or beginning of December, -see the [new prospective -calendar](https://github.com/ocaml/ocaml/blob/trunk/release-info/calendar.md) -for more information. - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -If you are interested in full list of features and bug fixes of the new OCaml -version, the updated change log for OCaml 5.3.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.3/Changes). - - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands -on opam 2.1 and later: - -```bash -opam update -opam switch create 5.3.0~beta1 -``` - -The source code for the beta is also available at these addresses: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.3.0-beta1.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.3/ocaml-5.3.0~beta1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: - -```bash -opam update -opam switch create ocaml-variants.5.3.0~beta1+options -``` - -where `option_list` is a space separated list of `ocaml-option-*` packages. For instance, for a flambda and no-flat-float-array switch: - -```bash -opam switch create 5.3.0~beta1+flambda+nffa ocaml-variants.5.3.0~beta1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2024-11-07-5.2.1-rc1.md b/data/changelog/ocaml/2024-11-07-5.2.1-rc1.md deleted file mode 100644 index fdbe2bc203..0000000000 --- a/data/changelog/ocaml/2024-11-07-5.2.1-rc1.md +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: OCaml 5.2.1 - Release Candidate -description: Release Candidate for OCaml 5.2.1 -tags: [ocaml] -changelog: | - ## Changes Since OCaml 5.2.0 - ### Runtime System: - - [#13207](https://github.com/ocaml/ocaml/issues/13207): Be sure to reload the register caching the exception handler in - `caml_c_call` and `caml_c_call_stack_args`, as its value may have been changed - if the OCaml stack is expanded during a callback. - (Miod Vallat, report by Vesa Karvonen, review by Gabriel Scherer and - Xavier Leroy) - - - [#13252](https://github.com/ocaml/ocaml/issues/13252): Rework register assignment in the interpreter code on m68k on Linux, - due to the %a5 register being used by GLIBC. - (Miod Vallat, report by StĂ©phane Glondu, review by Gabriel Scherer and - Xavier Leroy) - - - [#13268](https://github.com/ocaml/ocaml/issues/13268): Fix a call to test in `configure.ac` that was causing errors when - LDFLAGS contains several words. - (StĂ©phane Glondu, review by Miod Vallat) - - - [#13234](https://github.com/ocaml/ocaml/issues/13234), [#13267](https://github.com/ocaml/ocaml/issues/13267): Open runtime events file in read-write mode on ARMel - (ARMv5) systems due to atomic operations limitations on that - platform. - (StĂ©phane Glondu, review by Miod Vallat and Vincent Laviron) - - - [#13188](https://github.com/ocaml/ocaml/issues/13188): fix races in the FFI code coming from the use of `Int_val(...)` - on rooted values inside blocking questions / without the runtime lock. - (Calling `Int_val(...)` on non-rooted immediates is fine, but any - access to rooted values must be done outside blocking sections / - with the runtime lock.) - (Etienne Millon, review by Gabriel Scherer, Jan Midtgaard, Olivier Nicole) - - - [#13318](https://github.com/ocaml/ocaml/issues/13318): Fix regression in GC alarms, and fix them for Flambda. - (Guillaume Munch-Maccagnoni, report by Benjamin Monate, review by - Vincent Laviron and Gabriel Scherer) - - - [#13140](https://github.com/ocaml/ocaml/issues/13140): POWER back-end: fix issue with call to `caml_call_realloc_stack` - from a DLL - (Xavier Leroy, review by Miod Vallat) - - - [#13370](https://github.com/ocaml/ocaml/issues/13370): Fix a low-probability crash when calling `Gc.counters`. - (Demi Marie Obenour, review by Gabriel Scherer) - - - [#13402](https://github.com/ocaml/ocaml/issues/13402), [#13512](https://github.com/ocaml/ocaml/issues/13512), [#13549](https://github.com/ocaml/ocaml/issues/13549), [#13553](https://github.com/ocaml/ocaml/issues/13553): Revise bytecode implementation of callbacks - so that it no longer produces dangling registered bytecode fragments. - (Xavier Leroy, report by Jan Midtgaard, analysis by Stephen Dolan, - review by Miod Vallat) - - - [#13502](https://github.com/ocaml/ocaml/issues/13502): Fix misindexing related to `Gc.finalise_last` that could prevent - finalisers from being run. - (Nick Roberts, review by Mark Shinwell) - - - [#13520](https://github.com/ocaml/ocaml/issues/13520): Fix compilation of native-code version of systhreads. Bytecode fields - were being included in the thread descriptors. - (David Allsopp, review by SĂ©bastien Hinderer and Miod Vallat) ---- - -The release of OCaml version 5.2.1 is imminent. - -OCaml 5.2.1 is a collection of safe but import runtime time bug fixes backported from the 5.3 branch of OCaml. The full list of bug fixes is available above. - -In order to ensure that the future release works as expected, we are planning to test a release candidate during the upcoming week. - -If you find any bugs, please report them here on [GitHub](https://github.com/ocaml/ocaml/issues). - ----- - - -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands on opam 2.1: -``` -opam update -opam switch create 5.2.1~rc1 -``` - - -The source code for the release candidate is available on - -- [GitHub](https://github.com/ocaml/ocaml/archive/5.2.1-rc1.tar.gz) -- [Inria archives](https://caml.inria.fr/pub/distrib/ocaml-5.2/ocaml-5.2.1-rc1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: -```bash -opam update -opam switch create ocaml-variants.5.2.1~rc1+options -``` -where `` is a space-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: -```bash -opam switch create 5.2.1~rc1+flambda+nffa ocaml-variants.5.2.1~rc1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2024-11-28-ocaml-5.3.0-beta2.md b/data/changelog/ocaml/2024-11-28-ocaml-5.3.0-beta2.md deleted file mode 100644 index 5aec1f219a..0000000000 --- a/data/changelog/ocaml/2024-11-28-ocaml-5.3.0-beta2.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -title: OCaml 5.3.0 - Second Beta -description: Second Beta Release of OCaml 5.3.0 -tags: [ocaml] -changelog: | - # Changes Since The First Beta - ## Type system fixes - - - [#13501](https://github.com/ocaml/ocaml/issues/13501): Regression on mutually recursive types caused by [#12180](https://github.com/ocaml/ocaml/issues/12180). - Resuscitate Typedecl.update_type. - (Jacques Garrigue and Takafumi Saikawa, review by Florian Angeletti, Richard - Eisenberg and Gabriel Scherer) - - - [#13495](https://github.com/ocaml/ocaml/issues/13495), [#13514](https://github.com/ocaml/ocaml/issues/13514): Fix typechecker crash while typing objects - (Jacques Garrigue, report by NicolĂĄs Ojeda BĂ€r, review by - Nicolas Ojeda BĂ€r, Gabriel Scherer, Stephen Dolan, Florian Angeletti) - - - [#13598](https://github.com/ocaml/ocaml/issues/13598): Falsely triggered warning 56 [unreachable-case] - This was caused by unproper protection of the retyping function. - (Jacques Garrigue, report by TĂ”ivo LeedjĂ€rv, review by Florian Angeletti) - - ## Configuration fixes - * (*breaking change*) [#12578](https://github.com/ocaml/ocaml/issues/12578), [#12589](https://github.com/ocaml/ocaml/issues/12589), [#13322](https://github.com/ocaml/ocaml/issues/13322), +[#13519](https://github.com/ocaml/ocaml/issues/13519): Use configured CFLAGS and CPPFLAGS *only* - during the build of the compiler itself. Do not use them when - compiling third-party C sources through the compiler. Flags for - compiling third-party C sources can still be specified at configure - time in the COMPILER_{BYTECODE,NATIVE}_{CFLAGS,CPPFLAGS} - configuration variables. - (SĂ©bastien Hinderer, report by William Hu, review by David Allsopp) - - ## C++ header compatibility - - - [#13541](https://github.com/ocaml/ocaml/issues/13541), [#13591](https://github.com/ocaml/ocaml/issues/13591): Fix headers for C++ inclusion. - (Antonin DĂ©cimo, review by Nick Barnes, report by Kate Deplaix) - - - ## Compiler library bug fix - - - [#13603](https://github.com/ocaml/ocaml/issues/13603), [#13604](https://github.com/ocaml/ocaml/issues/13604): fix source printing in the presence of the escaped raw - identifier `\#mod`. - (Florian Angeletti, report by Chris Casinghino, review by Gabriel Scherer) ---- - -One month after the release of the first beta for OCaml 5.3.0, -we are releasing a second and hopefully last beta release for OCaml -5.3.0 . - -The most notable changes for this second beta are probably a handful of type -system bugfixes. In particular, those fixes revert a change of behaviour in the -first beta when pattern matching GADTs with non-injective type parameters. - -We also have a C++ header compatibility fix and the restoration of some -configuration variable in Makefiles for the sake of backward compatibility. - -Overall, the release is converging and we are expecting to have a first release -candidate around the middle of December. The progresses on stabilising the -ecosystem are tracked on the -[opam readiness for 5.3.0 meta-issue](https://github.com/ocaml/opam-repository/issues/26596). - -Meanwhile, the second beta release of OCaml 5.3.0 is here to help you update -your software and libraries ahead of the release (see below for the installation -instructions). - -The full release is expected before the end of December. - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -If you are interested in full list of features and bug fixes of the new OCaml -version, the updated change log for OCaml 5.3.0 is available [on GitHub](https://github.com/ocaml/ocaml/blob/5.3/Changes). - - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands -on opam 2.1 and later: - -```bash -opam update -opam switch create 5.3.0~beta2 -``` - -The source code for the beta is also available at these addresses: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.3.0-beta2.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.3/ocaml-5.3.0~beta2.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: - -```bash -opam update -opam switch create ocaml-variants.5.3.0~beta2+options -``` - -where `option_list` is a space separated list of `ocaml-option-*` packages. For instance, for a flambda and no-flat-float-array switch: - -```bash -opam switch create 5.3.0~beta2+flambda+nffa ocaml-variants.5.3.0~beta2+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/ocaml/2024-12-19-ocaml-5.3.0-rc1.md b/data/changelog/ocaml/2024-12-19-ocaml-5.3.0-rc1.md deleted file mode 100644 index 0545c0420b..0000000000 --- a/data/changelog/ocaml/2024-12-19-ocaml-5.3.0-rc1.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: OCaml 5.3.0 - First Release Candidate -description: First Release Candidate of OCaml 5.3.0 -tags: [ocaml] -changelog: | - ## Changes since the second beta - - ### Type system - - - [#13690](https://github.com/ocaml/ocaml/issues/13690): some type expressions were incorrectly not generalized (because they - were assigned to the wrong level pool) - - ### Documentation - - - [#13666](https://github.com/ocaml/ocaml/issues/13666): Rewrite parts of the example code around nested lists in Chapter 6 - (Polymorphism and its limitations -> Polymorphic recursion) giving the - "depth" function [in the non-polymorphically-recursive part of the example] - a much more sensible behavior; also fix a typo and some formatting. - (Frank Steffahn, review by Florian Angeletti) - - ### Compiler user-interface and warnings: - - - [#12084](https://github.com/ocaml/ocaml/issues/12084), +[#13669](https://github.com/ocaml/ocaml/issues/13669), +[#13673](https://github.com/ocaml/ocaml/issues/13673): Check link order when creating archive and when using - ocamlopt. ---- - - -The release of OCaml 5.3.0 is imminent. -As a final step, we are publishing a release candidate to check that everything is in order before the release in the upcoming week(s). - -If you find any bugs, please report them on [OCaml's issue tracker](https://github.com/ocaml/ocaml/issues). - -Compared to the second beta, this release candidate contains a regression fix in the type system (some type expressions were not generalized when they ought to be), one fix for the new check for dependency order at link time, and a manual update. - -The full change log for OCaml 5.3.0 is available [on -GitHub](https://github.com/ocaml/ocaml/blob/5.3/Changes). A short summary of the -changes since the second beta release is also available below. - ---- -## Installation Instructions - -The base compiler can be installed as an opam switch with the following commands on opam 2.1 and later: -```bash -opam update -opam switch create 5.3.0~rc1 -``` - -The source code for the release candidate is also directly available on: - -* [GitHub](https://github.com/ocaml/ocaml/archive/5.3.0-rc1.tar.gz) -* [OCaml archives at Inria](https://caml.inria.fr/pub/distrib/ocaml-5.3/ocaml-5.3.0~rc1.tar.gz) - -### Fine-Tuned Compiler Configuration - -If you want to tweak the configuration of the compiler, you can switch to the option variant with: -```bash -opam update -opam switch create ocaml-variants.5.3.0~rc1+options -``` -where `` is a space-separated list of `ocaml-option-*` packages. For instance, for a `flambda` and `no-flat-float-array` switch: -```bash -opam switch create 5.3.0~rc1+flambda+nffa ocaml-variants.5.3.0~rc1+options ocaml-option-flambda ocaml-option-no-flat-float-array -``` - -All available options can be listed with `opam search ocaml-option`. diff --git a/data/changelog/opam-publish/2018-04-12-opam-publish-2.0.0~beta.md b/data/changelog/opam-publish/2018-04-12-opam-publish-2.0.0~beta.md deleted file mode 100644 index 530c51180a..0000000000 --- a/data/changelog/opam-publish/2018-04-12-opam-publish-2.0.0~beta.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -title: Opam-publish 2.0.0~beta -tags: [opam-publish, platform] -changelog: | - * Now based on opam 2 libs and intended for publications in the 2.0 format - (inclusive opam files, etc.) - * Bumped version number to avoid confusion with opam versions - * Removed the two-step operation ("prepare" and "publish"). A single invocation - does all - * Removed looking up current opam pinnings and repositories for metadata, which - was too complex and counter-intuitive. Now opam files are looked up only in - the specified directories or archives - * Multiple publications without added complexity - * Simplified command-line: URLs, directories, opam files, package names can be - specified directly on the command-line, and repeated for multiple - publications - * Allow providing the auth token directly ---- - diff --git a/data/changelog/opam/2013-09-20-opam-1-1-0-beta.md b/data/changelog/opam/2013-09-20-opam-1-1-0-beta.md deleted file mode 100644 index e72de6c1a5..0000000000 --- a/data/changelog/opam/2013-09-20-opam-1-1-0-beta.md +++ /dev/null @@ -1,110 +0,0 @@ ---- -title: "OPAM 1.1.0 beta released" -authors: [ "Thomas Gazagnaire" ] -description: "Release announcement for OPAM 1.1.0~beta" -tags: [opam, platform] -changelog: | - * Automatic backup before any operation which might alter the list of installed packages - * Support for arbitrary sub-directories for metadata repositories - * Lots of colors - * New option `opam update -u` equivalent to `opam update && opam upgrade --yes` - * New `opam-admin` tool, bundling the features of `opam-mk-repo` and - `opam-repo-check` + new 'opam-admin stats' tool - * New `available`: field in opam files, superseding `ocaml-version` and `os` fields - * Package names specified on the command-line are now understood - case-insensitively (#705) - * Fixed parsing of malformed opam files (#696) - * Fixed recompilation of a package when uninstalling its optional dependencies (#692) - * Added conditional post-messages support, to help users when a package fails to - install for a known reason (#662) - * Rewrite the code which updates pin et dev packages to be quicker and more reliable - * Add {opam,url,desc,files/} overlay for all packages - * `opam config env` now detects the current shell and outputs a sensible default if - no override is provided. - * Improve `opam pin` stability and start display information about dev revisions - * Add a new `man` field in `.install` files - * Support hierarchical installation in `.install` files - * Add a new `stublibs` field in `.install` files - * OPAM works even when the current directory has been deleted - * speed-up invocation of `opam config var VARIABLE` when variable is simple - (eg. `prefix`, `lib`, ...) - * `opam list` now display only the installed packages. Use `opam list -a` to get - the previous behavior. - * Inverse the depext tag selection (useful for `ocamlot`) - * Add a `--sexp` option to `opam config env` to load the configuration under emacs - * Purge `~/.opam/log` on each invocation of OPAM - * System compiler with versions such as `version+patches` are now handled as if this - was simply `version` - * New `OpamVCS` functor to generate OPAM backends - * More efficient `opam update` - * Switch license to LGPL with linking exception - * `opam search` now also searches through the tags - * minor API changes for `API.list` and `API.SWITCH.list` - * Improve the syntax of filters - * Add a `messages` field - * Add a `--jobs` command line option and add `%{jobs}%` to be used in OPAM files - * Various improvements in the solver heuristics - * By default, turn-on checking of certificates for downloaded dependency archives - * Check the md5sum of downloaded archives when compiling OPAM - * Improved `opam info` command (more information, non-zero error code when no patterns match) - * Display OS and OPAM version on internal errors to ease error reporting - * Fix `opam reinstall` when reinstalling a package wich is a dependency of installed packages - * Export and read `OPAMSWITCH` to be able to call OPAM in different switches - * `opam-client` can now be used in a toplevel - * `-n` now means `--no-setup` and not `--no-checksums` anymore - * Fix support of FreeBSD - * Fix installation of local compilers with local paths endings with `../ocaml/` - * Fix the contents of `~/.opam/opam-init/variable.sh` after a switch ---- - -We are very happy to announce the **beta release** of OPAM version 1.1.0! - -OPAM is a source-based package manager for OCaml. It supports multiple -simultaneous compiler installations, flexible package constraints, and -a Git-friendly development workflow which. OPAM is edited and -maintained by OCamlPro, with continuous support from OCamlLabs and the -community at large (including its main industrial users such as -Jane-Street and Citrix). - -Since its first official release [last March][1], we have fixed many -bugs and added lots of [new features and stability improvements][2]. New -features go from more metadata to the package and compiler -descriptions, to improved package pin workflow, through a much faster -update algorithm. The full changeset is included below. - -We are also delighted to see the growing number of contributions from -the community to both OPAM itself (35 contributors) and to its -metadata repository (100+ contributors, 500+ unique packages, 1500+ -packages). It is really great to also see alternative metadata -repositories appearing in the wild (see for instance the repositories -for [Android][3], [Windows][4] and [so on][5]). To be sure that the -community efforts will continue to benefit to everyone and to -underline our committment to OPAM, we are rehousing it at -`https://opam.ocaml.org` and switching the license to CC0 (see [issue #955][6], -where 85 people are commenting on the thread). - -The binary installer has been updated for OSX and x86_64: -- http://www.ocamlpro.com/pub/opam_installer.sh - -You can also get the new version either from Anil's unstable PPA: - add-apt-repository ppa:avsm/ppa-testing - apt-get update - sudo apt-get install opam - -or build it from sources at : -- http://www.ocamlpro.com/pub/opam-full-1.1.0-beta.tar.gz -- https://github.com/OCamlPro/opam/releases/tag/1.1.0-beta - -NOTE: If you upgrade from OPAM 1.0, the first time you will run the -new `opam` binary it will upgrade its internal state in an incompatible -way: THIS PROCESS CANNOT BE REVERTED. We have tried hard to make this -process fault-resistant, but failures might happen. In case you have -precious data in your `~/.opam` folder, it is advised to **backup that -folder before you upgrade to 1.1**. - -[1]: http://www.ocamlpro.com/blog/2013/03/14/opam-1.0.0.html -[2]: https://github.com/OCamlPro/opam/issues?milestone=17&page=1&state=closed -[3]: https://github.com/vouillon/opam-android-repository -[4]: https://github.com/vouillon/opam-windows-repository -[5]: https://github.com/search?q=opam-repo&type=Repositories&ref=searchresults -[6]: https://github.com/OCamlPro/opam-repository/issues/955 diff --git a/data/changelog/opam/2013-10-14-opam-1-1-0-release-candidate.md b/data/changelog/opam/2013-10-14-opam-1-1-0-release-candidate.md deleted file mode 100644 index 9ae51b14f6..0000000000 --- a/data/changelog/opam/2013-10-14-opam-1-1-0-release-candidate.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: "OPAM 1.1.0 release candidate out" -authors: [ "Louis Gesbert" ] -description: "Release announcement for OPAM 1.1.0~rc1" -tags: [opam, platform] -changelog: | - Too many to list here, see - [https://raw.github.com/OCamlPro/opam/1.1.0-RC/CHANGES](https://raw.github.com/OCamlPro/opam/1.1.0-RC/CHANGES) - - For packagers, some new fields have appeared in the OPAM description format: - - `depexts` provides facilities for dealing with system (non ocaml) - dependencies - - `messages`, `post-messages` can be used to notify the user or help her troubleshoot at package installation. - - `available` supersedes `ocaml-version` and `os` constraints, and can contain - more expressive formulas ---- - -**OPAM 1.1.0 is ready**, and we are shipping a release candidate for -packagers and all interested to try it out. - -This version features several bug-fixes over the September beta release, and -quite a few stability and usability improvements. Thanks to all beta-testers -who have taken the time to file reports, and helped a lot tackling the -remaining issues. - -## Repository change to opam.ocaml.org - -This release is synchronized with the migration of the main repository from -ocamlpro.com to ocaml.org. A redirection has been put in place, so that all -up-to-date installation of OPAM should be redirected seamlessly. -OPAM 1.0 instances will stay on the old repository, so that they won't be -broken by incompatible package updates. - -We are very happy to see the impressive amount of contributions to the OPAM -repository, and this change, together with the licensing of all metadata under -CC0 (almost pubic domain), guarantees that these efforts belong to the -community. - -# If you are upgrading from 1.0 - -The internal state will need to be upgraded at the first run of OPAM 1.1.0. -THIS PROCESS CANNOT BE REVERTED. We have tried hard to make it fault- -resistant, but failures might happen. In case you have precious data in your -`~/.opam folder`, it is advised to **backup that folder before you upgrade to 1.1.0**. - -## Installing - -Using the binary installer: -- download and run http://www.ocamlpro.com/pub/opam_installer.sh - -You can also get the new version either from Anil's unstable PPA: - add-apt-repository ppa:avsm/ppa-testing - apt-get update - sudo apt-get install opam - -or build it from sources at : -- http://www.ocamlpro.com/pub/opam-full-1.1.0.tar.gz -- https://github.com/OCamlPro/opam/releases/tag/1.1.0-RC diff --git a/data/changelog/opam/2014-08-14-opam-1-2-0-beta4.md b/data/changelog/opam/2014-08-14-opam-1-2-0-beta4.md deleted file mode 100644 index 974ab58106..0000000000 --- a/data/changelog/opam/2014-08-14-opam-1-2-0-beta4.md +++ /dev/null @@ -1,290 +0,0 @@ ---- -title: "OPAM 1.2.0 public beta released" -authors: [ "OCaml Platform Team" ] -description: "Release announcement for OPAM 1.2.0~beta" -tags: [opam, platform] ---- - -It has only been 18 months since the first release of OPAM, but it is already -difficult to remember a time when we did OCaml development without it. OPAM -has helped bring together much of the open-source code in the OCaml community -under a single umbrella, making it easier to discover, depend on, and maintain -OCaml applications and libraries. We have seen steady growth in the number -of new packages, updates to existing code, and a diverse group of contributors. - - -OPAM has turned out to be more than just another package manager. It is also -increasingly central to the demanding workflow of industrial OCaml development, -since it supports multiple simultaneous (patched) compiler installations, -sophisticated package version constraints that ensure statically-typed code can -be recompiled without conflict, and a distributed workflow that integrates -seamlessly with Git, Mercurial or Darcs version control. OPAM tracks multiple -revisions of a single package, thereby letting packages rely on older -interfaces if they need to for long-term support. It also supports multiple -package repositories, letting users blend the global stable package set with -their internal revisions, or building completely isolated package universes for -closed-source products. - -Since its initial release, we have been learning from the extensive feedback -from our users about how they use these features as part of their day-to-day -workflows. Larger projects like [XenAPI][xapi], the [Ocsigen][] web suite, -and the [Mirage OS][mir-www] publish OPAM [remotes][opam-remote] that build -their particular software suites. -Complex applications such as the [Pfff][] static analysis tool and [Hack][] -language from Facebook, the [Frenetic][] SDN language and the [Arakoon][] -distributed key store have all appeared alongside these libraries. -[Jane Street](https://www.janestreet.com) pushes regular releases of their -production [Core/Async](http://janestreet.github.io/) suite every couple -of weeks. - -One pleasant side-effect of the growing package database has been the -contribution of tools from the community that make the day-to-day use of OCaml -easier. These include the [utop][] interactive toplevel, the [IOCaml][] -browser notebook, and the [Merlin][] IDE extension. While these tools are an -essential first step, there's still some distance to go to make the OCaml -development experience feel fully integrated and polished. - -Today, we are kicking off the next phase of evolution of OPAM and starting the -journey towards building an *OCaml Platform* that combines the OCaml compiler -toolchain with a coherent workflow for build, documentation, testing and IDE -integration. As always with OPAM, this effort has been a collaborative effort, -coordinated by the [OCaml Labs][ocl-www] group in Cambridge and -[OCamlPro][ocp-www] in France. -The OCaml Platform builds heavily on OPAM, since it forms the substrate that -pulls together the tools and facilitates a consistent development workflow. -We've therefore created this blog on [opam.ocaml.org][] to chart its progress, -announce major milestones, and eventually become a community repository of all -significant activity. - -Major points: - -* **OPAM 1.2 beta available**: - Firstly, we're announcing **the availability of the OPAM 1.2 beta**, - which includes a number of new features, hundreds of bug fixes, and pretty - new colours in the CLI. We really need your feedback to ensure a polished - release, so please do read the release notes below. - -* In the coming weeks, we will provide an overview of what the OCaml Platform is - (and is not), and describe an example workflow that the Platform can enable. - -* **Feedback**: If you have questions or comments as you read these posts, - then please do join the [platform@lists.ocaml.org][platform-list] and make - them known to us. - - -[xapi]: http://wiki.xen.org/wiki/XAPI -[Ocsigen]: http://ocsigen.org -[mir-www]: http://openmirage.org -[opam-remote]: https://opam.ocaml.org/doc/Advanced_Usage.html#Handlingofrepositories -[bunzli-remote]: http://erratique.ch/software/opam/unreleased/ -[mottl-sw]: http://www.ocaml.info/software.html -[Pfff]: https://github.com/facebook/pfff/wiki/Main -[Hack]: https://code.facebook.com/posts/264544830379293/hack-a-new-programming-language-for-hhvm/ -[Frenetic]: https://github.com/frenetic-lang/frenetic -[Arakoon]: http://arakoon.org -[utop]: https://github.com/diml/utop -[IOCaml]: https://github.com/andrewray/iocaml -[Merlin]: https://github.com/the-lambda-church/merlin -[ocl-www]: http://www.cl.cam.ac.uk/projects/ocamllabs/ -[ocp-www]: http://www.ocamlpro.com -[opam.ocaml.org]: https://opam.ocaml.org -[platform-list]: https://lists.ocaml.org/listinfo/platform - - -## Releasing the OPAM 1.2 beta4 - -We are proud to announce the latest beta of OPAM 1.2. It comes packed with -[new features][gh-features-12], stability and usability improvements. Here the -highlights. - -### Binary RPMs and DEBs! - -We now have binary packages available for Fedora 19/20, CentOS 6/7, RHEL7, -Debian Wheezy and Ubuntu! You can see the full set at the [OpenSUSE Builder][suse] site and -[download instructions][suse-dl] for your particular platform. - -An OPAM binary installation doesn't need OCaml to be installed on the system, so you -can initialize a fresh, modern version of OCaml on older systems without needing it -to be packaged there. -On CentOS 6 for example: - -``` -cd /etc/yum.repos.d/ -wget http://download.opensuse.org/repositories/home:ocaml/CentOS_6/home:ocaml.repo -yum install opam -opam init --comp=4.01.0 -``` - -[suse]: https://build.opensuse.org/package/show/home:ocaml/opam# -[suse-dl]: http://software.opensuse.org/download.html?project=home:ocaml&package=opam - - -### Simpler user workflow - -For this version, we focused on improving the user interface and workflow. OPAM -is a complex piece of software that needs to handle complex development -situations. This implies things might go wrong, which is precisely when good -support and error messages are essential. OPAM 1.2 has much improved stability -and error handling: fewer errors and more helpful messages plus better state backups -when they happen. - -In particular, a clear and meaningful explanation is extracted from the solver -whenever you are attempting an impossible action (unavailable package, -conflicts, etc.): - -``` -$ opam install mirage-www=0.3.0 -The following dependencies couldn't be met: - - mirage-www -> cstruct < 0.6.0 - - mirage-www -> mirage-fs >= 0.4.0 -> cstruct >= 0.6.0 -Your request can't be satisfied: - - Conflicting version constraints for cstruct -``` - -This sets OPAM ahead of many other package managers in terms of -user-friendliness. Since this is made possible using the tools from -[irill][irill] (which are also used for [Debian][debian-weather]), we hope that -this work will find its way into other package managers. -The extra analyses in the package solver interface are used to improve the -health of the central package repository, via the [OPAM Weather service][ows]. - -And in case stuff does go wrong, we added the `opam upgrade --fixup` -command that will get you back to the closest clean state. - -The command-line interface is also more detailed and convenient, polishing and -documenting the rough areas. Just run `opam --help` to see the -manual page for the below features. - -* More expressive queries based on dependencies. - - ``` - $ opam list --depends-on cow --rec - # Available packages recursively depending on cow.0.10.0 for 4.01.0: - cowabloga 0.0.7 Simple static blogging support. - iocaml 0.4.4 A webserver for iocaml-kernel and iocamljs-kernel. - mirage-www 1.2.0 Mirage website (written in Mirage) - opam2web 1.3.1 (pinned) A tool to generate a website from an OPAM repository - opium 0.9.1 Sinatra like web toolkit based on Async + Cohttp - stone 0.3.2 Simple static website generator, useful for a portfolio or documentation pages - ``` - -* Check on existing `opam` files to base new packages from. - - ``` - $ opam show cow --raw - opam-version: "1" - name: "cow" - version: "0.10.0" - [...] - ``` - -* Clone the source code for any OPAM package to modify or browse the interfaces. - - ``` - $ opam source cow - Downloading archive of cow.0.10.0... - [...] - $ cd cow.0.10.0 - ``` - -We've also improved the general speed of the tool to cope with the much bigger -size of the central repository, which will be of importance for people building -on low-power ARM machines, and added a mechanism that will let you install -newer releases of OPAM directly from OPAM if you choose so. - - -### Yet more control for the packagers - -Packaging new libraries has been made as straight-forward as possible. -Here is a quick overview, you may also want to check the [OPAM 1.2 pinning][opam-1-2-pin] post. - -``` -opam pin add -``` - -will generate a new package on the fly by detecting the presence of an `opam` -file within the source repository itself. We'll do a followup post next week -with more details of this extended `opam pin` workflow. - -The package description format has also been extended with some new fields: - -* `bug-reports:` and `dev-repo:` add useful URLs -* `install:` allows build and install commands to be split, -* `flags:` is an entry point for several extensions that can affect your package. - -Packagers can limit dependencies in scope by adding one -of the keywords `build`, `test` or `doc` in front of their constraints: - -```opam -depends: [ - "ocamlfind" {build & >= 1.4.0} - "ounit" {test} -] -``` - -Here you don't specifically require `ocamlfind` at runtime, so changing it -won't trigger recompilation of your package. `ounit` is marked as only required -for the package's `build-test:` target, _i.e._ when installing with -`opam install -t`. This will reduce the amount of (re)compilation required -in day-to-day use. - -We've also made optional dependencies more consistent by _removing_ version -constraints from the `depopts:` field: their meaning was [unclear][opam200] and confusing. -The `conflicts` field is used to indicate versions of the optional dependencies -that are incompatible with your package to remove all ambiguity: - -```opam -depopts: [ "async" {>= "109.15.00"} & "async_ssl" {>= "111.06.00"} ] -``` - -becomes: - -```opam -depopts: [ "async" "async_ssl" ] -conflicts: [ "async" {< "109.15.00"} - "async_ssl" {< "111.06.00"} ] -``` - -There is an [upcoming `features` field][features-pr] that will give more -flexibility in a clearer and consistent way for such complex cases. - - -### Easier to package and install - -Efforts were made on the build of OPAM itself as well to make it as easy as possible -to compile, bootstrap or install. There is no more dependency on camlp4 (which has -been moved out of the core distribution in OCaml 4.02.0), and the build process -is more conventional (get the source, run `./configure`, `make lib-ext` to get the few -internal dependencies, `make` and `make install`). Packagers can use `make cold` -to build OPAM with a locally compiled version of OCaml (useful for platforms where -it isn't packaged), and also use `make download-ext` to store all the external archives -within the source tree (for automated builds which forbid external net access). - -The [whole documentation][opam12-doc] has been rewritten as well, to be better focused and -easier to browse. Please leave any feedback or changes on the documentation on the -[issue tracker](https://github.com/ocaml/opam/issues). - - -### Try it out ! - -The [public beta of OPAM 1.2][opam12-beta] is just out. You're welcome to give it a try and -give us feedback before we roll out the release! - -We'd be most interested on feedback on how easily you can work with the new -pinning features, on how the new metadata works for you... and on any errors you -may trigger that aren't followed by informative messages or clean behaviour. - -If you are hosting a repository, the [administration scripts][opam-admin-scripts] may help you quickly update all your packages to -benefit from the new features. - - -[opam12-beta]: https://github.com/ocaml/opam/releases/tag/1.2.0-beta4 "Opam 1.2-beta4 release" -[gh-features-12]: https://github.com/ocaml/opam/issues?q=label%3A%22Feature+Wish%22+milestone%3A1.2+is%3Aclosed "Features added in 1.2 from the tracker on Github" -[irill]: http://www.irill.org "IRILL" -[debian-weather]: https://qa.debian.org/dose/debcheck/testing_main/ "Debian Weather Service" -[ows]: http://ows.irill.org "The OPAM Weather Service" -[features-pr]: https://github.com/ocaml/opam/pull/1325 "PR for preliminary 'features' feature on Github" -[opam12-doc]: https://opam.ocaml.org/doc "Preview of documentation for OPAM 1.2" -[opam-admin-scripts]: https://github.com/ocaml/opam/tree/master/admin-scripts "Opam admin scripts directory on Github" -[opam200]: https://github.com/ocaml/opam/issues/200 -[opam-1-2-pin]: ../opam-1-2-pin "Blog post on OPAM Pin" diff --git a/data/changelog/opam/2016-09-20-opam-2-0-preview.md b/data/changelog/opam/2016-09-20-opam-2-0-preview.md deleted file mode 100644 index c79d3c1375..0000000000 --- a/data/changelog/opam/2016-09-20-opam-2-0-preview.md +++ /dev/null @@ -1,171 +0,0 @@ ---- -title: "opam 2.0 preview release!" -authors: [ "Louis Gesbert" ] -description: "Release announcement for opam 2.0.0~preview" -tags: [opam, platform] ---- - - - -We are pleased to announce a preview release for opam 2.0, with over 700 -patches since [1.2.2](https://opam.ocaml.org/blog/opam-1-2-2-release/). Version -[2.0~alpha4](https://github.com/ocaml/opam/releases/2.0-alpha4) has just been -released, and is ready to be more widely tested. - -This version brings many new features and changes, the most notable one being -that OCaml compiler packages are no longer special entities, and are replaced -by standard package definition files. This in turn means that opam users have -more flexibility in how switches are managed, including for managing non-OCaml -environments such as [Coq](https://web.archive.org/web/20170410035834/http://coq.io/opam) using the same familiar tools. - -## A Few Highlights - -This is just a sample, see the full -[changelog](https://github.com/ocaml/opam/blob/2.0-alpha4/CHANGES) for more: - -- **Sandboxed builds:** Command wrappers can be configured to, for example, - restrict permissions of the build and install processes using Linux - namespaces, or run the builds within Docker containers. - -- **Compilers as packages:** This brings many advantages for opam workflows, - such as being able to upgrade the compiler in a given switch, better tooling for - local compilers, and the possibility to define `coq` as a compiler or even - use opam as a generic shell scripting engine with dependency tracking. - -- **Local switches:** Create switches within your projects for easier - management. Simply run `opam switch create ` to get - started. - -- **Inplace build:** Use opam to build directly from - your source directory. Ensure the package is pinned locally then run `opam - install --inplace-build`. - -- **Automatic file tracking:**: opam now tracks the files installed by packages - and is able to cleanly remove them when no existing files were modified. - The `remove:` field is now optional as a result. - -- **Configuration file:** This can be used to direct choices at `opam init` - automatically (e.g. specific repositories, wrappers, variables, fetch - commands, or the external solver). This can be used to override all of opam's - OCaml-related settings. - -- **Simpler library:** the OCaml API is completely rewritten and should make it - much easier to write external tools and plugins. Existing tools will need to be - ported. - -- **Better error mitigation:** Through clever ordering of the shell actions and - separation of `build` and `install`, most build failures can keep your current - installation intact, not resulting in removed packages anymore. - -## Roll out - -You are very welcome to try out the alpha, and report any issues. The repository -at `opam.ocaml.org` will remain in 1.2 format (with a 2.0 mirror at -`opam.ocaml.org/2.0~dev` in sync) until after the release is out, which means -the extensions can not be used there yet, but you are welcome to test on local -or custom repositories, or package pinnings. The reverse translation (2.0 to -1.2) is planned, to keep supporting 1.2 installations after that date. - -The documentation for the new version is available at -https://opam.ocaml.org/doc/2.0/. This is still work in progress, so please do ask -if anything is unclear. - -## Interface changes - -Commands `opam switch` and `opam list` have been rehauled for more consistency -and flexibility: the former won't implicitly create new switches unless called -with the `create` subcommand, and `opam list` now allows to combine filters and -finely specify the output format. They may not be fully backwards compatible, so -please check your scripts. - -Most other commands have also seen fixes or improvements. For example, opam -doesn't forget about your set of installed packages on the first error, and the -new `opam install --restore` can be used to reinstall your selection after a -failed upgrade. - -## Repository changes - -While users of opam 1.2 should feel at home with the changes, the 2.0 repository -and package formats are not compatible. Indeed, the move of the compilers to -standard packages implies some conversions, and updates to the relationships -between packages and their compiler. For example, package constraints like - - available: [ ocaml-version >= "4.02" ] - -are now written as normal package dependencies: - - depends: [ "ocaml" {>= "4.02"} ] - -To make the transition easier, -- upgrade of a custom repository is simply a matter of running `opam-admin - upgrade-format` at its root; -- the official repository at `opam.ocaml.org` already has a 2.0 mirror, to which - you will be automatically redirected; -- packages definition are automatically converted when you pin a package. - -Note that the `ocaml` package on the official repository is actually a wrapper -that depends on one of `ocaml-base-compiler`, `ocaml-system` or -`ocaml-variants`, which contain the different flavours of the actual compiler. -It is expected that it may only get picked up when requested by package -dependencies. - -## Package format changes - -The opam package definition format is very similar to before, but there are -quite a few extensions and some changes: - -- it is now mandatory to separate the `build:` and `install:` steps (this allows - tracking of installed files, better error recovery, and some optional security - features); -- the url and description can now optionally be included in the `opam` file - using the section `url {}` and fields `synopsis:` and `description:`; -- it is now possible to have dependencies toggled by globally-defined opam - variables (_e.g._ for a dependency needed on some OS only), or even rely on - the package information (_e.g._ have a dependency at the same version); -- the new `setenv:` field allows packages to export updates to environment - variables; -- custom fields `x-foo:` can be used for extensions and external tools; -- allow `"""` delimiters around unescaped strings -- `&` is now parsed with higher priority than `|` -- field `ocaml-version:` can no longer be used -- the `remove:` field should not be used anymore for simple cases (just removing - files) - -## Let's go then -- how to try it ? - -First, be aware that you'll be prompted to update your `~/.opam` to 2.0 format -before anything else, so if you value it, make a backup. Or just export -`OPAMROOT` to test the alpha on a temporary opam root. - -Packages for opam 2.0 are already in the opam repository, so if you have a -working opam installation of opam (at least 1.2.1), you can bootstrap as easily -as: - - opam install opam-devel - -This doesn't install the new opam to your PATH within the current opam root for -obvious reasons, so you can manually install it as e.g. "opam2" using: - - sudo cp $(opam config var "opam-devel:lib")/opam /usr/local/bin/opam2 - -You can otherwise install as usual: -- Using pre-built binaries (available for OSX and Linux x86, x86_64, armhf) and - our install script: - - wget https://raw.github.com/ocaml/opam/2.0-alpha4-devel/shell/opam_installer.sh -O - | sh -s /usr/local/bin - - Equivalently, - [pick your version](https://github.com/ocaml/opam/releases/2.0-alpha4) and - download it to your PATH; - -- Building from our inclusive source tarball: - [download here](https://github.com/ocaml/opam/releases/download/2.0-alpha4/opam-full-2.0-alpha4.tar.gz) - and build using `./configure && make lib-ext && make && make install` if you - have OCaml >= 4.01 already available, `make cold && make install` otherwise; - -- Or from [source](https://github.com/ocaml/opam/tree/2.0-alpha4), following the - included instructions from the README. Some files have been moved around, so - if your build fails after you updated an existing git clone, try to clean it - up (`git clean -fdx`). diff --git a/data/changelog/opam/2017-02-09-opam-2-0-beta.md b/data/changelog/opam/2017-02-09-opam-2-0-beta.md deleted file mode 100644 index 319e17e414..0000000000 --- a/data/changelog/opam/2017-02-09-opam-2-0-beta.md +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: "opam 2.0 Beta is out!" -authors: [ "Louis Gesbert" ] -description: "Release announcement for opam 2.0.0~beta" -tags: [opam, platform] ---- - -> UPDATE (2017-02-14): A beta2 is online, which fixes issues and performance of -> the `opam build` command. Get the new -> [binaries](https://github.com/ocaml/opam/releases/tag/2.0.0-beta2), or -> recompile the [opam-devel](https://opam.ocaml.org/packages/opam-devel/) package -> and replace the previous binary. - -We are pleased to announce that the beta release of opam 2.0 is now live! You -can try it already, bootstrapping from a working 1.2 opam installation, with: - -``` -opam update; opam install opam-devel -``` - -With about a thousand patches since the last stable release, we took the time to -gather feedback after [our last announcement](../opam-2-0-preview) and -implemented a couple of additional, most-wanted features: - -- An `opam build` command that, from the root of a source tree containing one - or more package definitions, can automatically handle initialisation and - building of the sources in a local switch. -- Support for - [repository signing](https://github.com/hannesm/conex-paper/raw/master/paper.pdf) - through the external [Conex](https://github.com/hannesm/conex) tool, being - developed in parallel. - -There are many more features, like the new `opam clean` and `opam admin` -commands, a new archive caching system, etc., but we'll let you check the full -[changelog](https://github.com/ocaml/opam/blob/2.0.0-beta/CHANGES). - -We also improved still on the -[already announced features](../opam-2-0-preview/#Afewhighlights), including -compilers as packages, local switches, per-switch repository configuration, -package file tracking, etc. - -The updated documentation is at https://opam.ocaml.org/doc/2.0/. If you are -developing in opam-related tools, you may also want to browse the -[new APIs](https://opam.ocaml.org/doc/2.0/api/index.html). - - -## Try it out - -Please try out the beta, and report any issues or missing features. You can: - -- Build it from source in opam, as shown above (`opam install opam-devel`) -- Use the [pre-built binaries](https://github.com/ocaml/opam/releases/tag/2.0.0-beta). -- Building from the source tarball: - [download here](https://github.com/ocaml/opam/releases/download/2.0.0-beta/opam-full-2.0.0-beta.tar.gz) - and build using `./configure && make lib-ext && make` if you have OCaml >= - 4.01 already available; `make cold` otherwise -- Or directly from the - [git tree](https://github.com/ocaml/opam/tree/2.0.0-beta), following the - instructions included in the README. Some files have been moved around, so if - your build fails after you updated an existing git clone, try to clean it up - (`git clean -dx`). - -Some users have been using the alpha for the past months without problems, but -you may want to keep your opam 1.2 installation intact until the release is out. -An easy way to do this is with an alias: - -``` -alias opam2="OPAMROOT=~/.opam2 path/to/opam-2-binary" -``` - - -## Changes to be aware of - -### Command-line interface - -- `opam switch create` is now needed to create new switches, and `opam switch` - is now much more expressive -- `opam list` is also much more expressive, but be aware that the output may - have changed if you used it in scripts -- new commands: - - `opam build`: setup and build a local source tree - - `opam clean`: various cleanup operations (wiping caches, etc.) - - `opam admin`: manage software repositories, including upgrading them to - opam 2.0 format (replaces the `opam-admin` tool) - - `opam env`, `opam exec`, `opam var`: shortcuts for the `opam config` subcommands -- `opam repository add` will now setup the new repository for the current switch - only, unless you specify `--all` -- Some flags, like `--test`, now apply to the packages listed on the - command-line only. For example, `opam install lwt --test` will build and - install lwt and all its dependencies, but only build/run the tests of the - `lwt` package. Test-dependencies of its dependencies are also ignored -- The new `opam install --soft-request` is useful for batch runs, it will - maximise the installed packages among the requested ones, but won't fail if - all can't be installed - -As before, opam is self-documenting, so be sure to check `opam COMMAND --help` -first when in doubt. The bash completion scripts have also been thoroughly -improved, and may help navigating the new options. - - -### Metadata - -There are both a few changes (extensions, mostly) to the package description -format, and more drastic changes to the repository format, mainly related to -translating the old compiler definitions into packages. - -- opam will automatically update, internally, definitions of pinned packages as - well as repositories in the 1.2 format -- however, it is faster to use repositories in the 2.0 format directly. To that - end, please use the `opam admin upgrade` command on your repositories. The - `--mirror` option will create a 2.0 mirror and put in place proper - redirections, allowing your original repository to retain the old format - -The official opam repository at https://opam.ocaml.org remains in 1.2 format for -now, but has a live-updated 2.0 mirror to which you should be automatically -redirected. It cannot yet accept package definitions in 2.0 format. - - -#### Package format - -- Any `available:` constraints based on the OCaml compiler version should be - rewritten into dependencies to the `ocaml` package -- Separate `build:` and `install:` instructions are now required -- It is now preferred to include the old `url` and `descr` files (containing the - archive URL and package description) in the `opam` file itself: (see the new - [`synopsis:`](https://opam.ocaml.org/doc/2.0/Manual.html#opamfield-synopsis) - and - [`description:`](https://opam.ocaml.org/doc/2.0/Manual.html#opamfield-description) - fields, and the - [url {}](https://opam.ocaml.org/doc/2.0/Manual.html#opamsection-url) file - section) -- Building tests and documentation should now be part of the main `build:` - instructions, using the `{test}` and `{doc}` filters. The `build-test:` and - `build-doc:` fields are still supported. -- It is now possible to use opam variables within dependencies, for example - `depends: [ "foo" {= version} ]`, for a dependency to package `foo` at the - same version as the package being defined, or `depends: - [ "bar" {os = "linux"} ]` for a dependency that only applies on Linux. -- The new `conflict-class:` field allows mutual conflicts among a set of - packages to be declared. Useful, for example, when there are many concurrent, - incompatible implementations. -- The `ocaml-version:` field has been deprecated for a long time and is no - longer accepted. This should now be a dependency on the `ocaml` package -- Three types of checksums are now accepted: you should use `md5=`, - `sha256=` or `sha512=`. We'll be gradually deprecating - md5 in favour of the more secure algorithms; multiple checksums are allowed -- Patches supplied in the `patches:` field must apply with `patch -p1` -- The new `setenv:` field allows packages to export updates to environment - variables; -- Custom fields `x-foo:` can be used for extensions and external tools -- `"""` delimiters allow unescaped strings -- `&` has now the customary higher precedence than `|` in formulas -- Installed files are now automatically tracked meaning that the `remove:` - field is usually no longer required. - -The full, up-to-date specification of the format can be browsed in the -[manual](https://opam.ocaml.org/doc/2.0/Manual.html#opam). - -#### Repository format - -In the official, default repository, and also when migrating repositories from -older format versions, there are: - -- A virtual `ocaml` package, that depends on any implementation of the OCaml - compiler. This is what packages should depend on, and the version is the - corresponding base OCaml version (e.g. `4.04.0` for the `4.04.0+fp` compiler). - It also defines various configuration variables, see `opam config list ocaml`. -- Three mutually-exclusive packages providing actual implementations of the - OCaml toolchain: - - `ocaml-base-compiler` is the official releases - - `ocaml-variants.+` contains all the other - variants - - `ocaml-system-compiler` maps to a compiler installed on the system - outside of opam - -The layout is otherwise the same, apart from: -- The `compilers/` directory is ignored -- A `repo` file should be present, containing at least the line `opam-version: "2.0"` -- The indexes for serving over HTTP have been simplified, and `urls.txt` is no - longer needed. See `opam admin index --help` -- The `archives/` directory is no longer used. The cache now uses a different - format and is configured through the `repo` file, defaulting to `cache/` on - the same server. See `opam admin cache --help` - -## Feedback - -Thanks for trying out the beta! Please let us have feedback, preferably to the -[opam tracker](https://github.com/ocaml/opam/issues); other options include the -[opam-devel](mailto:opam-devel@lists.ocaml.org) list and #opam IRC channel on -Freenode. diff --git a/data/changelog/opam/2017-11-27-opam-2-0-beta5.md b/data/changelog/opam/2017-11-27-opam-2-0-beta5.md deleted file mode 100644 index f9b119be56..0000000000 --- a/data/changelog/opam/2017-11-27-opam-2-0-beta5.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -title: "opam 2.0 Beta5 is out!" -authors: [ "Louis Gesbert" ] -description: "Release announcement for opam 2.0.0~beta5" -tags: [opam, platform] ---- - -After a few more months brewing, we are pleased to announce a new beta release -of opam. With this new milestone, opam is reaching feature-freeze, with an -expected 2.0.0 by the beginning of next year. - -This version brings many new features, stability fixes, and big improvements to -the local development workflows. - -## What's new - -The features presented in past announcements: -[local switches](https://opam.ocaml.org/blog/opam-local-switches/), -[in-source package definition handling](https://opam.ocaml.org/blog/opam-install-dir/), -[extended dependencies](https://opam.ocaml.org/blog/opam-extended-dependencies/) -are of course all present. But now, all the glue to make them interact nicely -together is here to provide new smooth workflows. For example, the following -command, if run from the source tree of a given project, creates a local switch -where it will restore a precise installation, including explicit versions of all -packages and pinnings: - -``` -opam switch create ./ --locked -``` - -this leverages the presence of `opam.locked` or `.opam.locked` files, -which are valid package definitions that contain additional details of the build -environment, and can be generated with the -[`opam-lock` plugin](https://github.com/AltGr/opam-lock) (the `lock` command may -be merged into opam once finalised). - -But this new beta also provides a large amount of quality of life improvements, -and other features. A big one, for example, is the integration of a built-in -solver (derived from [`mccs`](http://www.i3s.unice.fr/~cpjm/misc/mccs.html) and -[`glpk`](https://www.gnu.org/software/glpk/)). This means that the `opam` binary -works out-of-the box, without requiring the external -[`aspcud`](https://web.archive.org/web/20171023113455/http://www.cs.uni-potsdam.de/wv/aspcud/) solver, and on all -platforms. It is also faster. - -Another big change is that detection of architecture and OS details is now done -in opam, and can be used to select the external dependencies with the new format -of the [`depexts:`](https://opam.ocaml.org/doc/2.0/Manual.html#opamfield-depexts) -field, but also to affect dependencies or build flags. - -There is much more to it. Please see the -[changelog](https://github.com/ocaml/opam/blob/2.0.0-beta5/CHANGES), and the -[updated manual](https://opam.ocaml.org/doc/2.0/Manual.html). - -## How to try it out - -Our warm thanks for trying the new beta and -[reporting](https://github.com/ocaml/opam/issues) any issues you may hit. - - -1. The easiest is to use our pre-compiled binaries. - [This script](https://github.com/ocaml/opam/blob/master/shell/opam_installer.sh) - will also make backups if you migrate from 1.x, and has an option to revert - back: - - ``` - sh <(curl -sL https://opam.ocaml.org/install.sh) - ``` - - This uses the binaries from https://github.com/ocaml/opam/releases/tag/2.0.0-beta5 - -2. Another option is to compile from source, using an existing opam - installation. Simply run: - - ``` - opam update; opam install opam-devel - ``` - - and follow the instructions (you will need to copy the compiled binary to - your PATH). - -3. Compiling by hand from the - [inclusive source archive](https://github.com/ocaml/opam/releases/download/2.0.0-beta5/opam-full-2.0.0-beta5.tar.gz), - or from the [git repo](https://github.com/ocaml/opam/tree/2.0.0-beta5). Use - `./configure && make lib-ext && make` if you have OCaml >= 4.02.3 already - available; `make cold` otherwise. - - If the build fails after updating a git repo from a previous version, try - `git clean -fdx src/` to remove any stale artefacts. - -Note that the repository format is different from that of opam 1.2. Opam 2 will -be automatically redirected from the -[opam-repository](https://github.com/ocaml/opam-repository) to an automatically -rewritten 2.0 mirror, and is otherwise able to do the conversion on the fly -(both for package definitions when pinning, and for whole repositories). You may -not yet contribute packages in 2.0 format to opam-repository, though. - -## What we need tested - -We are interested in all opinions and reports, but here are a few areas where -your feedback would be specially useful to us: - -- Use 2.0 day-to-day, in particular check any packages you may be maintaining. - We would like to ensure there are no regressions due to the rewrite from 1.2 - to 2.0. -- Check the quality of the solutions provided by the solver (or conflicts, when - applicable). -- Test the different pinning mechanisms (rsync, git, hg, darcs) with your - project version control systems. See the `--working-dir` option. -- Experiment with local switches for your project (and/or `opam install DIR`). - Give us feedback on the workflow. Use `opam lock` and share development - environments. -- If you have any custom repositories, please try the conversion to 2.0 format - with `opam admin upgrade --mirror` on them, and use the generated mirror. -- Start porting your CI systems for larger projects to use opam 2, and give us - feedback on any improvements you need for automated scripting (e.g. the - `--json` output). diff --git a/data/changelog/opam/2018-02-02-opam-2-0-0-rc.md b/data/changelog/opam/2018-02-02-opam-2-0-0-rc.md deleted file mode 100644 index 63d8afc560..0000000000 --- a/data/changelog/opam/2018-02-02-opam-2-0-0-rc.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "opam 2.0.0 Release Candidate 1 is out!" -authors: [ "Louis Gesbert" ] -description: "Release announcement for OPAM 2.0.0~rc1" -tags: [opam, platform] ---- - -We are pleased to announce a first release candidate for the long-awaited opam 2.0.0. - -A lot of polishing has been done since the [last beta](https://opam.ocaml.org/blog/opam-2-0-beta5/), including tweaks to the built-in solver, allowing in-source package definitions to be gathered in an `opam/` directory, and much more. - -With all of the 2.0.0 features getting pretty solid, we are now focusing on bringing all the guides up-to-date[Âč](#foot-1), updating the tools and infrastructure, making sure there are no usability issues with the new workflows, and being future-proof so that further updates break as little as possible. - -You are invited to read the [beta5 announcement](https://opam.ocaml.org/blog/opam-2-0-beta5/) for details on the 2.0.0 features. Installation instructions haven't changed: - -1. From binaries: run - - ``` - sh <(curl -sL https://opam.ocaml.org/install.sh) - ``` - - or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.0.0-rc) to your PATH. - -2. From source, using opam: - - ``` - opam update; opam install opam-devel - ``` - - (then copy the opam binary to your PATH as explained) - -3. From source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.0.0-rc#opam---a-package-manager-for-ocaml). - -Thanks a lot for testing out the RC and [reporting](https://github.com/ocaml/opam/issues) any issues you may find. See [what we need tested](https://opam.ocaml.org/blog/opam-2-0-beta5/#What-we-need-tested) for more detail. - ---- - -Âč You can at the moment rely on the [manpages](https://opam.ocaml.org/doc/2.0/man/opam.html), the [Manual](https://opam.ocaml.org/doc/2.0/Manual.html), and of course the [API](https://opam.ocaml.org/doc/2.0/api/), but other pages might be outdated. diff --git a/data/changelog/opam/2018-05-22-opam-2-0-0-rc2.md b/data/changelog/opam/2018-05-22-opam-2-0-0-rc2.md deleted file mode 100644 index 228886f523..0000000000 --- a/data/changelog/opam/2018-05-22-opam-2-0-0-rc2.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: "opam 2.0.0 Release Candidate 2 is out!" -authors: [ "Louis Gesbert" ] -description: "Release announcement for OPAM 2.0.0~rc2" -tags: [opam, platform] ---- - -We are pleased to announce the release of a second release candidate for opam 2.0.0. - -This new version brings us very close to a final 2.0.0 release, and in addition to many fixes, features big performance enhancements over the RC1. - -Among the new features, we have squeezed in full sandboxing of package commands for both Linux and macOS, to protect our users from any [misbehaving scripts](https://opam.ocaml.org/blog/camlp5-system/). - -> NOTE: if upgrading manually from 2.0.0~rc, you need to run -> `opam init --reinit -ni` to enable sandboxing. - -The new release candidate also offers the possibility to setup a hook in your shell, so that you won't need to run `eval $(opam env)` anymore. This is specially useful in combination with local switches, because with it enabled, you are guaranteed that running `make` from a project directory containing a local switch will use it. - -The documentation has also been updated, and a preview of the opam 2 webpages can be browsed at https://opam.ocaml.org/2.0-preview/ (please report issues [here](https://github.com/ocaml/opam2web/issues)). This provides the list of packages available for opam 2 (the `2.0` branch of [opam-repository](https://github.com/ocaml/opam-repository)), including the compiler packages. - -Installation instructions: - -1. From binaries: run - - ``` - sh <(curl -sL https://opam.ocaml.org/install.sh) - ``` - - or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.0.0-rc2) to your PATH. In this case, don't forget to run `opam init --reinit -ni` to enable sandboxing if you had version 2.0.0~rc manually installed. - -2. From source, using opam: - - ``` - opam update; opam install opam-devel - ``` - - (then copy the opam binary to your PATH as explained, and don't forget to run `opam init --reinit -ni` to enable sandboxing if you had version 2.0.0~rc manually installed) - -3. From source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.0.0-rc2#compiling-this-repo). - -Thanks a lot for testing out this new RC and [reporting](https://github.com/ocaml/opam/issues) any issues you may find. - - -> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](http://www.ocamlpro.com/category/blog/). Please head to the latter for the comments! diff --git a/data/changelog/opam/2018-06-22-opam-2-0-0-rc3.md b/data/changelog/opam/2018-06-22-opam-2-0-0-rc3.md deleted file mode 100644 index 7e78562d5f..0000000000 --- a/data/changelog/opam/2018-06-22-opam-2-0-0-rc3.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: "opam 2.0.0 Release Candidate 3 is out!" -authors: [ "Raja Boujbel", "Louis Gesbert"] -description: "Release announcement for OPAM 2.0.0~rc3" -tags: [opam, platform] ---- - -We are pleased to announce the release of a third release candidate for opam 2.0.0. This one is expected to be the last before 2.0.0 comes out. - -Changes since the [2.0.0~rc2](../opam-2-0-0-rc2) are, as expected, mostly fixes. We deemed it useful, however, to bring in the following: - -- a new command `opam switch link` that allows to select a switch to be used in a given directory (particularly convenient if you use the shell hook for automatic opam environment update) -- a new option `opam install --assume-built`, that allows to install a package using its normal opam procedure, but for a source repository that has been built by hand. This fills a gap that remained in the local development workflows. - -The preview of the opam 2 webpages can be browsed at https://opam.ocaml.org/2.0-preview/ (please report issues [here](https://github.com/ocaml/opam2web/issues)). - -Installation instructions (unchanged): - -1. From binaries: run - - ``` - sh <(curl -sL https://opam.ocaml.org/install.sh) - ``` - - or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.0.0-rc3) to your PATH. In this case, don't forget to run `opam init --reinit -ni` to enable sandboxing if you had version 2.0.0~rc manually installed. - -2. From source, using opam: - - ``` - opam update; opam install opam-devel - ``` - - (then copy the opam binary to your PATH as explained, and don't forget to run `opam init --reinit -ni` to enable sandboxing if you had version 2.0.0~rc manually installed) - -3. From source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.0.0-rc3#compiling-this-repo). - -Thanks a lot for testing out this new RC and [reporting](https://github.com/ocaml/opam/issues) any issues you may find. diff --git a/data/changelog/opam/2018-07-26-opam-2-0-0-rc4.md b/data/changelog/opam/2018-07-26-opam-2-0-0-rc4.md deleted file mode 100644 index 2982740add..0000000000 --- a/data/changelog/opam/2018-07-26-opam-2-0-0-rc4.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "opam 2.0.0 RC4-final is out!" -authors: [ "Raja Boujbel", "Louis Gesbert"] -description: "Release announcement for OPAM 2.0.0~rc4" -tags: [opam, platform] ---- - -We are happy to announce the [opam 2.0.0 final release candidate](https://github.com/ocaml/opam/releases/tag/2.0.0-rc4)! đŸŸ - -This release features a few bugfixes over [Release Candidate 3](../opam-2-0-0-rc3). **It will be promoted to 2.0.0 proper within a few weeks, when the [official repository](https://github.com/ocaml/opam-repository) format switches from 1.2.0 to 2.0.0.** After that date, updates to the 1.2.0 repository may become limited, as new features are getting used in packages. - -It is safe to update as soon as you see fit, since opam 2.0.0 supports the older formats. See the [Upgrade Guide](https://opam.ocaml.org/doc/Upgrade_guide.html) for details about the new features and changes. If you are a package maintainer, you should keep publishing as before for now: the [roadmap](https://opam.ocaml.org/blog/opam-2-0-0-repo-upgrade-roadmap) for the repository upgrade will be detailed shortly. - -The opam.ocaml.org pages have also been refreshed a bit, and the new version showing the 2.0.0 branch of the repository is already online. Report any issues [here](https://github.com/ocaml/opam2web/issues). - - ---- - -Installation instructions: - -1. From binaries: run - - ``` - sh <(curl -sL https://opam.ocaml.org/install.sh) - ``` - - or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.0.0-rc4) to your PATH. In this case, don't forget to run `opam init --reinit -ni` to enable sandboxing if you had version 2.0.0~rc manually installed. - -2. From source, using opam: - - ``` - opam update; opam install opam-devel - ``` - - (then copy the opam binary to your PATH as explained, and don't forget to run `opam init --reinit -ni` to enable sandboxing if you had version 2.0.0~rc manually installed) - -3. From source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.0.0-rc4#compiling-this-repo). - -We hope you enjoy this new version, and remain open to [bug reports](https://github.com/ocaml/opam/issues) and [suggestions](https://github.com/ocaml/opam/issues). - -> NOTE: this article is cross-posted on [opam.ocaml.org](https://opam.ocaml.org/blog/) and [ocamlpro.com](http://www.ocamlpro.com/category/blog/). Please head to the latter for the comments! diff --git a/data/changelog/opam/2020-04-21-opam-2-1-0-alpha.md b/data/changelog/opam/2020-04-21-opam-2-1-0-alpha.md deleted file mode 100644 index cd5d1841c5..0000000000 --- a/data/changelog/opam/2020-04-21-opam-2-1-0-alpha.md +++ /dev/null @@ -1,143 +0,0 @@ ---- -title: "opam 2.1.0 alpha is here!" -authors: [ "Raja Boujbel", "Louis Gesbert"] -description: "Release announcement for opam 2.1.0~alpha" -tags: [opam, platform] ---- - -We are happy to announce a alpha for opam 2.1.0, one year and a half in the -making after the release of 2.0.0. - -Many new features made it in (see the [complete -changelog](https://github.com/ocaml/opam/blob/2.1.0-alpha/CHANGES) or [release -note](https://github.com/ocaml/opam/releases/tag/2.1.0-alpha) for the details), -but here are a few highlights of this release. - - -# Release highlights - -The two following features have been around for a while as plugins and are now -completely integrated in the core of opam. No extra installs needed anymore, and -a more smooth experience. - - -### Seamless integration of System dependencies handling (a.k.a. "depexts") - -A number of opam packages depend on tools or libraries installed on the system, -which are out of the scope of opam itself. Previous versions of opam added a -[specification format](https://opam.ocaml.org/doc/Manual.html#opamfield-depexts), -and opam 2.0 already handled checking the OS and extracting the required system -package names. - -However, the workflow generally involved letting opam fail once, then installing -the dependencies and retrying, or explicitely using the -[opam-depext plugin](https://github.com/ocaml/opam-depext), which was invaluable -for CI but still incurred extra steps. - -With opam 2.1.0, _depexts_ are seamlessly integrated, and you basically won't -have to worry about them ahead of time: - -- Before applying its course of actions, opam 2.1.0 checks that external - dependencies are present, and will prompt you to install them. You are free to - let it do it using `sudo`, or just run the provided commands yourself. -- It is resilient to _depexts_ getting removed or out of sync. -- Opam 2.1.0 detects packages that depend on stuff that is not available on your - OS version, and automatically avoids them. - -This is all fully configurable, and can be bypassed without tricky commands when -you need it (_e.g._ when you compiled a dependency yourself). - - -### Dependency locking - -To share a project for development, it is often necessary to be able to -reproduce the exact same environment and dependencies setting — as opposed to -allowing a range of versions as opam encourages you to do for releases. - -For some reason, most other package managers call this feature "lock files". -Opam can handle those in the form of `[foo.]opam.locked` files, and the -`--locked` option. - -With 2.1.0, you no longer need a plugin to generate these files: just running -`opam lock` will create them for existing `opam` files, enforcing the exact -version of all dependencies (including locally pinned packages). - -If you check-in these files, new users would just have run -`opam switch create . --locked` on a fresh clone to get a local switch ready to -build the project. - - -### Pinning sub-directories - -This one is completely new: fans of the _Monorepo_ rejoice, opam is now able to -handle projects in subtrees of a repository. - -- Using `opam pin PROJECT_ROOT --subpath SUB_PROJECT`, opam will look for - `PROJECT_ROOT/SUB_PROJECT/foo.opam`. This will behave as a pinning to - `PROJECT_ROOT/SUB_PROJECT`, except that the version-control handling is done - in `PROJECT_ROOT`. -- Use `opam pin PROJECT_ROOT --recursive` to automatically lookup all sub-trees - with opam files and pin them. - - -### Opam switches are now defined by invariants - -Previous versions of opam defined switches based on _base packages_, which -typically included a compiler, and were immutable. Opam 2.1.0 instead defines -them in terms of an _invariant_, which is a generic dependency formula. - -This removes a lot of the rigidity `opam switch` commands had, with little -changes on the existing commands. For example, `opam upgrade ocaml` commands are -now possible; you could also define the invariant as `ocaml-system` and have -its version change along with the version of the OCaml compiler installed -system-wide. - - -### Configuring opam from the command-line - -The new `opam option` command allows to configure several options, -without requiring manual edition of the configuration files. - -For example: -- `opam option jobs=6 --global` will set the number of parallel build - jobs opam is allowed to run (along with the associated `jobs` variable) -- `opam option depext-run-commands=false` disables the use of `sudo` for - handling system dependencies; it will be replaced by a prompt to run the - installation commands. - -The command `opam var` is extended with the same format, acting on switch and -global variables. - -# Try it! - -In case you plan a possible rollback, you may want to first backup your -`~/.opam` directory. - -The upgrade instructions are unchanged: - -1. Either from binaries: run - - ``` - bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.1.0~alpha" - ``` - - or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.1.0-alpha) to your PATH. - -2. Or from source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.1.0-alpha#compiling-this-repo). - - -You should then run: -``` -opam init --reinit -ni -``` - - -This is still a alpha, so a few glitches or regressions are to be expected. -Please report them to [the bug-tracker](https://github.com/ocaml/opam/issues). -Thanks for trying it out, and hoping you enjoy! - - -> NOTE: this article is cross-posted on -[opam.ocaml.org](https://opam.ocaml.org/blog/) and -[ocamlpro.com](http://www.ocamlpro.com/category/blog/). Please head to the -latter for the comments! diff --git a/data/changelog/opam/2020-10-19-opam-2-1-0-beta2.md b/data/changelog/opam/2020-10-19-opam-2-1-0-beta2.md deleted file mode 100644 index 8f959132b7..0000000000 --- a/data/changelog/opam/2020-10-19-opam-2-1-0-beta2.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "opam 2.1.0~beta4 released" -authors: [ "David Allsopp" ] -description: "Release announcement for opam 2.1.0~beta2" -tags: [opam, platform] -changelog: | - * Reduced startup times, in particular for `opam exec` [#4341 @altgr] - * Fixed the sandboxing check on fresh inits [#4342 @altgr] - * Fixed cases where `--with-version` was not respected by `opam pin` [#4346 @altgr] - * Upgraded the bootstrap OCaml compiler from 4.09.1 to 4.11.1 [#4242 @avsm @dra27 @MisterDA @rjbou] ---- diff --git a/data/changelog/opam/2021-02-08-opam-2-1-0-beta4.md b/data/changelog/opam/2021-02-08-opam-2-1-0-beta4.md deleted file mode 100644 index c92c35cf0d..0000000000 --- a/data/changelog/opam/2021-02-08-opam-2-1-0-beta4.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -title: "opam 2.1.0~beta4 released" -authors: [ "David Allsopp" ] -description: "Release announcement for opam 2.1.0~beta4" -tags: [opam, platform] -changelog: | - * (*) Implemented CLI version compatibility layer [#4385 @rjbou] - * (*) Return code 31 (`Sync_error`) instead of code 40 - (`Package_operation_error`) when all failures happend during fetching - [#4416 @rjbou - fix #4214] - * (+) Add `--download-only` flag [#4071 @Armael @rjbou - fix #4036] - * (+) Provide `opam update --depexts` to request an update of the system package manager databases [#4379 @AltGr - fix #4355] - * Set OPAMCLI=2.0 during package action commands [#4492 @kit-ty-kate] - * Fix sandbox check on first `opam init` [#4370 @rjbou - fix #4368] - * Print shell-appropriate eval command on `opam init` [#4427 @freevoid] - * Fix `init` script check in csh [#4482 @gahr] - * The `stdout` of `pre-` and `post-session` hooks is now propagated to the user [#4382 @AltGr - fix #4359] - * `post-install` hooks are now allowed to modify or remove installed files [#4388 @lefessan] - * Add support for switch-specific pre/post sessions hooks [#4476 @rjbou - fix #4472] - * Ensure we don't advertise upgrades to hidden versions [#4477 @AltGr - fix #4432] - * Fix `opam remove --autoremove ` to not autoremove unrelated packages [#4369 @AltGr - fix #4250 #4332] - * Fix cases where `opam remove -a` could trigger conflicts in the presence of orphan packages [#4369 @AltGr - fix #4250 #4332] - * Fix `--update-invariant` when removing or changing package name [#4360 @AltGr - fix #4353] - * Fix updates of the invariant with `--update-invariant` [#4431 @AltGr] - * Fix cleanup of build dirs for version pinned packages [#4436 @rjbou - fix #4255] - * Fix `opamfile` format upgrade on pinning [#4366 @rjbou - fix #4365] - * Fix `pin --show` actually pinning [#4367 @rjbou - fix #4348] - * When several pins are needed, do their fetching in parallel [#4399 @rjbou - fix #4315] - * Don't cleanup VCS pin source directories [#4399 @rjbou] - * Fix `--working-dir` with local switches [#4433 @rjbou] - * Add package variable `opamfile-loc`, containing the location of installed package opam file [#4402 @rjbou] - * Fix `arch` detection when using 32bit mode on ARM64 [#4462 @kit-ty-kate] - * Fix `arch` detection of i486 [#4462 @kit-ty-kate] - * Skip loading the switch state for variable lookup when possible [#4428 @rjbou] - * Fix package variables display when no config file is found [#4428 @rjbou] - * Fix `opam option depext-bypass-=["XXX"]` [#4428 @rjbou] - * Lint: add a check that strings in filtered package formula are Booleans or variables [#443 @rjbou - fix #4439] - * Fix handling of filename-encoded pkgname in opam files [#4401 @AltGr - fix ocaml-opam/opam-publish#107] - * Don't recompile when modifying the package flags [#4477 @AltGr] - * Add depext support for NetBSD and DragonFlyBSD [#4396 @kit-ty-kate] - * Fix depexts on OpenBSD, FreeBSD, and Gentoo: Allow short names and full name paths for ports-based systems [#4396 @kit-ty-kate] - * Handle the case where `os-family=ubuntu` as `os-family=debian` [#4441 @alan-j-hu] - * Update opam's `opam` files to 2.0 [#4371 @AltGr] - * Makefile: Add rule `custom-libinstall` for `opam-custom-install` use [#4401 @AltGr] - * Use the archive caches when running `opam admin cache` [#4384 @AltGr - fix #4352] - * Fix explosion of `opam admin check --cycles` on repositories with huge cliques [#4392 @AltGr] - * Much improved format-preserving printer [#4298 #4302 @rjbou - fix #3993] - * Fix missing conflict message when trying to remove required packages [#4362 @AltGr] - * Fix the Z3 backend for upgrades [#4393 @AltGr] - * Fix cases where opam would wrongly complain about action cycles [#4358 @AltGr - fix #4357] - * Fix permission denied fallback for `openssl` [#4449 @Blaisorblade - fix #4448] - * Add debug & verbose log for patch & `subst` applications [#4464 @rjbou - fix #4453] - * Be more robust w.r.t. new caches updates when `--read-only` is not used [#4467 @AltGr - fix #4354] - * Improved and extended tests [#4375 #4395 #4428 #4385 #4467 #4475 #4483 @emillon @rjbou @AltGr @freevoid @dra27] - * Switched to GitHub actions [#4463 @rjbou] ---- - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-1-0-beta4/7252)!_ - -On behalf of the opam team, it gives me great pleasure to announce the third beta release of opam 2.1. Don’t worry, you didn’t miss beta3 - we had an issue with a configure script that caused beta2 to report as beta3 in some instances, so we skipped to beta4 to avoid any further confusion! - -We encourage you to try out this new beta release: there are instructions for doing so in [our wiki](https://github.com/ocaml/opam/wiki/How-to-test-an-opam-feature). The instructions include taking a backup of your `~/.opam` root as part of the process, which can be restored in order to wind back. _Please note that local switches which are written to by opam 2.1 are upgraded and will need to be rebuilt if you go back to opam 2.0_. This can either be done by removing `_opam` and repeating whatever you use in your build process to create the switch, or you can use `opam switch export switch.export` to backup the switch to a file before installing new packages. Note that opam 2.1 _shouldn’t_ upgrade a local switch unless you upgrade the base packages (i.e. the compiler). - -## What’s new in opam 2.1? - -- Switch invariants -- Improved options configuration (see the new `option` and expanded `var` sub-commands) -- Integration of system dependencies (formerly the opam-depext plugin), increasing their reliability as it integrates the solving step -- Creation of lock files for reproducible installations (formerly the opam-lock plugin) -- CLI versioning, allowing cleaner deprecations for opam now and also improvements to semantics in future without breaking backwards-compatibility -- Performance improvements to opam-update, conflict messages, and many other areas -- New plugins: opam-compiler and opam-monorepo - -### Switch invariants - -In opam 2.0, when a switch is created the packages selected are put into the “base” of the switch. These packages are not normally considered for upgrade, in order to ease pressure on opam’s solver. This was a much bigger concern early on in opam 2.0’s development, but is less of a problem with the default mccs solver. - -However, it’s a problem for system compilers. opam would detect that your system compiler version had changed, but be unable to upgrade the ocaml-system package unless you went through a slightly convoluted process with `--unlock-base`. - -In opam 2.1, base packages have been replaced by switch invariants. The switch invariant is a package formula which must be satisfied on every upgrade and install. All existing switches’ base packages could just be expressed as `package1 & package2 & package3` etc. but opam 2.1 recognises many existing patterns and simplifies them, so in most cases the invariant will be `"ocaml-base-compiler" {= 4.11.1}`, etc. This means that `opam switch create my_switch ocaml-system` now creates a _switch invariant_ of `"ocaml-system"` rather than a specific version of the `ocaml-system` package. If your system OCaml package is updated, `opam upgrade` will seamlessly switch to the new package. - -This also allows you to have switches which automatically install new point releases of OCaml. For example: - -``` -opam switch create ocaml-4.11 --formula='"ocaml-base-compiler" {>= "4.11.0" & < "4.12.0~"}' --repos=old=git+https://github.com/ocaml/opam-repository#a11299d81591 -opam install utop - -``` - -Creates a switch with OCaml 4.11.0 (the `--repos=` was just to select a version of opam-repository from before 4.11.1 was released). Now issue: - -``` -opam repo set-url old git+https://github.com/ocaml/opam-repository -opam upgrade -``` - -and opam 2.1 will automatically offer to upgrade OCaml 4.11.1 along with a rebuild of the switch. There’s not yet a clean CLI for specifying the formula, but we intend to iterate further on this with future opam releases so that there is an easier way of saying “install OCaml 4.11.x”. - -### opam depext integration - -opam has long included the ability to install system dependencies automatically via the [depext plugin](https://github.com/ocaml-opam/opam-depext). This plugin has been promoted to a native feature of opam 2.1.0 onwards, giving the following benefits: - -- You no longer have to remember to run `opam depext`, opam always checks depexts (there are options to disable this or automate it for CI use). Installation of an opam package in a CI system is now as easy as `opam install .`, without having to do the dance of `opam pin add -n/depext/install`. Just one command now for the common case! -- The solver is only called once, which both saves time and also stabilises the behaviour of opam in cases where the solver result is not stable. It was possible to get one package solution for the `opam depext` stage and a different solution for the `opam install` stage, resulting in some depexts missing. -- opam now has full knowledge of depexts, which means that packages can be automatically selected based on whether a system package is already installed. For example, if you have *neither* MariaDB nor MySQL dev libraries installed, `opam install mysql` will offer to install `conf-mysql` and `mysql`, but if you have the MariaDB dev libraries installed, opam will offer to install `conf-mariadb` and `mysql`. - -### opam lock files and reproducibility - -When opam was first released, it had the mission of gathering together scattered OCaml source code to build a [community repository](https://github.com/ocaml/opam-repository). As time marches on, the size of the opam repository has grown tremendously, to over 3000 unique packages with over 18000 unique versions. opam looks at all these packages and is designed to solve for the best constraints for a given package, so that your project can keep up with releases of your dependencies. - -While this works well for libraries, we need a different strategy for projects that need to test and ship using a fixed set of dependencies. To satisfy this use-case, opam 2.0.0 shipped with support for _using_ `project.opam.locked` files. These are normal opam files but with exact versions of dependencies. The lock file can be used as simply as `opam install . --locked` to have a reproducible package installation. - -With opam 2.1.0, the creation of lock files is also now integrated into the client: -- `opam lock` will create a `.locked` file for your current switch and project, that you can check into the repository. -- `opam switch create . --locked` can be used by users to reproduce your dependencies in a fresh switch. - -This lets a project simultaneously keep up with the latest dependencies (without lock files) while providing a stricter set for projects that need it (with lock files). - -### CLI Versioning - -A new `--cli` switch was added to the first beta release, but it’s only now that it’s being widely used. opam is a complex enough system that sometimes bug fixes need to change the semantics of some commands. For example: - -- `opam show --file` needed to change behaviour -- The addition of new controls for setting global variables means that the `opam config` was becoming cluttered and some things want to move to `opam var` -- `opam switch install 4.11.1` still works in opam 2.0, but it’s really an OPAM 1.2.2 syntax. - -Changing the CLI is exceptionally painful since it can break scripts and tools which themselves need to drive `opam`. CLI versioning is our attempt to solve this. The feature is inspired by the `(lang dune ...)` stanza in `dune-project` files which has allowed the Dune project to rename variables and alter semantics without requiring every single package using Dune to upgrade their `dune` files on each release. - -Now you can specify which version of opam you expected the command to be run against. In day-to-day use of opam at the terminal, you wouldn’t specify it, and you’ll get the latest version of the CLI. For example: `opam var --global` is the same as `opam var --cli=2.1 --global`. However, if you issue `opam var --cli=2.0 --global`, you will told that `--global` was added in 2.1 and so is not available to you. You can see similar things with the renaming of `opam upgrade --unlock-base` to `opam upgrade --update-invariant`. - -The intention is that `--cli` should be used in scripts, user guides (e.g. blog posts), and in software which calls opam. The only decision you have to take is the _oldest_ version of opam which you need to support. If your script is using a new opam 2.1 feature (for example `opam switch create --formula=`) then you simply don’t support opam 2.0. If you need to support opam 2.0, then you can’t use `--formula` and should use `--packages` instead. opam 2.0 does not have the `--cli` option, so for opam 2.0 instead of `--cli=2.0` you should set the environment variable `OPAMCLI` to `2.0`. As with _all_ opam command line switches, `OPAMCLI` is simply the equivalent of `--cli` which opam 2.1 will pick-up but opam 2.0 will quietly ignore (and, as with other options, the command line takes precedence over the environment). - -Note that opam 2.1 sets `OPAMCLI=2.0` when building packages, so on the rare instances where you need to use the `opam` command in a _package_ `build:` command (or in your build system), you _must_ specify `--cli=2.1` if you’re using new features. - -There’s even more detail on this feature [in our wiki](https://github.com/ocaml/opam/wiki/Spec-for-opam-CLI-versioning). We’re still finalising some details on exactly how `opam` behaves when `--cli` is not given, but we’re hoping that this feature will make it much easier in future releases for opam to make required changes and improvements to the CLI without breaking existing set-ups and tools. - -## What’s new since the last beta? - -- opam now uses CLI versioning ([#4385](https://github.com/ocaml/opam/pull/4385)) -- opam now exits with code 31 if all failures were during fetch operations ([#4214](https://github.com/ocaml/opam/issues/4214)) -- `opam install` now has a `--download-only` flag ([#4036](https://github.com/ocaml/opam/issues/4036)), allowing opam’s caches to be primed -- `opam init` now advises the correct shell-specific command for `eval $(opam env)` ([#4427](https://github.com/ocaml/opam/pull/4427)) -- `post-install` hooks are now allowed to modify or remove installed files ([#4388](https://github.com/ocaml/opam/pull/4388)) -- New package variable `opamfile-loc` with the location of the installed package opam file ([#4402](https://github.com/ocaml/opam/pull/4402)) -- `opam update` now has `--depexts` flag ([#4355](https://github.com/ocaml/opam/issues/4355)), allowing the system package manager to update too -- depext support NetBSD and DragonFlyBSD added ([#4396](https://github.com/ocaml/opam/pull/4396)) -- The format-preserving opam file printer has been overhauled ([#3993](https://github.com/ocaml/opam/issues/3993), [#4298](https://github.com/ocaml/opam/pull/4298) and [#4302](https://github.com/ocaml/opam/pull/4302)) -- pins are now fetched in parallel ([#4315](https://github.com/ocaml/opam/issues/4315)) -- `os-family=ubuntu` is now treated as `os-family=debian` ([#4441](https://github.com/ocaml/opam/pull/4441)) -- `opam lint` now checks that strings in filtered package formulae are booleans or variables ([#4439](https://github.com/ocaml/opam/issues/4439)) - -and many other bug fixes as listed [on the release page](https://github.com/ocaml/opam/releases/tag/2.1.0-beta4). - -## New Plugins - -Several features that were formerly plugins have been integrated into opam 2.1.0. We have also developed some _new_ plugins that satisfy emerging workflows from the community and the core OCaml team. They are available for use with the opam 2.1 beta as well, and feedback on them should be directed to the respective GitHub trackers for those plugins. - -### opam compiler - -The [`opam compiler`](https://github.com/ocaml-opam/opam-compiler) plugin can be used to create switches from various sources such as the main opam repository, the ocaml-multicore fork, or a local development directory. It can use Git tag names, branch names, or PR numbers to specify what to install. - -Once installed, these are normal opam switches, and one can install packages in them. To iterate on a compiler feature and try opam packages at the same time, it supports two ways to reinstall the compiler: either a safe and slow technique that will reinstall all packages, or a quick way that will just overwrite the compiler in place. - -### opam monorepo - -The [`opam monorepo`](https://github.com/ocamllabs/opam-monorepo) plugin lets you assemble standalone dune workspaces with your projects and all of their opam dependencies, letting you build it all from scratch using only Dune and OCaml. This satisfies the “monorepo” workflow which is commonly requested by large projects that need all of their dependencies in one place. It is also being used by projects that need global cross-compilation for all aspects of a codebase (including C stubs in packages), such as the MirageOS unikernel framework. - -## Next Steps - -This is anticipated to be the final beta in the 2.1 series, and we will be moving to release candidate status after this. We could really use your help with testing this release in your infrastructure and projects and let us know if you run into any blockers. If you have feature requests, please also report them on [our issue tracker](https://github.com/ocaml/opam/issues) -- we will be planning the next release cycle once we ship opam 2.1.0 shortly. diff --git a/data/changelog/opam/2021-06-16-opam-2-1-0-rc.md b/data/changelog/opam/2021-06-16-opam-2-1-0-rc.md deleted file mode 100644 index 77d2bc55e8..0000000000 --- a/data/changelog/opam/2021-06-16-opam-2-1-0-rc.md +++ /dev/null @@ -1,203 +0,0 @@ ---- -title: "opam 2.1.0~rc2 released" -authors: [ "David Allsopp" ] -description: "Release announcement for opam 2.1.0~rv2" -tags: [opam, platform] -changelog: | - * (*) Environment variables initialised only at opam client launch, no more via - libraries [#4606 #4703 @rjbou] - * (*) Deprecated `build-doc`, `build-test`, `make` flags [#4581 @rjbou] - * (+) Add `--confirm-level` and `OPAMCONFIRMLEVEL` for automatic answering - [#4582 @rjbou - fix #4168; #4683 @dra27 - fix #4682; #4691 @rjbou - fix #4682] - * (+) Add `--no` [#4582 @rjbou] - * (+) Add a `--with-0install-solver` option to the configure script to enable - the 'builtin-0install' solver [#4646 @kit-ty-kate] - * Add default CLI mechanism: deprecated options are accepted (in the major - version) if no CLI is specified [#4575 @rjbou] - * Add `opam config` deprecated subcommands in the default CLI - [#4575 @rjbou - fix #4503] - * Add CLI versioning for opam environment variables [#4606 @rjbou] - * Add CLI versioning for enums of flags with predefined enums [#4606 @rjbou] - * Clearer messages about using `--cli` and OPAMCLI [#4655 @dra27] - * The options `--root` and `--switch` are now reflected in environment - variables when building packages so that calls to `opam` during build access - the correct root and switch [#4668 @LasseBlaauwbroek] - * Add CLI versioning for enums of flags with predefined enums [#4626 @rjbou] - * Preprocess `--confirm-level` for plugins calls/install [#4694 @rjbou] - * Ensure the symlink for a plugin is maintained on each invocation - [#4621 @dra27 - partially fixes #4619] - * Initialise environment variables for plugins call/install [#4582 @rjbou] - * Expect plugins to end in `.exe` on Windows [#4709 @dra27] - * Introduce a `default-invariant` config field, restore the 2.0 semantics for - `default-compiler` [#4607 @AltGr] - * Fix default invariant with no system compiler [#4644 @AltGr - fix #4640] - * Perform an hard upgrade on intermediate roots, i.e., root from `2.1~alpha/beta`, - and keep a light upgrade from `2.0` [#4638 @rjbou] - * Send the 'opam root layout update' message to `stderr` [#4692 @AltGr] - * If opam root is different from the binary, allow reading it and try to read - in best effort mode [#4638 @rjbou - fix #4636] - * Don't check opam system dependencies on reinit after a format upgrade - [#4638 @rjbou] - * Fix `sys-ocaml-cc`, `sys-ocaml-arch`, and `sys-ocaml-libc` when no system - compiler installed [#4706 @dra27] - * Fix `Not_found` (config file) in config report [#4570 @rjbou] - * Config report: Print variables of installed compilers and their (installed) - dependencies [#4570 @rjbou] - * Don't patch twice file [#4529 @rjbou] - * With `--deps-only`, set dependencies as root packages - [#4964 @rjbou - fix #4502] - * Keep global lock only if root format upgrade is performed - [#4612 @rjbou - fix #4597] - * Improve installation times by only tracking files listed in `.install` - instead of the whole switch prefix when there are no `install:` instructions - (and no preinstall commands) - [#4494 @kit-ty-kate @rjbou; #4667 @dra27 - fix #4422] - * Scrub opam* environment variables added since 2.0 from package builds to - prevent warnings when a package calls opam [#4663 @dra27 - fix #4660] - * Correct the message when more than one depext is missing [#4678 @dra27] - * Only display one conflict message when they are all owing to identical - missing depexts [#4678 @dra27] - * Don't exclude base packages from rebuilds (made some sense in opam 2.0 with - base packages but doesn't make sense with 2.1 switch invariants) [#4569 @dra27] - * Don't refer to base packages in messages any more - [#4623 @dra27 - fixes #4572] - * Give the correct command when demonstrating switch creation - [#4675 @dra27 - fixes #4673] - * On switch loading, if invariant is inferred and a write lock required, write - the file [#4638 @rjbou] - * Don't look for lock files for pin depends [#4511 @rjbou - fix #4505] - * Fetch sources when pinning an already-pinned package with a different URL - when using working directory [#4542 @rjbou - fix #4484] - * Don't ask for confirmation for pinning base packages (similarly makes no - sense with 2.1 switch invariants) [#4571 @dra27] - * Fix version pin source retrieving: mustn't error if archive opam file is - malformed [#4580 @rjbou] - * `opam list --silent` renamed to `--check` [#4595 @dra27 - fix #4323] - * Include `doc` field in `opam-show` [#4567 @dra27 - partially fix #4565] - * Fix `switch` global variable resolving [#4685 @rjbou - fix #4684] - * Fix `hash` package variable resolving [#4687 @rjbou] - * Lint: Fix W59 & E60 for conf packages (no URL required) - [#4550 @rjbou - fix #4549] - * Lint: Fix W59 & E60 with VCS URLs, don't check upstream if URL has VCS - backend [#4635 @rjbou] - * Lint: Add E67 checksum specified with non archive URL [#4635 @rjbou] - * Lint: Disable subpath warning E63,W64 [#4638 @rjbou] - * Lint: Fix manpage listing [#4708 @rjbou] - * Don't write lock file with `--read-only`, `--safe`, and `--dryrun` - [#4562 @rjbou - fix #4320] - * Make `opam lock` consistent with `opam install`. On local pin, always take - last opam file even if uncommitted [#4562 @rjbou - fix #4320] - * Opam file: Fix `features` parser [#4507 @rjbou] - * Opam file: Rename `hidden-version` to `avoid-version` [#4527 @dra27] - * Opam file: Fix rewriting with preserved format empty field error - [#4634 @rjbou - fix #4628] - * Opam file: Switch config: Defined `invariant` field as an option to - differentiate when it is not defined [#4638 @rjbou] - * Opam file: Differentiate bad format from bad (opam) version with - `Bad_version` exception, raised from `OpamFormat.check_opam_version` - [#4638 @rjbou] - * Opam file: Always print the `opam-version` field on files [#4638 @rjbou] - * Opam file: Config: add `opam-root-version` field as a marker for the whole - opam root [#4638 @rjbou - fix #4636] - * Opam file: Add `BestEffort` modules with reading functions that don't show - errors, given the `opam_file_format` internal field [#4638 @rjbou - fix #4636] - * Depext: Handle macport variants [#4509 @rjbou - fix #4297] - * Depext: Always upgrade all the installed packages when installing a new - package on Archlinux [#4556 @kit-ty-kate] - * Depext: Handle some additional environment variables (`OPAMASSUMEDEPEXTS`, - `OPAMNODEPEXTS`) [#4587 @AltGr] - * Depext: Improve messages to hint that answering `no` doesn't abort - installation [#4591 @AltGr] - * Depext: Add support for non-interactive mode in MacPorts [#4676 @kit-ty-kate] - * Depext: Handling of packages of tagged repositories for Alpine - [#4700 @rjbou - fix #4670] - * Depext: Clarify some `assume-depexts` related messages - [#4671 @AltGr - partial fix #4662] - * Depext: Warn the user if `epel-release` is missing and unavailable, depexts are - detected [#4679 @dra27 fix #4669] - * Depext: Ignore `config yes` automatic answering when asking confirmation to run - install commands [#4698 @rjbou - fix #4680] - * Sandbox: Fix the conflict with the environment variable name used by Dune - [#4535 @smorimoto - fix ocaml/dune#4166] - * Sandbox: Kill builds on Ctrl-C with bubblewrap - [#4530 @kit-ty-kate - fix #4400] - * Sandbox: Linux: mount existing TMPDIR read-only, re-bind `$TMPDIR` to a - separate TMPFs [#4589 @AltGr] - * Sandbox: Fix the sandbox check [#4589 @AltGr] - * Sandbox: Fix sandbox script shell mistake that made `PWD` read-write on - remove actions [#4589 @AltGr] - * Sandbox: Port bwrap improvements to `sandbox_exec` [#4589 @AltGr] - * Sandbox: Fix `realpath` use for macOS, partial revert of #4589 [#4609 @AltGr] - * Add missing shell quoting to support space and special shell characters in - switch directory path [#4707 @kit-ty-kate] - * Rename `state.cache` to include the `OpamVersion.magic()` string. All `.cache` - files are deleted if any cache file is written to, allowing multiple versions - of the library to coexist without constantly regenerating it - [#4642 @dra27 - fix #4554] - * Fix cuDF preprocessing [#4534 #4627 @AltGr - fix #4624] - * Allow to upgrade to a hidden-version package if a hidden-version package is - already installed [#4525 @kit-ty-kate] - * Add support for a few select criteria useful to CI to the `0install` solver: - `+count[version-lag,solution]` to always choose the oldest version available, - `+removed` to not try to keep installed packages [#4631 @kit-ty-kate] - * Fix `opam-devel`'s tests on platforms without OpenSSL, GNU-diff, and a - system-wide OCaml [#4500 @kit-ty-kate] - * Use Dune to run `reftests` [#4376 @emillon] - * Restrict `extlib` and `dose` version [#4517 @kit-ty-kate] - * Restrict to `opam-file-format.2.1.2` [#4495 @rjbou] - * Require `opam-file-format.2.1.3+` in order to enforce `opam-version: "2.1"` - as first non-comment line [#4639 @dra27 - fix #4394] - * Switch to newer version of MCCS (based on newer GLPK) for `src_ext` - [#4559 @AltGr] - * Bump Dune version to 2.8.2 [#4592 @AltGr] - * Bump the minimal Dune requirement to Dune 1.11 [#4437 @dra27 @kit-ty-kate] - * 4.12 compatibility [#4437 @dra27 @kit-ty-kate] - * Cold compiler updated to 4.12 [#4616 @dra27] - * Fix build from source when a `dune-project` file is presented in the parent - directory [#4545 @kit-ty-kate] - * Fix build from source when a `dune-project` file is presented in the parent - directory [#4545 @kit-ty-kate - fix #4537] - * Fix `opam-devel.install` not to install two files called opam [#4664 @dra27] - * Build release tags as non-dev versions, as for release tarballs - [#4665 @dra27 - fix #4656] - * Disable dev version for tests (needed for format upgrade test) [#4638 @rjbou] - * Add a hint for missing `openssl` in `make cold` [#4702 @rjbou] - * Remove test field from `opam-devel`, they need the network [#4702 @rjbou] - * Update `src_ext` for Dune and MCCS [#4704 @dra27] - * Release scripts: switch to OCaml 4.10.2 by default, add macOS/ARM64 builds by - default [#4559 @AltGr] - * Release scripts: add default CLI version check on full archive build - [#4575 @rjbou] - * Arg: Generalise `mk_tristate_opt` to `mk_state_opt` [#4575 @rjbou] - * Arg: Fix `mk_state_opt` and rename to `mk_enum_opt` [#4626 @rjbou] - * Arg: Add `mk_enum_opt_all` for state flags that appears more than once - [#4582 @rjbou] - * Fix `opam exec` on native Windows when calling Cygwin executables - [#4588 @AltGr] - * Fix temporary file with a too long name causing errors on Windows - [#4590 @AltGr] - * CLI: Add flag deprecation and replacement helper [#4595 @rjbou] - * Win32 Console: fix VT100 support [#3897 #4710 @dra27] - * Tidied the opam files [#4620 @dra27] - * Externalise CLI versioning tools from `OpamArg` into `OpamArgTools` - [#4606 @rjbou] - * Each library defines its own environment variables that fills the config - record [#4606 @rjbou] - * Harden `cygpath` wrapper [#4625 @dra27] - * Reset the plugin `symlinks` when the root is upgraded - [#4641 @dra27 - partial fix for #4619] - * Formalise opam dev version detection with `OpamVersion.is_dev_version` - [#4665 @dra27] - * Add `OpamStd.String.is_prefix_of` [#4694 @rjbou @dra27] - * Fix `OpamStd.Format.pretty_list`: `last` argument dropped if list contains - more than 2 elements [#4694 @rjbou] - * Run the shell hooks with closed `stdin` (bash, zsh) [#4692 @AltGr] - * Improved and extended tests - [#4376 #4504 #4545 #4612 #4668 #4612 #4634 #4672 #4638 #4702 #4697 #4697 - @AltGr @dra27 @emillon @rjbou] - * Improve GitHub Actions - [#4593 #4575 #4610 #4610 #4618 #4606 #4695 #4695 @AltGr @dra27 @rjbou] - * Improve documentation - [#4496 #4506 #4513 #4637 #4681 #4702 - @dannywillems @eth-arm @kit-ty-kate @rjbou @UnixJunkie] ---- diff --git a/data/changelog/opam/2021-06-23-opam-2-1-0-rc2.md b/data/changelog/opam/2021-06-23-opam-2-1-0-rc2.md deleted file mode 100644 index 0b68101e8c..0000000000 --- a/data/changelog/opam/2021-06-23-opam-2-1-0-rc2.md +++ /dev/null @@ -1,52 +0,0 @@ ---- -title: "opam 2.1.0~rc2 released" -authors: [ "David Allsopp" ] -description: "Release announcement for opam 2.1.0~rv2" -tags: [opam, platform] -changelog: | - * Remove OPAMZ3DEBUG evironment variable [#4720 @rjbou - fix #4717] - * Fix format upgrade when there is missing local switches in the config file - [#4715 @rjbou - fix #4713] - * Fix not recorded local switch handling, with format upgrade [#4715 @rjbou] - * Set opam root version to 2.1 [#4715 @rjbou] - * Improved and extended tests [#4715 @rjbou] ---- - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-1-0-rc2/8042)!_ - -The opam team has great pleasure in announcing opam 2.1.0~rc2! - -The focus since beta4 has been preparing for a world with more than one released version of opam (i.e. 2.0.x and 2.1.x). The release candidate extends CLI versioning further and, under the hood, includes a big change to the opam root format which allows new versions of opam to indicate that the root may still be read by older versions of the opam libraries. A plugin compiled against the 2.0.9 opam libraries will therefore be able to read information about an opam 2.1 root (plugins and tools compiled against 2.0.8 are unable to load opam 2.1.0 roots). - -Please do take this release candidate for a spin! It is available in the Docker images at ocaml/opam on [Docker Hub](https://hub.docker.com/r/ocaml/opam/tags) as the opam-2.1 command (or you can `sudo ln -f /usr/bin/opam-2.1 /usr/bin/opam` in your `Dockerfile` to switch to it permanently). The release candidate can also be tested via our installation script (see the [wiki](https://github.com/ocaml/opam/wiki/How-to-test-an-opam-feature#from-a-tagged-release-including-pre-releases) for more information). - -Thank you to anyone who noticed the unannounced first release candidate and tried it out. Between tagging and what would have been announcing it, we discovered an issue with upgrading local switches from earlier alpha/beta releases, and so fixed that for this second release candidate. - -Assuming no showstoppers, we plan to release opam 2.1.0 next week. The improvements made in 2.1.0 will allow for a much faster release cycle, and we look forward to posting about the 2.2.0 plans soon! - -# Try it! - -In case you plan a possible rollback, you may want to first backup your -`~/.opam` directory. - -The upgrade instructions are unchanged: - -1. Either from binaries: run - - ``` - bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.1.0~rc2" - ``` - - or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.1.0-rc2) to your PATH. - -2. Or from source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.1.0-rc2#compiling-this-repo). - - -You should then run: -``` -opam init --reinit -ni -``` - - -We hope there won't be any, but please report any issues to [the bug-tracker](https://github.com/ocaml/opam/issues). -Thanks for trying it out, and hoping you enjoy! diff --git a/data/changelog/opam/2022-08-12-opam-2-1-3.md b/data/changelog/opam/2022-08-12-opam-2-1-3.md deleted file mode 100644 index 9f99a68dd7..0000000000 --- a/data/changelog/opam/2022-08-12-opam-2-1-3.md +++ /dev/null @@ -1,104 +0,0 @@ ---- -title: opam 2.1.3 -authors: [ "Raja Boujbel" ] -description: "Release of opam 2.1.3" -tags: [opam, platform] -changelog: | - * [BUG] Fix `opam init` and `opam init --reinit` when the `jobs` variable has - been set in the opamrc or the current config. [#5056 @rjbou] - * When inferring a 2.1+ switch invariant from 2.0 base packages, don't filter - out pinned packages as that causes very wide invariants for pinned compiler - packages [#5176 @dra27 - fix #4501] - * [BUG] Fix an internal error on repository upgrade from OPAM 1.2 - [#4965 @AltGr] - * Some optimisations to `opam list --installable` queries combined with other - filters [#4882 @AltGr - fix #4311] - * Improve performance of some opam list combinations (e.g. `--available`, - `--installable`) [#4999 @kit-ty-kate] - * Improve performance of `opam list --conflicts-with` when combined with other - filters [#4999 @kit-ty-kate] - * Improve performance of `opam show` by as much as 300% when the package to - show is given explicitly or is unique [#4998 @kit-ty-kate - fix #4997 and - partially #4172] - * [BUG] `opam var` no longer fails if no switch is set - [#5027 @rjbou - fix #5025] - * [BUG] Setting a variable with option `--switch ` fails instead of writing - an invalid `switch-config` file [#5027 @rjbou] - * When a field is defined in switch and global scope, try to determine the - scope also by checking switch selection [#5027 @rjbou] - * [BUG] Handle external dependencies when updating switch state pin status (all - pins), instead as a post pin action (only when called with `opam pin` - [#5047 @rjbou - fix #5046] - * [BUG] When reinstalling a package that has a dirty source, if uncommitted - changes are the same than the ones stored in opam's cache, opam consider that - it is up to date and nothing is updated [4879 @rjbou] - * Stop Zypper from upgrading packages on updates on OpenSUSE - [#4978 @kit-ty-kate] - * Clearer error message if a command doesn't exist - [#4971 @kit-ty-kat - fix #4112] - * [BUG] Remove windows double printing on commands and their output - [#4940 @rjbou] - * Actually allow multiple state caches to co-exist - [#4934 @dra27 - actually fixes #4554] - * Update cold compiler to 4.13 to avoid issues with glibc 2.34 on Unix - [#5017 @dra27] - * Bump opam-file-format to 2.1.4 [#5117 @kit-ty-kate - fix #5116] - * Fix some empty conflict explanations - [#4982 @kit-ty-kate - partially fix #4373] - * Port some tests from master [#4841 #4974 #4861 #4915 #4979 #5004 #5006 #5015 - #5024 #5025 #5031 #5131 #5176 @AltGr @dra27 @kit-ty-kate] - * Update test engine to allow for additional tests [#4913 #4966 #4979 #5004 - #5009 #5024 #5097 @AltGr @kit-ty-kate @rjbou] - * Update for git protocol deprecation on GitHub [#5097 @rjbou] - * When building opam, do not fail if curl/wget is missing [#5223 #5233 @kit-ty-kate] ---- - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-1-3/10299)!_ - -We are pleased to announce the minor release of [opam 2.1.3](https://github.com/ocaml/opam/releases/tag/2.1.3). - -This opam release consists of [backported](https://github.com/ocaml/opam/issues/5000) fixes: - * Fix `opam init` and `opam init --reinit` when the `jobs` variable has been set in the opamrc or the current config. ([#5056](https://github.com/ocaml/opam/issues/5056)) - * `opam var` no longer fails if no switch is set ([#5025](https://github.com/ocaml/opam/issues/5025)) - * Setting a variable with option `--switch ` fails instead of writing an invalid `switch-config` file ([#5027](https://github.com/ocaml/opam/issues/5027)) - * Handle external dependencies when updating switch state pin status (all pins), instead as a post pin action (only when called with `opam pin` ([#5046](https://github.com/ocaml/opam/issues/5046)) - * Remove windows double printing on commands and their output ([#4940](https://github.com/ocaml/opam/issues/4940)) - * Stop Zypper from upgrading packages on updates on OpenSUSE ([#4978](https://github.com/ocaml/opam/issues/4978)) - * Clearer error message if a command doesn't exist ([#4112](https://github.com/ocaml/opam/issues/4112)) - * Actually allow multiple state caches to co-exist ([#4554](https://github.com/ocaml/opam/issues/4554)) - * Fix some empty conflict explanations ([#4373](https://github.com/ocaml/opam/issues/4373)) - * Fix an internal error on admin repository upgrade from OPAM 1.2 ([#4965](https://github.com/ocaml/opam/issues/4965)) - -and improvements: - * When inferring a 2.1+ switch invariant from 2.0 base packages, don't filter out pinned packages as that causes very wide invariants for pinned compiler packages ([#4501](https://github.com/ocaml/opam/issues/4501)) - * Some optimisations to `opam list --installable` queries combined with other filters ([#4311](https://github.com/ocaml/opam/issues/4311)) - * Improve performance of some opam list combinations (e.g. `--available`, `--installable`) ([#4999](https://github.com/ocaml/opam/issues/4999)) - * Improve performance of `opam list --conflicts-with` when combined with other filters ([#4999](https://github.com/ocaml/opam/issues/4999)) - * Improve performance of `opam show` by as much as 300% when the package to show is given explicitly or is unique ([#4997](https://github.com/ocaml/opam/issues/4997))([#4172](https://github.com/ocaml/opam/issues/4172)) - * When a field is defined in switch and global scope, try to determine the scope also by checking switch selection ([#5027](https://github.com/ocaml/opam/issues/5027)) - -You can also find API changes in the [release note](https://github.com/ocaml/opam/releases/tag/2.1.3). - ---- - -Opam installation instructions (unchanged): - -1. From binaries: run - - ``` - bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.1.3" - ``` - - or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.1.3) to your PATH. In this case, don't forget to run `opam init --reinit -ni` to enable sandboxing if you had version 2.0.0~rc manually installed or to update you sandbox script. - -2. From source, using opam: - - ``` - opam update; opam install opam-devel - ``` - - (then copy the opam binary to your PATH as explained, and don't forget to run `opam init --reinit -ni` to enable sandboxing if you had version 2.0.0~rc manually installed or to update your sandbox script) - -3. From source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.1.3#compiling-this-repo). - -We hope you enjoy this new minor version, and remain open to [bug reports](https://github.com/ocaml/opam/issues) and [suggestions](https://github.com/ocaml/opam/issues). diff --git a/data/changelog/opam/2023-07-04-opam-2-2-0-alpha.md b/data/changelog/opam/2023-07-04-opam-2-2-0-alpha.md deleted file mode 100644 index 9e8fe81762..0000000000 --- a/data/changelog/opam/2023-07-04-opam-2-2-0-alpha.md +++ /dev/null @@ -1,360 +0,0 @@ ---- -title: opam 2.2.0~alpha -authors: [ - "David Allsopp", - "LĂ©o AndrĂšs", - "Raja Boujbel", - "Basile ClĂ©ment", - "Kate Deplaix", - "Louis Gesbert", - "Dario Pinto", - "Christine Rose", - "Riku Silvola" -] -description: "Alpha release of opam 2.2.0" -tags: [opam, platform] ---- - - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-2-0-alpha-release/12536)!_ - -We are happy to announce the alpha release of opam 2.2.0. It contains numerous -fixes, enhancements, and updates; including much-improved Windows support, -addressing one of the most important pain points [identified by the OCaml -community](https://discuss.ocaml.org/t/what-are-the-biggest-reasons-newcomers-give-up-on-ocaml/10958). -You can view the full list of changes in the [release -note](https://github.com/ocaml/opam/releases/tag/2.2.0-alpha). - -This alpha release is a significant milestone, brought together by Raja Boujbel -after years of work from the opam dev team (Raja Boujbel, David Allsopp, Kate -Deplaix, Louis Gesbert, in a united OCamlPro/Tarides collaboration) with the -help of many community contributors. We also thank Jane Street for their -continued sponsorship. - -This version is an alpha, so we invite users to test it to spot previously -unnoticed bugs and work towards a stable release. - -## Windows Support - -Opam 2.2 comes with native Windows compatibility. You can now use opam from -your preferred Windows terminal! We rely on the [Cygwin](https://cygwin.com/) -UNIX-like environment for Windows as a compatibility layer, but it is possible -for a package to generate native executables. - -The main opam repository is not Windows compatible at the moment, but existing -work on a [compatible -repository](https://github.com/ocaml-opam/opam-repository-mingw) (originally -from [@fdopen](https://github.com/fdopen)) and [32/64 bit mingw-w64 -packages](https://github.com/dra27/opam-repository) (by -[@dra27](https://github.com/dra27)) is in the process of being merged. Before -the final release, we expect it to be possible to run `opam init` and use the -main opam-repository for Windows. - -### How to Test opam on Windows - -This alpha requires a preexisting Cygwin installation. Support for full -management of a local Cygwin environment inside of opam (so that it's as -transparent as possible) is queued already and should be available in -2.2.0~alpha2 as the default option. - -1. Check that you have all dependencies installed: - * `autoconf`, `make`, `patch`, `curl` - * MinGW compilers: `mingw64-x86_64-gcc-g++`, `mingw64-i686-gcc-g++` - * Or if you want to use the MSVC port of OCaml, you'll need to install Visual Studio or Visual Studio Build Tools -2. Download & extract the [opam archive](https://github.com/ocaml/opam/releases/download/2.2.0-alpha/opam-full-2.2.0-alpha.tar.gz) -3. In the directory launch `make cold` -4. A coffee later, you now have an opam executable! -5. Start your preferred Windows terminal (cmd or PowerShell), and initialise opam with the Windows _sunset_ repository: - * `opam init https://github.com/ocaml-opam/opam-repository-mingw` - -From here, you can try to install [sunset -repository](https://discuss.ocaml.org/t/sunsetting-opam-repository-mingw/11632) -packages. If any bug is found, please [submit an -issue](https://github.com/ocaml-opam/opam-repository-mingw#what-do-i-do-when-things-are-broken). -It will help opam repository maintainers to add Windows repository packages -into the main repository. - -> Hint: if you use the MinGW compiler, don't forget to add to your `PATH` the -path to `libc` dlls (usually -`C:\cygwin64\usr\x86_64-w64-mingw32\sys-root\mingw\bin`). Or compile opam with -`make cold CONFIGURE_ARGS=--with-private-runtime`, and if you change opam -location, don't forget to copy `Opam.Runtime.amd64` (or `Opam.Runtime.i386`) -with it. - - - -## Recursive Pin - -When installing or pinning a package using `opam install` or `opam pin`, opam -normally only looks for opam files at the root of the installed package. With -recursive pinning, you can now instruct opam to also look for `.opam` files in -subdirectories, while maintaining the correct relationship between the `.opam` -files and the package root for versioning and build purposes. - -Recursive pinning is used with the following options to `opam pin` and `opam install`: - * With `--recursive`, opam will look for `.opam` files recursively in all subdirectories. - * With `--subpath `, opam will only look for `.opam` files in the subdirectory ``. - -The two options can be combined: for instance, if your opam packages are stored -as a deep hierarchy in the `mylib` subdirectory of your project, give `opam pin -. --recursive --subpath mylib` a try! - -You can use these options with `opam pin`, `opam install`, and `opam remove`. - -``` -$ tree . -. -├── ba -│   └── z -│   └── z.opam -├── bar -│   └── bar.opam -└── foo.opam - -$ opam pin . --subpath ba/z --no-action -Package z does not exist, create as a NEW package? [y/n] y -z is now subpath-pinned to directory /ba/z in git+file:///tmp/recpin#master (version 0.1) - -$ opam pin --recursive . --no-action -This will pin the following packages: foo, z, bar. Continue? [y/n] y -foo is now pinned to git+file:///tmp/recpin#master (version 0.1) -Package z does not exist, create as a NEW package? [y/n] y -z is now subpath-pinned to directory /ba/z in git+file:///tmp/recpin#master (version 0.1) -Package bar does not exist, create as a NEW package? [y/n] y -bar is now subpath-pinned to directory /bar in file:///tmp/recpin (version 0.1) - -$ opam pin -bar.0.1 (uninstalled) rsync directory /bar in file:///tmp/recpin -foo.0.1 (uninstalled) git git+file:///tmp/recpin#master -z.0.1 (uninstalled) git directory /ba/z in git+file:///tmp/recpin#master - -$ opam pin . --recursive --subpath ba/ --no-action -Package z does not exist, create as a NEW package? [y/n] y -z is now subpath-pinned to directory /ba/z in git+file:///tmp/recpin#master (version 0.1) -``` - -## Tree View - -`opam tree` shows packages and their dependencies with a tree view. It is very -helpful to determine which packages bring which dependencies in your installed -switch. - -``` -$ opam tree cppo -cppo.1.6.9 -├── base-unix.base -├── dune.3.8.2 (>= 1.10) -│ ├── base-threads.base -│ ├── base-unix.base [*] -│ └── ocaml.4.14.1 (>= 4.08) -│ ├── ocaml-base-compiler.4.14.1 (>= 4.14.1~ & < 4.14.2~) -│ └── ocaml-config.2 (>= 2) -│ └── ocaml-base-compiler.4.14.1 (>= 4.12.0~) [*] -└── ocaml.4.14.1 (>= 4.02.3) [*] -``` - -It can also display a reverse-dependency tree (through `opam why`, which is an -alias to `opam tree --rev-deps`). This is useful to examine how dependency -versions get constrained. - -``` -$ opam why cmdliner -cmdliner.1.2.0 -├── (>= 1.1.0) b0.0.0.5 -│ └── (= 0.0.5) odig.0.0.9 -├── (>= 1.1.0) ocp-browser.1.3.4 -├── (>= 1.0.0) ocp-indent.1.8.1 -│ └── (>= 1.4.2) ocp-index.1.3.4 -│ └── (= version) ocp-browser.1.3.4 [*] -├── (>= 1.1.0) ocp-index.1.3.4 [*] -├── (>= 1.1.0) odig.0.0.9 [*] -├── (>= 1.0.0) odoc.2.2.0 -│ └── (>= 2.0.0) odig.0.0.9 [*] -├── (>= 1.1.0) opam-client.2.2.0~alpha -│ ├── (= version) opam.2.2.0~alpha -│ └── (= version) opam-devel.2.2.0~alpha -├── (>= 1.1.0) opam-devel.2.2.0~alpha [*] -├── (>= 0.9.8) opam-installer.2.2.0~alpha -└── user-setup.0.7 -``` - -> Special thanks to [@cannorin](https://github.com/cannorin) for contributing this feature. - -## Recommended Development Tools - -There is now a way for a project maintainer to share their project development -tools: the `with-dev-setup` dependency flag. It is used in the same way as -`with-doc` and `with-test`: by adding a `{with-dev-setup}` filter after a -dependency. It will be ignored when installing normally, but it's pulled in when the -package is explicitely installed with the `--with-dev-setup` flag specified on -the command line. The variable is also resolved in the `post-messages:` field -to allow maintainers to share more informations about that setup. - -This is typically useful for tools that are required for bootstrapping or -regenerating artifacts. - - -For example -``` -opam-version: "2.0" -depends: [ - "ocaml" - "dune" - "ocp-indent" {with-dev-setup} -] -build: [make] -install: [make "install"] -post-messages: -[ "Thanks for installing the package" - "and its tool dependencies too, it will help for your futur PRs" {with-dev-setup} ] -``` - -## Software Heritage Binding - -[Software Heritage](https://www.softwareheritage.org) is a project that aims to -archive all software source code in existence. This is done by collecting -source code with a _loader_ that uploads software source code to the Software -Heritage distributed infrastructure. From there, any project/version is -available via the [search webpage](https://archive.softwareheritage.org/) and -via a unique identifier called the -[SWHID](https://docs.softwareheritage.org/devel/swh-model/persistent-identifiers.html#uri-scheme). -Some OCaml source code is [already -archived](https://www.softwareheritage.org/2021/04/20/connecting-ocaml/), and -the main opam and Coq repository packages are continuously uploaded. - -Opam now integrates a fallback to Software Heritage archive retrieval, based on -SWHID. If an SWHID URL is present in an opam file, the fallback can be -activated. - -To keep backwards compatibility of opam files, we added a specific Software -Heritage URL syntax to the `url.mirrors:` field, which is used to specify -mirrors of the main URL. Opam 2.2.+ understands this specific syntax as a -Software Heritage fallback URL: `https://swhid.opam.ocaml.org/`. - -``` -url { - src: "https://faili.ng/url.tar.gz" - checksum: "sha512=e2146c1d7f53679fd22df66c9061b5ae4f8505b749513eedc67f3c304f297d92e54f5028f40fb5412d32c7d7db92592eacb183128d2b6b81d10ea716b7496eba" - mirrors: [ - "https//failli.ng/mirror.tar.gz" - "https://swhid.opam.ocaml.org/swh:1:dir:9f2be900491e1dabfc027848204ae01aa88fc71d" - ] -} -``` - -To add a Software Heritage fallback URL to your package, use the -[`swhid`](https://github.com/OCamlPro/swhid) library. Specifically the -[`Compute.directory_identifier_deep`](https://github.com/OCamlPro/swhid/blob/master/src/compute.mli#L12) -function: - -1. Download opam package archive -2. Extract the archive -3. Compute SWHID with `Compute.directory_identifier_deep`. You can use this oneliner in the directory: -```ocaml -ocaml -e '#use "topfind";; #require "digestif.ocaml";; #require "swhid";; Swhid_core.Object.pp Format.std_formatter (Result.get_ok (Swhid.Compute.directory_identifier_deep "."))' -``` - -> Special thanks to [@zapashcanon](https://github.com/zapashcanon) for collaborating on this feature. - -## Formula (Experimental) - -It is now possible to leverage the full expressivity of package dependency -formulas from the command line during switch creation and package operations. - -It is possible to create a switch using a formula. For example, with -`ocaml-variant` or `ocaml-system`, excluding `ocaml-base-compiler`: - -``` -opam switch create ocaml --formula '"ocaml-variants" {>= "4.14.1"} | "ocaml-system"' -``` - -This syntax is brought to install commands. For example, while installing a -package, let's say `genet`, you can specify that you want to install either -`conf-mariadb & mariadb` or `conf-postgresql`: - -``` -opam install genet --formula '["mysql" ("conf-mariadb" & "mariadb" | "conf-postgresql")]' -``` - - -## New Options -Here are several of new options (possibly scripts breaking changes are marked with ✘): - -* `opam pin --current` to fix a package to its current state (disabling pending - reinstallations or removals from the repository). The installed package will - be pinned with the opam file that is stored in opam internal state, the one - that is currently installed. - -* `opam pin remove --all` to remove all the pinned packages from a switch. - -* `opam pin remove pkg.version` now removes the pins on pinned `pkg.version`. - -* `opam exec --no-switch` to remove opam environment from launched command. - -``` -$ export FOOVAR=env -$ opam show foo --field setenv -FOOVAR = "package" -$ opam exec -- env | grep "OPAM_SWITCH\|FOO" -FOOVAR=package -OPAM_SWITCH_PREFIX=~/.opam/env -$ opam exec --no-switch -- env | grep "OPAM_SWITCH\|FOO" -FOOVAR=env -``` - -* `opam source --no-switch` to allow downloading package sources without having - an installed switch (instead of failing). - -* `opam clean --untracked` to remove untracked files interactively remaining - from previous packages removal. - -* `opam switch -`, inspired from `git switch -`, that goes back to the previously - selected global switch. - -* `opam admin add-constraint --packages pkg1,pkg2,pkg3` to select - a subset of packages to apply constraints. - -* ✘ Change `--base` into `--invariant`. `opam switch` _compiler_ column now - contains installed packages that verifies invariant formula, and empty - synopsis shows switch invariant. - -``` -$ opam switch create inv --formula '["ocaml" {>= "4.14.1"} "dune"]' -$ opam switch invariant -["ocaml" {>= "4.14.1"} "dune"] -$ opam list --invariant -# Packages matching: invariant -# Name # Installed # Synopsis -dune 3.8.2 Fast, portable, and opinionated build system -ocaml 5.0.0 The OCaml compiler (virtual package) -$ opam switch list -# switch compiler description -→ inv ocaml-base-compiler.5.0.0,ocaml-options-vanilla.1 ocaml >= 4.14.1 & dune -``` - - - -## Try It! - -In case you plan a possible rollback, you may want to first backup your -`~/.opam` directory. - -The upgrade instructions are unchanged: - -1. From binaries: run -``` -bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.2.0~alpha" -``` -Or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.2.0-alpha) to your PATH. - -2. From source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.2.0-alpha#compiling-this-repo). - -Then run: -``` -opam init --reinit -ni -``` - - -Please report any issues to [the bug-tracker](https://github.com/ocaml/opam/issues). - -Thanks for trying this new release out, and we're hoping you will enjoy the new features! diff --git a/data/changelog/opam/2023-07-26-opam-2-2-0-alpha2.md b/data/changelog/opam/2023-07-26-opam-2-2-0-alpha2.md deleted file mode 100644 index bcb3bb558b..0000000000 --- a/data/changelog/opam/2023-07-26-opam-2-2-0-alpha2.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -title: opam 2.2.0~alpha2 -authors: [ - "Raja Boujbel", - "Kate Deplaix", -] -description: "Alpha2 release of opam 2.2.0" -tags: [opam, platform] ---- - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-2-0-alpha2-release/12699)!_ - -We are happy to announce the second alpha release of opam 2.2.0. It contains -some fixes and a new feature for Windows. You can view the full list in the -[release note](https://github.com/ocaml/opam/releases/tag/2.2.0-alpha2). - -This version is an alpha. so we invite users to test it for previously -unnoticed bugs to head towards the stable release. - -## Windows Support - -The first alpha came with native Windows compatibility. This second alpha comes -with a simpler initialisation for Windows: we no longer rely on an already present -[Cygwin](https://cygwin.com/) UNIX-like environment for Windows as a -compatibility layer. During initialisation, opam now proposes to embed its own fully -managed Cygwin install. - -The main `opam-repository` Windows compliance is still a work in progress. We -recommend using an existing, [compatible -repository](https://github.com/ocaml-opam/opam-repository-mingw) (originally -from [@fdopen](https://github.com/fdopen)) and [32/64 bit mingw-w64 -packages](https://github.com/dra27/opam-repository) (by -[@dra27](https://github.com/dra27)). - - -### How to Test opam on Windows - -This alpha requires a preexisting Cygwin installation for compiling opam. - -1. Check that you have all dependencies installed: - * `autoconf`, `make`, `patch`, `curl` - * MinGW compilers: `mingw64-x86_64-gcc-g++`, `mingw64-i686-gcc-g++` - * If you want to use the MSVC port of OCaml, you'll need to install Visual Studio or Visual Studio Build Tools -2. Download & extract the [opam archive](https://github.com/ocaml/opam/releases/download/2.2.0-alpha2/opam-full-2.2.0-alpha2.tar.gz) -3. In the directory launch `make cold` -4. A coffee later, you now have an opam executable! -5. Start your preferred Windows terminal (`cmd` or `PowerShell`), and initialise opam with the Windows _sunset_ repository: - * `opam init https://github.com/ocaml-opam/opam-repository-mingw` - -From here, you can try to install the [sunset -repository](https://discuss.ocaml.org/t/sunsetting-opam-repository-mingw/11632) -packages. If you find any bugs, please [submit an -issue](https://github.com/ocaml-opam/opam-repository-mingw#what-do-i-do-when-things-are-broken). -It will help `opam-repository` maintainers to add Windows repository packages -into the main repository. - -> Hint: if you use the MinGW compiler, don't forget to add to your `PATH` the -path to `libc` dlls (usually -`C:\cygwin64\usr\x86_64-w64-mingw32\sys-root\mingw\bin`). You can also compile opam with -`make cold CONFIGURE_ARGS=--with-private-runtime`, and if you change opam's -location, don't forget to copy `Opam.Runtime.amd64` (or `Opam.Runtime.i386`) -with it. - -## Updates & Fixes - * `opam var` now has a more informative error message in case of package variable - * `opam lint`: update Error 29 on package variables on filters to check also `conflicts:` field - * `opam admin lint` cleans output when called not from a terminal - * `configure` throws an error if no complementary compiler is found on Windows - - -## Try It! - -In case you plan a possible rollback, you may want to first backup your -`~/.opam` directory. - -The upgrade instructions are unchanged: - -1. Either from binaries, run - - ``` - bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.2.0~alpha2" - ``` - - or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.2.0-alpha2) to your PATH. - -2. Or from source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.2.0-alpha2#compiling-this-repo). - - -You should then run: -``` -opam init --reinit -ni -``` - - -Please report any issues to [the bug-tracker](https://github.com/ocaml/opam/issues). diff --git a/data/changelog/opam/2023-11-15-opam-2-2-0-alpha3.md b/data/changelog/opam/2023-11-15-opam-2-2-0-alpha3.md deleted file mode 100644 index 4ddb1da98f..0000000000 --- a/data/changelog/opam/2023-11-15-opam-2-2-0-alpha3.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -title: opam 2.2.0~alpha3 -authors: [ - "Raja Boujbel", - "Kate Deplaix", - "David Allsopp", -] -description: "Alpha3 release of opam 2.2.0" -tags: [opam, platform] ---- - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-2-0-alpha3/13431)!_ - -We are happy to announce the third alpha release of opam 2.2.0. It contains -some fixes and a new feature for Windows. You can view the full list in the -[release note](https://github.com/ocaml/opam/releases/tag/2.2.0-alpha3). - -This version is an alpha, we invite users to test it to spot previously -unnoticed bugs as we head towards the stable release. - -## Major change: Environment variables handling on Windows - -opam files now support a new `x-env-path-rewrite` field which -specifies rewriting rules for the environment variable updates defined in -the `setenv` and `build-env` fields. This field allows greater control over the -separator character used for PATH-like fields (i.e. `;` vs `:`), conversion of -slashes to backslashes, and even conversion from Windows native path format -(`C:\cygwin64\home\dra\.opam`) to Cygwin format (`/home/dra/.opam`). - -The rewriting rules allow opam directory-like variables (e.g. the `%{lib}%` directory -of a switch) to be used in `setenv` and `build-env` fields in a portable way. - -For example, given: -``` -setenv: [ - [PKG_CONFIG_PATH += "%{lib}%/pkgconfig"] - [PATH += "%{share}%/bin"] -] -x-env-path-rewrite: [ - [ PKG_CONFIG_PATH ":" "host" ] - [ PATH (":" {os != "win32"} | ";" {os = "win32"}) ("target" {os != "win32"} | "target-quoted" {os = "win32"}) ] -] -``` -the environment variable changes given by `opam env` on Windows would be: - -``` -PKG_CONFIG_PATH='/cygdrive/c/Users/DRA/AppData/Local/opam/default/lib/pkgconfig[:]' -PATH='C:\Users\DRA\AppData\Local\opam\default\share\bin;C:\Users\DRA\AppData\Local\opam\default\bin;' -``` - -with the following interesting parts for Windows users: -- `PKG_CONFIG_PATH`, which is consumed by a Cygwin-tool, has the directory given in Unix-like syntax, and opam's `share` variable was automatically converted -- The correct separator is used for each (`:` for `PKG_CONFIG_PATH`, `;` for `PATH` is used when adding entries) -- In the `PATH` update, `/bin` was converted to `\bin` - -*Note that the specification for `PATH` is opam's _default_ behaviour, so it's not actually necessary to have this formula for `PATH` in the `x-env-path-rewrite` field.* - -The full syntax is described in full in the [manual](https://opam.ocaml.org/doc/Manual.html#env-update-rewrite). - -Opam files carrying this new field are still compatible with the opam 2.0 syntax as it is an extension field, however its effect is only available with opam 2.2.0~alpha3 and above. -If you want to make sure users of the package containing it have a compatible opam, you can use the `available` field to that end: -``` -available: opam-version >= "2.2.0~alpha3" -``` -or, if the change is Windows-specific: -``` -available: opam-version >= "2.2.0~alpha3" | os != "win32" -``` - -## Other noteworthy changes - -* Sandbox: `/tmp` is now writable again, restoring POSIX compliance -* opam tree: `opam tree package.version` is now supported, displaying the dependency tree of a specific version of a package -* opam tree: `--recurse` and `--subpath` are supported for directory arguments -* opam admin: new `add-extrafiles` command to add/check/update the `extra-files:` field according to the files present in the `files/` directory -* opam lint: new syntax allow marking a set of warnings as errors e.g. `-W @1..9` -* Releases: Pre-built binaries now include ppc64le and s390x - -## Miscellaneous changes - -* A handful of issues related to the compilation of opam on Windows were fixed -* Bugs in the handling of the `OPAMCURL`, `OPAMFETCH` and `OPAMVERBOSE` environment variables were fixed -* Bugs in the handling of the `--assume-built` argument were fixed -* Sporadic crashes and segfaults during shell detection on Windows were fixed - -Various other improvements were made and bugs were fixed. -API changes are denoted in the release note linked above. -This release also includes a handful of PRs improving the documentation and more than a dozen PRs improving and extending the tests. - -## Windows Support - -The main opam-repository Windows compliance is still a work in progress, we -recommend to use existing [compatible -repository](https://github.com/ocaml-opam/opam-repository-mingw) (originally -from [@fdopen](https://github.com/fdopen)) and [32/64 bit mingw-w64 -packages](https://github.com/dra27/opam-repository/tree/windows-5.0) (by -[@dra27](https://github.com/dra27)). - - -### How to Test opam on Windows -If you're feeling adventurous, you can use the experimental pre-built binary for Windows available [here](https://github.com/ocaml/opam/releases/download/2.2.0-alpha3/opam-2.2.0-alpha3-preview-for-windows.exe). It should work but since it's our first public pre-built binary for Windows please use at your own risk. - -Otherwise you can compile opam yourself using the following steps: - -This alpha requires a preexisting Cygwin installation for compiling opam. - -1. Check that you have all dependencies installed: - * `autoconf`, `make`, `patch`, `curl` - * MinGW compilers: `mingw64-x86_64-gcc-g++`, `mingw64-i686-gcc-g++` - * Or if you want to use the MSVC port of OCaml, you'll need to install Visual Studio or Visual Studio Build Tools -2. Download & extract the [opam archive](https://github.com/ocaml/opam/releases/download/2.2.0-alpha3/opam-full-2.2.0-alpha3.tar.gz) -3. In the directory: - * if you are using MSVC: launch `make cold` - * if you are using MinGW: make sure the path to the `libc` dlls are in your `PATH` and launch `make cold`. For instance: `export PATH='C:\cygwin64\usr\x86_64-w64-mingw32\sys-root\mingw\bin':$PATH && make cold`. Don’t forget to update `PATH` accordingly or place the `opam` binary in the same directory as the `libc` dlls if you want to move the resulting opam binary. - * alternatively, if you're using MinGW: `make cold CONFIGURE_ARGS=--with-private-runtime`. If you change the location of the resulting opam binary, don't forget to copy `Opam.Runtime.amd64` directory (or `Opam.Runtime.i386`) in the same directory. -4. A coffee later, you now have an opam executable! -5. Start your preferred Windows terminal (`cmd` or `PowerShell`), and initialise opam with the Windows _sunset_ repository: - * `opam init git+https://github.com/ocaml-opam/opam-repository-mingw` - -From here, you can try to install the [sunset -repository](https://discuss.ocaml.org/t/sunsetting-opam-repository-mingw/11632) -packages. If you find any bugs, please [submit an -issue](https://github.com/ocaml-opam/opam-repository-mingw#what-do-i-do-when-things-are-broken). -It will help opam-repository maintainers to add Windows repository packages -into the main repository. - -## Try it! - -In case you plan a possible rollback, you may want to first backup your -`~/.opam` directory. - -The upgrade instructions are unchanged: - -1. Either from binaries: run - - ``` - bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.2.0~alpha3" - ``` - - or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.2.0-alpha3) to your PATH. - -2. Or from source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.2.0-alpha3#compiling-this-repo). - - -You should then run: -``` -opam init --reinit -ni -``` - - -Please report any issues to [the bug-tracker](https://github.com/ocaml/opam/issues). - -Thanks for trying this new release out, and we hope you will enjoy the new features! diff --git a/data/changelog/opam/2024-01-18-opam-2-2-0-beta1.md b/data/changelog/opam/2024-01-18-opam-2-2-0-beta1.md deleted file mode 100644 index 38ada53168..0000000000 --- a/data/changelog/opam/2024-01-18-opam-2-2-0-beta1.md +++ /dev/null @@ -1,111 +0,0 @@ ---- -title: opam 2.2.0~beta1 -authors: [ - "Raja Boujbel", - "Kate Deplaix", - "David Allsopp", -] -description: "Beta1 release of opam 2.2.0" -tags: [opam, platform] ---- - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-2-0-beta1/13913)!_ - -We are happy to announce the first beta release of opam 2.2.0. It contains -some fixes and a new feature for Windows. You can view the full list in the -[release note](https://github.com/ocaml/opam/releases/tag/2.2.0-beta1). - -This version is a beta, we invite users to test it to spot previously -unnoticed bugs as we head towards the stable release. - -## Major change: Check and advertise to use Git for Windows - -Opam 2.2 is based on a Cygwin installation (previously installed, or managed -internally by opam). Cygwin's Git has three known usability issues when used -outside a Cygwin environment: it uses a different set of trusted certificate -authorities, has its own Credential Manager and potentially uses a separate Git -configuration. We therefore recommend using [Git for -Windows](https://gitforwindows.org) either installed manually or via `winget`. - -At `opam init`, opam checks for available Git(s), and asks the user to choose -one of the available, or to rerun `opam init` after installing another Git. - -## Other noteworthy changes - -* When compiling opam on Windows with MinGW, the resulting opam binary now contains `libstdc++` instead of requiring the DLL to be distributed alongside it or present in the environment -* Fix `opam env` containing carriage return on Cygwin - `eval $(opam env)` now works from a Cygwin bash terminal - -## Miscellaneous changes - -* Remove stray comments from `pwsh` and `cmd` opam env output -* Add `./configure --enable-static` to compile the opam binary statically on Linux -* Fix debug logs showing up regardless of verbosity on macOS 12.7.1 / 13.6.3 / 14.2 and FreeBSD -* Upgrade to, and require mccs >= 1.1+17 -* Fix `opam tree` options `--dev` and `--no-switch` - -Various other improvements were made and bugs were fixed. -API changes are denoted in the release note linked above. -This release also includes PRs improving the documentation and improving and extending the tests. - -## Windows Support - -The main opam-repository Windows compliance is still a work in progress, we -recommend to use existing [compatible -repository](https://github.com/ocaml-opam/opam-repository-mingw) (originally -from [@fdopen](https://github.com/fdopen)) and [32/64 bit mingw-w64 -packages](https://github.com/dra27/opam-repository/tree/windows-5.0) (by -[@dra27](https://github.com/dra27)). - - -### How to Test opam on Windows - -If you're feeling adventurous, you can use the experimental pre-built binary for Windows available [here](https://github.com/ocaml/opam/releases/download/2.2.0-beta1/opam-2.2.0-beta1-x86_64-preview-for-windows.exe). - -Otherwise you can compile opam yourself using the following steps: - -This beta requires a preexisting Cygwin installation for compiling opam. - -1. Check that you have all dependencies installed: - * `autoconf`, `make`, `patch`, `curl` - * MinGW compilers: `mingw64-x86_64-gcc-g++`, `mingw64-i686-gcc-g++` - * Or if you want to use the MSVC port of OCaml, you'll need to install Visual Studio or Visual Studio Build Tools -2. Download & extract the [opam archive](https://github.com/ocaml/opam/releases/download/2.2.0-beta1/opam-full-2.2.0-beta1.tar.gz) -3. In the directory, launch `make cold` -4. A coffee later, you now have an opam executable! -5. Start your preferred Windows terminal (`cmd` or `PowerShell`), and initialise opam with the Windows _sunset_ repository: - * `opam init git+https://github.com/ocaml-opam/opam-repository-mingw` - -From here, you can try to install the [sunset -repository](https://discuss.ocaml.org/t/sunsetting-opam-repository-mingw/11632) -packages. If you find any bugs, please [submit an -issue](https://github.com/ocaml-opam/opam-repository-mingw#what-do-i-do-when-things-are-broken). -It will help opam-repository maintainers to add Windows repository packages -into the main repository. - -## Try it! - -In case you plan a possible rollback, you may want to first backup your -`~/.opam` directory. - -The upgrade instructions are unchanged: - -1. Either from binaries: run - - ``` - bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.2.0~beta1" - ``` - - or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.2.0-beta1) to your PATH. - -2. Or from source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.2.0-beta1#compiling-this-repo). - - -You should then run: -``` -opam init --reinit -ni -``` - - -Please report any issues to [the bug-tracker](https://github.com/ocaml/opam/issues). - -Thanks for trying this new release out, and we hope you will enjoy the new features! diff --git a/data/changelog/opam/2024-04-09-opam-2.2.0-beta2.md b/data/changelog/opam/2024-04-09-opam-2.2.0-beta2.md deleted file mode 100644 index 960340153a..0000000000 --- a/data/changelog/opam/2024-04-09-opam-2.2.0-beta2.md +++ /dev/null @@ -1,150 +0,0 @@ ---- -title: opam 2.2.0~beta2 -authors: [ - "Raja Boujbel", - "Kate Deplaix", - "David Allsopp", -] -description: "Beta2 release of opam 2.2.0" -tags: [opam, platform] ---- - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-2-0-beta2/14461)!_ - -We are indescribably thrilled to announce the second beta release of opam 2.2.0. - -It contains everything required to be able to make opam-repository compatible -with Windows, as well as a whole bunch of fixes. You can view the full list -of changes in the -[release note](https://github.com/ocaml/opam/releases/tag/2.2.0-beta2). - -**We'll post another blog post very soon with more directions on how to test -opam on Windows with this release.** - -This version is a beta, we invite users to test it to spot previously -unnoticed bugs as we head towards the stable release. - -## Changes - -### Windows support - -This beta introduces a handful of changes necessary to be able to -make the default opam-repository support Windows out of the box: - -* Add a new `sys-ocaml-system` init default global eval variable -* Hijack the `"%{var?string-if-true:string-if-false-or-undefined}%"` syntax to - support extending the variables of packages with + in their name - (`conf-c++` and `conf-g++` already exist) using `"%{?pgkname:var:}%"` -* Add `winsymlinks:native` to the `CYGWIN` environment variable when installing - a package on Windows. In particular, this provides a workaround when extracting - ocamlbuild's sources. -* Internal Cygwin installation's bin directory is placed as far down `PATH` as - is necessary not to shadow `bash`, `tar`, `sort` or `git` -* Disable ACL in Cygwin internal install to avoid permission mismatch errors - -We expect to be able to show the proposed changed to opam-repository -very soon to take advantage of all these changes. - -### opam-repository scalability - -The current draft resolution resulting from the discussion in -[ocaml/opam-repository#23789](https://github.com/ocaml/opam-repository/issues/23789) -about the scalability of opam-repository includes the removal of some -packages. However currently, opam uses the `patch` system command to apply -changes from a repository. The behaviour of that command is thus very -important and it is a known behaviour for the macOS and BSDs `patch` -command to not be able to delete files which leads to failures and -inconsistencies for opam. Package managers on those platforms installing -opam already make opam depend on GNU patch, however a certain number of -people do not install opam via a system package manager (e.g. our own install script!) -and end up using their system version of `patch`. This is in particular -a problem on macOS as the name of the GNU patch command is not `gpatch` like -on BSDs but simply `patch` when installed via Homebrew. - -This issue is surprisingly tricky to fix, and after many trials and errors, -we've decided to: - -* Warn if GNU patch is not detected when a patch is applied -* Use `gpatch` by default instead of `patch` on NetBSD and DragonFlyBSD -* Use `gpatch` if it exists and is detected as GNU patch when `patch` is not - GNU patch - -These changes will make their way to the upcoming opam 2.1.6, in a few weeks. - -### Other noteworthy changes - -* Recommend enabling Developer Mode on Windows. - This allows the creation of symlinks without requiring elevation. - Longer-term, the aim is that we should never _require_ Developer Mode, - but at the moment more things work with it than without it! -* Mark the internal Cygwin installation as recommended. - Please don't try to maintain your own Cygwin install - for use with opam unless you really know what you're doing! -* Fix MSYS2 support. For 2.2.0, the focus has been on Cygwin, - so configuring opam to use MSYS2 is quite manual. - Please note that even if opam can use a MSYS2 installation, - it is not yet officially supported and opam repository is not - yet MSYS2 compatible. Use opam with MSYS2 only if you - _really really_ know what you're doing! -* Fix issues when using fish -* Improve the internal Cygwin installation during init on Windows -* Unixify Windows paths in init shells scripts -* Disable Software Heritage fallback by default as there currently no CI job - in opam-repository to check validity of proposed `swhid` regarding release - archive (neither publication tools support) and some concerns were raised - regarding the degree of trust of the hashing method used by Software - Heritage (sha1). -* Make sure `opam source --dev` with git sources, clones the whole repository - instead of using `--depth=1` -* Sandbox: Mark the user temporary directory - (as returned by `getconf DARWIN_USER_TEMP_DIR`) as writable when TMPDIR - is not defined on macOS -* Add Warning 69: Warn for new syntax when package name in variable in string - interpolation contains several '+' (this is related to the "hijack" item above) -* Add support for Wolfi OS, treat it like Alpine family as it also uses apk -* Upgrade the vendored dune package to 3.14.2 to allow to compile opam when - the environment contains unicode characters on Windows (in particular, - this means opam now works if your username contains accented characters) -* Upgrade other vendored packages - (cmdliner 1.2.0, re 1.11.0, ocamlgraph 2.1.0, opam-file-format 2.1.6) - -Various other general and performance improvements were made and bugs were fixed. -API changes are denoted in the -[release note](https://github.com/ocaml/opam/releases/tag/2.2.0-beta2). -This release also includes PRs improving the documentation and improving -and extending the tests. - -## Windows Support - -As we've said above we're writing a separate blog post to present how to test -this new release of opam on Windows. - -Stay tuned! - -## Try it! - -In case you plan a possible rollback, you may want to first backup your -`~/.opam` directory. - -The upgrade instructions are unchanged: - -1. Either from binaries: run - - ``` - bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.2.0~beta2" - ``` - - or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.2.0-beta2) to your PATH. - -2. Or from source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.2.0-beta2#compiling-this-repo). - - -You should then run: -``` -opam init --reinit -ni -``` - - -Please report any issues to [the bug-tracker](https://github.com/ocaml/opam/issues). - -Thanks for trying this new release out, and we hope you will enjoy the new features! diff --git a/data/changelog/opam/2024-06-10-opam-2-2-0-beta3.md b/data/changelog/opam/2024-06-10-opam-2-2-0-beta3.md deleted file mode 100644 index 1aa20be4b2..0000000000 --- a/data/changelog/opam/2024-06-10-opam-2-2-0-beta3.md +++ /dev/null @@ -1,82 +0,0 @@ ---- -title: opam 2.2.0~beta3 -authors: [ - "Raja Boujbel", - "Kate Deplaix", - "David Allsopp", -] -description: "Beta3 release of opam 2.2.0" -tags: [opam, platform] ---- - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-2-0-beta3/14772)!_ - -We are very pleased to announce the third and final beta release of opam 2.2.0. - -We've done our best to polish everything and squash as many bugs as possible in order -to be ready for the final release. You can view the full list of changes in the -[release note](https://github.com/ocaml/opam/releases/tag/2.2.0-beta3). - -This version is a beta, we invite users to test it to spot previously -unnoticed bugs as we near the stable release. - -## Changes - -* Greatly enhance the opam init user experience on Windows, and the number - of recognised configurations -* New option `opam init --cygwin-extra-packages=CYGWIN_PKGS --cygwin-internal-install`, - to specify additional packages for the internal Cygwin installation -* Redirect the opam root to `C:\opamroot\opam-xxx` when the opam root contains spaces on Windows -* Out-of-the-box UTF-8 paged `--help` on Windows -* Fix a performance regression when calling `opam install --deps-only` on an already installed package -* Fix several edge cases related to environment reverting -* Fixed some issues that could appear when upgrading from previous versions of opam -* Fix various issues with `opam tree --with-test` -* Fix parsing opam 2.1 switch import files containing extra-files -* Fix download URLs containing invalid characters on Windows -* Fix some failure cases when extracting tarballs which contain symlinks on Windows - -Various other general and performance improvements were made and bugs were fixed. -API changes are denoted in the -[release note](https://github.com/ocaml/opam/releases/tag/2.2.0-beta3). -This release also includes PRs improving the documentation and improving -and extending the tests. - -## Try it on Windows! - -**BEWARE: the command shown below is experimental, use caution and please do report any issues that you are experiencing. If you prefer to not use our experimental script, feel free to get the Windows binary directly from [the Release Page](https://github.com/ocaml/opam/releases/tag/2.2.0-beta3) and put it in your directory of choice instead.** - -Now that the [Windows support was merged in opam-repository](https://github.com/ocaml/opam-repository/pull/25861), -testing is as simple as calling the following command from a PowerShell terminal: -``` -Invoke-Expression "& { $(Invoke-RestMethod https://raw.githubusercontent.com/kit-ty-kate/opam/windows-installer/shell/install.ps1) }" -``` -opening a new terminal, and a simple `opam init` will work out-of-the-box. - -## Try it on other platforms! - -In case you plan a possible rollback, you may want to first backup your -`~/.opam` directory. - -The upgrade instructions are unchanged: - -1. Either from binaries: run - - ``` - bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.2.0~beta3" - ``` - - or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.2.0-beta3) to your PATH. - -2. Or from source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.2.0-beta3#compiling-this-repo). - - -You should then run: -``` -opam init --reinit -ni -``` - - -Please report any issues to [the bug-tracker](https://github.com/ocaml/opam/issues). - -Thanks for trying this new release out, and we hope you will enjoy the new features! diff --git a/data/changelog/opam/2024-06-21-opam-2-2-0-rc1.md b/data/changelog/opam/2024-06-21-opam-2-2-0-rc1.md deleted file mode 100644 index c2b7a02e7b..0000000000 --- a/data/changelog/opam/2024-06-21-opam-2-2-0-rc1.md +++ /dev/null @@ -1,61 +0,0 @@ ---- -title: opam 2.2.0~rc1 -authors: [ - "Raja Boujbel", - "Kate Deplaix", - "David Allsopp", -] -description: "RC1 release of opam 2.2.0" -tags: [opam, platform] ---- - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-2-0-rc1-release/14842)!_ - -We are very excited to announce the first (and hopefully only) release candidate for opam 2.2.0. - -We've squashed a few more bugs and we consider this to be ready for the final release. You can view the full list of changes in the [release note](https://github.com/ocaml/opam/releases/tag/2.2.0-rc1). - -We invite users to test it one final time just in case there are any previously unnoticed bugs! - -## Changes - -* Fix `opam upgrade` wanting to keep rebuilding the compiler (as now it contains an `x-env-path-rewrite` field) -* Provide defaults so `opam init -y` no longer asks questions on Windows -* Fix `OpamConsole.menu` when there are more than 9 options (can happen on Windows) - -A couple more improvements were made and bugs were fixed. -The single API change is also denoted in the -[release note](https://github.com/ocaml/opam/releases/tag/2.2.0-rc1). -This release also includes PRs extending the tests. - -## Try it! - -In case you plan a possible rollback, you may want to first backup your -`~/.opam` or `$env:LOCALAPPDATA\opam` directory. - -The upgrade instructions are unchanged: - -1. Either from binaries: run - -For Unix systems -``` -bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.2.0~rc1" -``` -or from PowerShell for Windows systems -``` -Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.org/install.ps1) }" -``` -or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.2.0-rc1) to your PATH. - -2. Or from source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.2.0-rc1#compiling-this-repo). - - -You should then run: -``` -opam init --reinit -ni -``` - - -Please report any issues to [the bug-tracker](https://github.com/ocaml/opam/issues). - -Thanks for trying this new release out, and we hope you will enjoy the new features of opam 2.2! diff --git a/data/changelog/opam/2024-09-19-opam-2-3-0-alpha1.md b/data/changelog/opam/2024-09-19-opam-2-3-0-alpha1.md deleted file mode 100644 index 2b952b0a67..0000000000 --- a/data/changelog/opam/2024-09-19-opam-2-3-0-alpha1.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -title: "opam 2.3.0~alpha1" -authors: [ - "Raja Boujbel", - "Kate Deplaix", - "David Allsopp", -] -description: "Release of opam 2.3.0~alpha1" -tags: [opam, platform] ---- - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-3-0-alpha1/15325)!_ - -As mentioned in [our talk at the OCaml Workshop 2024](https://icfp24.sigplan.org/details/ocaml-2024-papers/10/Opam-2-2-and-beyond), -we decided to switch to a time-based release cycle (every 6 months), starting with opam 2.3. - -As promised, we are happy to announce the first alpha release of opam 2.3.0. -You can view the full list of changes in the -[release note](https://github.com/ocaml/opam/releases/tag/2.3.0-alpha1). - -This version is an alpha, we invite users to test it to spot previously -unnoticed bugs as we head towards the stable release. - -## Major breaking change - -When loading a repository, opam now ignores files in packages' `files/` directories which aren't listed in the `extra-files` field of the opam file. -This was done to simplify the opam specification where we hope the opam file to be the only thing that you have to look at when reading a package specification. The optionality of the `extra-files:` field goes against that principle. This change also reduces the surface area for potential file corruption as it ensures that extra-files are checked against their checksums. - -This is a breaking change and means that if you are using the `files/` directory without the `extra-files:` field, you need to make sure that all files in that directory are listed in the `extra-files` field. -Once done, the resulting opam file is backward-compatible and you don't need to worry about anything else. - -If you have an opam repository, you should make sure all files are listed so every packages continues to work without any issue, which can be done automatically using the `opam admin update-extrafiles` command. - -## Major changes - -* Packages requiring an unsupported version of opam are now marked unavailable, instead of causing a repository error. This means an opam repository can now allow smoother upgrade in the future where some packages can require a newer version of opam without having to fork the repository to upgrade every package to that version as was done for the upgrade from opam 1.2 to 2.0 - -* Add a new `opam list --latests-only` option to list only the latest versions of packages. Note that this option is respects the order options were given on the command line. For example: `--available --latests-only` will first list all the available packages, then choose only the latest packages in that set; while `--latests-only --available` will first list all the latest packages, then only show the ones that are available in that set - -* Fix and improve `opam install --check`, which now checks if the whole dependency tree of the package is installed instead of only the root dependencies - -* Add a new `--verbose-on` option to enable verbose output for specified package names. *Thanks to [@desumn](https://github.com/desumn) for this contribution* - -* Add a new `opam switch import --deps-only` option to install only the dependencies of the root packages listed in the opam switch export file - -* `opam switch list-available` will now not display compilers flagged with `avoid-version`/`deprecated` unless `--all` is given, meaning that the "trunk" build of OCaml no longer appears to be the latest version - -* `opam switch create --repos` now accepts git URLs suffixed with `.git` instead of requiring the `git+https://` protocol prefix. This is consistant with other commands such as `opam repository add`. *Thanks to [@Keryan-dev](https://github.com/Keryan-dev) for this contribution* - -* `opam switch set-invariant` now displays the switch invariant using the same syntax as the `--invariant` flag - -* The `builtin-0install` solver was improved and should now be capable of being your default solver instead of `builtin-mccs+glpk`. It was previously mostly only suited for automated tasks such as Continuous Integration. If you wish to give it a try, simply call `opam option solver=builtin-0install` - -* Most of the unhelpful conflict messages were fixed - -* Fix the value of the `arch` variable when the current OS is 32bit on a 64bit machine (e.g. Raspberry Pi OS) - -* opam now fails when git submodules fail to update instead of ignoring the error and just showing a warning - -* opam's libraries now compile with OCaml >= 5.0 on Windows - -Various performance and other improvements were made and bugs were fixed. -API changes are denoted in the release note linked above. -This release also includes a handful of PRs improving the documentation and more two dozen PRs improving and extending the tests. - -## Try it! - -The upgrade instructions are unchanged: - -1. Either from binaries: run - -For Unix systems -``` -bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.3.0~alpha1" -``` -or from PowerShell for Windows systems -``` -Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.org/install.ps1) } -Version 2.3.0~alpha1" -``` -or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.3.0-alpha1) to your PATH. - -2. Or from source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.3.0-alpha1#compiling-this-repo). - - -You should then run: -``` -opam init --reinit -ni -``` - - -Please report any issues to [the bug-tracker](https://github.com/ocaml/opam/issues). - -Happy hacking! diff --git a/data/changelog/opam/2024-10-15-opam-2-3-0-beta1.md b/data/changelog/opam/2024-10-15-opam-2-3-0-beta1.md deleted file mode 100644 index fbdbf068c1..0000000000 --- a/data/changelog/opam/2024-10-15-opam-2-3-0-beta1.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -title: "opam 2.3.0~beta1" -authors: [ - "Raja Boujbel", - "Kate Deplaix", - "David Allsopp", -] -description: "Release of opam 2.3.0~beta1" -tags: [opam, platform] ---- - -_Feedback on this post is welcome on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-3-0-beta1/15450)!_ - -We're happy to announce the first beta release of opam 2.3.0. -Compared to the previous 2.3.0\~alpha1 release, you can view the full list of changes in the -[release note](https://github.com/ocaml/opam/releases/tag/2.3.0-beta1). - -This version is a beta, so we invite users to test it to spot previously -unnoticed bugs as we head towards the stable release. - -## Changes - -* Fix an opam 2.1 regression where the initial pin of a local VCS directory would store untracked and ignored files. - Those files would usually be cleaned before building the package; however, Git submodules would not be cleaned and would cause issues when paired with the new behaviour added in 2.3.0\~alpha1, which makes an opam error when Git submodules fail to update (it was previously a warning). ([#5809](https://github.com/ocaml/opam/issues/5809)) - -* Fix a regression which would make opam crash on platforms where `getconf LONG_BIT` is not available (e.g., OpenBSD). ([#6215](https://github.com/ocaml/opam/issues/6215)) - -* Fix the installed packages internal cache, which was storing the wrong version of the opam file after a build failure. - This could be triggered easily for users with custom repositories with non-populated extra-files. ([#6213](https://github.com/ocaml/opam/pull/6213)) - -* Fix a regression in lint W59 with local URLs that are not archives. ([#6218](https://github.com/ocaml/opam/issues/6218)) - -* Fix the compilation of opam on Windows with OCaml >= 5.0 (again) - -* Several improvements to the prebuilt release binaries were made: - * The Linux binaries are now built on Alpine 3.20 - * The FreeBSD binary is now built on FreeBSD 14.1 - * The OpenBSD binary is now built on OpenBSD 7.6 and loses support for OpenBSD 7.5 and older - * A Linux/riscv64 binary is now available - -API changes are denoted in the release note linked above. -This release also includes a couple of PRs improving and extending the tests. - -## Try It! - -The upgrade instructions are unchanged: - -1. Either from binaries: run - -For Unix systems -``` -bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.3.0~beta1" -``` -or from PowerShell for Windows systems -``` -Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.org/install.ps1) } -Version 2.3.0~beta1" -``` -or download manually from [the GitHub "Releases" page](https://github.com/ocaml/opam/releases/tag/2.3.0-beta1) to your PATH. - -2. Or from source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.3.0-beta1#compiling-this-repo). - - -You should then run: -``` -opam init --reinit -ni -``` - - -Please report any issues to [the bug-tracker](https://github.com/ocaml/opam/issues). - -Happy hacking! diff --git a/data/changelog/opam/2024-10-24-opam-2-3-0-beta2.md b/data/changelog/opam/2024-10-24-opam-2-3-0-beta2.md deleted file mode 100644 index 806c585285..0000000000 --- a/data/changelog/opam/2024-10-24-opam-2-3-0-beta2.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "opam 2.3.0~beta2" -authors: [ - "Raja Boujbel", - "Kate Deplaix", - "David Allsopp", -] -description: "Release of opam 2.3.0~beta2" -tags: [opam, platform] ---- - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-3-0-beta2/15496)!_ - -We're happy to announce the second beta release of opam 2.3.0. - -As this version is a beta, we invite users to test it to spot previously -unnoticed bugs as we head towards the stable release. - -## Changes - -Compared to the previous 2.3.0~beta1 release, the main change is: - -* Fix a regression in the detection of the current terminal size that leads to opam output that tries to fit itself into 80 columns regardless of the current terminal size ([#6243](https://github.com/ocaml/opam/issues/6243)). - -* A NetBSD/x86_64 pre-built release binary is now available - -You can view the full list of changes, including API changes, in the -[release note](https://github.com/ocaml/opam/releases/tag/2.3.0-beta2). - -## Try it! - -The upgrade instructions are unchanged: - -1. Either from binaries: run - -For Unix systems -``` -bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.3.0~beta2" -``` -or from PowerShell for Windows systems -``` -Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.org/install.ps1) } -Version 2.3.0~beta2" -``` -or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.3.0-beta2) to your PATH. - -2. Or from source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.3.0-beta2#compiling-this-repo). - - -You should then run: -``` -opam init --reinit -ni -``` - - -Please report any issues to [the bug-tracker](https://github.com/ocaml/opam/issues). - -Happy hacking! diff --git a/data/changelog/opam/2024-10-30-opam-2-3-0-rc1.md b/data/changelog/opam/2024-10-30-opam-2-3-0-rc1.md deleted file mode 100644 index 8291b8b004..0000000000 --- a/data/changelog/opam/2024-10-30-opam-2-3-0-rc1.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -title: "opam 2.3.0~rc1" -authors: [ - "Raja Boujbel", - "Kate Deplaix", - "David Allsopp", -] -description: "Release of opam 2.3.0~rc1" -tags: [opam, platform] ---- - -_Feedback on this post is welcomed on [Discuss](https://discuss.ocaml.org/t/ann-opam-2-3-0-rc1/15533)!_ - -We're happy to announce the first and hopefully only release candidate of opam 2.3.0. - -This version does not have any significant change compared to the previous 2.3.0~beta2 release -and we hope the final release to also have no significant change. -Regardless, we invite users to test this version to make sure there isn't any regressions. - -Unless a regression is spotted or another problem arises, we hope to have the final release of 2.3.0 out on the 12th of November. - -## Try it! - -The upgrade instructions are unchanged: - -1. Either from binaries: run - -For Unix systems -``` -bash -c "sh <(curl -fsSL https://opam.ocaml.org/install.sh) --version 2.3.0~rc1" -``` -or from PowerShell for Windows systems -``` -Invoke-Expression "& { $(Invoke-RestMethod https://opam.ocaml.org/install.ps1) } -Version 2.3.0~rc1" -``` -or download manually from [the Github "Releases" page](https://github.com/ocaml/opam/releases/tag/2.3.0-rc1) to your PATH. - -2. Or from source, manually: see the instructions in the [README](https://github.com/ocaml/opam/tree/2.3.0-rc1#compiling-this-repo). - - -You should then run: -``` -opam init --reinit -ni -``` - - -Please report any issues to [the bug-tracker](https://github.com/ocaml/opam/issues). - -Happy hacking!