Repository navigation
Releases: briar-systems/mach-lsp
Release list
v2.1.0
mls links the mach 6.3.0 front end and std 9, and a diagnostic's code is now mach 6.3's dotted key for its kind (#396). Same asset set, CLI and options as 2.0.0.
The code values clients see changed. mach 6.3 renamed every diagnostic kind to a dotted key with no aliases, and mls sends that key as the LSP code, so unused-import is now import.unused. An editor setting, filter, suppression or other tooling keyed on a 2.0.0 code must be updated to the new key:
| 2.0.0 code | 2.1.0 code |
|---|---|
unused-import |
import.unused |
deprecated |
decl.deprecated |
doclint |
doc.lint |
inexact-float-literal |
float.inexact |
fwd-instances |
fwd.instances |
debug-dropped |
debug.dropped |
target-skipped |
target.skipped |
native-fallback |
target.native_fallback |
scalarize |
vector.scalarize |
not-oblivious |
secret.not_oblivious |
| (new) | expect.unfulfilled |
The linked mach moves from v6.2.0 to v6.3.0, so this mls refuses a project whose [project].mach range excludes mach 6.3.0. [project].mach stays ^6. RELEASES.json names the mach each mls links, so an installer that reads it still finds 2.0.0 for mach 6.2.0.
Changed
- chore(#396): the linked mach moves from v6.2.0 to v6.3.0 and std from v7.4.1 (
^7.4) to v9.0.0 (^9.0), the std mach 6.3.0 builds with. CI and the release builds seed mach v6.3.0, and the README pin matches. - chore(#396): a diagnostic's
codeis its kind's dotted key, the key a profile'sallowand a declaration's#[expect]select it by (mach#4065). The Unnecessary tag followsimport.unusedand the Deprecated tagdecl.deprecated.
Issues resolved (1)
- #396 adopt mach 6.3.0: dotted diagnostic keys and std 9
v2.0.0
mls links the mach 6.2.0 front end, shows the unused-import warnings mach 6.1 raises, and sends every diagnostic's warning kind as its code (#391). Same asset set, CLI and options as 1.5.0.
The linked mach moves from v6.0.0 to v6.2.0. This mls refuses a project whose [project].mach range excludes mach 6.2.0, and it reports what mach 6.2 reports: a float literal that overflows or underflows its type and a secret pointer cast the byte-extent rule refuses are now errors, so a project that was clean under 1.5.0 can show errors under 2.0.0. [project].mach stays ^6. RELEASES.json names the mach each mls links, so an installer that reads it still finds 1.5.0 for mach 6.0.0.
Changed
- Breaking: chore(#391): the linked mach moves from v6.0.0 to v6.2.0, and CI and the release builds seed mach v6.2.0. std stays at v7.4.1 (
^7.4), which mach 6.2.0 builds with. - feat(#391): an unused symbol import in the project's own files shows as a warning,
unused import `foo`, as mach 6.1 reports it (mach#4007). mls's own sixteen unused imports are removed. - feat(#391): every published diagnostic, per document or on
mach.toml, carries its warning kind's name ascode, the name a profile'sallowlist silences it by (mach#4030).unused-importcarries the Unnecessary tag anddeprecatedthe Deprecated tag, so an editor fades or strikes through the code. A diagnostic with no kind carries neither. - docs(#391): the README and the
notesmodule say a root manifest without[project].machis refused, as mach 6 does, rather than loaded with a warning. - test(#391): the unit tests are pruned from 99 to 55 under mach's test policy, and test-only helpers are
#[testing].
Issues resolved (1)
- #391 adopt mach 6: link the mach 6 front end, identifier tests, std 9
v1.5.0
mls moves to mach 6.0.0, whose tests are test <identifier>, and shows a test by that identifier (#387). Same asset set, CLI and options as 1.4.3.
The linked mach moves from v5.12.0 to v6.0.0. This mls refuses a project whose [project].mach range excludes mach 6, and building mls from source needs mach 6 ([project].mach moves from ^5.9 to ^6). That breaks mach 5 projects, and it ships as a minor version by this project's practice: mls versions its own protocol, CLI, options and asset contract, and a compiler requirement change has been a minor bump before (^5.3 to ^5.9 and mach v5.9.0 to v5.10.0 in 1.4.0). RELEASES.json names the mach each mls links, so an installer that reads it still finds 1.4.3 for a mach 5 project.
Changed
- feat(#387): the linked mach moves from v5.12.0 to v6.0.0 and
[project].machfrom^5.9to^6. std moves from v7.4.0 to v7.4.1, inside the existing^7.4range, which mach 6.0.0 requires. - feat(#387): a test is named by its identifier. Document symbols, the call hierarchy and selection ranges show
test <identifier>by the identifier where they showed its label, and semantic tokens classify the identifier as afunction, matching its document symbol kind. - feat(#387): a manifest without
[project].machis refused by mach 6 rather than loaded with a warning, and the complaint onmach.tomlsays so. - chore(#385): the
mlsartifact's entry moves fromsrc/main.machtosrc/bin/main.mach, as artifact entries sit across the family (briar-systems/.github#107). The binary keeps its name and its place atout/<target>/<profile>/bin/mls, so the release archives and the editor extensions that start it are unchanged.
Issues resolved (2)
v1.4.3
v1.4.2
The linked mach moves to v5.11.0 (std stays at v6.1.0), which brings union analysis: a file of a non-default artifact is analysed in that artifact, so an embed of another artifact's output resolves (#371). A use that names no module no longer blanks the rest of the buffer (#304). Same asset set, CLI and options as 1.4.1.
Fixed
- fix(#371): a file of a non-default artifact is analysed in that artifact, so an
embedof{artifact.<id>.out}that itsneedrequires, through a glob or by name, is no longer refused with "names an artifact this artifact does not require". The server loads the union of every artifact's closure rather than the default artifact's alone, and an output no artifact requires is still refused. - chore(#373): a
usethat names no module costs only the names it would have bound (#304). mach 5.10.0 ended a module's load at such ause, so a rebuilt snapshot of the buffer holding it answered nothing past it: completion, definition and every other snapshot feature were empty until theusewas fixed (briar-systems/mach#3722). - chore(#373): a selection range through a parenthesized group has a step for the group,
(p.x + p.y), and the step outside it covers the opening parenthesis, where it began inside it before (briar-systems/mach#3720).
Changed
- chore(#373): the linked mach moves from v5.10.0 to v5.11.0. std stays at v6.1.0 (
^6.1), which mach 5.11.0 builds with. The analysis entry now takes the root set beside the request, and the server passes the primary artifact's closure, which is what it analysed before.[project].machstays^5.9.