Repository navigation
0.25.2: the suite keeps the surface under a discarding link; the tests in mtest's layout (unit, e2e, cts, bench) - #67
Merged
Conversation
…discarding link keeps the surface
…r an implementation; shorter comments
… set, the kit with the mtest library, each interface's cost a bench case; one report of the run
…++ cases of tests/unit and tests/e2e, and CI runs them as sets
… gcc and llvm and on macOS; the module form on every row
This was referenced Nov 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The surface the suite links (SPEC clause 11, entry 63)
A link that discards definitions nothing reaches kept of an implementation only what the conformance suite calls, so clause 9's comparison of the exported names with the manifest reported an interface absent whose definitions the implementation holds (measured:
openkal.processon an i386 Linux row linked with--gc-sections). The suite reaches every surface name without requiring it (tests/cts/src/declarations.c, generated bytools/check-declarations.sh --write): a defined name is kept, an absent one is null, so the suite still links against an implementation of some interfaces. The mechanism is a weak reference, used where the object format's static link accepts one to a name defined nowhere (ELF). No clause or declaration changes.The tests in mtest's layout
tests/unit/version.cppKAL_VERSION_*, read by the compiler, equal the manifest's versiontests/e2e/headers.cpp-nostdinc(cc, clang), no backend type, and that check failing on a copy givenunsigned longtests/e2e/abi.cpptests/e2e/data/abi)tests/e2e/substitution.cpptests/cts/conformance/): onectscase per interface, onebenchcase<interface>.costper measured costkit/tests/tests/checksand the inline steps of thedeclarationsandsubstitutionjobs are C++ cases of the mtest library. Each case works on copies in its temporary directory, so none writes the checkout and none needs serializing; a compiler a row lacks is a capability, and the case is skipped with the reason.mcpp.tomlstates[dev-dependencies] mcpplibs.mtest(not resolved for a consumer) and[test] discover = ["tests/*/*.cpp"];mtest.tomlstates the host (mcpp).testsjob runsmtest run --set fullon Linux (gcc 16.1.0, llvm 22.1.8) and macOS (llvm 22.1.8): 16 passed, 0 skipped on each. Their subjects are the text, the headers through the tools and substitution, none of which depends on a consumer's toolchain; thedeclarationsjob builds the module form on its five rows. The mtest 0.8.5 library does not compile under LLVM 20's libc++import std(directory_iteratorcomparison,lib/src/mtest.cpp:1290), so the macOS row oftestsuses LLVM 22.tools/run-conformance.shkeeps its arguments, so an implementation's invocation is unchanged; its store istests/cts/.mtest.tools/gen-macros.sh [<output>]writes elsewhere when asked, which is how the case compares without regenerating in place.mtest-tests-*,mtest-kit-*,mtest-cts-*); thereportjob writesmtest ci reportfor the run's group.benchcase listed where the interface measures andcostis selected; a selection of an interface's cost reports only the cost.standalonearrangement supplied a second_startonce the tests link the C library).Pins: mcpp 2026.11.14.1, mtest 0.8.5 (bundle sha256
4b890455…).Measured locally (mcpp 2026.11.14.1 candidate, mtest 0.8.5, openkal-linux 0.26.3):
mtest run --set full13 passed, 3 skipped (this machine's clang does not run; with an LLVM clang on PATH the headers program passes 5 of 5); the suitefull287 passed, 0 failed; a wrong layout in the ABI probe fails both targets.