2026.10.5.2: shared-library link lines, native MSVC LTO and export discovery, std.compat on every Default row - #774
Merged
Merged
Conversation
Sunrisepeak
force-pushed
the
release/2026.10.5.2
branch
from
October 5, 2026 11:51
5ae3827 to
229d981
Compare
…scovery, std.compat on every Default row - A shared library that is not the root's links with the graph's flags and its owner's closure (#771); the root's private ldflags no longer reach it. - Windows argv quoting doubles the backslashes before a closing quote; WindowsSdkDir is read without its trailing separator. - The COFF reader reads /bigobj objects and names /GL and import objects. - lto = true on cl.exe compiles with /GL and links and archives with /LTCG; export discovery and /GL meet as SPEC-004 §11 states (#770). - std.compat is built only when imported, on the GCC row too; the std and std.compat sources are set as one. - A workspace's [profile.*] is a root-position key, and its own package receives [workspace.package] and [workspace.build]. - [test] windows_code_page; mcpp's unit tests run in UTF-8. Design: .agents/docs/2026-10-05-std-module-pair-msvc-lto-and-export-discovery-design.md
Sunrisepeak
force-pushed
the
release/2026.10.5.2
branch
from
October 5, 2026 11:52
229d981 to
f2e52db
Compare
…ndency-cache key scope_lto appends /GL- or -fno-lto to a package's units, and the cache key read the package's inputs, not its units, so the same package compiled with and without LTO shared one global cache entry.
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.
Summary
This pull request releases 2026.10.5.2. It closes #771 and #770 and the follow-ups of #768, fixes the Windows quoting of an argument that ends in a backslash, and makes a workspace's
[profile.*]and its own package behave as members do. The design record is.agents/docs/2026-10-05-std-module-pair-msvc-lto-and-export-discovery-design.md(revision 6 records where the implementation departs from the reviewed revision 5). The measurements behind it are in the job summaries of the probe pull request #772.graphLdflags: the profile'sldflags, the ABI words) and theldflagsof the packages its owner reaches, in every plan. One helper builds that link group; member programs and artifact programs start from the same graph flags. The root package's privateldflagsno longer reach a dependency's image; when they hold a search path or a library and the plan has a dependency's shared library, the build notes it (link/root-flags).quote_windowsdoubles the backslashes before a quote and at the end of an argument (the CommandLineToArgvW rules).WindowsSdkDiris read without its trailing separator. In a developer environment the llvm row'simport stdfailed before./bigobjobjects (56-byte header, 32-bit counts, 20-byte symbols) and names/GLobjects, import objects and unknown anonymous objects by their version and class GUID (measured headers).lto = trueon cl.exe:/GL,/LTCGon links,lib /LTCG; the summary says+ ltoonly for what is applied.windows_auto_exportkeeps whether it was stated. Under cl.exe LTO, an omitted key compiles the packages linked into the DLL with/GL-and reports it once; a statedtrue, and/GLwritten into those packages' flags, are refused with the new codelto-export-discovery.mcpp packbuilds the packed static libraries without LTO intermediate code (-fno-lto//GL-).Toolchain::set_std_modules/clear_std_modulesare the only writers of the std / std.compat pair.std.compatis built only when a unit imports it, is provided on the GCC row (bits/std.compat.cc), and an import of it from a library without one is refused before any compile. One helper decides the.ixxsource language for both std builders.[profile.<name>]is a root-position key inherited by name; a workspace root with[package]gives its own package[workspace.package]and[workspace.build]once.Glob.EscapedSpellingIsUtf8WhateverTheNameno longer builds a Windows path from bytes only code page 1252 converts.[test] windows_code_pageis added, and mcpp's own tests useutf-8.src/build/prepare/plan.cppcrossed the 2500-line limit and is split at step boundaries:windows_resources.cppandlink_scope.cpp.Closes #771. Closes #770.
Test plan
test_windows_command_line), bigobj //GL/ import objects (test_coff_exports), the three-state key and[test] windows_code_page(test_manifest), profile and root-package inheritance (test_workspace_plan), the correctedtest_modgraph.std.compaton GCC and on demand; fails against 2026.10.5.1). E2E 887 (cl.exe LTO and export discovery) and 888 (the llvm row with a developer environment'sWindowsSdkDir) run on the Windows shards.mcpp testpasses (146 test programs).check_docs_style,check_docs_structure,check_modules_wiring,check_narrow_conversions,check_version_pins,check_file_lengths,check_workflow_assertionsandgit diff --checkpass./GL-or-fno-ltothatscope_ltoadds (29c92b5).