purescript v0.15.2 Release Notes

  • ๐Ÿ†• New features:

    • Check for partially applied synonyms in kinds, ctors (#4169 by @rhendric)

    This check doesn't prevent any programs from compiling; it just makes sure that a more specific PartiallyAppliedSynonym error is raised instead of a KindsDoNotUnify error, which could be interpreted as implying that a partially applied synonym has a valid kind and would be supported elsewhere if that kind is expected.

    • ๐Ÿ‘Œ Support deriving instances for type synonyms (#4315 by @rhendric)

    ๐Ÿ›  Bugfixes:

    • โš  Do not emit warnings about type wildcards used in binders (patterns). (#4309 by @fsoikin)

    Type wildcards in the following examples no longer trigger a warning:

      f :: Int
      f = 42 # \(x :: _) -> x
    
      g :: Maybe Int
      g = do
        x :: _ <- getX
        pure $ x + 5
    
    • ๐Ÿ›  Fix issue with unnamed instances using type operators (#4311 by @rhendric)

    • ๐Ÿ›  Fix incorrect Prim.Int (class Compare) docs: Int & Ordering, not Symbol (#4313 by @JordanMartinez)

    • ๐Ÿ›  Fix bad interaction between module renaming and inliner (#4322 by @rhendric)

    This bug was triggered when modules that the compiler handles specially are shadowed by local constructors. For example, a constructor named Prim could have caused references to Prim_1["undefined"] to be produced in the compiled code, leading to a reference error at run time. Less severely, a constructor named Control_Bind would have caused the compiler not to inline known monadic functions, leading to slower and less readable compiled code.

    • โšก๏ธ Update Prim docs for Boolean, Int, String/Symbol, Number, Record, and Row (#4317 by @JordanMartinez)

    • ๐Ÿ›  Fix crash caused by polykinded instances (#4325 by @rhendric)

    A polykinded instance is a class instance where one or more of the type parameters has an indeterminate kind. For example, the kind of a in

      instance SomeClass (Proxy a) where ...
    

    is indeterminate unless it's somehow used in a constraint or functional dependency of the instance in a way that determines it.

    The above instance would not have caused the crash; instead, instances needed to be of the form

      instance SomeClass (f a) where ...
    

    in order to cause it.

    • ๐Ÿ›  Fix bad interaction between newtype deriving and type synonyms (#4315 by @rhendric)

    See #3453.

    • ๐Ÿ›  Fix bad interaction between instance deriving and type synonyms (#4315 by @rhendric)

    See #4105.

    • ๐Ÿ›  Fix spurious kind unification error triggered by newtype deriving, type synonyms, and polykinds (#4315 by @rhendric)

    See #4200.

    Internal:

    • ๐Ÿš€ Deploy builds continuously to GitHub and npm (#4306 and #4324 by @rhendric)

    (Builds triggered by changes that shouldn't affect the published package are not deployed.)

    • ๐Ÿ›  Fix incomplete type traversals (#4155 by @rhendric)

    This corrects oversights in some compiler internals that are not known to be the cause of any user-facing issues.

    • โฌ‡๏ธ Drop dependency on microlens libraries (#4327 by @rhendric)