Repository navigation
Release (main) - #45
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was generated by Sampo GitHub Action. When you're ready to do a release, you can merge this and the packages will be published automatically. Not ready yet? Just keep adding changesets to the default branch, and this PR will stay up to date.
nash-ast 0.12.0 -> 0.13.0
Minor changes
de1b7097 Add
select_implwithSelectPolicyandImplSelection, the one impl selection used by inference, superclass entailment, and evidence. Every candidate is matched, and a second match stops the compiler as a coherence bug instead of picking one. — Thanks @MicroProofs!4c4e5155 Resolve superclass evidence when a type variable stays open. A phantom parameter that no use fixes, as in
wrapper : tag 'p -> bool; wrapper t = same t twithsame : Ord 'a => 'a -> 'a -> bool, passed type checking but stoppednash testwith "superclass resolution requires a ground type".nash_solve::evidence::resolvenow keeps open type variables. An open variable equals only itself. An impl that matches whatever the variable is proves the predicate, and resolution reportsNonGroundonly when no impl does and impl selection, a representation test, or the requirements of a type need the variable. The newnash_ast::head::Openmatches impl heads against open types. UnderSelectPolicy::Exact,select_implnow returnsDeferredwhen no impl is selected and a candidate is undecided.nash_codegen::evidence::Error::NonGroundis removed. — Thanks @MicroProofs!f205096a Reject contradictory representation contexts on type applications, such as
(Big ('f 'a), Little ('f 'a)), with the existing contradictory-representation error. They used to reach impl selection, where an empty proven set matched every disjoint impl. Exportnash_ast::same_typefor location-free type comparison. — Thanks @MicroProofs!baadec9e Add the representation coverage rule. When a rigid type variable keeps impl selection from deciding, because the impls are split by its representation class (for example
Eq (list ('a : Big))andEq 'a => Eq (list ('a : Little))), inference accepts the predicate if the annotation states the trait at that variable and every admitted representation selects an impl whose context holds.same : Eq 'a => list 'a -> list 'a -> boolnow compiles. The evidence is the newEvidence::Specialize; code generation selects the impl for each use and keeps the selecting types in the specialization key. A missing element constraint is now reported as a missing constraint, such asEq 'a, instead of a missing impl for the container. Superclass proofs do not use the rule: an impl names a split requirement in its context. nash-ast also gainshead::cover_implsandReprTrait::exactly. — Thanks @MicroProofs!d47d2775 Replace every separate search budget with one compile fuel counter,
nash_ast::fuel. Trait resolution, impl overlap checks, superclass entailment, evidence resolution and code generation share it: each search step takes atick, and the driver installs a freshFuelfor each module's compile.nash check,build,testanddocsrun with unlimited fuel, so programs that the old fixed limits rejected now compile, such as an impl context that rewraps its argument used at 200 nested types. The language server runs with 10 million steps per module, so an editor gives up on a looping program after a second or two instead of freezing.Running out of fuel is one error kind,
COMPILATION STEP LIMIT(nash::type::out_of_fuel), replacingImplResolutionLimit(nash::type::impl_resolution_limit),ImplPatternLimit(nash::names::impl_pattern_limit), the superclass search limit, and the code generation specialization, evidence and recursion normalization limits. The solver reports it at the use that needed the search, canonicalization at the impl being checked, and code generation as a plain error.nash_driver::build,build_withandtest_withtake aFuelargument, re-exported asnash_driver::Fuel. — Thanks @MicroProofs!nash-can 0.13.0 -> 0.14.0
Minor changes
d47d2775 Replace every separate search budget with one compile fuel counter,
nash_ast::fuel. Trait resolution, impl overlap checks, superclass entailment, evidence resolution and code generation share it: each search step takes atick, and the driver installs a freshFuelfor each module's compile.nash check,build,testanddocsrun with unlimited fuel, so programs that the old fixed limits rejected now compile, such as an impl context that rewraps its argument used at 200 nested types. The language server runs with 10 million steps per module, so an editor gives up on a looping program after a second or two instead of freezing.Running out of fuel is one error kind,
COMPILATION STEP LIMIT(nash::type::out_of_fuel), replacingImplResolutionLimit(nash::type::impl_resolution_limit),ImplPatternLimit(nash::names::impl_pattern_limit), the superclass search limit, and the code generation specialization, evidence and recursion normalization limits. The solver reports it at the use that needed the search, canonicalization at the impl being checked, and code generation as a plain error.nash_driver::build,build_withandtest_withtake aFuelargument, re-exported asnash_driver::Fuel. — Thanks @MicroProofs!Patch changes
impl (Foo 'a, Little 'a) => Sub 'awhereFoorequiresBig, skipped this check and crashed the superclass entailment check; it now gets the contradictory-representation error. — Thanks @MicroProofs!(Big ('f 'a), Little ('f 'a)), with the existing contradictory-representation error. They used to reach impl selection, where an empty proven set matched every disjoint impl. Exportnash_ast::same_typefor location-free type comparison. — Thanks @MicroProofs!nash-cli 0.9.0 -> 0.10.0
Minor changes
d47d2775 Replace every separate search budget with one compile fuel counter,
nash_ast::fuel. Trait resolution, impl overlap checks, superclass entailment, evidence resolution and code generation share it: each search step takes atick, and the driver installs a freshFuelfor each module's compile.nash check,build,testanddocsrun with unlimited fuel, so programs that the old fixed limits rejected now compile, such as an impl context that rewraps its argument used at 200 nested types. The language server runs with 10 million steps per module, so an editor gives up on a looping program after a second or two instead of freezing.Running out of fuel is one error kind,
COMPILATION STEP LIMIT(nash::type::out_of_fuel), replacingImplResolutionLimit(nash::type::impl_resolution_limit),ImplPatternLimit(nash::names::impl_pattern_limit), the superclass search limit, and the code generation specialization, evidence and recursion normalization limits. The solver reports it at the use that needed the search, canonicalization at the impl being checked, and code generation as a plain error.nash_driver::build,build_withandtest_withtake aFuelargument, re-exported asnash_driver::Fuel. — Thanks @MicroProofs!Patch changes
nash-codegen 0.7.0 -> 0.8.0
Minor changes
4c4e5155 Resolve superclass evidence when a type variable stays open. A phantom parameter that no use fixes, as in
wrapper : tag 'p -> bool; wrapper t = same t twithsame : Ord 'a => 'a -> 'a -> bool, passed type checking but stoppednash testwith "superclass resolution requires a ground type".nash_solve::evidence::resolvenow keeps open type variables. An open variable equals only itself. An impl that matches whatever the variable is proves the predicate, and resolution reportsNonGroundonly when no impl does and impl selection, a representation test, or the requirements of a type need the variable. The newnash_ast::head::Openmatches impl heads against open types. UnderSelectPolicy::Exact,select_implnow returnsDeferredwhen no impl is selected and a candidate is undecided.nash_codegen::evidence::Error::NonGroundis removed. — Thanks @MicroProofs!baadec9e Add the representation coverage rule. When a rigid type variable keeps impl selection from deciding, because the impls are split by its representation class (for example
Eq (list ('a : Big))andEq 'a => Eq (list ('a : Little))), inference accepts the predicate if the annotation states the trait at that variable and every admitted representation selects an impl whose context holds.same : Eq 'a => list 'a -> list 'a -> boolnow compiles. The evidence is the newEvidence::Specialize; code generation selects the impl for each use and keeps the selecting types in the specialization key. A missing element constraint is now reported as a missing constraint, such asEq 'a, instead of a missing impl for the container. Superclass proofs do not use the rule: an impl names a split requirement in its context. nash-ast also gainshead::cover_implsandReprTrait::exactly. — Thanks @MicroProofs!d47d2775 Replace every separate search budget with one compile fuel counter,
nash_ast::fuel. Trait resolution, impl overlap checks, superclass entailment, evidence resolution and code generation share it: each search step takes atick, and the driver installs a freshFuelfor each module's compile.nash check,build,testanddocsrun with unlimited fuel, so programs that the old fixed limits rejected now compile, such as an impl context that rewraps its argument used at 200 nested types. The language server runs with 10 million steps per module, so an editor gives up on a looping program after a second or two instead of freezing.Running out of fuel is one error kind,
COMPILATION STEP LIMIT(nash::type::out_of_fuel), replacingImplResolutionLimit(nash::type::impl_resolution_limit),ImplPatternLimit(nash::names::impl_pattern_limit), the superclass search limit, and the code generation specialization, evidence and recursion normalization limits. The solver reports it at the use that needed the search, canonicalization at the impl being checked, and code generation as a plain error.nash_driver::build,build_withandtest_withtake aFuelargument, re-exported asnash_driver::Fuel. — Thanks @MicroProofs!Patch changes
nash-constrain 0.9.0 -> 0.10.0
Minor changes
ba457678 Restore Elm's constraint tree:
nash-constraingenerates it from the canonical AST andnash-solvewalks it, in place of direct inference. An annotated definition now publishes its declared type: a call with more arguments in the same module no longer replaces an alias in its annotation, so importers find the impls of that alias. — Thanks @MicroProofs!5655782b Record on each record-field constraint whether it comes from a module test, in place of the
Constraint::TestScopewrapper.Constraint::RecordandConstraint::Fieldgain atestsfield,TestScopeis removed, andpattern::Stateandpattern::empty_statetake the flag. Field visibility is unchanged: fields that only a tests-block import makes visible are visible in tests and nowhere else. — Thanks @MicroProofs!d47d2775 Replace every separate search budget with one compile fuel counter,
nash_ast::fuel. Trait resolution, impl overlap checks, superclass entailment, evidence resolution and code generation share it: each search step takes atick, and the driver installs a freshFuelfor each module's compile.nash check,build,testanddocsrun with unlimited fuel, so programs that the old fixed limits rejected now compile, such as an impl context that rewraps its argument used at 200 nested types. The language server runs with 10 million steps per module, so an editor gives up on a looping program after a second or two instead of freezing.Running out of fuel is one error kind,
COMPILATION STEP LIMIT(nash::type::out_of_fuel), replacingImplResolutionLimit(nash::type::impl_resolution_limit),ImplPatternLimit(nash::names::impl_pattern_limit), the superclass search limit, and the code generation specialization, evidence and recursion normalization limits. The solver reports it at the use that needed the search, canonicalization at the impl being checked, and code generation as a plain error.nash_driver::build,build_withandtest_withtake aFuelargument, re-exported asnash_driver::Fuel. — Thanks @MicroProofs!Patch changes
nash-docs 0.2.3 -> 0.2.4
Patch changes
d47d2775 Replace every separate search budget with one compile fuel counter,
nash_ast::fuel. Trait resolution, impl overlap checks, superclass entailment, evidence resolution and code generation share it: each search step takes atick, and the driver installs a freshFuelfor each module's compile.nash check,build,testanddocsrun with unlimited fuel, so programs that the old fixed limits rejected now compile, such as an impl context that rewraps its argument used at 200 nested types. The language server runs with 10 million steps per module, so an editor gives up on a looping program after a second or two instead of freezing.Running out of fuel is one error kind,
COMPILATION STEP LIMIT(nash::type::out_of_fuel), replacingImplResolutionLimit(nash::type::impl_resolution_limit),ImplPatternLimit(nash::names::impl_pattern_limit), the superclass search limit, and the code generation specialization, evidence and recursion normalization limits. The solver reports it at the use that needed the search, canonicalization at the impl being checked, and code generation as a plain error.nash_driver::build,build_withandtest_withtake aFuelargument, re-exported asnash_driver::Fuel. — Thanks @MicroProofs!Updated dependencies: nash-ast@0.13.0, nash-can@0.14.0, nash-driver@0.15.0, nash-report@0.8.0
nash-driver 0.14.0 -> 0.15.0
Minor changes
d47d2775 Replace every separate search budget with one compile fuel counter,
nash_ast::fuel. Trait resolution, impl overlap checks, superclass entailment, evidence resolution and code generation share it: each search step takes atick, and the driver installs a freshFuelfor each module's compile.nash check,build,testanddocsrun with unlimited fuel, so programs that the old fixed limits rejected now compile, such as an impl context that rewraps its argument used at 200 nested types. The language server runs with 10 million steps per module, so an editor gives up on a looping program after a second or two instead of freezing.Running out of fuel is one error kind,
COMPILATION STEP LIMIT(nash::type::out_of_fuel), replacingImplResolutionLimit(nash::type::impl_resolution_limit),ImplPatternLimit(nash::names::impl_pattern_limit), the superclass search limit, and the code generation specialization, evidence and recursion normalization limits. The solver reports it at the use that needed the search, canonicalization at the impl being checked, and code generation as a plain error.nash_driver::build,build_withandtest_withtake aFuelargument, re-exported asnash_driver::Fuel. — Thanks @MicroProofs!Patch changes
nash-fmt 0.2.1 -> 0.2.2
Patch changes
nash-ir 0.5.1 -> 0.5.2
Patch changes
nash-language-server 0.4.9 -> 0.5.0
Minor changes
d47d2775 Replace every separate search budget with one compile fuel counter,
nash_ast::fuel. Trait resolution, impl overlap checks, superclass entailment, evidence resolution and code generation share it: each search step takes atick, and the driver installs a freshFuelfor each module's compile.nash check,build,testanddocsrun with unlimited fuel, so programs that the old fixed limits rejected now compile, such as an impl context that rewraps its argument used at 200 nested types. The language server runs with 10 million steps per module, so an editor gives up on a looping program after a second or two instead of freezing.Running out of fuel is one error kind,
COMPILATION STEP LIMIT(nash::type::out_of_fuel), replacingImplResolutionLimit(nash::type::impl_resolution_limit),ImplPatternLimit(nash::names::impl_pattern_limit), the superclass search limit, and the code generation specialization, evidence and recursion normalization limits. The solver reports it at the use that needed the search, canonicalization at the impl being checked, and code generation as a plain error.nash_driver::build,build_withandtest_withtake aFuelargument, re-exported asnash_driver::Fuel. — Thanks @MicroProofs!Patch changes
nash-nitpick 0.3.3 -> 0.3.4
Patch changes
nash-report 0.7.0 -> 0.8.0
Minor changes
4dcd4e98 Break a tuple or record type that does not fit the line with one entry per line, as Elm does. The entries were joined without break points, so only the last entries broke and the type drifted to the right. Add
Doc::pcat, Elm'sD.cat. — Thanks @MicroProofs!d47d2775 Replace every separate search budget with one compile fuel counter,
nash_ast::fuel. Trait resolution, impl overlap checks, superclass entailment, evidence resolution and code generation share it: each search step takes atick, and the driver installs a freshFuelfor each module's compile.nash check,build,testanddocsrun with unlimited fuel, so programs that the old fixed limits rejected now compile, such as an impl context that rewraps its argument used at 200 nested types. The language server runs with 10 million steps per module, so an editor gives up on a looping program after a second or two instead of freezing.Running out of fuel is one error kind,
COMPILATION STEP LIMIT(nash::type::out_of_fuel), replacingImplResolutionLimit(nash::type::impl_resolution_limit),ImplPatternLimit(nash::names::impl_pattern_limit), the superclass search limit, and the code generation specialization, evidence and recursion normalization limits. The solver reports it at the use that needed the search, canonicalization at the impl being checked, and code generation as a plain error.nash_driver::build,build_withandtest_withtake aFuelargument, re-exported asnash_driver::Fuel. — Thanks @MicroProofs!Patch changes
(Big ('f 'a), Little ('f 'a)), with the existing contradictory-representation error. They used to reach impl selection, where an empty proven set matched every disjoint impl. Exportnash_ast::same_typefor location-free type comparison. — Thanks @MicroProofs!nash checkfrom crashing with "Doc::text must not contain newlines" when a missing-constraint or missing-impl predicate is wider than 80 columns. The help line is now part of the report layout instead of pre-rendered text. When a sentence with a predicate does not fit the line, the predicate moves to its own line, indented by 4. Sentences that fit render as before. — Thanks @MicroProofs!nash-solve 0.10.0 -> 0.11.0
Minor changes
4c4e5155 Resolve superclass evidence when a type variable stays open. A phantom parameter that no use fixes, as in
wrapper : tag 'p -> bool; wrapper t = same t twithsame : Ord 'a => 'a -> 'a -> bool, passed type checking but stoppednash testwith "superclass resolution requires a ground type".nash_solve::evidence::resolvenow keeps open type variables. An open variable equals only itself. An impl that matches whatever the variable is proves the predicate, and resolution reportsNonGroundonly when no impl does and impl selection, a representation test, or the requirements of a type need the variable. The newnash_ast::head::Openmatches impl heads against open types. UnderSelectPolicy::Exact,select_implnow returnsDeferredwhen no impl is selected and a candidate is undecided.nash_codegen::evidence::Error::NonGroundis removed. — Thanks @MicroProofs!baadec9e Add the representation coverage rule. When a rigid type variable keeps impl selection from deciding, because the impls are split by its representation class (for example
Eq (list ('a : Big))andEq 'a => Eq (list ('a : Little))), inference accepts the predicate if the annotation states the trait at that variable and every admitted representation selects an impl whose context holds.same : Eq 'a => list 'a -> list 'a -> boolnow compiles. The evidence is the newEvidence::Specialize; code generation selects the impl for each use and keeps the selecting types in the specialization key. A missing element constraint is now reported as a missing constraint, such asEq 'a, instead of a missing impl for the container. Superclass proofs do not use the rule: an impl names a split requirement in its context. nash-ast also gainshead::cover_implsandReprTrait::exactly. — Thanks @MicroProofs!d47d2775 Replace every separate search budget with one compile fuel counter,
nash_ast::fuel. Trait resolution, impl overlap checks, superclass entailment, evidence resolution and code generation share it: each search step takes atick, and the driver installs a freshFuelfor each module's compile.nash check,build,testanddocsrun with unlimited fuel, so programs that the old fixed limits rejected now compile, such as an impl context that rewraps its argument used at 200 nested types. The language server runs with 10 million steps per module, so an editor gives up on a looping program after a second or two instead of freezing.Running out of fuel is one error kind,
COMPILATION STEP LIMIT(nash::type::out_of_fuel), replacingImplResolutionLimit(nash::type::impl_resolution_limit),ImplPatternLimit(nash::names::impl_pattern_limit), the superclass search limit, and the code generation specialization, evidence and recursion normalization limits. The solver reports it at the use that needed the search, canonicalization at the impl being checked, and code generation as a plain error.nash_driver::build,build_withandtest_withtake aFuelargument, re-exported asnash_driver::Fuel. — Thanks @MicroProofs!Patch changes
nash-constraingenerates it from the canonical AST andnash-solvewalks it, in place of direct inference. An annotated definition now publishes its declared type: a call with more arguments in the same module no longer replaces an alias in its annotation, so importers find the impls of that alias. — Thanks @MicroProofs!(Big ('f 'a), Little ('f 'a)), with the existing contradictory-representation error. They used to reach impl selection, where an empty proven set matched every disjoint impl. Exportnash_ast::same_typefor location-free type comparison. — Thanks @MicroProofs!Constraint::TestScopewrapper.Constraint::RecordandConstraint::Fieldgain atestsfield,TestScopeis removed, andpattern::Stateandpattern::empty_statetake the flag. Field visibility is unchanged: fields that only a tests-block import makes visible are visible in tests and nowhere else. — Thanks @MicroProofs!Little 'ainsideBig 'a => ..., as a contradictory-representation error. The two annotations share'a, and their combined constraints used to reach impl selection and crash the compiler. The error no longer lists a requirement that another listed requirement implies, such asStorablenext toBig. — Thanks @MicroProofs!'f 'awith a transparent alias through the alias body when the alias's own parameters cannot supply the applied arguments.type alias Xs = List Intnow works withList.length; record aliases remain nominal. — Thanks @MicroProofs!