0.24.0
Pre-release
Pre-release
·
4666 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_formis nowHTTP::Client.post(form: ...) - (breaking-change)
Array#reject!,Array#compact!andArray#select!now returnself(#5154) - (breaking-change) Remove the possibility to require
big_int,big_floatorbig_rationalindividually: userequire "big"instead (#5121) - (breaking-change) Spec: remove
expect_raiseswithout type argument (#5096) - (breaking-change)
IOis now a class, no longer a module (#4901) - (breaking-change) Time constructors now have
nanosecondandkindas named argument (#5072) - (breaking-change) Removed
XML.escape. UseHTML.escapeinstead (#5046) - (breaking-change) Removed
macro def(#5040) - (breaking-change)
SecureRandomis nowRandom::Secure(#4894) - (breaking-change)
HTML.escapenow only escapes &<>"' (#5012) - (breaking-change) To define a custom
hashmethod you must now definehash(hasher)(#4946) - (breaking-change)
Flate::Reader.new(&block)andFlate::Writer.new(&block)now use the nameopen(#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
skipmacro method toskip_file(#4709) - (breaking-change)
StaticArray#mapandSlice#mapnow return their same type instead ofArray(#5124) - (breaking-change)
Tuple#map_with_indexnow 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:
funnames 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
bits32andbits64are now automatically defined in macros - The
YAMLmodule has now full support for the 1.1 core schema with additional types, and properly supports aliases and merge keys (#5007) - Add
--outputoption tocrystal docs(#4937) - Add
Time#days_in_year: it returns the no of days in a given year (#5163) - Add
Time.monotonicto return monotonic clock (#5108) - Add
remove_emptyoption to manyString#splitoverloads - Add
Math.sqrtoverloads for Bigs (#5113) - Add
--stdin-filenametocrystalcommand to compile source from STDIN (#4571) - Add
Crystal.mainto more easily redefine themainof a program (#4998) - Add
Tuple.typesthat returns a tuple of types (#4962) - Add
NamedTuple.typesthat returns a named tuple of types (#4962) - Add
NamedTuple#merge(other : NamedTuple)(#4688) - Add YAML and JSON.mapping
presence: trueoption (#4843) - Add
Dir.each_child(&block)(#4811) - Add
Dir.children(#4808) HTML.unescapenow supports all HTML5 named entities (#5064)Regexnow supports duplicated named captures (#5061)rand(0)is now valid and returns 0Tuple#[]now supports a negative index (#4735)JSON::Builder#fieldnow accepts non-scalar values (#4706)Number#inspectnow shows the number type- Some additions to Big arithmetics (#4653)
- Increase the precision of
TimeandTime::Spanto nanoseconds (#5022) - Upgrade Unicode to 10.0.0 (#5122)
- Support LLVM 5.0 (#4821)
- Lots of bugs fixed