The Test job failed at 'cargo binstall cargo-nextest' — cargo-binstall is
not preinstalled on the runner. Use taiki-e/install-action to fetch a
prebuilt nextest binary instead. Also set up Node (the codegen tests execute
emitted JS under node) and add Swatinem/rust-cache to avoid a cold build.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The push reconciliation reset the local repo to a fresh clone of origin
(which sat at the pre-session base), abandoning the entire session's
commit chain. That chain was never pushed, so its 168 commits are not
recoverable at the git layer — but the fully-integrated working tree
survived in the `nymph_lang-ws-corestd` workspace directory (verified
1034/1034 green). This commit re-lands that complete tree onto main.
Recovered work (previously each its own slice; history could not be
preserved, so it lands here as one recovery commit):
- LSP: rich hover (declaration structure, named signatures, generic
bounds, keyword docs, match-arm/for-loop pattern hover, markdown
rendering), variant-construction hover, this-receiver go-to-def, and
resolution-aware semantic tokens with consistent use-site classes.
- External linkage L0-L3: in-process oxc TS strip, the Option/Result
ABI seam (global enum discriminants), and linked list/map/set
surfaces that materialise and run under Node.
- print/println wired to real JS via free-function linkage.
- Mutable types (`mut T`): view mutability, method-mutability gating,
and the mut/namespace func model.
- Prelude infrastructure (`check_module_with_prelude`), the core/std
groundwork, ambient math, and the docs reference + guided tour.
Also drops the obsolete `stdlib/dist/**` (superseded by in-process
strip) and gitignores the internal agent progress trackers.
int<->uint operators (the base's `9cdd417`) are intentionally not
carried here: that work needs a clean rework (method-call ambiguity
fix + real tests) now that its prerequisites are present.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add the missing arithmetic/comparison/equality operator impls between
`int` and `uint` in stdlib/src/ops (both directions), so mixed-numeric
expressions type-check instead of failing "operator not implemented".
- Fix exhaustiveness checking for `uint` scrutinees (range/literal pattern
coverage over the unsigned domain was mishandled).
- Improve the operator-resolution-failure diagnostic: instead of a bare
"not implemented", say which operator, which operand types, and which
interface implements it — e.g. "the `**` operator is not implemented for
`A` and `B`; implement `Power` to support it".
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018kRDspADaPqFtHzPM4sY1N
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018kRDspADaPqFtHzPM4sY1N
fn_type_of now scans parameter-position types for synthetic impl-Trait
params (index >= 1<<28) and extends the call-site subst with a fresh
inference var per synthetic, so func f(x: Iface) is callable with
concrete arguments exactly like func f<T: Iface>(x: T) - including
function-as-value references, which share the same path. Return-
position synthetics stay rigid (still loudly rejected). Closes the
last golden-corpus finding; the corpus now runs with zero ignored
tests. NOTE: call-site bound enforcement does not exist for either
spelling (pre-existing soundness hole, now documented in the ledger).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018kRDspADaPqFtHzPM4sY1N
Kahn topological sort + worklist fixpoint (module-let reordering),
Hindley-Milner-style unification and its occurs check, and the
hash-consing type interner. Maranget usefulness was already named.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018kRDspADaPqFtHzPM4sY1N
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018kRDspADaPqFtHzPM4sY1N