package dkml-c-probe
Cross-compiler friendly ABI and library discovery for OCaml's native C compilers
Install
dune-project
Dependency
Authors
Maintainers
Sources
4.0.0.tar.gz
sha256=178da4c1421d5c9512e553dd114863b2d30c051d9ef3f4c1c59c793fadf73491
sha512=e454bfeaa1302992e9f1f5a08f37351858b1fb59251d55b7cf465af37e5c4c3ebfdef33ca023c83933ac7599bdf4c64158930407b79efb19b8885dbfb0463ab0
doc/CHANGES.html
4.0.0
V4gains full musl parity on Linux: new ABIsLinux_x86_muslandLinux_arm64_musljoinLinux_x86_64_musl. The<features.h>/__GLIBC__test now covers the__i386__and__aarch64__branches of the C header (new macrosDKML_ABI_linux_x86_muslandDKML_ABI_linux_arm64_musl).V1-V3report the new musl ABIs under their glibc names (Linux_x86,Linux_arm64), matching the existingLinux_x86_64_musl->Linux_x86_64behavior. InV1, an x86 musl host gets the pre-existingResult.errorbecauseV1never hadLinux_x86.- BREAKING (relative to the unpublished 3.3.0 git tag): the
V4.t_abiconstructor list stays alphabetical, so the insertions change the ranks of later constructors. Rebuild anything that marshalledV4.t_abivalues. 3.3.0 was tagged but never published to opam; use 4.0.0 instead. C_conf.load ()now usesV4(wasV3): on musl hosts the ABI-specific environment variable suffix is now e.g.DEFAULT_LINUX_X86_64_MUSLinstead ofDEFAULT_LINUX_X86_64. glibc, Windows, and macOS hosts are unchanged.- Versioning policy restored: interface module
V<n>ships in major versionn(V4<-> 4.0.0, asV3<-> 3.0.0 andV2<-> 2.0.0). - Known gap: the Linux arm32 ABIs (
linux_arm32v6,linux_arm32v7) have no musl variants yet. - CI: GitHub Actions re-enabled and every workflow brought onto the repository's curated Actions allowlist (third-party actions SHA-pinned). The
Testsworkflow now also covers musl: a C-header probe on Alpine (musl) and Debian (glibc) across x86_64, x86 and arm64, and the full dune-configurator path on a real musl host, alongside the BSD guests (upgradedcross-platform-actions) and the Windows/macOS/Linux matrix onocaml/setup-ocaml(replacing the former DkML MSVC/MSYS2 + manylinux reusable-workflow matrix, whose actions are not allowlisted).syntax.ymlupgraded to pinnedmarkdown-link-checkandaction-shellcheck.
3.3.0 (git tag only; never published to opam — superseded by 4.0.0)
- Add
V4with the new ABILinux_x86_64_musl: a Linux x86_64 host whose C compiler targets a non-glibc libc (musl). Detection pulls in<features.h>(when available) inside the Linux x86_64 branch of the C header and treats the absence of__GLIBC__as musl. V1-V3report a musl host asLinux_x86_64rather than an error. Those interfaces predate musl detection and always reportedLinux_x86_64on musl hosts, so existing consumers keep working unchanged. This intentionally differs from theResult.errordowngrade used for the ABIs introduced inV2andV3.
3.2.0
- Add
get_os_name. Unlike the ABI name the operating system name is mixed-case (ex.Windows) to aid in scenarios where the operating system name is presented to users. The ABI name is canonically lowercase and will stay that way.
3.1.0
- Fix bug with eol=CRLF not recognized on macOS .gitattributes
- Allow cross-compile dune build step
3.0.0
- Remove unnecessary
rresult - Remove
failwith - Add
Unknowntot_abiand other sum types - Avoid compiler issues by defaulting to
Unknownin the C header - Add
C_confmodule - Add OpenBSD, FreeBSD, NetBSD and DragonFly on x86_64 architectures
- Add CI for cross-compiling on macOS
2.0.0
- Add
Linux_x86. - Switch from
(t_os, Rresult.msg) resultto(t_os, string) result(ditto fort_abi).
1.0.0
Internal version.