|
4 | 4 | > Each `## [<version>]` section is that release's notes. Entries are written in English |
5 | 5 | > from 2026.9.28.3 on; earlier entries remain as written. |
6 | 6 |
|
| 7 | +## [2026.10.28.1] - 2026-10-28 |
| 8 | + |
| 9 | +### Fixed |
| 10 | + |
| 11 | +- **A package's cache key covers every package whose module it imports.** |
| 12 | + A BMI is bound to the BMIs it read, and the key folded in only the |
| 13 | + dependencies a manifest states. A package can import a module its manifest |
| 14 | + does not name: the libraries of a build program import the engine |
| 15 | + interface (`mcpp`), which the engine adds to the build program's graph. |
| 16 | + Such a package was served an entry compiled against another BMI of that |
| 17 | + module and failed with "CRC mismatch" (measured: `mcpp.plugins` in a build |
| 18 | + of an ok image, over a cache earlier builds had filled). The provider of |
| 19 | + each imported module is now an upstream of the importer's key, a declared |
| 20 | + edge or not; a module this build generates for a dependency below its |
| 21 | + consumer's root is not one (e2e 849). e2e 959 serves a package an |
| 22 | + interface it does not declare at two versions; the upgrade lane gains a |
| 23 | + `programs` variant that builds an ok image over the previous release's |
| 24 | + cache. |
| 25 | +- **A build ended by SIGTERM exits 143 however the race falls.** The watcher |
| 26 | + that takes a request to end over ends the programs mcpp runs, writes the |
| 27 | + cancelled record, runs the cleanups and then ends mcpp as asked; the main |
| 28 | + thread, woken by its compiler's end, could return from `main` first with |
| 29 | + the build's own failure (exit 1, seen once on CI in e2e 936 H). The end of |
| 30 | + `main` now ends mcpp as the request asks, after the watcher has finished. |
| 31 | +- **`mcpp emit xpkg --package` names each system's program directory.** The |
| 32 | + packages of one program for several systems may place it apart: a Windows |
| 33 | + package holds the program at its root, a POSIX one under `bin/` beside the |
| 34 | + root's convenience script. The entry registered the first package's |
| 35 | + directory for every system, so on Windows xvm pointed at a `bin/` the |
| 36 | + package does not have. It now writes `bindir[os.host()]` from a table of |
| 37 | + each system's directory when they differ (SPEC-014 §8). |
| 38 | +- **`mcpp emit xpkg --package` states the runner dependency with its |
| 39 | + namespace** (`deps = { "xim:okrun" }`). A bare name turns ambiguous once a |
| 40 | + second index the home lists has a package of that name, and xim-pkgindex's |
| 41 | + `check-dep-namespace` refuses it for a published package. |
| 42 | +- **The install of an `emit xpkg --package` entry finds the package.** It |
| 43 | + looked the archive's directory up with `os.dirs("<name>-0.1.3-*")`, and |
| 44 | + libxpkg's `os.dirs` lists `<base>/*` without matching names: no xlings |
| 45 | + install of such an entry succeeded. The directory is now the downloaded |
| 46 | + archive's name without its extension, which is what `mcpp pack` names it |
| 47 | + after, so it holds for every system, architecture and later version; an |
| 48 | + archive renamed since it was packed, or a file xim does not unpack, is |
| 49 | + refused when the entry is written. `mcpp pack --merge -o <archive>` names |
| 50 | + the merged package's directory after its output as `mcpp pack -o` does, |
| 51 | + where it kept the first input's, so a merged package is described as |
| 52 | + every other is. |
| 53 | +- **`mcpp emit xpkg` refuses a word that is not an option.** Each archive is |
| 54 | + its own `--package`; `--package a.zip b.zip` (a shell glob's expansion) |
| 55 | + described `a.zip` alone and left `b.zip` out without a word. |
| 56 | +- **The release proposes its index bump again.** `bump_index.sh` waited for |
| 57 | + `auto/bump-xim-mcpp-<version>`, and the index's updater opens |
| 58 | + `auto/bump-xim-mcpp`; the proposal is now found by the marker in its body. |
| 59 | + A dispatch the token is refused for (it needs Actions: write on |
| 60 | + openxlings/xim-pkgindex) names the permission and the command a maintainer |
| 61 | + runs. |
| 62 | + |
| 63 | +### Changed |
| 64 | + |
| 65 | +- **`upgrade-lane-logs/` is no longer in the tree.** A local run's logs were |
| 66 | + committed with 2026.10.17.1; the directory is ignored, as the lane writes |
| 67 | + it beside the workspace for CI to upload. |
| 68 | +- **SPEC-014 1.2** states what 2026.10.27.1 already does: a package's name |
| 69 | + carries its mode's suffix, a single file's launcher exits 127 on its own |
| 70 | + failure, `--merge` takes its container from `[pack] format` before `-o`, and |
| 71 | + `--linkage static` moves this machine's row and each `-linux-gnu` `--target` |
| 72 | + to musl while a project's own `[build] target` is packed as it is. |
| 73 | + |
7 | 74 | ## [2026.10.27.1] - 2026-10-27 |
8 | 75 |
|
9 | 76 | ### Added |
|
0 commit comments