Merged
Conversation
Contributor
|
Note that ado is breaking since it introduces a new reserved word ado.
Sent from my iPhone.
… Op 29 apr. 2018 om 16:06 heeft Gary Burgess ***@***.***> het volgende geschreven:
Provisional release notes below. We might want to expand on the explanation of some of the breaking changes and enhancements, so any suggestions welcome. I'm going to be out until later tonight and will make the release when I get back, unless anyone else wants to jump in before then.
Breaking changes
Removed wrapper scripts for the old binary names (psc, psci, etc.) (#2993, @hdgarrood)
Removed compiler support for deriving purescript-generics. purescript-generics-rep is still supported. (#3007, @paf31)
Instances with just one method now require the method to be indented (bug fix, but potentially breaking) (#2947, @quesebifurcan)
Overlapping instances are now an error rather than a warning, but can be resolved with the new instance chain groups feature (#2315, @LiamGoodacre)
Reworked the CoreFn json representation (#3049, @coot)
It is no longer possible to export a class that has superclasses that are not also exported (bug fix, but potentially breaking) (#3132, @parsonsmatt)
Eq and Ord deriving will now rely on Eq1 and Ord1 constraints as necessary where sometimes previously Eq (f _) would be required. Eq1 and Ord1 instances can also be derived. (#3207, @garyb)
Some Prim classes have been renamed/moved, so will require explicit importing (#3176, @parsonsmatt):
RowCons is now Prim.Row.Cons
Union is now Prim.Row.Union
Fail is now Prim.TypeError.Fail
Warn is now Prim.TypeError.Warn
Users can no longer specify modules under the Prim namespace (#3291, @parsonsmatt)
The Prim.TypeError classes now now more powerful, instead of printing symbols, now a Doc is printed that can be constructed with Text, Quote, Beside, and Above constructors (all under Prim.TypeError) (#3134, @LiamGoodacre)
Instance overlaps are now checked at declaration time rather than being deferred until an attempt to use them is made (#3129, @LiamGoodacre)
Chaining non-associative or mixed associativity operators of the same precedence is no longer allowed (#3315, @garyb)
The --dump-corefn and --source-maps arguments to purs compile have been removed. There is now a --codegen argument that allows the specific codegen targets to be specified - for example, --codegen corefn will not produce JS files, --codgen js,corefn will produce both. If the sourcemaps target is used js will be implied, so there's no difference between --codegen js,sourcemaps and --codegen sourcemaps). If no targets are specified the default is js. (#3196, @garyb, @gabejohnson)
Exported types that use foreign kinds now require the foreign kinds to be exported too (bug fix, but potentially breaking) (#3331, @garyb)
Enhancements
Added Cons compiler-solved class for Symbol (#3054, @kcsongor)
Added applicative-do notation (#2889, @rightfold)
The Append compiler-solved class for Symbol can now be run in reverse (#3025, @paf31)
purs ide treats hiding imports the same as open imports when sorting (#3069, @kritzcreek)
Added inlining for fully saturated usages of runEffFn/mkEffFn (#3026, @nwolverson)
Improved explanation of UnusableDeclaration error (#3088, #3304, @i-am-tom)
Improved rendering of comments in generated JavaScript by removing additional newlines (#3096, @brandonhamilton)
Improved orphan instance error to include locations where the instance would be valid (#3106, @i-am-tom)
Added an explicit error for better explanation of duplicate class or instance declarations (#3093, @LiamGoodacre)
purs ide now provide documentation comments (#2349, @nwolverson)
Clarified meaning of duplicate labels in a Record row (#3143, @paf31)
Explicit import suggestions consistently use (..) for constructors now (#3142, @nwolverson)
Improved tab completion in purs repl (#3227, @rndnoise)
Large compiler perfomance improvement in some cases by skipping source spans in Eq, Ord for binders (#3265, @bitemyapp)
Added support for error/warning messages to carry multiple source spans (#3255, @garyb)
Improved tab completion in purs repl when parens and brackets are involved (#3236, @rndnoise)
Improved completion in purs repl after :kind and :type (#3237, @rndnoise)
Added the "magic do" optimisation for the new simplified Effect type (Control.Monad.Eff is still supported) (#3289, @kritzcreek, #3301, @garyb)
Improvide build startup times when resuming a build with incremental results (#3270, @kritzcreek)
Added compiler-solved Prim.Row.Nub class (#3293, @natefaubion)
Improved docs for Prim.Row.Cons and Prim.Row.Union (#3292, @Vladciobanu)
Functor can now be derived when quantifiers are used in constructors (#3232, @i-am-tom)
purs repl will now complete types after :: (#3239, @rndnoise)
Added compiler-solved Prim.Row.Lacks class (#3305, @natefaubion)
Added current output path to missing output error message from purs ide (#3311, @rgrinberg)
Improved parser error messages for .purs-repl (#3248, @rndnoise)
require in generated JavaScript now includes full index.js file paths (#2621, @chexxor)
Added more compiler-solved classes and supporting types and kinds to Prim:
Prim.Ordering module with kind Ordering, type LT, type EQ, type GT
Prim.RowList module with class RowToList, kind RowList, type Nil, type Cons
Prim.Symbol module with class Compare, class Append, class Cons
Generated code for closed records now explicitly reconstructs the record rather than looping (#1493, @fehrenbach)
Bug fixes
Fixed a bug with names cause by Prim always being imported unqualified (#2197, @LightAndLight)
Fixed overlapping instances error message to reflect its new status as an error (#3084, @drets)
Added source position to TypeClassDeclaration errors (#3109, @b123400)
Fixed entailment issues with skolems and matches in the typechecker (#3121, @LiamGoodacre)
Fixed multiple parentheses around a type causing a crash (#3085, @MonoidMusician)
Fixed purs ide inserting conflicting imports for types (#3131, @nwolverson)
Fixed constraints being inferred differently for lambda expressions compared with equational declarations (#3125, @LiamGoodacre)
Updated glob handling to prevent excessive memory usage (#3055, @hdgarrood)
Added position information to warnings in type declarations (#3174, @b123400)
Fixed documentation generated for Pursuit rendering functional dependency variables as identifier links (#3180, @houli)
Naming a function argument __unused no longer breaks codegen (#3187, @matthewleon)
Added position information to ShadowedName warning (#3213, @garyb)
Added position information to UnusedTypeVar warning (#3214, @garyb)
Added position information to MissingClassMember, ExtraneousClassMember, ExpectedWildcard errors (#3216, @garyb)
Added position information to ExportConflict errors (#3217, @garyb)
Fixed ctags and etags generation when explicit exports are involved (#3204, @matthewleon)
Added position information to ScopeShadowing warning (#3219, @garyb)
Added position information for various FFI related errors and warnings (#3276, @garyb)
Added all available positions to CycleInModule and DuplicateModule errors (#3273, @garyb)
Added position information for IntOutOfRange errors (#3277, @garyb, @kritzcreek)
Warnings are now raised when a module re-exports a qualified module with implicit import (#2726, @garyb)
purs repl now shows results for :browse Prim (#2672, @rndnoise)
Added position information to ErrorParsingFFIModule (#3307, @nwolverson)
Added position information for ScopeConflict cause by exports (#3318, @garyb)
Added position information to errors that occur in binding groups and data binding groups (#3275, @garyb)
Fixed a scoping issue when resolving operators (#2803, @kritzcreek, @LightAndLight)
Type synonyms are now desugared earlier when deriving (#3325, @LiamGoodacre)
Fixed subgoals of compiler-solved typeclasses being ignored (#3333, @LiamGoodacre)
Added position information to type operator associativity errors (#3337, @garyb)
Other
Updated installation information to include details about prebuild binaries (#3167, @MiracleBlue)
Test suite now prints output when failing cases are encountered (#3181, @parsonsmatt)
Updated test suite to use tasty (#2848, @kritzcreek)
Improved performance of repl test suite (#3234, @rndnoise)
Refactored let pattern desugaring to be less brittle (#3268, @kritzcreek)
Added makefile with common tasks for contributors (#3266, @bitemyapp)
Added ghcid and testing commands to makefile (#3290, @parsonsmatt)
Removed old unused MultipleFFIModules error (#3308, @nwolverson)
mod and div for Int are no longer inlined as their definition has changed in a way that makes their implementation more complicated - purescript/purescript-prelude#161 (#3309, @garyb)
The test suite now checks warnings and errors have position information (#3211, @garyb)
The AST was updated to be able to differentiate between let and where clauses (#3317, @joneshf)
Support for an optimization pass on CoreFn was added (#3319, @matthewleon)
You can view, comment on, or merge this pull request online at:
#3340
Commit Summary
Bump version for v0.12.0-rc1
File Changes
M package.yaml (2)
Patch Links:
https://github.com/purescript/purescript/pull/3340.patch
https://github.com/purescript/purescript/pull/3340.diff
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
Contributor
|
I wrote about the record updates: here http://stefan-fehrenbach.net/blog/2018-04-28-efficient-updates-closed-records-purescript/index.html Well done everyone! |
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.
Provisional release notes below. We might want to expand on the explanation of some of the breaking changes and enhancements, so any suggestions welcome. I'm going to be out until later tonight and will make the release when I get back, unless anyone else wants to jump in before then.
Breaking changes
adois now a keyword. An full explanation of the behaviour and usage ofadois available in a comment on the issue. (Add applicative do notation #2889, @rightfold)purescript-generics.purescript-generics-repis still supported. (Remove old generics and generics-rep record support #3007, @paf31)CoreFnjson representation (Corefn Json representation #3049, @coot)EqandOrdderiving will now rely onEq1andOrd1constraints as necessary where sometimes previouslyEq (f _)would be required.Eq1andOrd1instances can also be derived. (Eq1 / Ord1 deriving again #3207, @garyb)Primtype classes have been renamed/moved, so will require explicit importing (Rename prim classes #3176, @parsonsmatt):RowConsis nowPrim.Row.ConsUnionis nowPrim.Row.UnionFailis nowPrim.TypeError.FailWarnis nowPrim.TypeError.WarnPrimnamespace (Disallow Prim modules #3291, @parsonsmatt)TypeConcatandTypeStringhave been replaced because they were in kindSymbolbut weren't literals. ThePrim.TypeErrer.Dockind and related constructors (Text,Quote,Beside,Above) have been added in their place. TheFailandWarntype classes now accept aDocinstead of aSymbol.(Fail, TypeConcat, & TypeString shouldn't end in kind Symbol #3134, @LiamGoodacre)
--dump-corefnand--source-mapsarguments topurs compilehave been removed. There is now a--codegenargument that allows the specific codegen targets to be specified - for example,--codegen corefnwill not produce JS files,--codgen js,corefnwill produce both. If thesourcemapstarget is usedjswill be implied, so there's no difference between--codegen js,sourcemapsand--codegen sourcemaps). If no targets are specified the default isjs. (Add flag to disable Javascript backend #3196, @garyb, @gabejohnson)Enhancements
Conscompiler-solved type class forSymbol(Solve ConsSymbol #3054, @kcsongor)Appendcompiler-solved type class forSymbolcan now be run in reverse (Run AppendSymbol in reverse #3025, @paf31)purs idetreatshidingimports the same as open imports when sorting ([purs ide] Groups hiding imports with implicit ones #3069, @kritzcreek)runEffFn/mkEffFn(Add inlining for runEffFnN/mkEffFnN #3026, @nwolverson)UnusableDeclarationerror (Expand error message for UnusableDeclaration #3088, Tidy up "undetermined class argument" warning #3304, @i-am-tom)purs idenow provide documentation comments ([psc-ide] Collect docstrings for identifiers #2349, @nwolverson)Recordrow (Add docs for duplicate labels in record types #3143, @paf31)(..)for constructors now (Make explicit import suggestions more consistent #3142, @nwolverson)purs repl(REPL doesn't auto-complete re-exported symbols #3227, @rndnoise)Eq,Ordfor binders (Skip SourceSpan in Binder Eq, Ord for faster exhaustivity check #3265, @bitemyapp)purs replwhen parens and brackets are involved (Complete after parens and brackets in REPL #3236, @rndnoise)purs replafter:kindand:type(Complete any number of words after :kind and :type in REPL #3237, @rndnoise)Effecttype (Control.Monad.Effis still supported) (Implements magic-do for Control.Monad.Effect #3289, @kritzcreek, UpdateEffectinlining #3301, @garyb)Prim.Row.Nubtype class (Add compiler derived Prim.Row.Nub class #3293, @natefaubion)Prim.Row.ConsandPrim.Row.Union(updated docs for RowCons and RowUnuon #3292, @Vladciobanu)Functorcan now be derived when quantifiers are used in constructors (Functor deriving should support quantified arguments of a constructor #3232, @i-am-tom)purs replwill now complete types after::(Complete type identifiers following '::' in REPL #3239, @rndnoise)Prim.Row.Lackstype class (Add Prim.Row.Lacks constraint #3305, @natefaubion)purs ide(Add missing output directory to error #3311, @rgrinberg).purs-repl(Trailing blank line in.purs-replfails, with a confusing error message #3248, @rndnoise)requirein generated JavaScript now includes fullindex.jsfile paths (Change the require path in the JS output of psc #2621, @chexxor)Prim:Prim.Orderingmodule withkind Ordering,type LT,type EQ,type GTPrim.RowListmodule withclass RowToList,kind RowList,type Nil,type ConsPrim.Symbolmodule withclass Compare,class Append,class Cons(Move solved type classes into Prim modules & bump test deps #3312, @LiamGoodacre, @kritzcreek)
Bug fixes
Primalways being imported unqualified (Type shadowing error #2197, @LightAndLight)TypeClassDeclarationerrors (Add position to type class declaration error #3109, @b123400)purs ideinserting conflicting imports for types ([purs ide] Ide inserts conflicting imports for types #3131, @nwolverson)__unusedno longer breaks codegen (naming an fn parameter __unused breaks codegen #3187, @matthewleon)ShadowedNamewarning (Add source spans to name constructors and fixShadowedNamewarning #3213, @garyb)UnusedTypeVarwarning (FixUnusedTypeVarmissing position info #3214, @garyb)MissingClassMember,ExtraneousClassMember,ExpectedWildcarderrors (Fix various typeclass-related error spans #3216, @garyb)ExportConflicterrors (Fix ExportConflict error missing spans #3217, @garyb)ctagsandetagsgeneration when explicit exports are involved (ctags and etags generation foiled by explicit exports #3204, @matthewleon)ScopeShadowingwarning (Fix source span for a case of ScopeShadowing warning #3219, @garyb)CycleInModuleandDuplicateModuleerrors (Take advantage of multi-span errors #3273, @garyb)IntOutOfRangeerrors (Add source spans for literals #3277, @garyb, @kritzcreek)purs replnow shows results for:browse Prim(:browse Prim does not work #2672, @rndnoise)ErrorParsingFFIModule(Add some source span to ErrorParsingFFIModule #3307, @nwolverson)ScopeConflictcause by exports (Add positions forScopeConflictcaused by exports #3318, @garyb)Other
repltest suite (Make REPL completion tests faster #3234, @rndnoise)letpattern desugaring to be less brittle (Make Let-Pattern desugaring less brittle #3268, @kritzcreek)ghcidand testing commands to makefile (Add a Makefile with ghcid and testing commands #3290, @parsonsmatt)MultipleFFIModuleserror (Remove MultipleFFIModules error code #3308, @nwolverson)modanddivforIntare no longer inlined as their definition has changed in a way that makes their implementation more complicated - Change mod for Int purescript-prelude#161 (Remove inlining formodforInt#3309, @garyb)letandwhereclauses (Track where clause metadata #3317, @joneshf)CoreFnwas added (add a CoreFn optimization pass #3319, @matthewleon)