Skip to content

0.24.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@matiasgarciaisaia matiasgarciaisaia released this 30 Oct 17:10
· 5254 commits to master since this release

⚠️ WARNING: this is a pre-release version of Crystal. Do not use this in production.

  • (breaking-change) HTTP::Client#post_form is now HTTP::Client.post(form: ...)
  • (breaking-change) Array#reject!, Array#compact! and Array#select! now return self (#5154)
  • (breaking-change) Remove the possibility to require big_int, big_float or big_rational individually: use require "big" instead (#5121)
  • (breaking-change) Spec: remove expect_raises without type argument (#5096)
  • (breaking-change) IO is now a class, no longer a module (#4901)
  • (breaking-change) Time constructors now have nanosecond and kind as named argument (#5072)
  • (breaking-change) Removed XML.escape. Use HTML.escape instead (#5046)
  • (breaking-change) Removed macro def (#5040)
  • (breaking-change) SecureRandom is now Random::Secure (#4894)
  • (breaking-change) HTML.escape now only escapes &<>"' (#5012)
  • (breaking-change) To define a custom hash method you must now define hash(hasher) (#4946)
  • (breaking-change) Flate::Reader.new(&block) and Flate::Writer.new(&block) now use the name open (#4887)
  • (breaking-change) Use an Enum for Process stdio redirections (#4445)
  • (breaking-change) Remove '$0' special syntax
  • (breaking-change) Remove bare array creation from multi assign (a = 1, 2, 3) (#4824)
  • (breaking-change) Rename skip macro method to skip_file (#4709)
  • (breaking-change) StaticArray#map and Slice#map now return their same type instead of Array (#5124)
  • (breaking-change) Tuple#map_with_index now returns a Tuple. (#5086)
  • Packages built with LLVM 3.9.1. They should (hopefully) fix #4719
  • Syntax: Allow flat rescue/ensure/else block in do/end block (#5114)
  • Syntax: fun names and lib function calls can now start with Uppercase
  • Macros: Using an alias in macros will now automatically resolve it to is aliased type (#4995)
  • Macros: The flags bits32 and bits64 are now automatically defined in macros
  • The YAML module has now full support for the 1.1 core schema with additional types, and properly supports aliases and merge keys (#5007)
  • Add --output option to crystal docs (#4937)
  • Add Time#days_in_year: it returns the no of days in a given year (#5163)
  • Add Time.monotonic to return monotonic clock (#5108)
  • Add remove_empty option to many String#split overloads
  • Add Math.sqrt overloads for Bigs (#5113)
  • Add --stdin-filename to crystal command to compile source from STDIN (#4571)
  • Add Crystal.main to more easily redefine the main of a program (#4998)
  • Add Tuple.types that returns a tuple of types (#4962)
  • Add NamedTuple.types that returns a named tuple of types (#4962)
  • Add NamedTuple#merge(other : NamedTuple) (#4688)
  • Add YAML and JSON.mapping presence: true option (#4843)
  • Add Dir.each_child(&block) (#4811)
  • Add Dir.children (#4808)
  • HTML.unescape now supports all HTML5 named entities (#5064)
  • Regex now supports duplicated named captures (#5061)
  • rand(0) is now valid and returns 0
  • Tuple#[] now supports a negative index (#4735)
  • JSON::Builder#field now accepts non-scalar values (#4706)
  • Number#inspect now shows the number type
  • Some additions to Big arithmetics (#4653)
  • Increase the precision of Time and Time::Span to nanoseconds (#5022)
  • Upgrade Unicode to 10.0.0 (#5122)
  • Support LLVM 5.0 (#4821)
  • Lots of bugs fixed