Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
21add12
feat: the 0.0.12 joint work -- engine identity, mcpp formatting, cras…
Sunrisepeak Oct 9, 2026
39a2b23
fix: 0.0.12 part 3 -- linux-arm64 is bundled again, engine parts are …
Sunrisepeak Oct 9, 2026
f9417b5
test(vscode): the initialize crash is staged with a waiting stand-in,…
Sunrisepeak Oct 9, 2026
d5bce3f
fix(engine): mcppls-clangd's module reports are read, and its proved …
Sunrisepeak Oct 9, 2026
2bcbe7f
feat(payload): every platform bundles mcppls-clangd 0.0.12
Sunrisepeak Oct 9, 2026
1815996
fix(engine): the maintained engine compiles in process under PRoot, a…
Sunrisepeak Oct 10, 2026
7f40ad6
test(conformance): the Windows crash on `import hello.` is retired by…
Sunrisepeak Oct 10, 2026
82560f5
fix(engine): a planned module kept textual is taken as unresolved onl…
Sunrisepeak Oct 10, 2026
a7bc257
fix(engine): a module mcppls-clangd's owned cache already has a BMI o…
Sunrisepeak Oct 10, 2026
8e291f3
fix(engine): the bundled maintained engine is the tested one, so its …
Sunrisepeak Oct 10, 2026
f737394
fix(engine): an engine that recovers from an unresolved import gets n…
Sunrisepeak Oct 10, 2026
1c29e4a
ci: a pull request's payloads can carry a mcppls-clangd PR's build, t…
Sunrisepeak Oct 10, 2026
f99855a
docs(plan): part 3 records what the comparison against stock clangd f…
Sunrisepeak Oct 10, 2026
25aeab0
test(conformance): modules mixed with Qt headers and with <windows.h>…
Sunrisepeak Oct 10, 2026
95d7b59
ci: test with mcppls-clangd PR #4's build (run 38058142325)
Sunrisepeak Oct 10, 2026
d081b57
fix(engine): a doomed file closed in clangd is no spin when it goes b…
Sunrisepeak Oct 10, 2026
f7de654
ci: test with mcppls-clangd PR #4's build (run 38063670345)
Sunrisepeak Oct 10, 2026
7d6cd97
fix(engine): a planned module kept textual is taken on its second rep…
Sunrisepeak Oct 10, 2026
9fab256
ci: test with mcppls-clangd PR #4's build (run 38068427206)
Sunrisepeak Oct 10, 2026
4f41859
docs(changelog): 0.0.12 keeps preambles for files mixing headers with…
Sunrisepeak Oct 10, 2026
37a5807
test(conformance): a failed fixture prints the server log lines it na…
Sunrisepeak Oct 10, 2026
ace7f1f
ci: test with mcppls-clangd PR #4's build (run 38072806771)
Sunrisepeak Oct 10, 2026
6ddae8a
fix(engine): preparation given work again after idling starts its sta…
Sunrisepeak Oct 10, 2026
9baaf52
ci: test with mcppls-clangd PR #4's build (run 38078354274)
Sunrisepeak Oct 10, 2026
a3e0fa0
test(vscode): an entry removed while the workspace is hashed is not p…
Sunrisepeak Oct 10, 2026
fe09467
test(server): the implementation-unit timing test leaves a loaded run…
Sunrisepeak Oct 10, 2026
cd36123
ci: test with mcppls-clangd PR #4's build (run 38085562071)
Sunrisepeak Oct 10, 2026
ceffc3e
test(conformance): the module fixtures run at the default log level a…
Sunrisepeak Oct 10, 2026
e6bf304
fix(engine): mcppls-clangd's owned module cache gets three quarters o…
Sunrisepeak Oct 10, 2026
6979e57
ci: test with mcppls-clangd PR #4's build (run 38096424985)
Sunrisepeak Oct 11, 2026
354428e
fix(engine): a cache budget past 3 PiB still gives mcppls-clangd a bo…
Sunrisepeak Oct 11, 2026
790aac8
fix(engine): the owned cache bound is given to mcppls-clangd on Linux…
Sunrisepeak Oct 11, 2026
2e1a15b
ci: test with mcppls-clangd PR #4's build (run 38102113449): a module…
Sunrisepeak Oct 11, 2026
ea7ce1f
ci: test with mcppls-clangd PR #4's build (run 38107318525): a consum…
Sunrisepeak Oct 11, 2026
9d64a3e
ci: test with mcppls-clangd PR #4's build (run 38115543969): a textua…
Sunrisepeak Oct 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
914 changes: 914 additions & 0 deletions .agents/docs/2026-10-07-0.0.12-implementation-status.md

Large diffs are not rendered by default.

228 changes: 228 additions & 0 deletions .agents/docs/2026-10-07-0.0.12-joint-release-plan.md

Large diffs are not rendered by default.

34 changes: 34 additions & 0 deletions .agents/docs/2026-10-07-darwin-pipe-write.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Darwin child-pipe writes

