Releases: purescript/purescript
v0.15.16-1
This is an automated preview release. Get the latest stable release here.
v0.15.16-0
This is an automated preview release. Get the latest stable release here.
v0.15.15
New features:
-
Add
--exclude-file
to more commands (#4530 by @JordanMartinez)This CLI arg was added to the
compile
command, but not to other commands
where such a usage would be relevant (e.g.docs
,repl
,graph
, andide
). -
Enable passing source input globs via
--source-globs-file path/to/file
(#4530 by @JordanMartinez)--source-globs-file
support has been added to the following commands:
compile
,docs
,graph
,ide
, andpublish
.Due to a shell character limitation on Windows where a large list of
source globs cannot be passed (e.g.purs compile ... glob1000/src/**/*.purs
),
source globs can be stored in a file according to the format below
and the file is passed in instead viapurs compile ---source-globs-file path/to/file
.# Lines starting with '#' are comments. # Blank lines are ignored. # Otherwise, every line is a glob. .spago/foo-1.2.3/src/**/*.purs .spago/bar-2.3.3/src/**/*.purs my-package/src/**/*.purs my-package/tests/**/*.purs
--source-globs-file
is an optional argument. Mixing it with the normal source globs is fine.
Assuming.spago/source-globs
containssrc/**/*.purs
, each command below will use
the same input globs:purs compile src/**/*.purs purs compile --source-globs .spago/source-globs purs compile --source-globs .spago/source-globs src/**/*.purs
In the command...
purs compile inputGlob1 inputGlob2 --source-globs-file fileWithMoreGlobs --exclude-files excludeGlob1
the files passed to the compiler are: all the files found by
inputGlob1
,inputGlob2
, and all the globs listed infileWithMoreGlobs
minus the files found byexcludeGlob1
.
v0.15.15-0
This is an automated preview release. Get the latest stable release here.
v0.15.14
Bugfixes:
-
Fix a compilation memory regression for very large files (#4521 by @mjrussell)
When compiling a a very large file (>12K lines)
the CSE pass could balloon memory and result in increased
compilation times.This fix uses a strict Map instead of a lazy Map to avoid
building up unnecessary thunks during the optimization pass. -
Fix two space leaks while compiling many modules (#4517 by @MonoidMusician)
The first would interleave compilation of too many modules at once, which
would increase memory usage, especially for single threaded builds with
+RTS -N1 -RTS
. Now the number of concurrent modules is limited to
the number of threads available to the
GHC runtime system.The second would hold on to memory from modules that compiled with warnings
until the end of the build when the warnings were printed and the memory freed.
This is now fixed with additionalNFData
instances.
v0.15.14-2
This is an automated preview release. Get the latest stable release here.
v0.15.14-1
This is an automated preview release. Get the latest stable release here.
v0.15.14-0
This is an automated preview release. Get the latest stable release here.
v0.15.13
New features:
-
Replace
UnusableDeclaration
with updatedNoInstanceFound
(#4513 by @JordanMartinez)Previously, the following type class would be invalid
because there was no way for the compiler to infer
which type class instance to select because
the type variable in the class heada
was
not mentioned inbar
's type signature:class Foo a where bar :: Int
The recently-added visible type applications (VTAs)
can now be used to guide the compiler in such cases:class Foo a where bar :: Int instance Foo String where bar = 0 someInt = bar @String -- use the `String` instance
Without VTAs, the compiler
will still produce anInstanceNotFound
error, but this error
has been updated to note which type variables in the class head
can only be disambiguated via visible type applications.
Given the following codeclass Single tyVarDoesNotAppearInBody where useSingle :: Int single :: Int single = useSingle
The error reported for
useSingle
will be:No type class instance was found for Main.Single t0 The instance head contains unknown type variables. Note: The following type class members found in the expression require visible type applications to be unambiguous (e.g. tyClassMember @Int). Main.useSingle tyNotAppearInBody
For a multiparameter typeclass with functional dependencies...
class MultiFdBidi a b | a -> b, b -> a where useMultiFdBidi :: Int multiFdBidi :: Int multiFdBidi = useMultiFdBidi
...the "Note" part is updated to read
Note: The following type class members found in the expression require visible type applications to be unambiguous (e.g. tyClassMember @Int). Main.useMultiFdBidi One of the following sets of type variables: a b
Bugfixes:
- Fix parsing bug where
@var
was allowed in type class head (#4523 by @JordanMartinez)
v0.15.13-1
This is an automated preview release. Get the latest stable release here.