Releases: purescript/purescript
v0.12.3
Enhancements
-
Add better positions for UnknownName errors for types/kinds (#3515, @colinwahl)
Previously an UnknownName error (arising from e.g. referring to a non-existent type, or a type which you forgot to import) would have a span covering the whole type annotation. Now, the error span only covers the relevant part of the type.
-
Boost performance of
purs docs
by simplifying re-export handling (#3534, @hdgarrood)
Bug fixes
- Fix applicative do notation breaking API documentation generation with
purs docs
(#3414, @hdgarrood) - Fix the REPL browser backend (#3387, @dariooddenino)
Other
- Make the license generator a proper stack script (@kritzcreek)
- Include the module from which something was imported for re-exports in externs files (@hdgarrood)
- Add AppVeyor build status to README.md (@hdgarrood)
v0.12.2
New features
-
Named type wildcards (#3500, @natefaubion)
It's now possible to use
?hole
style syntax in type signatures where you want the compiler to tell you the missing type. This was previously possible by using_
in a type signature, but now_
can be used without raising a warning, as long as it does not appear in a top level declaration.
Enhancements
- Improve error message for missing node.js in the repl (#3456, @justinwoo)
- Add
Boolean
kind toPrim.Boolean
(#3389, @justinwoo) - Link to documentation repo as docs for non-Prim built-in types/kinds (#3460, @JordanMartinez)
- PSCi: Support multiple command types in paste-mode (#3471, @LiamGoodacre)
- Add
row:column
printing for source positions in error messages (#3473, @justinwoo) - Add
:print
directive for customizable repl printing (#3478, @hdgarrood) - Implement qualified
do
(#3373, @pkamenarsky) - Add better source positions to kind errors (#3495, @natefaubion)
Fixes
- Remove references to previous kinds
*
and!
(#3458, @LiamGoodacre) - Fix linting of unused type variables (#3464, @LiamGoodacre)
- Avoid dropping super class dicts for the same class (#3461, @LiamGoodacre)
- Fix issue where
Partial
can foil TCO optimizations (#3218, @matthewleon) - Fix quoting of record labels in error messages (#3480, @hdgarrood)
- Prevent invalid JS being generated from awkward record labels (#3486, @hdgarrood)
- Fix unnecessary quoting of reserved names when used as labels (#3487, @hdgarrood)
- Fix source spans for binding groups (#3462, @LiamGoodacre)
- Fix kind error for recursive data type (#3511, @natefaubion)
Other (internals)
- Add annotations to
Type
andKind
(#3484, @natefaubion) - Use handwritten JSON instances for
Type
/Kind
(#3496, @natefaubion) - Remove pretty print constructors from
Type
(#3498, @natefaubion) - Add JSON compatibility tests (#3497, @hdgarrood)
- Remove the concept of the 'current module' in Docs (#3506, @hdgarrood)
v0.12.1
Enhancements
- Print types of missing typeclass members (#3398, @fehrenbach)
- Added
Prim.TypeError.QuoteLabel
for pretty printing labels in custom type errors (#3436, @dariooddenino) purs ide
accepts codegen targets for the rebuild command (#3449, @kritzcreek)
Fixes
- Fixes errors spans for
CannotFindDerivingType
(#3425, @kritzcreek) - Fixes a traversal bug where
ObjectNestedUpdate
was surviving desugaring (#3388, @natefaubion) - Fixes type operators reexports (#3410, @natefaubion)
- Fixes ST magic-do and inlining (#3444, @natefaubion)
- Fixes missing span information when using do-syntax without importing
bind
ordiscard
(#3418, @natefaubion) - Fixes missing span information when shadowing an open import with a module definition (#3417, @natefaubion)
- Fixes stale
:browse
environment after:reload
(#3001, @rndnoise)
Other
- Fix test-support dependency versions and update psci browse test (#3374, @LiamGoodacre)
- Changes to build with GHC 8.4.3 (#3372, @kritzcreek)
- Set --haddock flag based on BUILD_TYPE (#3409, @justinwoo)
- Use
microlens-platform
instead oflens
(#3400, @joneshf) - Avoid
Data.ByteString.Lazy.toStrict
(#3433, @coot) - Add ffiCodegen to MakeActions (#3434, @coot)
- Add nix config to stack.yaml (#3435, @f-f)
v0.12.0
Breaking changes
- Added applicative-do notation;
ado
is now a keyword. An full explanation of the behaviour and usage ofado
is available in a comment on the issue. (#2889, @rightfold) - 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. This change enables use of the Zephyr tree shaking tool for PureScript. (#3049, #3342, @coot) - It is no longer possible to export a type class that has superclasses that are not also exported (bug fix, but potentially breaking) (#3132, @parsonsmatt)
Eq
andOrd
deriving will now rely onEq1
andOrd1
constraints as necessary where sometimes previouslyEq (f _)
would be required.Eq1
andOrd1
instances can also be derived. (#3207, @garyb)- Some
Prim
type classes have been renamed/moved, so will require explicit importing (#3176, @parsonsmatt):RowCons
is nowPrim.Row.Cons
Union
is nowPrim.Row.Union
Fail
is nowPrim.TypeError.Fail
Warn
is nowPrim.TypeError.Warn
- Users can no longer specify modules under the
Prim
namespace (#3291, @parsonsmatt) TypeConcat
andTypeString
have been replaced because they were in kindSymbol
but weren't literals. ThePrim.TypeError.Doc
kind and related constructors (Text
,Quote
,Beside
,Above
) have been added in their place. TheFail
andWarn
type classes now accept aDoc
instead of aSymbol
.
(#3134, @LiamGoodacre)- In simple cases instance overlaps are now checked at declaration time rather than being deferred until an attempt is made to use them. (#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 topurs 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 thesourcemaps
target is usedjs
will be implied, so there's no difference between--codegen js,sourcemaps
and--codegen sourcemaps
). If no targets are specified the default isjs
. (#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)
- The pursuit commands were removed from
purs ide
due to lack of use and editor tooling implementing the features instead (#3355, @kritzcreek)
Enhancements
- Added
Cons
compiler-solved type class forSymbol
(#3054, @kcsongor) - The
Append
compiler-solved type class forSymbol
can now be run in reverse (#3025, @paf31) - Find Usages for values and constructors in
purs ide
(#3206, @kritzcreek) purs ide
treatshiding
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)
- Instance chain support. (#2315, @LiamGoodacre)
We can now express an explicit ordering on instances that would previously have been overlapping.
For example we could now write anIsEqual
type class to compute if two types are equal or apart:class IsEqual (l :: Type) (r :: Type) (o :: Boolean) | l r -> o instance isEqualRefl :: IsEqual x x True else instance isEqualContra :: IsEqual l r False
Note the
else
keyword that links the two instances together.
TheisEqualContra
will only be up for selection once the compiler knows it couldn't possible selectisEqualRefl
- i.e thatl
andr
are definitely not equal. - 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 type 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
type class (#3293, @natefaubion) - Improved docs for
Prim.Row.Cons
andPrim.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
type 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 fullindex.js
file paths (#2621, @chexxor)- Added more compiler-solved type classes and supporting types and kinds to
Prim
:Prim.Ordering
module withkind Ordering
,type LT
,type EQ
,type GT
Prim.RowList
module withclass RowToList
,kind RowList
,type Nil
,type Cons
Prim.Symbol
module withclass Compare
,class Append
,class Cons
(#3312, @LiamGoodacre, @kritzcreek)
- Generated code for closed records now explicitly reconstructs the record rather than looping (#1493, @fehrenbach, blog post with more details)
- Enhanced
purs --help
message to include hint about using--help
with commands (#3344, @hdgarrood) IncorrectConstructorArity
error message now includes a hint of how many arguments are expected for the constructor (#3353, @joneshf)purs ide
now uses absolute locations for file paths for better experience in some editors (#3363, @kritzcreek)
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
andetags
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
andDuplicateModule
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 newtype deriving (#3325, @LiamGoodacre)
- Fixed subgoals of compiler-solved type classes being ignored (#3333, @LiamGoodacre)
- Added position information to type operator associativity errors (#3337, @garyb)
- Updated description of
purs docs
command (#3343, @hdgarrood) - Fixed
purs docs
issue w...
v0.12.0-rc1
Breaking changes
- Added applicative-do notation;
ado
is now a keyword. An full explanation of the behaviour and usage ofado
is available in a comment on the issue. (#2889, @rightfold) - 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 type class that has superclasses that are not also exported (bug fix, but potentially breaking) (#3132, @parsonsmatt)
Eq
andOrd
deriving will now rely onEq1
andOrd1
constraints as necessary where sometimes previouslyEq (f _)
would be required.Eq1
andOrd1
instances can also be derived. (#3207, @garyb)- Some
Prim
type classes have been renamed/moved, so will require explicit importing (#3176, @parsonsmatt):RowCons
is nowPrim.Row.Cons
Union
is nowPrim.Row.Union
Fail
is nowPrim.TypeError.Fail
Warn
is nowPrim.TypeError.Warn
- Users can no longer specify modules under the
Prim
namespace (#3291, @parsonsmatt) TypeConcat
andTypeString
have been replaced because they were in kindSymbol
but weren't literals. ThePrim.TypeErrer.Doc
kind and related constructors (Text
,Quote
,Beside
,Above
) have been added in their place. TheFail
andWarn
type classes now accept aDoc
instead of aSymbol
.
(#3134, @LiamGoodacre)- In simple cases instance overlaps are now checked at declaration time rather than being deferred until an attempt is made to use them. (#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 topurs 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 thesourcemaps
target is usedjs
will be implied, so there's no difference between--codegen js,sourcemaps
and--codegen sourcemaps
). If no targets are specified the default isjs
. (#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 type class forSymbol
(#3054, @kcsongor) - The
Append
compiler-solved type class forSymbol
can now be run in reverse (#3025, @paf31) - Find Usages for values and constructors in
purs ide
(#3206, @kritzcreek) purs ide
treatshiding
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)
- Instance chain support. (#2315, @LiamGoodacre)
We can now express an explicit ordering on instances that would previously have been overlapping.
For example we could now write anIsEqual
type class to compute if two types are equal or apart:class IsEqual (l :: Type) (r :: Type) (o :: Boolean) | l r -> o instance isEqualRefl :: IsEqual x x True else instance isEqualContra :: IsEqual l r False
Note the
else
keyword that links the two instances together.
TheisEqualContra
will only be up for selection once the compiler knows it couldn't possible selectisEqualRefl
- i.e thatl
andr
are definitely not equal. - 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 type 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
type class (#3293, @natefaubion) - Improved docs for
Prim.Row.Cons
andPrim.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
type 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 fullindex.js
file paths (#2621, @chexxor)- Added more compiler-solved type classes and supporting types and kinds to
Prim
:Prim.Ordering
module withkind Ordering
,type LT
,type EQ
,type GT
Prim.RowList
module withclass RowToList
,kind RowList
,type Nil
,type Cons
Prim.Symbol
module withclass Compare
,class Append
,class Cons
(#3312, @LiamGoodacre, @kritzcreek)
- Generated code for closed records now explicitly reconstructs the record rather than looping (#1493, @fehrenbach, blog post with more details)
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
andetags
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
andDuplicateModule
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 newtype deriving (#3325, @LiamGoodacre)
- Fixed subgoals of compiler-solved type classes 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
anddiv
forInt
are no longer inlined as their definition has changed in a way tha...
v0.11.7
Enhancements
- Add position to type class declaration errors (@b123400)
- Add valid location list to orphan instance errors (@i-am-tom)
- Expand error message for UnusableDeclaration (#3088, @i-am-tom)
- Inline
Unsafe.Coerce.unsafeCoerce
(@coot)
Bug Fixes
- Correctly quote uppercased field labels in errors (@Thimoteus)
purs ide
inserts conflicting imports for types (#3131, @nwolverson)- Instantiate abstraction body during inference to fix a type checking bug (@LiamGoodacre)
- Fix a bug related to the desugaring of nested parentheses (@MonoidMusician)
- Fix a loop in the kind checker (@paf31)
- Fix a bug in type operator precedence parsing (@paf31)
- Eliminate some redundant whitespace in the generated JS output (@matthewleon)
- Only add newline before initial group of comment lines during code generation (@brandonhamilton)
- Treat kinds as used in import warnings (@nwolverson)
purs ide
-
Add an "editor mode" (@kritzcreek)
When the
editor-mode
flag is specified at startup the server will not start afile watcher process any more. Instead it only reloads after successful rebuild commands. This is a lot less fragile than relying on the file system APIs, but will mean that a manual load needs to be triggered after builds that didn't go throughpurs ide
. -
purs ide
now groupshiding
imports with implicit ones (@kritzcreek) -
Return documentation comments in
purs ide
completions (@nwolverson) -
Add an
actualFile
parameter to the rebuild command (@kritzcreek) -
Add qualified explicit import (@nwolverson)
-
Fixed case-splitting on local non-exported datatypes (@LightAndLight)
-
Make the
filters
parameter in thetype
command optional (@b123400)
purs docs
- Embed CSS for HTML docs (@hdgarrood)
- Fix source links for re-exports (@felixSchl)
- Use order given in export list in generated docs (@hdgarrood)
- Prevent browser from treating the title and source link as one word (@Rufflewind)
- Fix fragment links to type constructors in HTML (@hdgarrood)
purs repl
- Add
:complete
directive topurs repl
to support completion in more editors (@actionshrimp)
Other
- Add docs for duplicate labels in record types (@paf31)
- Adds a document for the design of
purs ide
. (@kritzcreek) - Update
PROTOCOL.md
docs forpurs ide
(@BjornMelgaard) - Upgrade to GHC version 8.2 (@kritzcreek)
- Allow
blaze-html-0.9
(@felixonmars) - Bump
Glob
dependency (@mjhoy) - Use
Hspec
inTestDocs
(@hdgarrood) - Fix AppVeyor deployment (#2774) (@hdgarrood)
- Various type safety improvements to the AST (@kritzcreek)
- Remove some references to old executables (@hdgarrood)
- Update the installation documentation (@hdgarrood)
- Update test dependencies (@hdgarrood)
- Only build
master
and versioned tags in AppVeyor (@hdgarrood)
v0.11.6
New Features
RowToList
support
There is a new type class in typelevel-prelude
called RowToList
, which turns
a row of types into a type-level list. This allows us to work with closed
rows in more ways at the type level. The compiler will now solve these constraints
automatically for closed rows of types.
Enhancements
- Allow things to be hidden from Prim (@garyb)
- Re-evaluate REPL globs on
:reload
(@hdgarrood) - Include comments in child declarations in HTML docs (@hdgarrood)
IDE Enhancements
- Collect data constructors (@kritzcreek)
- Adds declarations for Prim (@kritzcreek)
- Repopulates the rebuild cache when populating volatile state (@kritzcreek)
- Add declaration type filter (#2924) (@sectore)
- Improve reexport bundling (@kritzcreek)
- Resolve synonyms and kinds (@kritzcreek)
Bug Fixes
- Replace synonyms in instance constraints (@LiamGoodacre)
- Encode PSCI's server content as UTF-8 string (@dgendill)
- Fix child declaration ordering in docs (@hdgarrood)
- Improve instance ordering in HTML docs (@hdgarrood)
- Fix links to type operators in HTML docs (@hdgarrood)
Other
- Add source span annotations to Declaration (@garyb)
- Add source span annotations to DeclarationRef (@garyb)
- Remove
purescript.cabal
and add to.gitignore
(@garyb) - Raise upper bound on
aeson
inpackage.yaml
(@garyb) - Only build master and semver tags in Travis (@hdgarrood)
v0.11.5
Compiler
Enhancements
Type signatures in instances
Type class instances can now include type signatures for class members, as documentation:
data MyType = MyType String
instance showMyType :: Show MyType where
show :: MyType -> String
show (MyType s) = "(MyType " <> show s <> ")"
Bug Fixes
- Encode HTML content as UTF8 when using
purs repl
with--port
(@dgendill) - Disallow some invalid newtype-derived instances (@paf31)
- Disallow
forall
within constraints (#2874, @sectore) - Convert
\r\n
into\n
after reading files (@kritzcreek) - Fix PSCi tests (@kritzcreek)
- Better variable naming hygiene in TCO. (#2868, @houli)
- Simplify TCO generated code (@matthewleon)
- Remove newlines from printed custom type errors (@matthewleon)
- Fix some
purs
command line help message issues (@Cmdv) - Apply relative paths during pretty printing of errors (@kritzcreek)
- Desugar
let
properly when generating docs (@paf31) - Fix kind signature for
RowCons
type class in documentation (@tslawler) - Fix an issue with error messages for
TypesDoNotUnify
involving duplicate labels (#2820, @thoradam)
Other
- Update
package.yaml
(@sol) - Parse support modules from actual test support
purs
(@noraesae) - Update
build
command to run tests (@sectore) - Bumps lower bound for
directory
(@kritzcreek) - Switch
core-tests
topsc-package
(#2830, @matthewleon) - Small fix for the copyright dates (@seanwestfall)
- Update
CONTRIBUTING.md
for "new contributor" label (@thoradam)
purs ide
Features
- Add a new namespace filter (#2792, @sectore, @stefanholzmueller)
A new filter, which restricts query results to the value, type and/or kind namespaces, which allows improvements to the completion and import commands.
- Adds a command to add qualified imports (@kritzcreek)
This empowers editor plugins to add imports for qualified identifiers, for example in the Emacs plugin.
- New import formatting (@kritzcreek)
- Group reexports in completions (@kritzcreek)
Editors can now choose to let purs ide
group reexports for the same value, to reduce noise when completing values like Data.Functor.map
which are reexported a lot and show up that many times in the completion list.
Enhancements
- Parse modules in parallel (@kritzcreek)
This can yield significant speedups in the initial load times. For example a full load of slamdata/slamdata
improves from 11 to 6 seconds
- Introduce completion options (@kritzcreek)
Bug Fixes
- Resolve synonyms and kinds (@kritzcreek)
- Work around laziness when measuring command performance (@kritzcreek)
- Simplify state type (@kritzcreek)
- Extract namespace ADT (@kritzcreek)
- Decodes source files as UTF8 when parsing out the imports (@kritzcreek)
- Fix the import command for kinds (@kritzcreek)
- Reads files in text mode for adding imports (@kritzcreek)
- Add
-h
/--help
toide
subcommands (@simonyangme)
v0.11.4
Enhancements
purs
executable will now display help text by default (@matthewleon)- Adding
-h
/--help
toide
subcommands (@simonyangme) - Some simplifications to the tail call optimization (@matthewleon)
Bug Fixes
- Remove newline from printed custom type errors (@matthewleon)
- Fix pretty printing of rows in error messages (#2820, @thoradam)
- Allow user to propagate Warn constraints (@paf31)
- Match type level strings in docs renderer (#2772, @hdgarrood)
- Fix encoding bug in
purs ide
list import command (@kritzcreek) purs ide
now reads files in text mode for adding imports (@kritzcreek)
Other
- Bump
aeson
lower bound to 1.0 (@hdgarrood) - Add a bunch of NFData instances (@hdgarrood)
- Turn off coveralls upload for now (@paf31)
purs
command line help message fixes (@Cmdv)- Switch core-tests to
psc-package
(#2830, @matthewleon) - Update
CONTRIBUTING.md
notes (@thoradam)
v0.11.3
Bug Fixes
- Fix the exhaustivity check for pattern guards (@alexbiehl)
Other
- Require
directory >=1.2.3.0
for XDG support (@bergmark) - @noraesae has refactored some PSCi code to improve the test suite.
- Use
hpack
to generate the.cabal
file (@kritzcreek) - Use XDG Base Directory Specification for
psci_history
(@legrostdg)