devel/sem: update to 0.23.0
[0.23.0] - 2026-08-22
Changed
C++ and Python's precomputed-facts fast paths are now opt-in (SEM_MUL_CPP=1, SEM_MUL_PYTHON=1), and Rust's stays opt-in (SEM_MUL_RUST=1). These fast paths trade memory for speed by skipping a second parse of files whose facts are already known. Re-measuring peak memory footprint (the metric that actually tracks memory pressure and swap risk, as opposed to resident-set size, which can look artificially low once memory has been compressed) found C++ costing ~25-28% more than a default build on llvm-project and Python ~22-25% more on home-assistant/core — both above the project's +15% admission ceiling, even after a follow-up trim narrowed the gap. Rust independently re-measured at ~33% over. Cold builds on large C++/Python repos are correspondingly slower by default than in 0.22.1, but use less memory; set the relevant env var if you have RAM headroom and want the speed.
Go's fast path is now on by default, no configuration needed. It cleared the same ceiling (+6.8% to +8.5% peak memory footprint on Kubernetes, well under +15%) once the correctness fixes below landed, and delivers a 12-17% faster cold build on Kubernetes as a result.
Fixed
Go call resolution no longer merges same-named packages from different API groups. Kubernetes has dozens of packages literally named v1 — one per API group (kubeadm, bootstraptoken, pod-security-admission, and more) — and import resolution used to key packages only by their bare directory name, so a call like DeepCopyInto from one API group's type could resolve to a same-named method in a completely unrelated package. Packages are now disambiguated by their full import path. This alone removes roughly 32,000 false cross-package edges on Kubernetes, and (combined with the fix below) makes Kubernetes cold builds 28-30% faster.
Go resolution no longer confuses a source file's own name with a standard-library package it happens to share a name with. Large Go codebases routinely contain files literally named os.go or time.go; a secondary lookup route used to treat a file's own bare filename as if it were an importable package, so calls like os.Stat() or time.Now() could resolve to the local file instead of the real standard-library package. That route has been removed entirely — only the correct, directory-based lookup remains.
Rust call resolution no longer confuses an external standard-library import with a same-named local module. use std::cmp; followed by cmp::max(...) could previously resolve to an unrelated local cmp.rs instead of the real standard-library function. Imports rooted at std/core/alloc are now excluded from local-module matching outright (an external import can never legitimately resolve to a file in your own repo), and a genuine same-named local-module collision is now disambiguated per the specific item being called rather than per whole-file bucket, falling back to an honest miss instead of guessing when it can't be told apart.
Fixed a scope-resolution precedence bug affecting every supported language: a nested closure or sibling function could resolve a call to the wrong same-named target — for example, a TypeScript call landing on a sibling closure's function of the same name instead of the one actually being called. A function's own locally declared bindings now always take precedence over an outer scope's binding of the same name, and nested locals inside a plain function (not just a class or module) are now registered for lookup at all, closing a gap where they were invisible to their own siblings.
Go's cross-file method resolution is now internally consistent when the fast path is enabled. Rewriting a method's identity to reflect its true cross-file package location left other places that cache that identity out of date, which could push a call through an unrelated fallback path instead of the correct local lookup. Every place an entity's identity is cached is now kept in sync with the rewrite, and the fast-path build is now bit-identical to the default build on Kubernetes.
Multi-document YAML files (----separated) no longer lose entities to id collisions. Top-level keys sharing a name across different documents in the same file used to collapse onto one generated id, silently dropping all but one from the graph — including whether it was a test. Each document is now part of the generated id whenever a real collision exists; ordinary single-document files are unaffected.
sem entities's index-backed listings no longer come back empty on Windows. An absolute path built by ordinary path-joining wasn't normalized the same way as the repository root before comparison, and Windows always prepends its extended-path marker during normalization, so the two could never match. Two related normalization gaps in the MCP server and the index reader were fixed alongside it.
Fixed a parse-cache test flake caused by tests sharing global cache state under parallel execution; the cache is now injectable per test/thread, with no change to production behavior.
sem setup no longer installs a SessionStart hook that forks mcp --resident. That resident server was deleted in 0.22.0 (--resident is kept only as a no-op flag for old installs), so every fresh sem setup was forking a process that does nothing, once per Claude Code session. sem setup now installs only the UserPromptSubmit hook (sem hook prompt-submit); sem unsetup still recognizes and removes a legacy mcp --resident SessionStart hook from an older install.
[20 lines not shown]
go: update to 1.26.7 and 1.25.4
These minor releases include a fix to address a breakage affecting unencrypted
HTTP/2 (h2c) connections caused by a security patch included in last week’s
release. See go.dev/issue/80876 for details.
Pull up following revision(s) (requested by tsutsui in ticket #420):
sys/arch/sun68k/stand/libsa/sun3.c: revision 1.12
sys/arch/sun68k/stand/libsa/sun3.c: revision 1.13
sys/arch/sun68k/stand/libsa/version: revision 1.7
sun68k: fix typo in physical address calculation in dev3_mapin()
This typo was introduced in the sun3/sun3x merge 28 years ago,
so maybe harmless.
sun68k: avoid PROM DVMA map aliasing in sun3 bootloader
NetBSD/sun3 11.0 GENERIC fails to boot from a SCSI disk on
my Sun 3/60 with at least PROM revisions 2.8.3 and 3.0.1.
It looks sun3 PROM SCSI driver allocates internal resources
in DVMA space starting at 0xfff00000. The sun3 standalone
[26 lines not shown]
ed: Update to 1.22.6
2026-08-20 Antonio Diaz Diaz <antonio at gnu.org>
* Version 1.22.6 released.
* Pacify gcc's static analyzer. (Reported by Mikel Olasagasti Uranga).
main.c: (show_help): Print "*See also* regex(7)" for man page.
(print_escaped): Don't escape backslashes.
* ed.texi: Document that 'e' and 'E' delete the cut buffer.
(Reported by Tim Chase).
Document the use of REs inside the command-list of a global command.
(Reported by Artyom Bologov).
www/grafana-prometheus-datasource: import grafana-prometheus-datasource-13.1.7
Grafana no longer bundles this plugin since 3.2.0 and the upstream
plugin catalog only distributes Darwin, Linux and Windows binaries,
so we need a pkgsrc package for it.
Pull up following revision(s) (requested by tsutsui in ticket #1329):
sys/arch/sun68k/stand/libsa/sun3.c: revision 1.12
sys/arch/sun68k/stand/libsa/sun3.c: revision 1.13
sys/arch/sun68k/stand/libsa/version: revision 1.7
sun68k: fix typo in physical address calculation in dev3_mapin()
This typo was introduced in the sun3/sun3x merge 28 years ago,
so maybe harmless.
sun68k: avoid PROM DVMA map aliasing in sun3 bootloader
NetBSD/sun3 11.0 GENERIC fails to boot from a SCSI disk on
my Sun 3/60 with at least PROM revisions 2.8.3 and 3.0.1.
It looks sun3 PROM SCSI driver allocates internal resources
in DVMA space starting at 0xfff00000. The sun3 standalone
[26 lines not shown]
Pull up following revision(s) (requested by gutteridge in ticket #1328):
tests/usr.bin/grep/d_pr60552: revision 1.1
tests/usr.bin/grep/Makefile: revision 1.3
distrib/sets/lists/tests/mi: revision 1.1425
tests/usr.bin/grep/t_grep.sh: revision 1.10
tests/usr.bin/grep/t_grep.sh: revision 1.11
grep(1): Test screw case of case-insensitive match with colour.
PR bin/60552: /usr/bin/grep failure under AMD64
grep(1): Nix xfail on new test for PR 60552 screw case.
I was planning to do this in the same commit that fixes it, to keep
the history of bugs and fixes tidy, but gutteridge@ beat me to
committing the fix.
PR bin/60552: /usr/bin/grep failure under AMD64
Pull up following revision(s) (requested by gutteridge in ticket #419):
tests/usr.bin/grep/d_pr60552: revision 1.1
tests/usr.bin/grep/Makefile: revision 1.3
distrib/sets/lists/tests/mi: revision 1.1425
tests/usr.bin/grep/t_grep.sh: revision 1.10
tests/usr.bin/grep/t_grep.sh: revision 1.11
grep(1): Test screw case of case-insensitive match with colour.
PR bin/60552: /usr/bin/grep failure under AMD64
grep(1): Nix xfail on new test for PR 60552 screw case.
I was planning to do this in the same commit that fixes it, to keep
the history of bugs and fixes tidy, but gutteridge@ beat me to
committing the fix.
PR bin/60552: /usr/bin/grep failure under AMD64
mimir: update to 3.2
3.2:
- Remote execution on by default; upgrade all queriers to 3.1 first.
- Removed: -query-frontend.enable-multiple-node-remote-execution-
requests, MQE projection-pushdown and prune-toggles flags.
3.1:
- TSDB blocks must use index v2; no index-headers built from v1.
- Removed: -target=flusher (use /ingester/flush), ring heartbeat
disabling, -querier.response-streaming-enabled.
- Per-step stats unsupported under MQE.
3.0 (major; plan the upgrade):
- Query-scheduler is REQUIRED; embedded one gone, so -querier.frontend-
address, -querier.max-outstanding-requests-per-tenant and
-query-frontend.querier-forget-delay are removed.
- MQE also default in query-frontend; queriers no longer serve the
Prometheus HTTP API (go via query-frontend).
- Removed: read-write deploy mode, Redis cache, memcached addresses-
provider, instant query splitting, -query-frontend.downstream-url,
[8 lines not shown]