PureScript 0.7.0 "MELTDOWN" 發布
PureScript 是個小巧而強大的靜態類型語言,可以編譯成 JavaScript。purescript 主要是由 Haskell 和 PureScript 編寫的。
PureScript 0.7.0 ("MELTDOWN") 發布,主要是按照計劃進行改進,在 1.0 之前簡化升級路徑。此最新的核心庫已經更新編譯到這個版本。舊版本的核心庫已經不適用于這個版本,而且最新的庫也不能使用舊的編譯版本構建。
詳細升級和遷移指導請看 wiki。
重要改進
-
psc
可執行已經使用psc-make
替代,重命名為psc
(為了遵循 CommonJS 模塊輸出標準) -
Int
和Number
常量 -
Prelude
模塊不再自動導入,必須以跟其他模塊一樣的方式導入 -
編譯器不再包括模塊,模塊已經拆分到以下這些庫:
-
數組類型的
[]
語法已經被移除,但是還是可以使用[]
數組常量 -
[]
should now be written asArray
, and[a]
asArray a
. -
Cons patterns for arrays have been removed.
-
Declaring operators in classes will now produce a warning. Changes will be coming to operators in PureScript 0.8, and moving to named members in classes with operators as aliases (e.g.
(<$>) = map
) should make the transition easier in the future. -
JavaScript for the FFI can no longer be provided inline.
-
Values must instead be provided in a separate
.js
file, and passed to the compiler with the-ffi
flag. -
Values should be provided in the form
exports.foo = ...
, similar to a CommonJS module -
The file should have a comment
// module X.Y.Z
whereX.Y.Z
is the name of the module the JS values are for.
功能增強
-
Module exports (@andyarvanitis). Currently, only full module exports are supported, but imported modules can be re-exported using the following syntax:
purescript module M1 (module M2) where import M2
-
Documentation improvements (@hdgarrood):
-
psc-docs
can now generate multiple output files, allowing documentation to be collected into functional groups. -
A new tool
psc-publish
has been added, which generates module documentation in a JSON format required by Pursuit 2 (coming soon) -
@puffnfresh has worked on dramatically increasing the performance of incremental builds, with improvements up to 10x compared to the previous release.
-
The new
--require-path
option allows the syntax of module imports in generated CommonJS modules to be customized (@garyb). -
@etrepum has added support for building with Stack.
-
PSCi now supports computations in the
Eff
monad. (@paf31) -
The compiler now emits warnings in the following cases:
-
Operator name used in type class definition (@garyb)
-
Type wildcard used (@nicodelpiano)
-
Shadowed variable name (@paf31)
-
@balajirrao has improved the appearance of unknown and rigid types appearing in error messages.
-
@puffnfresh has added position information to pattern match errors.
-
@puffnfresh has added some new optimizations (inlining
<<<
and$
)
Bug 修復
-
psc
,psc-docs
andpsc-bundle
now support file globs as command-line arguments, fixing a bug related to the command length on Windows machines (@paf31) -
@wuzzeb has fixed some issues in the pretty printer.
-
@mjgpy3 has improved error messages related to incorrect pattern matches on data constructors.
工具
-
Pulp has been updated:
-
The new
psc
andpsc-bundle
binaries are supported -
FFI modules are now identified and compiled based on a convention
-
pulp docs
now generates individual Markdown files for each source module -
gulp-purescript
has been updated: -
The new
psc
andpsc-bundle
binaries are supported -
FFI modules are now supported
庫
-
The following libraries have been moved into the core library set:
-
purescript-lists
- Strict and lazy linked list data structures -
purescript-assert
- Low level assertion library for tests -
purescript-parallel
- An applicative functor for parallel composition of asynchronous computations. -
purescript-arrows
- Arrow type classes and standard instances. -
purescript-tailrec
- A type class for stack-safe monadic tail recursion. -
The requirements for libraries in the
purescript-contrib
organization have been tightened, to try to ensure that libraries stay maintained.
更多改進請看發行說明,下載: