New features:
-
Make type class instance names optional (#4085, @JordanMartinez)
Previously, one would be required to define a unique name for a type class
instance. For example-- instance naming convention: -- classNameType1Type2Type3 instance fooIntString :: Foo Int String
Now, the name and
::
separator characters are optional. The above instance
could be rewritten like so:instance Foo Int String
and the compiler will generate a unique name for the instance
(e.g.$dollar_FooIntString_4
where4
is a randomly-generated number
that can change across compiler runs). This version of the instance name
is not intended for use in FFI.Note: if one wrote
instance ReallyLongClassName Int String
the generated name would be something like
$dollar_ReallyLongClassNameIntStr_87
rather than
$dollar_ReallyLongClassNameIntString_87
as the generated part
of the name will be truncated to 25 characters (long enough to be readable
without being too verbose).
Bugfixes:
-
Unused identifier warnings now report smaller and more relevant source spans (#4088, @nwolverson)
Also fix incorrect warnings in cases involving a let-pattern binding shadowing
an existing identifier.
Internal:
-
Drop libtinfo dependency (#3696, @hdgarrood)
Changes the build configuration so that by default, compiler binaries will
not have a dynamic library dependency on libncurses/libtinfo. This should
alleviate one of the most common pains in getting the compiler successfully
installed, especially on Linux. The cost is a slight degradation in the REPL
experience when editing long lines, but this can be avoided by building the
compiler with the libtinfo dependency by setting theterminfo
flag of the
haskeline
library totrue
. -
Remove tasty from test suite and just use hspec (#4056, @hdgarrood)
-
Avoid compiling tests with diagnostics twice in test suite (#4079, @hdgarrood)
-
Export
rebuildModule'
to speed up Try PureScript! slightly (#4095 by @JordanMartinez) -
Merge
purescript-ast
intopurescript-cst
(#4094 by @JordanMartinez)