small medium large xlarge

The latest version of the book is P1.0, released 8 months ago. If you've bought a PDF of the book and would like to update it to this version (for free), visit your home page.

By default this page displays the errata for the latest version of the book. If you have a previous version, select it here:

If you've found a new error, please submit it.

  • Typo
  • Tech. error
  • Suggestion
  • Maybe next edition
  • Not a problem
  • Reported in: P1.0 (08-Jun-19)
#85373
PDF page: ?????
Chapter on Creating Concurrent Code: Although you cover the essentials, I really would like to see A WHOLE TWO CHAPTERS devoted to nothing but HOW ...more...
  • Reported in: B4.0 (19-Jan-19)
#84325
PDF page: 7

It looks like the generated PDF includes not merged conflict from the book source.--Vladislav Zarakovsky

  • Reported in: P1.0 (22-Feb-19)
#84607
PDF page: 35
When presenting setters and getters, the text says that "You could create a method called common_name= that returns the value of @common_name". I beli...more...
  • Reported in: P1.0 (22-Feb-19)
#84605
PDF page: 38
I don't follow the logic that compares these two facts in the text: > While versions of Ruby since 1.9 support fibers, the scheduling of Crystal fi...more...
  • Reported in: P1.0 (22-Feb-19)
#84606
PDF page: 38
I believe the paragraph "A class can also extend a module, but then its methods are called on the class" deserves at least a short example since the b...more...
  • Reported in: P1.0 (18-Feb-19)
#84593
PDF page: 51
Paper page: 36
The note for rubyists mentions that property is equivalent to attr_accessor, but we don't see property used until page 57. It might be better to use p...more...
  • Reported in: P1.0 (03-Apr-19)
#84819
PDF page: 54
On this page we see these two sentences: Your code has access to the executable name as the constant PROGRAM_NAME . This is "./argv" if you genera...more...
  • Reported in: P1.0 (05-Apr-19)
#84829
PDF page: 61
At the top of this page are several paragraphs starting with "Using the shortcut..." and ending with "...would not change it." These paragraphs descr...more...
  • Reported in: P1.0 (21-Feb-19)
#84603
PDF page: 61

"range of -127 to 128" should be "range of -128 to 127" --David Bowen

  • Reported in: P1.0 (24-Feb-19)
#84608
Paper page: 83/84
to_i8 accepts values between -128 and 127, so the "Integer bigger than 255" error message is incorrect. def add_to_array(arr, number) begin ...more...
  • Reported in: P1.0 (15-Apr-19)
#84883
PDF page: 125
At the top of this page there is a sentence ending in "... E1 is the ancestor of D1 which is the ancestor of M1 which is the ancestor of C1 which is ...more...
  • Reported in: P1.0 (06-Mar-19)
#84647
PDF page: 175
When describing on how to create a simple_kemal _app, you provided the command "crystal init" without specifying a type: crystal init simple_kemal_...more...
  • Reported in: P1.0 (15-Feb-19)
#84563
PDF page: 210
PDF page 210 " Your turn 6 a. union.cr b. class.cr " I was looking for the answer of the 'Your turn 6 exercise' but "the sample code" that I ...more...