B15.0 - 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.

B14.3a - 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.

B14.3.14.3 - 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.

B14.0.14.0 - 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.

B13.3.13.3 - 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.

B13.0.13.0 - 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

B12.0.12.3 - 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.

B12.0.12.2 - 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 0.12.2.
  • `Enum.first` and the `raw` option to `inspect` are deprecated.
  • Fix errata (more big thanks to Bernard Kaiflin).

B12.0.12.0 - 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 `Stream.resource`.
  • 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 suggestions).

B10.0.11.2 - 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.

B9.0.11.0 - 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.

B8.0.10.3 - 02 October 2013

  • Updated to Elixir 0.10.3
  • Moved the `concat` function from `List` to `Enum`.
  • Fixed known errata.

B7.0.10.2 - 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 now `String.Chars`.
  • 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.

B6.0.10.1 - 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

B5.0.10.0 - 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.

B4.0.9.3 - 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 `Macro.to_string/1`

B3.0 - 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?

B2.0 - 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

B1.0 - 20 May 2013

Initial beta release.