Skip to content

mcpp-language-server v0.0.14

Choose a tag to compare

@github-actions github-actions released this 12 Oct 23:55
· 2 commits to main since this release
6c907be

mcpp-language-server 0.0.14

What changed

The bundled engine is mcppls-clangd 0.0.15
(23.1.0-mcppls.3): 32 patches, three of them new. This release is about Windows: opening a project again and completion
as you type, where every check that a module is still good is a file operation that opens the file.

Completion as you type

  • A module that includes <windows.h> no longer carries all of it. A module's BMI kept every declaration of an
    extern "C" block its global module fragment includes, used or not, and nearly all of <windows.h> -- and of a C
    library's headers -- is in such blocks. The engine leaves the unused ones out, as it already did for a namespace's: a
    module unit that includes <windows.h> builds a BMI of kilobytes instead of megabytes, and a completion in a file
    that imports many of them reads only what they use (:: in a file importing 25 of them: 2.2 s before, 0.3 s now).
  • A completion list comes whole. clangd gives up to 1000 items instead of 100, so a list whose matches fit is
    complete and the editor filters it as you type instead of asking again at every key. A client that asks at every key
    anyway is answered from the word's complete list at once. In a file whose modules include Qt, the requests while a
    word is typed went down by about two fifths.
  • Checking a module costs less where its headers come from a package or the system. A header of an mcpp or xlings
    package version -- the toolchain's own, such as llvm-mingw's <windows.h>, or a library's -- is checked by the
    version's install markers instead of one by one; system headers, the Windows SDK's and Visual Studio's included, once
    per session, as clang itself skips them. Your project's files are checked at every request, as before.
  • On Windows, preambles are kept in memory with 16 GiB or more, instead of being written to the temporary
    directory and scanned there. New setting mcppls.engine.preambleStorage (auto, disk, memory).

Opening a project again

  • What the last session learned is kept. Which BMIs were up to date and what each module unit imports are written to
    the workspace cache and read back by the next session, each checked again before it is used, so a second opening
    checks instead of hashing every input and preprocessing every module unit again.
  • The files you last worked in are ready first. The five files last opened or edited are opened in clangd as soon as
    it starts, before the editor asks; the editor takes them over as they are. With 16 GiB or more, six ASTs of files you
    switch between are kept instead of three.

Seeing what happens

  • A slow completion (200 ms or more) in a module importer says in the log where its time went; the log says what the
    last session left and which package stores are checked by their markers. On Windows, a cache that is not on a Dev
    Drive is said once, in the log and the overview (about.cacheDevDrive); see "Windows: a cache on a Dev Drive" in the
    troubleshooting guide. mcppls changes no security setting.

Fixes

  • A cache sweep asked for by category (mcppls.sweepCache with categories) ran none of them.
  • A completion clangd answered late was not let go of when its word was given up.
  • Two test programs never reported their failures; they do now.

Files

File What it is How to install it
mcppls-linux-x64.vsix The VS Code extension for one platform, with that platform's payload inside it code --install-extension <file>, or the Extensions view's “Install from VSIX…”
mcppls-linux-arm64.vsix The VS Code extension for one platform, with that platform's payload inside it code --install-extension <file>, or the Extensions view's “Install from VSIX…”
mcppls-darwin-arm64.vsix The VS Code extension for one platform, with that platform's payload inside it code --install-extension <file>, or the Extensions view's “Install from VSIX…”
mcppls-win32-x64.vsix The VS Code extension for one platform, with that platform's payload inside it code --install-extension <file>, or the Extensions view's “Install from VSIX…”
payload-linux-x64.tar.gz The server, the clangd it drives and the semantic kit, as one tree. What every non-VS-Code editor needs Unpack it and put payload/bin/ on PATH; mcppls serve speaks LSP over stdio
payload-linux-arm64.tar.gz The server, the clangd it drives and the semantic kit, as one tree. What every non-VS-Code editor needs Unpack it and put payload/bin/ on PATH; mcppls serve speaks LSP over stdio
payload-darwin-arm64.tar.gz The server, the clangd it drives and the semantic kit, as one tree. What every non-VS-Code editor needs Unpack it and put payload/bin/ on PATH; mcppls serve speaks LSP over stdio
payload-win32-x64.tar.gz The server, the clangd it drives and the semantic kit, as one tree. What every non-VS-Code editor needs Unpack it and put payload/bin/ on PATH; mcppls serve speaks LSP over stdio
mcppls-zed-0.0.14.tar.gz The Zed extension directory mcppls-zed/: extension.toml, the compiled extension.wasm and the crate it was compiled from, which Zed's dev-extension install compiles again. Platform-independent; the server comes from the payload Unpack it, put the payload's payload/bin/ on PATH, then Zed's command palette: zed: install dev extension, and choose mcppls-zed (Zed compiles it, which needs Rust through rustup)
mcppls-clion-0.0.14.zip The IntelliJ-platform plugin archive Gradle produces. Gradle and the JDK it compiles with come from the clion feature (xim:gradle, xim:jdk-temurin), so it does not depend on whatever JDK the machine happens to default to Put the payload's payload/bin/ on PATH, then CLion: Settings → Plugins → the gear menu → Install Plugin from Disk, and restart
SHA256SUMS sha256 of every other file in the release sha256sum -c SHA256SUMS

Not in a release

  • The Claude Code plugin: it is consumed from the repository through its marketplace file, not downloaded as an archive.
  • xlings-res archives and the rendered xim-pkgindex descriptors: the ecosystem publish path is deliberately out of scope for this release, so mcppls-devtools release xlings is not run.
  • The model gateway: a separate package, built and tested on its own, not part of what a user installs.

Generated from packaging/release.manifest.json for 0.0.14.