Skip to content

Releases: purescript/purescript

v0.15.16-1

16 Apr 19:59
2070d47
Compare
Choose a tag to compare
v0.15.16-1 Pre-release
Pre-release

This is an automated preview release. Get the latest stable release here.

v0.15.16-0

26 Feb 20:08
debfc2e
Compare
Choose a tag to compare
v0.15.16-0 Pre-release
Pre-release

This is an automated preview release. Get the latest stable release here.

v0.15.15

07 Feb 18:15
5589e81
Compare
Choose a tag to compare

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, and ide).

  • 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, and publish.

    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 via purs 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 contains src/**/*.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 in fileWithMoreGlobs
    minus the files found by excludeGlob1.

v0.15.15-0

07 Feb 16:57
5dcd000
Compare
Choose a tag to compare
v0.15.15-0 Pre-release
Pre-release

This is an automated preview release. Get the latest stable release here.

v0.15.14

03 Jan 17:36
e25c476
Compare
Choose a tag to compare

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 additional NFData instances.

v0.15.14-2

20 Dec 02:21
e826bff
Compare
Choose a tag to compare
v0.15.14-2 Pre-release
Pre-release

This is an automated preview release. Get the latest stable release here.

v0.15.14-1

14 Dec 16:40
bff8c57
Compare
Choose a tag to compare
v0.15.14-1 Pre-release
Pre-release

This is an automated preview release. Get the latest stable release here.

v0.15.14-0

24 Nov 11:21
a915253
Compare
Choose a tag to compare
v0.15.14-0 Pre-release
Pre-release

This is an automated preview release. Get the latest stable release here.

v0.15.13

20 Nov 19:29
a6feba0
Compare
Choose a tag to compare

New features:

  • Replace UnusableDeclaration with updated NoInstanceFound (#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 head a was
    not mentioned in bar'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 an InstanceNotFound 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 code

    class 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:

v0.15.13-1

04 Nov 03:18
6b49918
Compare
Choose a tag to compare
v0.15.13-1 Pre-release
Pre-release

This is an automated preview release. Get the latest stable release here.