PureScript v0.12.0-rc1 发布,带来大量更新

h4cd
 h4cd
发布于 2018年05月02日
收藏 1

PureScript  v0.12.0-rc1 发布,PureScript 是个小巧而强大的静态类型语言,可以编译成 JavaScript。PureScript 主要是由 Haskell 和 PureScript 编写的。

主要更新:

  • Added applicative-do notation; ado is now a keyword. An full explanation of the behaviour and usage of ado 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-genericspurescript-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 and Ord deriving will now rely on Eq1 and Ord1 constraints as necessary where sometimes previously Eq (f _) would be required. Eq1 and Ord1 instances can also be derived. (#3207@garyb)

  • Some Prim type classes have been renamed/moved, so will require explicit importing (#3176@parsonsmatt):

    • RowCons is now Prim.Row.Cons

    • Union is now Prim.Row.Union

    • Fail is now Prim.TypeError.Fail

    • Warn is now Prim.TypeError.Warn

  • Users can no longer specify modules under the Prim namespace (#3291@parsonsmatt)

  • TypeConcat and TypeString have been replaced because they were in kind Symbol but weren't literals. The Prim.TypeErrer.Doc kind and related constructors (TextQuoteBesideAbove) have been added in their place. The Fail and Warn type classes now accept a Doc instead of a Symbol.
    (#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 to purs 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 the sourcemapstarget is used js will be implied, so there's no difference between --codegen js,sourcemaps and --codegen sourcemaps). If no targets are specified the default is js. (#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)

改进

  • Added Cons compiler-solved type class for Symbol (#3054@kcsongor)

  • The Append compiler-solved type class for Symbol can now be run in reverse (#3025@paf31)

  • Find Usages for values and constructors in purs ide (#3206@kRITZCREEK)

  • purs ide treats hiding 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)

  • 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 EqOrd 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 and Prim.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 full index.js file paths (#2621@chexxor)

  • Added more compiler-solved type classes and supporting types and kinds to Prim:

    • Prim.Ordering module with kind Orderingtype LTtype EQtype GT

    • Prim.RowList module with class RowToListkind RowListtype Niltype Cons

    • Prim.Symbol module with class Compareclass Appendclass Cons
      (#3312@LiamGoodacre@kRITZCREEK)

  • Generated code for closed records now explicitly reconstructs the record rather than looping (#1493@fehrenbachblog post with more details)

bug 修复

  • 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 MissingClassMemberExtraneousClassMemberExpectedWildcarderrors (#3216@garyb)

  • Added position information to ExportConflict errors (#3217@garyb)

  • Fixed ctags and etags 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 and DuplicateModule 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)

其它

详情见发布公告

下载地址:

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:PureScript v0.12.0-rc1 发布,带来大量更新
加载中

最新评论(2

陳建勳
陳建勳
…我第一次在一場演講裡聽到這個,語法超級反人類的呀!
Carvendy
Carvendy
期待1.0
返回顶部
顶部