package dkml-c-probe

  1. Overview
  2. Docs

4.0.0

  • V4 gains full musl parity on Linux: new ABIs Linux_x86_musl and Linux_arm64_musl join Linux_x86_64_musl. The <features.h> / __GLIBC__ test now covers the __i386__ and __aarch64__ branches of the C header (new macros DKML_ABI_linux_x86_musl and DKML_ABI_linux_arm64_musl).
  • V1-V3 report the new musl ABIs under their glibc names (Linux_x86, Linux_arm64), matching the existing Linux_x86_64_musl -> Linux_x86_64 behavior. In V1, an x86 musl host gets the pre-existing Result.error because V1 never had Linux_x86.
  • BREAKING (relative to the unpublished 3.3.0 git tag): the V4.t_abi constructor list stays alphabetical, so the insertions change the ranks of later constructors. Rebuild anything that marshalled V4.t_abi values. 3.3.0 was tagged but never published to opam; use 4.0.0 instead.
  • C_conf.load () now uses V4 (was V3): on musl hosts the ABI-specific environment variable suffix is now e.g. DEFAULT_LINUX_X86_64_MUSL instead of DEFAULT_LINUX_X86_64. glibc, Windows, and macOS hosts are unchanged.
  • Versioning policy restored: interface module V<n> ships in major version n (V4 <-> 4.0.0, as V3 <-> 3.0.0 and V2 <-> 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 Tests workflow 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 (upgraded cross-platform-actions) and the Windows/macOS/Linux matrix on ocaml/setup-ocaml (replacing the former DkML MSVC/MSYS2 + manylinux reusable-workflow matrix, whose actions are not allowlisted). syntax.yml upgraded to pinned markdown-link-check and action-shellcheck.

3.3.0 (git tag only; never published to opam — superseded by 4.0.0)

  • Add V4 with the new ABI Linux_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-V3 report a musl host as Linux_x86_64 rather than an error. Those interfaces predate musl detection and always reported Linux_x86_64 on musl hosts, so existing consumers keep working unchanged. This intentionally differs from the Result.error downgrade used for the ABIs introduced in V2 and V3.

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 Unknown to t_abi and other sum types
  • Avoid compiler issues by defaulting to Unknown in the C header
  • Add C_conf module
  • 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) result to (t_os, string) result (ditto for t_abi).

1.0.0

Internal version.