Switch branches/tags
Nothing to show
Find file
Fetching contributors…
Cannot retrieve contributors at this time
187 lines (133 sloc) 6.76 KB
Release 0.7.2
* Add a WebSockets library.
* Add support for the mathematical looking operator for function composition (U+2218).
forgot to fill this in for a while...
Release 0.5.0
* Add Dict, Set, and Automaton libraries!
* Add (,,) notation for creating tuples.
* Redo HTTP library, allowing any kind of request and more flexibility.
* Remove the library prefixes `Data.`, `Graphics.`, and `Signal.` because
they were more confusing than helpful.
* Better type error reporting for ambiguous uses of variables and for
variables in aliased modules.
* Add `readInt` and `readFloat` functions.
* Add `complement` function to compute complementary colors.
* Ensure that `String` is treated as an alias of `[Char]`.
* Fix bug in pattern parsing. `A B _ _` was parsed as `A (B _ _)`.
* Make pattern matching a bit more compact in generated code.
* Make generated JS more readable.
* The Haskell API exports the absolute path to the Elm runtime
system (with the corresponding version number). This makes it easier
to run Elm programs with less setup.
Release 0.4.0
This version is all about graphics: nicer API with more features and major
efficiency improvements. I am really excited about this release!
* Add native Markdown support. You can now embed markdown directly in .elm files
and it is used as an `Element`. Syntax is `[markdown| ... |]` where `...` is
formatted as described [here](
Content can span multiple lines too.
* Drastically improve the `collage` interface. You can now move, rotate, and scale
the following forms:
- Elements (any Element you want can be turned into a Form with `toForm`)
- Images
- Shapes (shapes can be textured now too)
- Lines
This will make it way easier to make games in Elm. Games can now include text,
gifs, videos, and any other Element you can think of.
* Add `--minify` flag, to minify JS code.
* Significantly improve performance of pattern matching.
* Compiler performs beta-reduction in some simple cases.
* The rendering section of the Elm runtume-system (RTS) has been totally rewritten,
making screen refreshes use fewer cycles, less memory, and cause less garbage-collection.
Release 0.3.6
* Add JSON library.
* Type-error messages improved. Gives better context for error, making them
easier to find. Better messages for runtime errors as well (errors that
the type checker cannot find yet).
* Add Comparable super-type which allows the comparision of any values
of type {Int,Float,Char,String}. Now possible to make Set and Map libraries.
* Parser now handles decimal numbers.
* Added many new functions for manipulating numbers:
- truncate, round, floor, ceiling :: Float -> Int
- toFloat :: Int -> Float
- (^) :: Number -> Number -> Number
- e :: Float
* Foreign import/export statements no longer have to preceed all other
variable and datatype definitions. They can be mixed in, making things
a bit more readable/natural.
* Bug fixes:
- The `toText` function did not escape strings properly
- Correct `castJSTupleToTupleN` family of functions
- `foldr1` took the leftmost element as the base case instead of the rightmost
- Fix minor display issue in latest version of Chrome.
- Fix behavior of [ lo .. hi ] syntax (now [4..0] == [], not [0]).
Release 0.3.5
* Add JavaScript event interface. Allows Elm to import and export JS values
and events. This makes it possible to import and export Elements, so users
can use JS techniques and libraries if necessary. Conversion between JS
and Elm values happens with functions from here:
* Add new flags to help with JavaScript event interface.
* Add three built-in event listeners (elm_title, elm_log, elm_redirect) that
make it possible to make some common/simple imperative actions without
having to worry about writing the JS yourself. For example:
foreign export jsevent "elm_title"
title :: Signal JSString
will update the page's title to the current value of the title signal.
Empty strings are ignored. "elm_redirect" and "elm_log" events work much
the same way, except that "elm_log" does not skip empty strings.
* Add new Signal functions:
count :: Signal a -> Signal Int
keepIf :: (a -> Bool) -> a -> Signal a -> Signal a
dropIf :: (a -> Bool) -> a -> Signal a -> Signal a
keepWhen :: Signal Bool -> a -> Signal a -> Signal a
dropWhen :: Signal Bool -> a -> Signal a -> Signal a
dropRepeats :: Signal a -> Signal a
sampleOn :: Signal a -> Signal b -> Signal b
clicks :: Signal ()
The keep and drop functions make it possible to filter events, which
was not possible in prior releases. More documentation:
* Add examples of JS event interface and new signal functions:
* Use more compressed format for strings. Should make strings 10-12 times
more space efficient than in previous releases. Anecdotal evidence:
Elm's home page is now 70% of its previous size.
* Add new function to Data.List:
last :: [a] -> a
* Fix parenthesization bug with binary operators.
Release 0.3.0
Major Changes (Read this part!)
* Add a basic module system.
* Elm's JavaScript runtime is now distributed with the elm package.
Previously it was available for download as an unversioned JavaScript
file (elm-mini.js). It is now installed with the elm compiler as
elm-runtime-0.3.0.js. Be sure to serve the Elm runtime system that matches
the version of the compiler used to generate JavaScript. When working
locally, the compiler will automatically use your local copy of this file.
* BREAKING CHANGE: rgb and rgba (in the color module) now take their red,
green, and blue components as integers between 0 and 255 inclusive.
* Improve error messages for parse errors and runtime errors.
New Functions and Other Additions
* Add support for keyboard events: Keyboard.Raw
* Add buttons in Signal.Input:
button :: String -> (Element, Signal Bool)
* Add new basic element (an empty rectangle, good for adding spaces):
rectangle :: Int -> Int -> Element
* Add (an awkwardly named) way to display right justified text: rightedText
* Add two basic libraries: Data.Char and Data.Maybe
* Add some new colors: magenta, yellow, cyan, gray, grey
* Add functions to Data.List module: take, drop
* Add functions to Prelude (the default imports):
fst, snd, curry, uncurry, and a bunch of list functions
* Add --make, --separate-js, and --only-js flags to help compile
with the new module system.