The task interface needs the ABI switch, and a task program runs with it (0.1.1) - #1
Merged
Merged
Conversation
… it (0.1.1)
The threads feature declares requires_abi = { threads = true } instead of putting -pthread on this package's own units: the switch belongs to the artefact, and mcpp 2026.9.12.2 carries it as [target.'cfg(os = "emscripten")'.abi] threads = true in the consumer's root manifest. The README section that recorded a missing whole-graph channel is corrected, and CI asserts no task symbol without the feature, a refusal naming the feature without the switch, and with it eight symbols and a task program exiting 0 under node.
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.
openkal.taskneeds-pthreadon Emscripten, and-pthreadchanges the module configuration of every translation unit in the link, so it cannot be a flag of this package's own units. mcpp 2026.9.12.2 (mcpp-community/mcpp#619) carries the switch as a typed member of the consumer's root manifest:Changes
The
threadsfeature declaresrequires_abi = { threads = true }instead of adding-pthreadtosrc/**. A consumer that activates the feature without the table is refused before anything compiles, and the refusal names the feature and the table.The README section that recorded "mcpp has no channel for a flag that applies to a whole dependency graph" is corrected. The failure measured on 2026-09-11 was
-pthreadin the consumer's per-packagecxxflags, which does not reach the specification package's module. A graph-wide channel existed; what was missing was a way to scope it to a target and to let this feature state its requirement.CI's task gate asserts three things:
The conformance step's comment states why
taskstays outside the suite's interface list: the suite's consumer manifest is generated by the specification's runner.The CI engine pin moves to 2026.9.12.2.
The version moves to 0.1.1, so the index can publish the change.
Measurement
Measured 2026-09-12 with emsdk 6.0.9 and a development build of mcpp 2026.9.12.2, on a consumer of this checkout by path:
The program exits 0 only if the parallel property is set,
kal_task_startsucceeds,kal_task_joinsucceeds and the task ran.Compatibility
An mcpp older than 2026.9.12.2 reports
requires_abias an unknown feature key and skips it, so the feature no longer adds-pthread. The threads feature was not usable end to end on those versions (the module configuration mismatch above), so no working configuration is lost.