Skip to content


Choose a tag to compare
@RX14 RX14 released this 23 Dec 20:42
· 4200 commits to master since this release

New features

  • Add ThinLTO support for faster release builds in LLVM 4.0 and above. (#4367, thanks @bcardiff)
  • (breaking-change) Add UUID type. Random::Secure.uuid has been replaced with UUID.random. (#4453, thanks @wontruefree)
  • Add a BigDecimal class for arbitrary precision, exact, decimal numbers. (#4876 and #5255, thanks @vegai and @Sija)
  • Allow Set to work as a case condition, which matches when the case variable is inside the set. (#5269, thanks @makenowjust)
  • (breaking-change) Change Time::Format codes to allow more robust options for parsing sub-second precision times. (#5317, thanks @bcardiff)
  • Add Time.utc, an alias of which shortens creating UTC times. (#5321, thanks @straight-shoota)
  • Add custom extension support to Tempfile. (#5264, thanks @jreinert)
  • Add reduce method to TupleLiteral and ArrayLiteral when using macros. (#5294, thanks @javanut13)
  • Export a JSON representation of the documentation in the generated output. (#4746 and #5228, thanks @straight-shoota)
  • Make gc/none garbage collection compile again and allow it to be enbled using -Dgc_none compiler flag. (#5314, thanks @ysbaddaden)

Standard library bugs fixed

  • Make String#[] unable to read out-of-bounds when the string ends in a unicode character. (#5257, thanks @Papierkorb)
  • Fix incorrect parsing of long JSON floating point values. (#5323, thanks @benoist)
  • Replace the default hash function with one resistant to hash DoS. (#5146, thanks @funny-falcon)
  • Ensure equal numbers always have the same hashcode. (#5276, thanks @akzhan)
  • Fix struct equality when two structs descend from the same abstract struct. (#5254, thanks @hinrik)
  • Fix URI#full_path not to append a ? unless the query params are nonempty. (#5340, thanks @paulcsmith)
  • Fix HTTP::Params.parse to parse && correctly. (#5274, thanks @akiicat)
  • Disallow null bytes in ENV keys and values. (#5216, thanks @Papierkorb)
  • Disallow null bytes in XML::Node names and content. (#5200, thanks @RX14)
  • Fix IO#blocking= on OpenBSD. (#5283, thanks @wmoxam)
  • Fix linking programs in OpenBSD. (#5282, thanks @wmoxam)

Compiler bugs fixed

  • Stop incorrectly finding top-level methods when searching for a super method. (#5202, thanks @lbguilherme)
  • Fix parsing regex literals starting with a ; directly after a call (ex p /;/). (#5208, thanks @makenowjust)
  • Correct a case where Expressions#to_s could produce invalid output, causing macro expansion to fail. (#5226, thanks @asterite)
  • Give error instead of crashing when self is used at the top level. (#5227, thanks @makenowjust)
  • Give error instead of crashing when using instance_sizeof on a generic type without providing it's type arguments. (#5209, thanks @lbguilherme)
  • Fix parsing calls when short block syntax (&.foo) is followed by a newline. (#5237, thanks @makenowjust)
  • Give error instead of crashing when an unterminated string array literal (%w()) sits at the end of a file. (#5241, thanks @asterite)
  • Give error when attempting to use macro yield ({{yield}}) outside a macro. (#5307, thanks @makenowjust)
  • Fix error related to generic inheritance. (#5284, thanks @makenowjust)
  • Fix compiler crash when using recursive alias and generics. (#5330, thanks @makenowjust)
  • Fix parsing foo(+1) as foo + 1 instead of foo(1) where foo was a local variable. (#5336, thanks @makenowjust)
  • Documentation generator: Keep quoted symbol literals quoted when syntax highlighting code blocks in documentation output. (#5238, thanks @makenowjust)
  • Documentation generator: Keep the original delimiter used when syntax highlighting string array literals. (#5297, thanks @makenowjust)
  • Documentation generator: Fix XSS vulnerability when syntax highlighting string array literals. (#5259, thanks @makenowjust)
  • Formatter: fix indentation of the last comment in a begin/end block. (#5198, thanks @makenowjust)
  • Formatter: fix formatting parentheses with multiple lines in. (#5268, thanks @makenowjust)
  • Formatter: fix formatting $1?. (#5313, thanks @makenowjust)
  • Formatter: ensure to insert a space between { and % characters to avoid forming {% macros. (#5278, thanks @makenowjust)