Skip to content

0.2.5 — 2026-09-08

Choose a tag to compare

@github-actions github-actions released this 08 Sep 16:52
829dbb4

Released: nash-cli 0.2.5, nash-ast 0.6.0, nash-can 0.5.0, nash-constrain 0.3.0, nash-driver 0.3.0, nash-parse 0.4.0, nash-solve 0.3.0, nash-source 0.5.0

Minor changes

  • nash-cli, nash-ast, nash-can, nash-constrain, nash-driver, nash-parse, nash-solve, nash-source — 3495cc5 Infer Haskell 98 kinds with occurs checks and defaulting. Check storage
    requirements through separate representation predicates and inline
    representation annotations. Infer datatype contexts with a terminating SCC
    worklist and enforce them at declarations and local or imported uses.

    Preserve higher-kinded and partial alias applications, captured variables,
    head-only impl coherence, superclass evidence and literal defaulting. Export
    closed kinds and ordered predicate contexts through interfaces. Use
    elementwise builtin-list Eq, structural Big Eq and reflexive Lift. — Thanks @MicroProofs!

  • nash-cli, nash-driver — dc3d24f Carry discovered package ownership into canonicalization and imported
    interfaces so core literal defaulting works through the CLI. Preserve
    application identities and reject conflicting ownership of a source URI. — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-solve — 343b710 Desugar do statements through the checked core Monad.bind method with sequential pattern and let scope. Reject refutable bind patterns and missing core Monad declarations. Verify inferred constraints and evidence against explicit nested bind calls. — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-solve — ec35b41 Provide structural Eq for all Big types, reject explicit Big Eq overrides,
    and retain compiler-owned equality evidence through inference and resolution. — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-constrain, nash-solve — 011f4fc Desugar prefix negation to the checked core Num.negate method with evidence on its generated method node. Remove the canonical Negate variant, fabricated method scheme, and dedicated negation constraints. Report a missing core Num method during canonicalization. — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-constrain, nash-solve — 25ee81e Add canonical trait declarations, predicates, method references, and impl evidence. Preserve predicate contexts when copying annotations and compare evidence type arguments independently of source locations. — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-constrain, nash-solve — 95c059e Infer partially applied aliases while preserving nominal impl identity and closed parameterized bodies across interfaces. Saturate aliases without capturing caller variables, and make evidence keys independent of alias body normalization. — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-constrain, nash-solve — c494bc8 Match recursive impl patterns consistently during inference, ground resolution
    and superclass checks. Preserve repeated variables and full impl identity,
    reject structural overlaps, and retain nested patterns in diagnostics. — Thanks @MicroProofs!

  • nash-ast, nash-can — 6b3cf28 Represent the compiler-owned reflexive Lift rule explicitly in evidence. Recognize only the exact core trait during superclass checking, prove Big without narrowing rigid types, and reject overlapping constructor impls. — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-constrain, nash-solve — 1aa6f28 Add the first real core Eq and Literal implementations and CLI acceptance.
    Use little list for list literals and patterns, with Storable element predicates.
    Put all compiler-known types in scope and count literal trait imports as used. — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-constrain, nash-solve — 44f917f Constrain integer, string and bytes literals through their core literal traits, retaining ordered literal and Eq evidence for patterns. Canonicalize bytes literals and preserve qualified polymorphic schemes for let-destructuring at the original pattern node. — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-solve — 84b506d Expose the specified representation cast bindings only inside nash/core, with
    symbolic lowering operations and independent nominal source and target types. — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-solve — 719e577 Preserve the full tuple arity in impl keys and evidence lookup. Large tuple heads no longer wrap onto smaller tuple heads and produce false overlap errors. — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-solve — fc9fe15 Export the specified Builtin value schemes with checked representation predicates, including
    the Storable list and pair APIs. Keep backend identifiers symbolic so the AST
    does not depend on the Plutus runtime. Normalize builtin unit annotations and
    impl heads to the same unit type as (). — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-solve — e05004f Expose the real bool and Data constructors through the synthetic Builtin
    interface. Recognize bool patterns by the exact core identity and count their
    imports correctly, removing the old Basics.Bool special case. — Thanks @MicroProofs!

  • nash-ast, nash-can, nash-constrain, nash-solve — 5904496 Allow infix declarations backed by local or imported trait methods. Preserve
    the operator provider, backing method identity, and checked scheme across
    interfaces, with evidence attached to each operator use and section. — Thanks @MicroProofs!

  • nash-can, nash-constrain, nash-solve — c2a42e7 Support all tuple components in canonicalization, constraints, inference, impl resolution, and error types. Preserve tuple tails when instantiating schemes and reject mismatched arities, component types, and recursive types. — Thanks @MicroProofs!

  • nash-can — e469b3e Retain impl metadata in module interfaces and expose global trait and impl tables to subsequent passes. Reject duplicate impl keys across build interfaces, with both defining modules in the diagnostic. — Thanks @MicroProofs!

  • nash-can — a39b831 Check impl superclass requirements using global instances and the impl context's superclass closure. Report missing proofs, context cycles, and bounded-search exhaustion without depending on declaration order. — Thanks @MicroProofs!

  • nash-can — 0919811 Resolve trait predicates in annotations, check their arity and free variables, and retain contexts on top-level and local typed definitions. — Thanks @MicroProofs!

  • nash-can — 390409f Remove the superseded interface deep-copy API. Compiled interfaces now borrow the retained build arena, preserving original type and evidence identities. — Thanks @MicroProofs!

  • nash-can, nash-solve — 38e93c3 Resolve matching user-defined little/Big twin constructors by qualification. Bare names select the little twin and module-qualified names select the Big twin, with independent import privacy. Preserve duplicate-constructor errors for unrelated declarations and malformed pairs. — Thanks @MicroProofs!

  • nash-can — d43d7c3 Canonicalize impl heads and method bodies, check head and context kinds, and substitute method types without capturing head variables. — Thanks @MicroProofs!

  • nash-can, nash-solve — 1a8fb4f Allow partial named constructors and nominal aliases in higher-kinded type
    annotations. Retain unsupplied alias parameters and diagnose invalid value
    positions through kind checking; keep overapplication errors. — Thanks @MicroProofs!

  • nash-can — 6ab29e5 Export and import trait schemes and method metadata. Preserve their identities in retained build arenas, retain private metadata for checking public schemes, and report ambiguous trait and method imports. — Thanks @MicroProofs!

  • nash-can, nash-driver — 9ad0e77 Retain canonical module nodes and solved trait evidence together for the duration of a build. Separate the canonicalizer's interface lookup lifetime from arena data so dependent modules borrow interfaces without copying nodes. — Thanks @MicroProofs!

  • nash-can, nash-solve — ed97474 Resolve ground canonical trait predicates into bounded impl and reflexive Lift
    evidence. Use representation predicates to prove Big without narrowing types, and preserve nominal aliases and ordered impl arguments. — Thanks @MicroProofs!

  • nash-can — c232ffc Canonicalize local traits and default methods, resolve method references, and infer trait kind schemes. Check superclass cycles and predicate argument kinds while keeping method quantifiers independent. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — fb3b4c7 Add predicate IDs to inference descriptors. Preserve and deduplicate pending
    obligations through unification, including descriptor changes during recursive
    unification and type errors. Preserve original descriptor obligations during
    scheme copy bookkeeping and restoration. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — 183e0be Report ambiguous trait variables that disappear from a definition's full
    type. Check both inferred and annotated bodies at their generalization
    boundary, preserve outer captures, and identify the innermost definition. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — f402a01 Remove the old numeric, comparable and appendable supertype machinery. Type variable names no longer imply constraints, and negation records core Num evidence at its original expression node. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — 27c0986 Preserve declared quantifiers when instantiating typed recursive calls.
    Report PolymorphicRecursion when a direct or mutual recursive call wraps
    evidence from its own group in impl evidence. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — ca0c2b2 Default hidden variables constrained by the core literal traits to their
    Builtin little types. Retry impl resolution with enclosing givens and shared
    resolution limits, including defaults exposed by another impl's context. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — 8a874b2 Report missing trait constraints on rigid annotation variables, with the
    originating method use and the definition that must provide the constraint. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — 2dd00f1 Retain declared contexts on local bindings, including monomorphic annotations
    and annotated recursive declarations published before their bodies. Copy
    constructed context arguments with the function type at each use, and keep
    annotation provenance distinct from call-site wanteds. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — ac8e124 Infer higher-kinded applications over nominal constructors, preserving qualified schemes and use-site evidence. Remove unused alias placeholders from constraint types. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — 96b68e0 Resolve known trait heads through coherent impls and their contexts. Preserve
    impl substitutions and child evidence, report missing impls at the original
    call, and stop expanding contexts with a diagnostic. — Thanks @MicroProofs!

  • nash-constrain, nash-driver, nash-solve — 482c758 Return definition schemes and use-site type arguments and trait evidence with
    inferred annotations. Preserve captured variable names and recursive evidence
    binders, and report unresolved evidence before publishing solver results.
    Adapt the driver to the paired solver result. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — 77daf19 Retain instantiated annotation contexts, evidence binders, and original
    definition names with full inference types in constraints. Preserve every
    recursive group member and method independently of lexical value headers. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — 8c9d933 Retain trait contexts on unannotated definitions and instantiate their type
    and full context together at each local use. Preserve outer-variable sharing,
    constructed predicate arguments, and shared contexts for recursive groups. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — 57f8033 Report an annotation variable that is fixed by an outer scope as a type error,
    with its definition name and region, instead of panicking during generalization. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — 4485efb Carry canonical expression identities through local, foreign, method, and
    operator constraints for per-use type arguments and evidence. Binop constraints
    retain the enclosing operator node identity. — Thanks @MicroProofs!

  • nash-constrain, nash-solve — 8b5ba81 Reduce inferred trait contexts and assign retained requirements to their
    definition's evidence slots. Keep recursive argument and result variables in
    the group scope so all members retain the same type relationships and context. — Thanks @MicroProofs!

  • nash-driver, nash-solve — 18bd47a Pass canonical trait tables into inference and discharge wanted predicates
    through superclass givens. Preserve original context indexes and projection
    paths, substitute trait parameters, and prefer explicit given evidence. — Thanks @MicroProofs!

  • nash-parse — 600364d Accept dollar signs in operators so the specified Functor map operator <$>
    can be declared and used by core Prelude. — Thanks @MicroProofs!

  • nash-solve — 7a294b7 Resolve core Lift reflexively for already-equal Big types, retaining solved evidence without narrowing declared types. Preserve ordinary impl selection when the compiler rule does not apply. — Thanks @MicroProofs!

  • nash-solve — d23211d Instantiate foreign and method annotation predicates with the same fresh
    variables as their types. Retain wanted predicates in the solver with their
    originating use, context position, and rank, and attach their IDs to argument
    descriptors. — Thanks @MicroProofs!

  • nash-solve — 991157d Discharge exact wanted predicates from enclosing annotation contexts in every
    Let path. Preserve use provenance and record the owning binder and context
    index. Match existing types without unification, retaining nominal aliases
    and normalizing equivalent record extension chains. — Thanks @MicroProofs!

  • nash-solve — 4af7e4e Convert explicit inference contexts to canonical annotations in evidence
    order. Preserve predicates whose arguments are absent from the result type,
    and reserve variable names across both the type and context. — Thanks @MicroProofs!

Patch changes

  • nash-can, nash-solve — e5e3d2f Allow operators backed by imported ordinary functions, retaining their original
    module and checked scheme through interfaces, as required by core Bool operators. — Thanks @MicroProofs!
  • nash-can — 38696ed Verify duplicate impl method locations and overapplied named and alias head
    diagnostics, completing the impl-declaration acceptance audit. — Thanks @MicroProofs!
  • nash-constrain, nash-solve — ad13ea4 Preserve definition identities on untyped recursive headers and fill their
    calls' evidence slots once the group's trait context is known. Keep each
    definition's identity separate from the group's evidence binder. — Thanks @MicroProofs!
  • nash-constrain — c398411 Check trait default bodies and specialized impl bodies during inference, in
    the module environment, without introducing methods as top-level values. — Thanks @MicroProofs!
  • nash-driver — e32dd1b Preserve module dependency order while loading sources so imports compile after their dependencies. Retain failed reads in their original positions. — Thanks @MicroProofs!
  • nash-driver — 3d3e735 Verify direct and transitive trait impl resolution through the driver, including
    impls owned by a type's module and orphan and overlap diagnostics. Correct the
    driver documentation to describe sequential compilation after source fetching. — Thanks @MicroProofs!
  • nash-parse — 84e8b7e Preserve module prefixes when parsing qualified constructor expressions,
    including builtin constructors used alongside Big twin declarations in core. — Thanks @MicroProofs!
  • nash-solve — e75769b Copy multiple scheme roots with one shared variable map and restore every
    touched original directly. Preserve sharing within an instantiation, freshen
    generalized variables between uses, and retain outer variables unchanged. — Thanks @MicroProofs!
  • nash-solve — 4e5f758 Reject growing trait evidence across nested helper calls. Track individual
    context slots so closed evidence and calls that reset a slot remain valid. — Thanks @MicroProofs!
  • nash-solve — 5a49f16 Snapshot published trait evidence with stable source locations, ordered type arguments, nested impls, recursive context owners and superclass projections. — Thanks @MicroProofs!
  • nash-solve — f6045d0 Verify that distinct literal traits on one hidden type variable remain ambiguous. — Thanks @MicroProofs!
  • nash-solve — c080145 Verify literal generalization and little-type default evidence with Big and
    UTF-8 conversion impls available. — Thanks @MicroProofs!
  • nash-solve — 8807173 Record definition identities and freeze scheme quantifiers at generalization,
    so local schemes do not quantify captured variables when an outer definition
    later generalizes them. Build exported annotations from the recorded schemes. — Thanks @MicroProofs!

Dependency updates

  • nash-cli: nash-driver@0.3.0
  • nash-ast: nash-source@0.5.0
  • nash-can: nash-ast@0.6.0, nash-parse@0.4.0, nash-source@0.5.0
  • nash-constrain: nash-ast@0.6.0
  • nash-driver: nash-ast@0.6.0, nash-can@0.5.0, nash-constrain@0.3.0, nash-parse@0.4.0, nash-solve@0.3.0, nash-source@0.5.0
  • nash-parse: nash-source@0.5.0
  • nash-solve: nash-ast@0.6.0, nash-can@0.5.0, nash-constrain@0.3.0, nash-parse@0.4.0, nash-source@0.5.0