@asterite asterite released this Dec 23, 2015 · 2547 commits to master since this release

  • (breaking change) def arguments must always be enclosed in parentheses
  • (breaking change) A space is now required before and after def return type restriction
  • (breaking change) Renamed Dir.working_dir to Dir.current
  • (breaking change) Moved HTML::Builder to its own shard
  • (breaking change) String#split now always keeps all results (never drops trailing empty strings)
  • (breaking change) Removed Array#buffer, StaticArray#buffer and Slice#buffer. Use to_unsafe instead (so unsafe usages are easier to spot)
  • (breaking change) Removed String#cstr. Use to_unsafe instead (so unsafe usages are easier to spot)
  • Optimized Range#sum (thanks @MakeNowJust)
  • Allow forward declarations for lib external vars
  • Added Int#to_s(base) for base = 62 (thanks @jhass)
  • JSON.parse now returns JSON::Any, which allows traversal of JSON objects with less casts
  • Added OpenSSL::PKCS5 (thanks @benoist)
  • MemoryIO can now be created to read/write from a Slice(UInt8). In this mode MemoryIO can't be exapnded, and can optionally be written. And when creating a MemoryIO from a String, it's non-resizeable and read-only.
  • Added Object#!~ (the opposite of =~)
  • at_exit now receives that exit status code in the block (thanks @MakeNowJust)
  • Allow using Set in JSON mappings (thanks @benoist)
  • Added File.executable?, File.readable? and File.writeable? (thanks @mverzilli)
  • Array#sort_by and Array#sort_by! now use a Schwartzian transform (thanks @radarek)
  • Added Array#each_permutation, Array#each_combination and Array#each_repeated_combination iterators
  • Added optional random argument to Array#sample and Array#shuffle
  • The delegate macro can now delegate multiple methods to an object (thanks @elthariel)
  • Added basic YAML generation (thanks @porras)