Register: [UP-O1](https://github.com/Sunrisepeak/mcpp-language-server/issues/24#issuecomment-6028338032). Compensation: WA-PLATFORM-001 in
modules/platform/src/process.cpp. This is a platform runtime issue and belongs
outside the clangd workaround registry.

The Intel runner executes the actual cross-built dev/release binaries. Both
failed by signal 13 in the existing blocked-peer shutdown test (CI run
37552260398, jobs 112572688643/112572688644). openkal-macos 0.12.0's env.cpp
explicitly records that its pipe writes can trigger SIGPIPE; its C-library
layer does not install a kernel signal disposition.

Each parent-owned child-input write descriptor now receives F_SETNOSIGPIPE
before spawn. Darwin's existing native syscall convention is used because the
program supplies its own C ABI. Failure closes both input ends and the work
handle, and rejects spawn. The change is local to that descriptor. Constants
and semantics: [Apple XNU fcntl.h](https://github.com/apple-oss-distributions/xnu/blob/main/bsd/sys/fcntl.h).

Evidence: Linux process tests pass, 2 binaries; the main test has 23 cases and
86 assertions. Intel and arm64 process tests cross-compile (2 binaries each). Fixed-byte
native CI remains pending. The new regression explicitly
waits for peer exit, writes to its still-open parent end and requires a returned
process-write error. Existing blocked-writer shutdown remains the lifecycle
canary. No native success is inferred from cross-linking.

Remove WA-PLATFORM-001 only when selected openkal-macos reliably reports closed
pipe writes on both macOS architectures with default parent SIGPIPE handling.
Other arbitrary openkal streams do not gain a blanket protection from this fix.

Native follow-up: Intel dev CI run 37553665184 / job 112577351043 at
1fa6975 passes the blocked-peer and closed-peer write canaries and both process
binaries (main: 23 cases, 80 assertions). The job fails later in a separate
pack platform fixture, which has now been corrected. Native release proof
is still pending because that fixture ran before its process tests.
224 changes: 224 additions & 0 deletions .agents/docs/2026-10-07-maintained-clangd-0.0.12-plan.md

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions .agents/docs/2026-10-07-mcpp-format-review/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# mcpp fallback formatting review

The upstream configuration is a byte-preserving snapshot from mcpp commit
74bcb859e60afc71ad759540d2de5344dda400e9. Its SHA is recorded in snapshot.json.
The snapshot and named preset parse with clang-format 23 and both produce
expected.cppm. The engine golden/override and raw LSP fallback tests pass.
Product editor acceptance and final four-platform bytes remain pending.

The maintained engine will register the named `mcpp` C++ preset from this
snapshot. Existing `.clang-format` discovery remains authoritative. The product
may select this fallback only when verified engine metadata declares
`format-style-mcpp`, and only by default for an mcpp project. Explicit user
fallback settings take priority. External or legacy engines receive no unknown
preset, and no configuration file is written into a user's project.

The fixture covers global module fragments, import, constrained templates,
namespaces, lambdas, constructor initializers and long expressions. Final golden
output must be generated and checked with the same clang 23 formatter as the
maintained preset. A named preset and this snapshot must yield identical output;
project overrides and explicit user fallback are separate acceptance cases.
23 changes: 23 additions & 0 deletions .agents/docs/2026-10-07-mcpp-format-review/expected.cppm
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
module;
#include <stddef.h>
export module format.demo;
import std;
export namespace demo {
template <class T>
requires requires(T x) { x + x; }
T sum(T first, T second) {
auto combine = [&](T left, T right) { return left + right; };
return combine(first, second);
}
class Buffer {
public:
Buffer(int capacity, int limit) : capacity_(capacity), limit_(limit) {}
int scaled() const {
return capacity_ * limit_ + capacity_ * limit_ + capacity_ * limit_ + capacity_ * limit_ +
capacity_ * limit_;
}
private:
int capacity_;
int limit_;
};
} // namespace demo
6 changes: 6 additions & 0 deletions .agents/docs/2026-10-07-mcpp-format-review/input.cppm
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
module;
#include <stddef.h>
export module format.demo;
import std;
export namespace demo {template<class T> requires requires(T x){x+x;} T sum(T first,T second){auto combine=[&](T left,T right){return left+right;};return combine(first,second);}
class Buffer {public:Buffer(int capacity,int limit):capacity_(capacity),limit_(limit){} int scaled() const{return capacity_*limit_+capacity_*limit_+capacity_*limit_+capacity_*limit_+capacity_*limit_;}private:int capacity_;int limit_;};}
7 changes: 7 additions & 0 deletions .agents/docs/2026-10-07-mcpp-format-review/snapshot.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"source-repository": "https://github.com/mcpp-community/mcpp",
"source-commit": "74bcb859e60afc71ad759540d2de5344dda400e9",
"source-path": ".clang-format",
"sha256": "e03547822b284dd66a266c18586575c71581b8a32bef02325851763b44dcb2c4",
"clang23-validation": "preset and snapshot produce identical golden output; two engine lit tests pass"
}
132 changes: 132 additions & 0 deletions .agents/docs/2026-10-07-mcpp-format-review/upstream.clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# -----------------------------------------------------------------------------
# mcpp-community C++ Style Configuration
#
# This configuration follows the style specification defined in:
# https://github.com/mcpp-community/mcpp-style-ref
#
# Maintained by: mcpp-community
# -----------------------------------------------------------------------------

Language: Cpp # Apply configuration to C++

# -----------------------------------------------------------------------------
# Language Standard
# -----------------------------------------------------------------------------
Standard: Latest # Always use the latest supported C++ standard

# -----------------------------------------------------------------------------
# Indentation
# -----------------------------------------------------------------------------
IndentWidth: 4 # Use 4 spaces for indentation
TabWidth: 4 # Visual width of tab
UseTab: Never # Never use tabs

# -----------------------------------------------------------------------------
# Line Width
# -----------------------------------------------------------------------------
ColumnLimit: 100 # Maximum line width

# -----------------------------------------------------------------------------
# Spaces
# -----------------------------------------------------------------------------
SpaceBeforeParens: ControlStatements # Space before parentheses for control statements (if/for/while); function calls remain tight
SpacesInContainerLiterals: true # Enforce spaces in container literals
SpaceBeforeAssignmentOperators: true # Add space before assignment operators
SpacesInParentheses: false # No extra spaces inside parentheses
PointerAlignment: Left # Pointer/reference attaches to type
QualifierAlignment: Left # Place qualifiers like const to the left

# -----------------------------------------------------------------------------
# Braces
# -----------------------------------------------------------------------------
BreakBeforeBraces: Attach # Opening brace stays on same line
AllowShortFunctionsOnASingleLine: Empty # Allow empty functions like `void f() {}`
AllowShortIfStatementsOnASingleLine: Never # Disallow single-line if statements
AllowShortBlocksOnASingleLine: Empty # Allow empty blocks on one line
AllowShortLoopsOnASingleLine: false # Disallow one-line loops

# -----------------------------------------------------------------------------
# Constructor Initializer List
# -----------------------------------------------------------------------------
BreakConstructorInitializers: BeforeColon # Keep initializer list compact when short
ConstructorInitializerAllOnOneLineOrOnePerLine: true # Allow compact initializer lists
BreakConstructorInitializersBeforeComma: false # Do not break before commas

# -----------------------------------------------------------------------------
# Access Modifiers
# -----------------------------------------------------------------------------
AccessModifierOffset: -4 # Align access modifiers with class indentation
EmptyLineBeforeAccessModifier: Never # Do not insert empty line before access specifiers
EmptyLineAfterAccessModifier: Never # Do not insert empty line after access specifiers

# -----------------------------------------------------------------------------
# Namespace Formatting
# -----------------------------------------------------------------------------
NamespaceIndentation: None # Do not indent contents inside namespace
FixNamespaceComments: true # Enforce closing namespace comments
CompactNamespaces: true # Prefer namespace a::b instead of nested namespaces

# -----------------------------------------------------------------------------
# Switch / Case Formatting
# -----------------------------------------------------------------------------
IndentCaseLabels: true # Indent case/default labels
IndentCaseBlocks: true # Indent statements inside case blocks

# -----------------------------------------------------------------------------
# Includes
# -----------------------------------------------------------------------------
SortIncludes: true # Automatically sort includes
IncludeBlocks: Regroup # Regroup include blocks
IncludeCategories:
- Regex: "^<.*>" # Standard / third-party headers
Priority: 1
- Regex: '^".*"' # Project headers
Priority: 2

# -----------------------------------------------------------------------------
# Comment Alignment
# -----------------------------------------------------------------------------
AlignTrailingComments: true # Align trailing comments
SpacesBeforeTrailingComments: 2 # Two spaces before trailing comments

# -----------------------------------------------------------------------------
# Parameter Formatting
# -----------------------------------------------------------------------------
BinPackParameters: true # Allow parameters on same line
BinPackArguments: true # Allow arguments on same line

# -----------------------------------------------------------------------------
# Template Formatting
# -----------------------------------------------------------------------------
AlwaysBreakTemplateDeclarations: Yes # Always place template declarations on their own line

# -----------------------------------------------------------------------------
# Operator Line Breaking
# -----------------------------------------------------------------------------
BreakBeforeBinaryOperators: None # Break after operators

# -----------------------------------------------------------------------------
# Method Chain Formatting
# -----------------------------------------------------------------------------
PenaltyBreakBeforeFirstCallParameter: 10000 # Avoid breaking chained calls unless necessary

# -----------------------------------------------------------------------------
# Lambda Formatting
# -----------------------------------------------------------------------------
AllowShortLambdasOnASingleLine: All # Allow short lambdas on one line

# -----------------------------------------------------------------------------
# Using Declarations
# -----------------------------------------------------------------------------
SortUsingDeclarations: true # Automatically sort using declarations

# -----------------------------------------------------------------------------
# Return Type Formatting
# -----------------------------------------------------------------------------
AlwaysBreakAfterReturnType: None # Break return type only when exceeding ColumnLimit

# -----------------------------------------------------------------------------
# Concepts / Requires
# -----------------------------------------------------------------------------
RequiresClausePosition: OwnLine # Force requires clause to a new line
IndentRequiresClause: false # Do not indent requires clause
Loading
Loading