diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 79c5db4..5f67c0e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,7 +26,7 @@ jobs: - name: Install mcpp run: | - # ⚠️ A LOOP, BECAUSE ONE `xlings update` CAN RETURN A STALE INDEX + # A LOOP, BECAUSE ONE `xlings update` CAN RETURN A STALE INDEX # WITHOUT SAYING SO. # # The index is published as an artifact behind a pointer, and that @@ -61,7 +61,7 @@ jobs: - name: The package builds for a freestanding target run: mcpp build --target riscv64-none-elf - # ⚠️ The load-bearing check, and not "it compiled". These are REPLACEABLE + # The load-bearing check, and not "it compiled". These are REPLACEABLE # functions: a definition that is present but not exported under the name # the compiler emits would compile, link into nothing, and leave every # consumer failing on `undefined symbol: operator new` exactly as before. @@ -75,7 +75,7 @@ jobs: echo "exported new/delete symbols: $n" test "$n" -ge 12 || { "$NM" --defined-only "$OBJ"; echo "expected at least 12"; exit 1; } - # ⚠️⚠️ THE TWO DECLARATIONS THIS PACKAGE CARRIES MUST STILL BE openkal's, + # THE TWO DECLARATIONS THIS PACKAGE CARRIES MUST STILL BE openkal's, # AND UNTIL NOW NOTHING SAID SO. # # `src/alloc.cpp` declares `kal_alloc` and `kal_free` itself rather than @@ -86,7 +86,7 @@ jobs: # changed either signature, this package would compile, link, and produce # a silently wrong calling convention at the only place it matters. # - # ⭐ SO THE TWO ARE COMPILED TOGETHER, once, in a translation unit that + # SO THE TWO ARE COMPILED TOGETHER, once, in a translation unit that # ships nowhere: openkal's header and this package's own declarations in # the same scope. Disagreeing declarations of the same `extern "C"` name # are a compile error that names them, which is the diagnostic wanted. @@ -95,7 +95,7 @@ jobs: set -euo pipefail CXX=$(ls -d "$HOME"/.mcpp/registry/data/xpkgs/xim-x-llvm/*/bin/clang++ | head -1) - # ⚠️⚠️ THE VERSION IS NAMED, AND `head -1' OVER THE STORE IS NOT AN + # THE VERSION IS NAMED, AND `head -1' OVER THE STORE IS NOT AN # ANSWER TO THIS QUESTION. The package store accumulates every openkal # a build on this machine ever needed; the first spelling of this step # globbed it and got 0.5.2 -- four minors behind the pin -- and @@ -138,7 +138,7 @@ jobs: # A package that has only ever been built from Linux is a package whose # consumers must use Linux, and nothing in these sources says so. # - # ⚠️ A TOOLCHAIN AXIS IS ABSENT HERE, AND THAT IS MEASURED RATHER THAN + # A TOOLCHAIN AXIS IS ABSENT HERE, AND THAT IS MEASURED RATHER THAN # ASSUMED. The row for a bare-metal triple names its compiler, and the # command-line override does not displace it: `--toolchain gcc@16.1.0` on a # `riscv64-none-elf` build resolves llvm@22.1.8 regardless. A matrix over @@ -147,7 +147,7 @@ jobs: # choice is real — openkal, whose declarations are compiled by three families # on three systems. # - # ⚠️ BUILD ONLY, AND DELIBERATELY. Behaviour is asserted once, above, under an + # BUILD ONLY, AND DELIBERATELY. Behaviour is asserted once, above, under an # emulator. Booting the same image from three systems would be a statement # about the emulator rather than about this package, and "the image does what # the README says" does not become more true for having been observed from @@ -188,7 +188,7 @@ jobs: - name: Install mcpp run: | - # ⚠️ A LOOP, BECAUSE ONE `xlings update` CAN RETURN A STALE INDEX + # A LOOP, BECAUSE ONE `xlings update` CAN RETURN A STALE INDEX # WITHOUT SAYING SO. # # The index is published as an artifact behind a pointer, and that @@ -222,7 +222,7 @@ jobs: - name: The allocator cross-builds run: | - # ⚠️ TWICE, AND THE FIRST IS ALLOWED TO FAIL — every row of this + # TWICE, AND THE FIRST IS ALLOWED TO FAIL — every row of this # matrix is a machine that has never targeted this triple, which is # precisely where mcpp's lazy install of the target C library shows. # The first build compiles sources needing its headers before they diff --git a/README.md b/README.md index 76e800b..41eac0f 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ std-freestanding = { version = "0.3.1", features = ["alloc-kal"] } That is the whole of the consumer's side. -⚠️ **0.3.1 and not 0.3.0.** The `[feature-deps]` entry in 0.3.0 named a version +**0.3.1 and not 0.3.0.** The `[feature-deps]` entry in 0.3.0 named a version selector the resolver does not have, so the feature activated and its implementation could not be fetched. A feature whose implementation cannot be fetched is a feature that does not exist. The feature both states the @@ -50,7 +50,7 @@ naming a mangled operator, which is the same defect with a worse message. [openkal][kal] 0.9.0 declares them. On bare metal the board package supplies them — the console and the heap region are board facts. -⭐ Those two are all this package reaches for, which is why it follows openkal's +Those two are all this package reaches for, which is why it follows openkal's minor versions without changing: 0.9.0 withdrew `kal_io_result`, made the capability words operations and added `kal_memory_granularity`, and none of that is on the allocation path. The dependency is declared so that a mismatch is @@ -58,7 +58,7 @@ reported when the graph resolves, and continuous integration compiles the two declarations this package carries against the header they came from, because a version dependency catches a version mismatch and not a signature one. -⚠️ The unsized `operator delete` overloads have no size to pass and give zero, +The unsized `operator delete` overloads have no size to pass and give zero, which openkal defines as "not stated". An implementation that needs the size in order to free must therefore record it itself; one built over a C library's allocator, as the reference bare-metal backend is, does not. diff --git a/mcpp.toml b/mcpp.toml index b23e587..d84dd8c 100644 --- a/mcpp.toml +++ b/mcpp.toml @@ -10,7 +10,7 @@ [package] namespace = "mcpplibs" name = "std-freestanding-alloc-kal" -version = "0.1.5" +version = "0.1.6" description = "The replaceable allocation functions for the freestanding subset, forwarded to openkal" license = "Apache-2.0" authors = ["mcpplibs"] @@ -21,12 +21,12 @@ provides = ["freestanding-allocator"] # mismatch into a resolution-time message instead of a link-time one, and # records what this package's twelve definitions are written against. # -# ⚠️ An openkal IMPLEMENTATION is not declared here and must not be. Which +# An openkal IMPLEMENTATION is not declared here and must not be. Which # implementation is present is a property of the target — on bare metal the # board package supplies it, because the console address it writes to is a # board fact. A dependency here would bind every consumer to one board. [dependencies] -openkal = "0.12.0" +openkal = "0.13.0" [build] # The same reasoning openkal's own implementations record. No exception may diff --git a/src/alloc.cpp b/src/alloc.cpp index de64cc2..64ad702 100644 --- a/src/alloc.cpp +++ b/src/alloc.cpp @@ -20,7 +20,7 @@ // the standard specifies, written in the form a replacement implementation is // expected to use. // -// ⚠️ TWELVE, AND THE LAST FOUR ARE THE ONES THAT GET FORGOTTEN. +// TWELVE, AND THE LAST FOUR ARE THE ONES THAT GET FORGOTTEN. // // Measured on riscv64-none-elf: defining the eight sized and unsized forms // leaves the link failing on `operator delete(void*, unsigned long, @@ -47,7 +47,7 @@ void kal_free(void* p, size_type size, size_type align); namespace { // The alignment an unaligned allocation must satisfy. // -// ⚠️ `__BIGGEST_ALIGNMENT__` and not `alignof(std::max_align_t)`: the latter +// `__BIGGEST_ALIGNMENT__` and not `alignof(std::max_align_t)`: the latter // lives in , which would mean depending on the subset package and // closing a cycle. The macro is predefined by both GCC and Clang and is the // same quantity. Measured: `alignof(__max_align_t)` does not compile here at @@ -55,7 +55,7 @@ namespace { // library include path does not have. constexpr size_type kDefaultAlign = __BIGGEST_ALIGNMENT__; -// ⚠️ Size and alignment are forwarded to `kal_free` because openkal's contract +// Size and alignment are forwarded to `kal_free` because openkal's contract // requires them: an implementation may be a bump allocator, a slab, or a // wrapper over the C library's, and only the first of those can ignore them. // The unsized `operator delete` overloads have no size to pass and give zero,