git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Update release.md
cd349a9Phil Freeman
release.md+84
@@ -1,3 +1,87 @@
1+## 0.3.0 Changes
2+
3+Many thanks to the [contributors](https://github.com/paf31/purescript/graphs/contributors) who helped with this release.
4+
5+- Full language guide can be found [here](http://functorial.com/purescript).
6+- Try out the latest features [here](http://tryps.functorial.com).
7+
8+## New Features / Enhancements
9+
10+- Mutually recursive functions and types are now allowed within a module.
11+- Syntactic sugar for patterns in top-level declarations has been added. For example:
12+
13+ sum [] _ = []
14+ sum (x:xs) = x + sum xs
15+
16+- Basic support for type classes has been added. Polymorphic types of the form `forall a. (C a) => ...` will not be inferred but can be checked. Type inference still works if all type class instances can be determined. There is not yet support for functionality like GHC's `FlexibleInstances`, `FlexibleContexts` or `MultiParamTypesClasses`. For example:
17+
18+ class Truthy a where
19+ isTrue :: a -> Boolean
20+
21+ instance Truthy Boolean where
22+ isTrue b = b
23+
24+ instance Truthy String where
25+ isTrue "" = false
26+ isTrue _ = true
27+
28+ ifThenElse :: forall a b. (Truthy a) => a -> b -> b -> b
29+ ifThenElse a tr fa = if isTrue a then tr else fa
30+
31+- There is now support for `do` notation, using the `Monad` type class from the `Prelude` module. For example:
32+
33+ data Maybe = Nothing | Just a
34+
35+ instance Prelude.Monad Maybe where
36+ ret = Just
37+ (>>=) Nothing _ = Nothing
38+ (>>=) (Just a) f = f a
39+
40+ test = do
41+ x <- Just 1
42+ y <- Just 2
43+ ret $ x + y
44+
45+- There is now a better story for side-effects. The `Eff` module in the `Prelude` defines a monad `Eff e` where e is a row of effect types. The kind system now defines a new kind `!` of effects. Row polymorphism allows different native effects to be interleaved. For example:
46+
47+ test = do
48+ trace "Testing"
49+ throwError "Error!"
50+
51+ has inferred type `forall eff. Eff (trace :: Trace | error :: Error String | eff)`.
52+ See the `/examples/passing/Eff.purs` file for a more in-depth set of examples.
53+ Supported native effects currently include `ST`, `Trace`, `Error` and `DOM` (via the `libraries/jquery` module).
54+- There is a new flag `--run-main` which will check the type of the `Main.main` function and emit the call to `main();` after all other generated Javascript.
55+- The `Prelude` module is now automatically included, unless the `--no-prelude` flag is specified.
56+- The class of accepted operator names has been expanded. Specifically, `$` is now a valid operator, and is defined in the `Prelude` module.
57+- Tail calls can be eliminated using the `--tco` flag.
58+- There is basic support for checking the types of values at runtime, using the `--runtime-type-checks` flag. Right now, this only works for primitive types, and so is a work-in-progress.
59+- GHCJS/Fay-style foreign imports are now supported. An example is
60+
61+ foreign import "function(n) { \
62+ \ return function(p) {\
63+ \ return Math.pow(n, p);\
64+ \ }\
65+ \ }" pow :: Number -> Number -> Number
66+- Data constructors now get imported along with their type definitions.
67+- The `-s` flag will now cause the compiler to use `stdin` for input.
68+- There is a new executable `psci` which provides simple REPL-like functionality - it parses expressions, passes the generated Javascript to Node for execution, and prints the result. This is a work-in-progress.
69+
70+## Regressions
71+
72+- `foreach` is no longer supported. The `Prelude` module defines `map` which should provide the same functionality.
73+- Support for naked expressions as statements has been removed.
74+
75+## Bug Fixes
76+
77+- Operator precedence rules now work across modules.
78+- A bug in which expressions involving non-qualified names did not typecheck was fixed.
79+- Trailing spaces have been removed in the generated Javascript, thanks to @utkarshkukreti.
80+- Type synonyms now work properly across modules.
81+- Module imports are not transitive, which was previously leading to some unexpected error messages.
82+- A bug which caused the optimizer to break generated Javascript for mutually recursive values was fixed.
83+- Some `Prelude` functions which called methods in the standard Javascript library have been fixed.
84+
1## 0.2.0 Changes
85## 0.2.0 Changes
2
86
3Many thanks to the [contributors](https://github.com/paf31/purescript/graphs/contributors) who helped with this release.
87Many thanks to the [contributors](https://github.com/paf31/purescript/graphs/contributors) who helped with this release.