|
| 1 | +## Next |
| 2 | + |
| 3 | +* **(breaking change)** A type that wants to convert itself to JSON now must override `to_json(builder : JSON::Builder)` instead of `to_json(io : IO)`. The same is true for custom JSON converters. If you are using `JSON.mapping` then your code will continue to work without changes. |
| 4 | +* **(breaking change)** Defining a `finalize` method on a struct now gives a compile error |
| 5 | +* **(breaking change)** `each` methods now return `Nil` |
| 6 | +* **(breaking change)** `IO#skip(bytes)` will now raise if there aren't at least the given amount of bytes in the `IO` (previously it would work well if there were less bytes, and it would hang if there were more) |
| 7 | +* **(breaking change)** `MemoryIO` was removed (use `IO::Memory` instead) |
| 8 | +* **(breaking change)** `Number#step` now requires named arguments, `to` and `by`, to avoid argument order confusion |
| 9 | +* **(breaking change)** `YAML::Emitter` was renamed to `YAML::Builder`, and some of its methods were also renamed |
| 10 | +* **(breaking change)** `XML::Node#[]` now always returns a `String` (previously it could also return `Nil`, which was incorrect) |
| 11 | +* **(breaking change)** `XML::Node#content` now returns an empty `String` when no content is available |
| 12 | +* `HTTP::Client` now automatically reconnects on a dropped keep-alive connection |
| 13 | +* `with ... yield` now works well with `method_missing` |
| 14 | +* Class variables can now be used in generic types (all generic instances share the same variable, and subclasses get their own copy, as usual) |
| 15 | +* Added support for LLVM 4 (thanks @ysbaddaden) |
| 16 | +* Added `Enum.each` and `Enum#each` (thanks @ysbaddaden) |
| 17 | +* Added `Hash#compact` and `Hash#compact!` (thanks @MakeNowJust) |
| 18 | +* Added `IO#read_string(bytesize)` |
| 19 | +* Added `IO#skip_to_end` |
| 20 | +* Added `Iterator#flat_map` (thanks @MakeNowJust) |
| 21 | +* Added `JSON.build` and `JSON::Builder` |
| 22 | +* Added `NamedTuple#has_key?(String)` (thanks @Sija) |
| 23 | +* Added `p(NamedTuple)` (thanks @splattael) |
| 24 | +* Added `Regex::MatchData#==` (thanks @MakeNowJust) |
| 25 | +* Added `String#sub(Regex, NamedTuple)` (thanks @maiha) |
| 26 | +* Added `XML.build` and `XML::Builder` |
| 27 | +* Lots of improvements and applied consistencies to doc comments (thanks @Sija and @maiha) |
| 28 | +* [Some bug fixes](https://github.com/crystal-lang/crystal/issues?q=is%3Aclosed+milestone%3A0.20.4) |
| 29 | + |
1 | 30 | ## 0.20.3 (23-12-2016)
|
2 | 31 |
|
3 | 32 | * **(breaking change)** `IO#gets`, `IO#each_line`, `String#lines`, `String#each_line`, etc. now chomp lines by default. You can pass `chomp: false` to prevent automatic chomping. Note that `chomp` is `true` by default for argless `IO#gets` (read line) but `false` if args are given.
|
|
0 commit comments