Commit 9fd2f8a
committed
the absence table is top-level, because the nested spelling refuses the manifest
`[c-abi].absent` reads better and is where this was written. Measured against
the genuine published 2026.9.18.3 archive -- the index floor at the time -- on
the exact manifest openkal-musl 0.17.0 publishes: nested, every mcpp older than
this release refuses THE WHOLE MANIFEST on every target with `[c-abi] has no
member 'absent'`. The `[c-abi]` parser enumerates its members and rejects the
rest, and that strictness is correct: a misspelled `presents` must not silently
disable a declaration. In the same measurement an unknown TOP-LEVEL table is
ignored and the build completes.
Everything this table does is diagnostic. `c_abi_absent_facility_advice`
annotates a link that has already failed; no flag, link line or artifact
depends on it. So an engine that ignores it produces exactly the raw linker
error it produces today, while an engine that refuses it takes the package away
entirely and forces the index floor up to this release -- costing every client
stopped below that floor the whole index, for a note they merely would not have
received. Top-level, openkal-musl 0.17.0 asks nothing of `min_mcpp`.
The two spellings are indistinguishable in the parsed result, so no test that
reads only the outcome can tell them apart. Three tests state the shape
directly: `absent` is not a member of `[c-abi]` and the refusal names the
top-level spelling; absences may be stated without an environment declaration,
which leaves `declared` false; and the provider gate `[c-abi]` applies is
restated rather than inherited, since moving the table moved it out from
behind that gate. `prepare` now tests `cAbiDecl->declared` rather than the
optional, because a `[c-abi-absent]` table alone sets the optional and has
nothing in it for `cenv::realise` to realise.1 parent 854b99d commit 9fd2f8a
14 files changed
Lines changed: 264 additions & 81 deletions
File tree
- .agents/docs
- docs
- zh
- modules/manifest/src
- src/build
- tests/unit
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
31 | | - | |
| 31 | + | |
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| |||
127 | 127 | | |
128 | 128 | | |
129 | 129 | | |
130 | | - | |
| 130 | + | |
131 | 131 | | |
132 | 132 | | |
133 | 133 | | |
| |||
158 | 158 | | |
159 | 159 | | |
160 | 160 | | |
161 | | - | |
| 161 | + | |
162 | 162 | | |
163 | 163 | | |
164 | 164 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
107 | | - | |
| 107 | + | |
108 | 108 | | |
109 | 109 | | |
110 | 110 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
41 | | - | |
| 41 | + | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| |||
104 | 104 | | |
105 | 105 | | |
106 | 106 | | |
107 | | - | |
| 107 | + | |
108 | 108 | | |
109 | 109 | | |
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
113 | 113 | | |
114 | | - | |
| 114 | + | |
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
118 | 118 | | |
119 | 119 | | |
120 | 120 | | |
121 | | - | |
| 121 | + | |
122 | 122 | | |
123 | | - | |
| 123 | + | |
124 | 124 | | |
125 | 125 | | |
126 | 126 | | |
| |||
Lines changed: 29 additions & 11 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
574 | 574 | | |
575 | 575 | | |
576 | 576 | | |
577 | | - | |
| 577 | + | |
578 | 578 | | |
579 | 579 | | |
580 | 580 | | |
| |||
586 | 586 | | |
587 | 587 | | |
588 | 588 | | |
589 | | - | |
| 589 | + | |
590 | 590 | | |
591 | 591 | | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
592 | 610 | | |
593 | 611 | | |
594 | 612 | | |
| |||
604 | 622 | | |
605 | 623 | | |
606 | 624 | | |
607 | | - | |
608 | | - | |
| 625 | + | |
| 626 | + | |
609 | 627 | | |
610 | 628 | | |
611 | 629 | | |
| |||
618 | 636 | | |
619 | 637 | | |
620 | 638 | | |
621 | | - | |
| 639 | + | |
622 | 640 | | |
623 | 641 | | |
624 | 642 | | |
| |||
725 | 743 | | |
726 | 744 | | |
727 | 745 | | |
728 | | - | |
| 746 | + | |
729 | 747 | | |
730 | 748 | | |
731 | 749 | | |
| |||
739 | 757 | | |
740 | 758 | | |
741 | 759 | | |
742 | | - | |
| 760 | + | |
743 | 761 | | |
744 | | - | |
| 762 | + | |
745 | 763 | | |
746 | 764 | | |
747 | 765 | | |
| |||
751 | 769 | | |
752 | 770 | | |
753 | 771 | | |
754 | | - | |
| 772 | + | |
755 | 773 | | |
756 | 774 | | |
757 | 775 | | |
| |||
771 | 789 | | |
772 | 790 | | |
773 | 791 | | |
774 | | - | |
| 792 | + | |
775 | 793 | | |
776 | 794 | | |
777 | 795 | | |
| |||
798 | 816 | | |
799 | 817 | | |
800 | 818 | | |
801 | | - | |
| 819 | + | |
802 | 820 | | |
803 | 821 | | |
804 | 822 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
26 | | - | |
| 26 | + | |
27 | 27 | | |
28 | 28 | | |
29 | 29 | | |
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
| 39 | + | |
40 | 40 | | |
41 | | - | |
| 41 | + | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | | - | |
47 | | - | |
| 46 | + | |
| 47 | + | |
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
| 59 | + | |
60 | 60 | | |
61 | 61 | | |
62 | 62 | | |
| |||
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
76 | | - | |
| 76 | + | |
77 | 77 | | |
78 | 78 | | |
79 | 79 | | |
| |||
0 commit comments