on 577fc17 help sign in
elk/changelog.md
331 lines 12 kB history raw
2## 0.13
4#### Improvements:
6 * Type aliases are allowed in port types
7 * Error on ambiguious use of imported variables
8 * Higher kinded polymorphism (a.k.a. higher-order types)
9 * Many bug fixes for importing types
10 * Better architecture for compiler. Uses types to make compilation pipeline
11 safer, setting things up for giving programmatic access to the AST to
12 improve editor and IDE support.
14#### Breaking Changes:
16 * Unambiguous syntax for importing ADTs and type aliases (whoo!)
17 * sqrt and logBase both only work on Floats now
19## 0.12.3
21 * Minor changes to support webgl as a separate library
22 * Switch from HSV to HSL
23 * Programmatic access to colors with toHsl and toRgb
25## 0.12.1
27#### Improvements:
29 * New Array library (thanks entirely to @Xashili)
30 * Json.Value can flow through ports
31 * Improve speed and stack usage in List library (thanks to @maxsnew)
32 * Add Dict.filter and Dict.partition (thanks to @hdgarrood)
34#### Breaking Changes:
36 * Revamp Json library, simpler with better names
37 * Revamp JavaScript.Experimental library to have slightly better names
38 * Remove JavaScript library which was made redundant by ports
40## 0.12
42#### Breaking Changes:
44 * Overhaul Graphics.Input library (inspired by Spiros Eliopoulos and Jeff Smitts)
45 * Overhaul Text library to accomodate new Graphics.Input.Field
46 library and make the API more consistent overall
47 * Overhaul Regex library (inspired by Attila Gazso)
48 * Change syntax for "import open List" to "import List (..)"
49 * Improved JSON format for types generated by elm-doc
50 * Remove problematic Mouse.isClicked signal
51 * Revise the semantics of keepWhen and dropWhen to only update when
52 the filtered signal changes (thanks Max New and Janis Voigtländer)
54#### Improvements:
56 * Add Graphics.Input.Field for customizable text fields
57 * Add Trampoline library (thanks to @maxsnew and @timthelion)
58 * Add Debug library (inspired by @timthelion)
59 * Drastically improved performance on markdown parsing (thanks to @Dandandan)
60 * Add Date.fromTime function
61 * Use pointer-events to detect hovers on layered elements (thanks to @Xashili)
62 * Fix bugs in Bitwise library
63 * Fix bug when exporting Maybe values through ports
65## 0.11
67 * Ports, a new FFI that is more general and much nicer to use
68 * Basic compiler tests (thanks to Max New)
70## 0.10.1
72 * sort, sortBy, sortWith (thanks to Max Goldstein)
73 * elm-repl
74 * Bitwise library
75 * Regex library
76 * Improve Transform2D library (thanks to Michael Søndergaard)
78## 0.10
80 * Native strings
81 * Tango colors
82 * custom precedence and associativity for infix operators
83 * elm-doc released with new documentation format
84 * Realiasing in type errors
85 * Rename Matrix2D => Transform2D
86 * Add Random.floatList (thank you Max GoldStein)
87 * Fix remove function in Dict (thank you Max New)
88 * Start using language-ecmascript for JS generation
89 * Make compatable with cabal-1.18 (thank you Justin Leitgeb)
90 * All functions with 10+ arguments (thanks to Max New)
92## 0.9.1
94 * Allow custom precedence and associativity for user-defined infix ops
95 * Realias types before printing
96 * Switch to Tango color scheme, adding a bunch of nice colors
97 * add the greyscale function for easily producing greys
98 * Check the type of main
99 * Fix miscellaneous bugs in type checker
100 * Switch name of Matrix2D to Transform2D
102## 0.9
104Build Improvements:
105 * Major speed improvements to type-checker
106 * Type-checker should catch _all_ type errors now
107 * Module-level compilation, only re-compile if necessary
108 * Import types and type aliases between modules
109 * Intermediate files are generated to avoid unneeded recompilation
110 and shorten compile time. These files go in ElmFiles/ by default
111 * Generated files are placed in ElmFiles/ by default, replicating
112 the directory structure of your source code.
114Error Messages:
115 * Cross-module type errors
116 * Errors for undefined values
117 * Pretty printing of expressions and types
119Syntax:
120 * Pattern matching on literals
121 * Pattern aliases with `as` (Andrew)
122 * Unary negation
123 * Triple-quoted multi-line strings
124 * Type annotations in let expressions (Andrew)
125 * Record Constructors
126 * Record type aliases can be closed on the zeroth column
127 * (,,) syntax in types
128 * Allow infix op definitions without args: (*) = add
129 * Unparenthesized if, let, case, lambda at end of binary expressions
131elm-server:
132 * Build multi-module projects
133 * Report all errors in browser
135Libraries:
136 * Detect hovering over any Element
137 * Set alpha of arbitrary forms in collages
138 * Switch Text.height to use px instead of em
140Bug Fixes:
141 * Many bug fixes for collage, especially when rendering Elements.
143Website:
144 * Hot-swapping
145 * Much faster page load with pre-compiled Elm files (Max New)
150forgot to fill this in again...
153## 0.7.2
155* Add a WebSockets library.
156* Add support for the mathematical looking operator for function composition (U+2218).
159forgot to fill this in for a while...
162## 0.5.0
164* Add Dict, Set, and Automaton libraries!
166* Add (,,) notation for creating tuples.
168* Redo HTTP library, allowing any kind of request and more flexibility.
170* Remove the library prefixes `Data.`, `Graphics.`, and `Signal.` because
171 they were more confusing than helpful.
173* Better type error reporting for ambiguous uses of variables and for
174 variables in aliased modules.
176* Add `readInt` and `readFloat` functions.
177* Add `complement` function to compute complementary colors.
178* Ensure that `String` is treated as an alias of `[Char]`.
180* Fix bug in pattern parsing. `A B _ _` was parsed as `A (B _ _)`.
181* Make pattern matching a bit more compact in generated code.
182* Make generated JS more readable.
184* The Haskell API exports the absolute path to the Elm runtime
185 system (with the corresponding version number). This makes it easier
186 to run Elm programs with less setup.
190## 0.4.0
192This version is all about graphics: nicer API with more features and major
193efficiency improvements. I am really excited about this release!
195* Add native Markdown support. You can now embed markdown directly in .elm files
196 and it is used as an `Element`. Syntax is `[markdown| ... |]` where `...` is
197 formatted as described [here](http://daringfireball.net/projects/markdown/).
198 Content can span multiple lines too.
200* Drastically improve the `collage` interface. You can now move, rotate, and scale
201 the following forms:
202 - Elements (any Element you want can be turned into a Form with `toForm`)
203 - Images
204 - Shapes (shapes can be textured now too)
205 - Lines
206 This will make it way easier to make games in Elm. Games can now include text,
207 gifs, videos, and any other Element you can think of.
209* Add `--minify` flag, to minify JS code.
211* Significantly improve performance of pattern matching.
213* Compiler performs beta-reduction in some simple cases.
215* The rendering section of the Elm runtume-system (RTS) has been totally rewritten,
216 making screen refreshes use fewer cycles, less memory, and cause less garbage-collection.
220## 0.3.6
222* Add JSON library.
224* Type-error messages improved. Gives better context for error, making them
225 easier to find. Better messages for runtime errors as well (errors that
226 the type checker cannot find yet).
228* Add Comparable super-type which allows the comparision of any values
229 of type {Int,Float,Char,String}. Now possible to make Set and Map libraries.
231* Parser now handles decimal numbers.
233* Added many new functions for manipulating numbers:
234 - truncate, round, floor, ceiling :: Float -> Int
235 - toFloat :: Int -> Float
236 - (^) :: Number -> Number -> Number
237 - e :: Float
239* Foreign import/export statements no longer have to preceed all other
240 variable and datatype definitions. They can be mixed in, making things
241 a bit more readable/natural.
243* Bug fixes:
244 - The `toText` function did not escape strings properly
245 - Correct `castJSTupleToTupleN` family of functions
246 - `foldr1` took the leftmost element as the base case instead of the rightmost
247 - Fix minor display issue in latest version of Chrome.
248 - Fix behavior of [ lo .. hi ] syntax (now [4..0] == [], not [0]).
252## 0.3.5
254* Add JavaScript event interface. Allows Elm to import and export JS values
255 and events. This makes it possible to import and export Elements, so users
256 can use JS techniques and libraries if necessary. Conversion between JS
257 and Elm values happens with functions from here:
258 http://localhost:8000/docs/Foreign/JavaScript.elm
259 http://localhost:8000/docs/Foreign/JavaScript/Experimental.elm
261* Add new flags to help with JavaScript event interface.
263* Add three built-in event listeners (elm_title, elm_log, elm_redirect) that
264 make it possible to make some common/simple imperative actions without
265 having to worry about writing the JS yourself. For example:
266 foreign export jsevent "elm_title"
267 title :: Signal JSString
268 will update the page's title to the current value of the title signal.
269 Empty strings are ignored. "elm_redirect" and "elm_log" events work much
270 the same way, except that "elm_log" does not skip empty strings.
272* Add new Signal functions:
273 count :: Signal a -> Signal Int
274 keepIf :: (a -> Bool) -> a -> Signal a -> Signal a
275 dropIf :: (a -> Bool) -> a -> Signal a -> Signal a
276 keepWhen :: Signal Bool -> a -> Signal a -> Signal a
277 dropWhen :: Signal Bool -> a -> Signal a -> Signal a
278 dropRepeats :: Signal a -> Signal a
279 sampleOn :: Signal a -> Signal b -> Signal b
280 clicks :: Signal ()
281 The keep and drop functions make it possible to filter events, which
282 was not possible in prior releases. More documentation:
283 http://elm-lang.org/docs/Signal/Signal.elm
285* Add examples of JS event interface and new signal functions:
286 https://github.com/evancz/Elm/tree/master/Examples/elm-js
288* Use more compressed format for strings. Should make strings 10-12 times
289 more space efficient than in previous releases. Anecdotal evidence:
290 Elm's home page is now 70% of its previous size.
292* Add new function to Data.List:
293 last :: [a] -> a
295* Fix parenthesization bug with binary operators.
299## 0.3.0
301Major Changes (Read this part!)
302-------------------------------
304* Add a basic module system.
305* Elm's JavaScript runtime is now distributed with the elm package.
306 Previously it was available for download as an unversioned JavaScript
307 file (elm-mini.js). It is now installed with the elm compiler as
308 elm-runtime-0.3.0.js. Be sure to serve the Elm runtime system that matches
309 the version of the compiler used to generate JavaScript. When working
310 locally, the compiler will automatically use your local copy of this file.
311* BREAKING CHANGE: rgb and rgba (in the color module) now take their red,
312 green, and blue components as integers between 0 and 255 inclusive.
313* Improve error messages for parse errors and runtime errors.
316New Functions and Other Additions
317---------------------------------
319* Add support for keyboard events: Keyboard.Raw
320* Add buttons in Signal.Input:
321 button :: String -> (Element, Signal Bool)
322* Add new basic element (an empty rectangle, good for adding spaces):
323 rectangle :: Int -> Int -> Element
324* Add (an awkwardly named) way to display right justified text: rightedText
325* Add two basic libraries: Data.Char and Data.Maybe
326* Add some new colors: magenta, yellow, cyan, gray, grey
327* Add functions to Data.List module: take, drop
328* Add functions to Prelude (the default imports):
329 fst, snd, curry, uncurry, and a bunch of list functions
330* Add --make, --separate-js, and --only-js flags to help compile
331 with the new module system.