16 October 2014
31 August 2014
- Ready for Elixir 1.0. Minor code changes,
all errata fixed, and changes to the text to
make it flow better.
03 August 2014
- Updated for Elixir 0.15
- Octal numbers are now written 0o123.
- \ddd is no longer used for octal escapes in strings and sigils.
- Described the new logger, and added some logging to the issues app.
- Now that hex.pm has traction, I’ve updated the issues app
descriptions to use it.
- The issues app now uses HTTPoison rather than HTTPotion. (The latter
has a NSFW license.)
- Updated the supervisors chapter to show dynamic supervision.
- Reworked the live code reloading a little.
- Fixed errata.
15 July 2014
- I jumped the gun with the previous release number. It was for Elixir 0.14.2. This release is for 0.14.3.
- `mix.escriptize` is now `mix escript.build`
- Options for bitfields are now separated by hyphens, rather than being comma separated in brackets.
- If you have multiple heads for a function that also has default parameters, you must now list those defaults in an empty head preceding the normal definitions.
- The parameter to `exit` has been codified, and I’ve changed code accordingly.
- Functions can be used to make `get_in` and `get_and_update_in` more dynamic.
- Fixed known errata.
01 July 2014
- Gave the Organizing A Project chapter some TLC.
- Updated to the new mix and project conventions.
- Switched back to using the cannonical httpotion.
- Added a section illustrating the use of project configuration.
- `Kernel.size` has been removed. Use `byte_size` and `tuple_size`.
- Switched back to using the `myfreeweb` version of `httpotion` now that it
works with 0.14.
- Added back 4 exercises that got lost in a content refactoring a while back.
- Fixed pending errata.
17 June 2014
- Documented nested structure accessors (`get_in`, `put_in` etc)
- Described the ability to `@derive Access` for structs
- Removed `defrecord`
- Removed the ability to have heredocs where there was additional code
on the line that introduced the string.
- Fix pending errata.
27 May 2014
- Updated the OTP chapters to use the new built-in OTP support (was GenX).
- Added a new chapter on Tasks and Agents.
- IEx configuration now done using `IEx.configure`.
- Fix pending errata.
21 April 2014
- Updated for Elixir 0.13. This is a big change, as it adds a new basic data type, the Map, and a new derived type, the struct. It also downplays records. Protocols are now defined on structs.
- Reorganized the chapters on lists and enumerables:
- ListDict is deprecated in favor of Map.
- The various Dict implementations are now created using Enum.into, instead of calling new with a collection.
- Updated for the new list comprehension syntax (for).
- GenFSM is deprecated.
- is_range and is_regex are now Range.range? and Regex.regex?.
- Changed the Issues project to use jsx rather than Jsonex.
- Pending errata fixed
07 February 2014
- Default parameter values are now denoted using `\\` and not `//`.
- Sigils are now introduced using `~` and not `%`. In addition, the set
of characters that can be used as delimiters has been reduced.
- iex now reads from `.iex.exs` and not `.iex` on startup.
16 January 2014
- The `pid <- msg` notation is deprecated in favor of `send(pid, msg)`.
- Rewrote the section on Protocols and Records to reflect changes in 0.12 and
- `Enum.first` and the `raw` option to `inspect` are deprecated.
- Fix errata (more big thanks to Bernard Kaiflin).
17 December 2013
- Skipped a beta number to get in step with Elixir numbering.
- Moved to Elixir 0.12.0. This release of Elixir reimplements the
internals of streaming, but the change should not affect you unless
you’ve written your own streaming types.
- Update the section on streams to document `Stream.unfold` and
- Changes to some sample code: `Enum.chunks` is now `Enum.chunk`;
`Enum.zip` now stops when the shortest source is exhausted.
- Fixed errata (thank you Bernard Kaiflin for a stunning list of
14 November 2013
- Moved to Elixir 0.11.2
- Update the OTP Application and the Type Specifications chapters to use the the _build directory tree (where Elixir now stores all build products)
- Use ExUnit.CaptureIO in the Project chapter to test the table formatter.
- Document the new escript_main_module option. In future, this will be required whenever mix escriptize is used.
07 November 2013
- Moved to Elixir 0.11.1
- Fixed errata
- Many changes to standard library. In particular, what were once binaries are now (largely) strings.
- Changes to the defaults of a new project (the addition of a default supervisor and an application entry point). As a result, the supervisor chapter is changed slightly, and the start of the OTP Applications chapter is changed extensively.
- Removed @only and @except annotations from protocols, and document @fallback_to_any.
02 October 2013
- Updated to Elixir 0.10.3
- Moved the `concat` function from `List` to `Enum`.
- Fixed known errata.
07 September 2013
- Updated to Elixir 0.10.2
- Fix ExUnit output to show new interleaved failures
- Update example in Project chapter to handle extra element in tuple returned by `OptionParser.parse`.
- Update Enum examples to use `min_by` (rather than `min/2`)
- Change `IO.stream(dev)` to `IO.stream(dev, :line)`
- `to_binary` is now `to_chars`, and the `Binary.Chars` protocol is
- Update `import` documentation to remove first optional
parameter. Now pass `:functions` or `:macros` to `only:`.
- `list_to_binary` is now `String.from_char_list!`
- `Enum.reduce` now has a two-parameter form that takes the first
element of the collection as the initial accumulator.
- Show examples of `Enum.chunks` and `Enum.is_even`.
- Document `String.ljust` and `rjust`.
- `function/3` has been removed, and is replaced by `Module.function\3`.
- Errata fixes.
03 August 2013
- Change to use the new &… function capture syntax.
- Added a short chapter on gen_fsm.
- A few new library functions, including `String.reverse` and `Enum.shuffle`.
- Fix errata
16 July 2013
- Covers Elixir 0.10.0
- Split the description of `Enum` out of the Lists chapter, and added the new `Stream` module for lazy enumerations.
- Added `Enum.reject` and `Enum.with_index`
- `Binary.Inspect` is now `Inspect`, and uses algebra documents (impress your friends).
- Code updates to reflect the new stricter syntax for parentheses on function calls.
- Updated iex output to show new pretty-printed results.
- Discuss the optimization on expressions such as `&1+&2` (now maps to `Kernel.+/2`).
- Removed the List and Enum API descriptions, and substituted some examples of the API in use
- Fixed errata
- Initial set of “Your Turn” solutions now online. This covers roughly the first half of the book. The rest will be added over the coming weeks.
24 June 2013
- Tidied the FizzBuzz example and the table_formatter code in the Projects chapter
- Talk about the new `binding:` option to `quote`
- Can now set attribute types directly in `defrecord`
- Covers Elixir 0.9.3
- Sigils now dispatch to `sigil_x` (instead of `x`)
- `Code.string_to_ast/1` and `Macro.to_binary/1` have been
deprecated in favor of `Code.string_to_quoted/1` and
20 June 2013
- Fixed errata
- Added information of how to specify modifiers on heredoc sigils
- New section on implementing your own sigils
- New section on umbrella projects
- New appendix on type specifications and type checking
- Covers Elixir 0.9.2
- Added Enum.fetch and fetch!, removed Enum.at! and Enum.equal?
- Added String.contains?
27 May 2013
- New chapters on Protocols, Macros, and Metaprogramming
- Note new elixir-lang-talk mailing list
- Covers Elixir 0.9 (previous version was 0.8). * This now requires Erlang
R16 to be installed * Change of Elixir module naming from Elixir-Xxx to
Elixir.Xxx * Add String.starts_with? and .ends_with? * IEx customization
with IEx.Options ** Replacement of Enum.Iterator with Enumerator