opam-lib 1.3 available
opam-lib 1.3
The package for opam-lib version 1.3 has just been released in the official
opam
repository. There is no release of
opam
with version 1.3, but this is an intermediate
version of the library that retains compatibility of the file formats with
1.2.2.
The purpose of this release is twofold:
- provide some fixes and enhancements over opam-lib 1.2.2. For example, 1.3
has an enhanced
lint
function - be a step towards migration to opam-lib 2.0.
This version is compatible with the current stable release of opam (1.2.2), but dependencies have been updated so that you are not (e.g.) stuck on an old version of ocamlgraph.
Therefore, I encourage all maintainers of tools based on opam-lib to migrate to 1.3.
The respective APIs are available in html for 1.2 and 1.3.
A note on plugins: when you write opam-related tools, remember that by setting
flags: plugin
in their definition and installing a binary namedopam-toolname
, you will enable the users to install packagetoolname
and run your tool with a singleopam toolname
command.
Architectural changes
If you need to migrate from 1.2 to 1.3, these tips may help:
-
there are now 6 different ocamlfind sub-libraries instead of just 4:
format
contains the handlers for opam types and file formats, has been split out from the core library, whilestate
handles the state of a given opam root and switch and has been split from theclient
library. -
OpamMisc
is gone and moved into the better organisedOpamStd
, with submodules forString
,List
, etc. -
OpamGlobals
is gone too, and its contents have been moved to:OpamConsole
for the printing, logging, and shell interface handling partOpamXxxConfig
modules for each of the libraries for handling the global configuration variables. You should call the respectiveinit
functions, with the options you want to set, for proper initialisation of the lib options (and handling theOPAMXXX
environment variables)
-
OpamPath.Repository
is nowOpamRepositoryPath
, and part of therepository
sub-library.
opam-lib 2.0 ?
The development version of the opam-lib (2.0~alpha5
as of writing) is already
available on opam. The name has been changed to provide a finer granularity, so
it can actually be installed concurrently -- but be careful not to confuse the
ocamlfind package names (opam-lib.format
for 1.3 vs opam-format
for 2.0).
The provided packages are:
opam-file-format
: now separated from the opam source tree, this has no dependencies and can be used to parse and print the raw opam syntax.opam-core
: the basic toolbox used by opam, which actually doesn't include the opam specific part. Includes a tiny extra stdlib, the engine for running a graph of processes in parallel, some system handling functions, etc. Depends on ocamlgraph and re only.opam-format
: defines opam data types and their file i/o functions. Depends just on the two above.opam-solver
: opam's interface with the dose3 library and external solvers.opam-repository
: fetching repositories and package sources from all handled remote types.opam-state
: handling of the opam states, at the global, repository and switch levels.opam-client
: the client library, providing the top-level operations (installing packages...), and CLI.opam-devel
: this packages the development version of the opam tool itself, for bootstrapping. You can install it safely as it doesn't install the newopam
in the PATH.
The new API can be also be browsed ; please get in touch if you have trouble migrating.
About OCamlPro:
OCamlPro is a R&D lab founded in 2011, with the mission to help industrial users benefit from experts with a state-of-the-art knowledge of programming languages theory and practice.
- We provide audit, support, custom developer tools and training for both the most modern languages, such as Rust, Wasm and OCaml, and for legacy languages, such as COBOL or even home-made domain-specific languages;
- We design, create and implement software with great added-value for our clients. High complexity is not a problem for our PhD-level experts. For example, we helped the French Income Tax Administration re-adapt and improve their internally kept M language, we designed a DSL to model and express revenue streams in the Cinema Industry, codename Niagara, and we also developed the prototype of the Tezos proof-of-stake blockchain from 2014 to 2018.
- We have a long history of creating open-source projects, such as the Opam package manager, the LearnOCaml web platform, and contributing to other ones, such as the Flambda optimizing compiler, or the GnuCOBOL compiler.
- We are also experts of Formal Methods, developing tools such as our SMT Solver Alt-Ergo (check our Alt-Ergo Users' Club) and using them to prove safety or security properties of programs.
Please reach out, we'll be delighted to discuss your challenges: contact@ocamlpro.com or book a quick discussion.
Most Recent Articles
2024
- opam 2.3.0 release!
- Optimisation de Geneweb, 1er logiciel français de Généalogie depuis près de 30 ans
- Alt-Ergo 2.6 is Out!
- Flambda2 Ep. 3: Speculative Inlining
- opam 2.2.0 release!
- Flambda2 Ep. 2: Loopifying Tail-Recursive Functions
- Fixing and Optimizing the GnuCOBOL Preprocessor
- OCaml Backtraces on Uncaught Exceptions
- Opam 102: Pinning Packages
- Flambda2 Ep. 1: Foundational Design Decisions
- Behind the Scenes of the OCaml Optimising Compiler Flambda2: Introduction and Roadmap
- Lean 4: When Sound Programs become a Choice
- Opam 101: The First Steps
2023
- Maturing Learn-OCaml to version 1.0: Gateway to the OCaml World
- The latest release of Alt-Ergo version 2.5.1 is out, with improved SMT-LIB and bitvector support!
- 2022 at OCamlPro
- Autofonce, GNU Autotests Revisited
- Sub-single-instruction Peano to machine integer conversion
- Statically guaranteeing security properties on Java bytecode: Paper presentation at VMCAI 23
- Release of ocplib-simplex, version 0.5