Repository navigation
0.0.17: imports typed with autosave are one producer run, a killed clangd keeps your file, xmake runs stay private and recover (mcppls-clangd 0.0.17) - #67
Merged
Conversation
Release preflight hit the unchanged 4 MiB / 2 s send check on macOS dev after PR #64 had merged. Sending still encoded each JSON frame synchronously on the caller, even though pipe writes were queued. Queue an owned JSON snapshot and encode it on the writer outside the queue lock, preserving FIFO, both framings and UTF-8 replacement. Writer exceptions become a connection failure and unsent snapshots are discarded after closing the queue. Keep the original send/stop gates and record their actual elapsed time. Real echo and departed-peer tests cover snapshot lifetimes, ordering, shutdown drain and error cleanup. Keep the first failure and the limits of its timing evidence; no host-load attribution or OOM injection is claimed. Version 0.0.17 is still unpublished. Refs #59, #64.
The target fixture used a simulated producer, which left the design's native Windows i686/x64 production chain unproven. A separate Windows fixture configures both targets with real mcpp and follows their complete unmodified databases in one LSP session, checking actual commands and conditional module semantics. CI retains the first generated databases and logs separately from diagnostic reruns. Product and runner code remain unchanged; native acceptance is still required.
…ndaries A successful producer answer acknowledges the source structure it actually covered, so inactive imports no longer trigger discovery on every body save. Run-start stamps, generations and producer identities keep failures and concurrent changes conservative. Existing files named as workspace folders fall back to directory roots before clangd starts. Preserve completion timing support, correct the genuine Windows fixture std dependency, and retain first CI evidence. Termux uses the official package source and the Zed smoke requires both its independent PATH clangd and mcppls own initialized child. Ship a portable, checksummed handoff bundle instead of references to one machine. Validation: dev/release each pass six workspace members and 58 programs, plus 32 LSP fixtures including the new 70-check source-watch fixture. Specification validation reports zero failures. The 222-file evidence archive was verified and extracted independently. New-source CI, native Windows production-chain acceptance and unresolved performance investigation remain pending; no merge or release.
…angd keeps the file being typed in, a crashed-on file goes back once its modules are rebuilt - W4 (#59 U15): a structure reload that saves of a file still being typed in ask for waits until the file is quiet (EDIT_SETTLE, at most 30 s). New fixture mcpp-autosave-import-typing: 0.0.16 makes 6 producer runs and 13 state changes in a minute of imports and bodies typed in turn with autosave; this makes 3 and 4. - W5 (#59 U9, U7a): an exit that names no file is a strike, not a set-aside; a file set aside after an exit goes back once its import closure has been rebuilt differently. New fixtures clangd-exit-strike and clangd-crash-closure fail on 0.0.16 and pass here. - M3: slow completions (2 s+) record queue, engine and answer time in the slow-request event; the runner keeps them. - C4: fixtures declare the mcpp they need ("requires-mcpp"), checked by the runner; CI installs MCPP_FIXTURE_VERSION for them as MCPPLS_REAL_MCPP (mcpp-target-windows-real needs 2026.10.5.2's Windows quoting fix). - M5: the overflow-trace test prints both sides of each comparison on failure. - CI: a manual nightly can reuse a CI run's payloads (payload-run), run only ux (scope), repeat the edits stage (ux-repeat) and run a released server beside it on the same machines (ux-baseline, measure compare); a manual CI or nightly of a branch may use a candidate engine. - D5: the PR65 evidence bundle stays in fcb3450's history; the tree keeps a pointer to it. - Docs: release design (.agents/docs/mcppls-0.0.17-release.md), changelog, projects, troubleshooting, release (en, zh-CN).
…ow request; traceability names the reload's new signature
…d, which no Clang can build for i686 MSVC
…1 section 7), as mcpp writes it
…is told at once, not after the drain's bound (the nightly's v0.0.16 baseline waited 900 s per stage)
…5), released; the candidate file goes; the changelog names what the nightly measured and the known issues
…and its state is a cache made again from nothing (#68, #69) XS-1: XMAKE_TMPDIR beside XMAKE_CONFIGDIR and --builddir, so xmake's GCC module mapper files, named by the source's relative path alone, no longer point the user's next incremental build at modules never built (#69). XS-2: the private state lives in <cache>/xmake/state, keyed by the configuration, xmake itself and every xmake.lua; a new key removes it and configures from nothing instead of in place, where xmake's module scan cache (updated only by a build) made every describe fail after a target was added (#68). The 0.0.16 layout goes on the first run. XS-3: when xmake says the kept state is out of date (dependfile ... not found), it is made again once. XS-4: resetting the cache removes the build tools' private states before the next load. Fixtures xmake-shared-tmp, xmake-target-then-mode (real xmake) and xmake-stale-state (stand-in) fail on 0.0.16 and pass; the runner gains a run check. #24 registers UP-X1 and UP-X2.
…to; the changelog dates the release
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.
The 0.0.17 release, together with mcppls-clangd 0.0.17 (Sunrisepeak/mcppls-clangd#9, released as v0.0.17,
23.1.0-mcppls.5), which this PR tested throughpackaging/engine-candidate.jsonbefore the engine merged; the lock now names the released archives (each checked against two downloads and the published.sha256) and the candidate file is gone. Design:.agents/docs/mcppls-0.0.17-release.md(§8 marks what each acceptance item came to, §10 the record) and.agents/docs/2026-10-24-0.0.17-xmake-sandbox-design.md. It carries PR #65's commits and replaces #65.Product
mcpp-autosave-import-typing: 0.0.16 → 6 producer runs, 13 state changes a minute; now 3 and 4. Same-machine A/B against v0.0.16: U15's busiest minute 12 → 6–7.5.clangd-exit-strike,clangd-crash-closurefail on 0.0.16 and pass here.XMAKE_TMPDIR), so the user's own incremental build no longer reads mapper files naming modules that were never built; the private state is a cache made again from nothing when xmake, anyxmake.luaor the user'sxmake.confchanges, and once more when xmake says it is out of date; a cache reset removes build tools' private states.xmake-shared-tmp,xmake-target-then-mode(real xmake 3.1.1) andxmake-stale-state(stand-in) fail on 0.0.16 and pass here.Known issues (CHANGELOG): clangd's memory can still grow while idle on one nightly project (#59 U13; not the memo writes); the slowest completion while typing with autosave is ~0.2 s slower than 0.0.16 on the nightly machines (p95 unchanged).
CI / measurement
requires-mcppfixtures; aruncheck (a program the user runs in the workspace); manual nightly inputspayload-run,scope,ux-repeat,ux-baselinewithmeasure compare.40009683587on the release head green (ux 8 rounds, termux, Zed, self-hosting, startup timing).Local verification:
mcpp test41/41, devtools 9/9,devtools check all, spec validation 0 failures; new fixtures fail against the 0.0.16 server and pass; the five existing xmake fixtures pass; a 0.0.16 cache with the old xmake layout is taken over by the new server (ready, source xmake).