Skip to content

0.0.17: imports typed with autosave are one producer run, a killed clangd keeps your file, an idle clangd stops growing (mcppls-clangd 0.0.17) - #67

Open
Sunrisepeak wants to merge 12 commits into
mainfrom
release/0.0.17
Open

Sunrisepeak wants to merge 12 commits into
mainfrom
release/0.0.17

Conversation

@Sunrisepeak

Copy link
Copy Markdown
Owner

The 0.0.17 release, together with mcppls-clangd 0.0.17 (Sunrisepeak/mcppls-clangd#9), which this PR tests through packaging/engine-candidate.json before the engine merges. Design: .agents/docs/mcppls-0.0.17-release.md. It carries PR #65's commits (072c230, 1341938, e01e1c1, fcb3450) and replaces #65.

Product

CI / measurement

  • requires-mcpp in a fixture's scenario, checked by the runner; CI installs MCPP_FIXTURE_VERSION as MCPPLS_REAL_MCPP (fixes mcpp-target-windows-real, which ran the pinned 2026.9.30.2).
  • Manual nightly inputs: payload-run (reuse a CI run's payloads), scope, ux-repeat (repeat the edits stage in new sessions), ux-baseline (a released server on the same machines; measure compare). Manual CI/nightly of a branch may use a candidate engine.
  • D5: the PR65 evidence bundle stays in fcb3450's history only; the tree keeps a pointer README.

Local verification (clean tree): mcpp test 41/41, mcpp test -p devtools 9/9, devtools check all; fixtures new and regression (clangd-crash-context, mcpp-watched-source-structure, typing-autosave, module-edit-autosave, module-faults, typing-import, typing-import-spin, partial-scan-standins, save-plan, typing-pause, mcpp-emit-edits, mcpp-watch, inferred) all pass; the three new fixtures fail against the 0.0.16 server.

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).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant