Skip to content

0.27.0

Compare
Choose a tag to compare
@bcardiff bcardiff released this 02 Nov 16:55
· 4598 commits to master since this release
c9d1eef

Language changes

  • (breaking-change) Disallow comma after newline in argument list. (#6514, thanks @asterite)

Macros

  • Add Generic#resolve and Generic#resolve? macro methods. (#6617, thanks @asterite)

Standard library

  • Fixed v1, v2, v3, v4, v5 methods of UUID. (#6952, thanks @r00ster91)
  • Fixed multiple docs typos and phrasing in multiple places. (#6778, #6963, thanks @r00ster91)
  • Fixes Pointer/UInt subtraction. (#6994, thanks @damaxwell)
  • Add stack overflow detection. (#6928, #6995, thanks @damaxwell)
  • Add caller file and line to Nil#not_nil!. (#6712, thanks @yeeunmariakim)
  • Restrict Enum#parse/Enum#parse? to String arguments. (#6654, thanks @vladfaust)
  • Refactor and unify printing exceptions from within fibers. (#6594, thanks @Sija)
  • Improve docs on properties generated by property?. (#6682, thanks @epergo)
  • Add docs to top level namespace constants. (#6971, thanks @r00ster91)

Macros

  • Fix typos in StringLiteral#gsub and #tr errors. (#6925, thanks @r00ster91)

Numeric

  • (breaking-change) Disallow rand with zero value. (#6686, thanks @oprypin)
  • (breaking-change) Let == and != compare the values instead of bits when dealing with signed vs unsigned integers. (#6689, thanks @asterite)
  • Fixed Int#downto with unsigned int. (#6678, thanks @gmarcais)
  • Add wrapping arithmetics operators &+ &- &*. (#6890, thanks @bcardiff)
  • Add floor divisions operator Int#// and Float#//. (#6891, thanks @bcardiff)
  • Add random support for BigInt. (#6687, thanks @oprypin)
  • Add docs related to Float::Printer::*. (#5438, thanks @Sija)

Text

  • Add String::Builder#chomp! returns self. (#6583, thanks @Sija)
  • Add :default to colorize and document ColorRGB, Color256. (#6427, thanks @r00ster91)
  • Add String::Formatter support for c flag and improve docs. (#6758, thanks @r00ster91)

Collections

  • (breaking-change) Replace Indexable#at with #fetch. Remove Hash#fetch(key) as alias of Hash#[]. (#6296, thanks @AlexWayfer)
  • Add Hash/Indexable#dig/dig?. (#6719, thanks @Sija)
  • Add Iterator.chain to chain array of iterators. (#6570, thanks @xqyww123)
  • Add NamedTuple#to_h over empty tuples. (#6628, thanks @icyleaf)
  • Optimize Indexable#join when all elements are strings. (#6635, thanks @asterite)
  • Optimize Array#skip. (#6946, thanks @asterite)

Serialization

  • Fixed YAML::Schema::FailSafe.parse and parse_all. (#6790, thanks @r00ster91)
  • Fixed order of xmlns and prefix in XML::Builder#namespace. (#6743, thanks @yeeunmariakim)
  • Fixed CSV.build quoting of Char and Symbol. (#6904, thanks @maiha)
  • Fixed docs for JSON::Serializable. (#6950, thanks @Heaven31415)
  • Add XML::Attributes#delete. (#6910, thanks @joenas)
  • Add ability to quote values always in CSV.build. (#6723, thanks @maiha)
  • Refactor how empty properties are handled in JSON::Serializable and YAML::Serializable. (#6539, thanks @r00ster91)

Time

Files

  • (breaking-change) Remove Tempfile. Use File.tempfile or File.tempname. (#6485, thanks @straight-shoota)
  • Fixed missing closed status check of FDs when creating a subprocess. (#6641, thanks @Timbus)
  • Fixed ChecksumReader.write error message. (#6889, thanks @r00ster91)
  • Add File#delete, Dir#tempdir and improve File docs. (#6485, thanks @straight-shoota)
  • Add File#fsync to flush all data written into the file to the disk device. (#6793, thanks @carlhoerberg)
  • Add DEVNULL to docs. (#6642, thanks @r00ster91)
  • Improve checks for FreeBSD version due to breaking API changes. (#6629, thanks @myfreeweb)
  • Improve performance of Zlib::Reader, Gzip::Reader and Flate::Reader by including IO::Buffered. (#6916, thanks @asterite)
  • Refactor Crystal::System::FileDescriptor to use @fd ivar directly. (#6703, thanks @straight-shoota)
  • Refactor {Zlib,Gzip,Flate}::Reader#unbuffered_rewind to use check_open. (#6958, thanks @Sija)

Networking

Crypto

Concurrency

  • Improve POSIX threads integration regarding locking, error and resource management. (#6944, thanks @ysbaddaden)
  • Remove unintended public methods from Channel. (#6714, thanks @asterite)
  • Refactor Fiber/Scheduler to isolate responsibilities. (#6897, thanks @ysbaddaden)
  • Refactor specs that relied on Fiber.yield behavior. (#6953, thanks @ysbaddaden)

System

  • Fixed fork and signal child handlers. (#6426, thanks @ysbaddaden)
  • Use blocking IO on a TTY if it can't be reopened. (#6660, thanks @Timbus)
  • Refactor Process in preparation for Windows support. (#6744, thanks @RX14)

Spec

Compiler

  • Fixed don't "ambiguous match" if there's an exact match. (#6618, thanks @asterite)
  • Fixed allow annotations inside enums. (#6713, thanks @asterite)
  • Fixed super inside macros will honor arguments. (#6638, thanks @asterite)
  • Fixed guessed ivar type from splat arguments. (#6648, thanks @makenowjust)
  • Fixed ASTNode#to_s of non-unary operator call without argument. (#6538, thanks @makenowjust)
  • Fixed ASTNode#to_s for multiline macro expression. (#6666, thanks @makenowjust)
  • Fixed ASTNode#to_s for {% verbatim do %} ... {% end %}. (#6665, thanks @makenowjust)
  • Fixed empty case statement normalization. (#6915, thanks @straight-shoota)
  • Fixed codegen of tuple elements with unreachable elements. (#6659, thanks @makenowjust)
  • Fixed parsing of // corner cases. (#6927, thanks @bcardiff)
  • Fixed recursive block expansion check for non ProcNotation restriction. (#6932, thanks @makenowjust)
  • Fixed corner case of expressions not typed on main phase but typed on cleanup phase. (#6720, thanks @makenowjust)
  • Improve error traces regarding return, next and break. (#6633, thanks @asterite)
  • Add resolve generics typenodes in macros. (#6617, thanks @asterite)
  • Add support for multiple output values in inline asm. (#6680, thanks @RX14)
  • Improve parsing of asm operands. (#6688, thanks @RX14)
  • Refactor rescue block codegen for Windows. (#6649, thanks @RX14)

Tools

Formatter

  • Fixed formatting of {% verbatim do %} ... {% end %} outside macro. (#6667, thanks @makenowjust)
  • Fixed formatting of // corner cases. (#6927, thanks @bcardiff)
  • Improve formatting of asm operands. (#6688, thanks @RX14)

Doc generator

  • Add support for comments after :nodoc: marker. (#6627, thanks @Sija)
  • Fixed browser performance issue with blur filter. (#6764, thanks @girng)
  • Accessibility improvement in search field. (#6926, thanks @jodylecompte)

Others