19 February 2018 B2.0

Fixed reported errata.

03 January 2018 B1.0

  • Atoms and variable names may now include any UTF-8 letters, digits, and combining marks, subject to the constraint that they must start with a letter or underscore.
  • Regular expressions no longer support the /g option.
  • Mention the data and time functions added in 1.5, along with the Date::Range module.
  • Clarified the scoping rules to show that the values bound to variables in block contexts are not available outside those contexts.
  • Rewrote the section on implementing reduce.
  • Some examples in the Enumeration chapter have been updated with the new inspect format for streams.
  • Some minor structural changes in the chapter on writing the GitHub issues fetcher.
  • Added a section on the breakpoint facility to the Tooling chapter.
  • Switch to using StreamData for property-based testing.
  • Added a new section on the code formatter.
  • Added a section on my preferred way to split code out when writing components.
  • The OTP section has been radically revised. The server chapter uses the new-style layout, and the supervisor chapter uses the new implicir child specifications. I’ve added a new chapter where we build a more complex application with a variety of server types and nested supervisors. I also use DyanmicSupervisor rather that :simple_one_for_one.
  • I now build releases using Distillery and not exrm.
  • Added section on @impl to Behaviours.
  • Rewrote most of the Protocols chapter, replacing the somewhat suspect Bitmap example with a module to dissect a Midi stream.
  • Added slice/1 to the description of Enumerable.
  • Updated the Type Specifications appendix to use the dialyxr mix tasks.