@@ -1,3 +1,77 @@
1+# 0.15
2+
3+### Improve Import Syntax
4+
5+The changes in 0.14 meant that people were seeing pretty long import sections,
6+sometimes with two lines for a single module to bring it in qualified and to
7+expose some unqualified values. The new syntax is like this:
8+
9+```elm
10+import List
11+ -- Just bring `List` into scope, allowing you to say `List.map`,
12+ -- `List.filter`, etc.
13+
14+import List exposing (map, filter)
15+ -- Bring `List` into scope, but also bring in `map` and `filter`
16+ -- without any prefix.
17+
18+import List exposing (..)
19+ -- Bring `List` into scope, and bring in all the values in the
20+ -- module without a prefix.
21+
22+import List as L
23+ -- Bring `L` into scope, but not `List`. This lets you say `L.map`,
24+ -- `L.filter`, etc.
25+
26+import List as L exposing (map, filter)
27+ -- Bring `L` into scope along with unqualified versions of `map`
28+ -- and `filter`.
29+
30+import List as L exposing (..)
31+ -- Bring in all the values unqualified and qualified with `L`.
32+```
33+
34+This means you are doing more with each import, writing less overall. It also
35+makes the default imports more comprehensive because you now can refer to
36+`List` and `Result` without importing them explicitly as they are in the
37+defaults.
38+
39+### Revise Port Syntax
40+
41+One common confusion with the `port` syntax is that the only difference
42+between incoming ports and outgoing ports is whether the type annotation comes
43+with a definition. To make things a bit clearer, each case is getting a
44+keyword.
45+
46+```elm
47+input dbResults : Stream String
48+
49+output dbRequests : Stream String
50+output dbRequests =
51+ Stream.map toRequest userNames
52+```
53+
54+### Loopbacks
55+
56+The biggest change in 0.15 is the addition of promises. To bring this concept
57+into Elm in a nice way, we needed to give it support at the declaration level.
58+There are two ways to specify loopbacks. First is a loopback that you write to
59+manually.
60+
61+```elm
62+loopback actions : Mailbox Action
63+```
64+
65+This creates a `Mailbox` that you can send messages to. The second kind of
66+loopback runs promises, so it gets all of its values from a stream of promises.
67+
68+```elm
69+loopback dbResults : Stream (Result Http.Error String)
70+loopback dbResults <-
71+ Stream.map toRequest userNames
72+```
73+
74+
175# 0.14.1
276
377Modify default import of `List` to expose `(::)` as well.