@bcardiff bcardiff released this Aug 28, 2018 · 152 commits to master since this release

Assets 11

Language changes

  • (breaking-change) Make self to be eager evaluated when including modules. (#6557, thanks @bcardiff)

Macros

  • Add accepts_block? macro method to Def. (#6604, thanks @willhbr)

Standard library

Macros

  • Fixed Object#def_hash can receive symbols. (#6531, thanks @Sija)

Collections

  • Add Hash#transform_keys and Hash#transform_values. (#4385, thanks @deepj)

Serialization

  • Fixed JSON::Serializable and YAML::Serializable clashing with custom initializers. (#6458, thanks @kostya)

Time

Files

Networking

System

  • Improve STDIN/STDOUT/STDERR handling to avoid breaking other programs. (#6518, thanks @Timbus)

Spec

  • Fixed DotFormatter to flush after every spec. (#6562, thanks @asterite)
  • Add support for Windows. (#6497, thanks @RX14)

Compiler

  • Fixed evaluate yield expressions in macros. (#6587, thanks @asterite)
  • Fixed presence check of named argument via external name. (#6560, thanks @asterite)
  • Fixed parser error on break when. (#6509, thanks @asterite)
  • Fixed ~ methods are now able to be called as foo.~. (#6541, thanks @MakeNowJust)
  • Fixed parsing newline after macro control expression. (#6607, thanks @asterite)
  • Refactor use enum instead of hardcoded string values for emit kinds. (#6515, thanks @bew)

Tools

Formatter

Doc generator

  • Add Menlo font family and fix ordering. (#6602, thanks @slice)

Playground

Others

@bcardiff bcardiff released this Aug 13, 2018 · 191 commits to master since this release

Assets 11

Language changes

  • (breaking-change) Revert do not collapse unions for sibling types. (#6351, thanks @asterite)
  • (breaking-change) Constant lookup context in macro is now lexical. (#5354, thanks @MakeNowJust)
  • (breaking-change) Evaluate instance var initializers at the metaclass level (ie: disallow using self). (#6414, thanks @asterite)
  • (breaking-change) Add // operator parsing. NB: No behaviour is assigned to this operator yet. (#6470, thanks @bcardiff)
  • Add &+ &- &* &** operators parsing. NB: No behaviour is assigned to these operators yet. (#6329, thanks @bcardiff)
  • Add support for empty case without when. (#6367, thanks @straight-shoota)

Macros

Standard library

Numeric

Text

Collections

Serialization

  • (breaking-change) Add a maximum nesting level to prevent stack overflow on YAML::Builder and JSON::Builder. (#6322, thanks @asterite)
  • Fixed compatibility for libyaml 0.2.1 regarding document end marker .... (#6287, thanks @straight-shoota)
  • Add methods and options for pull parsing or hybrid parsing to XML::Reader. (#5740, #6332, thanks @felixbuenemann)
  • Fixed docs for JSON::Any, JSON::Serialization and YAML::Serialization. (#6460, #6491, thanks @delef, @bmulvihill)

Time

Files

  • (breaking-change) Remove File.each_line method that returns an iterator. Use IO#each_line. (#6301, thanks @asterite)
  • Fixed File.join when path separator is a component argument. (#6328, thanks @icyleaf)
  • Fixed Dir.glob can now list broken symlinks. (#6466, thanks @straight-shoota)
  • Add File and Dir support for Windows. (#5623, thanks @RX14)

Networking

  • (breaking-change) Drop HTTP::Server#tls in favor of HTTP::Server#bind_ssl. (#5960, thanks @straight-shoota)
  • (breaking-change) Rename alias HTTP::Handler::Proc to HTTP::Handler::HandlerProc. (#6453, thanks @jwoertink)
  • Fixed Socket#accept? base implementation. (#6277, thanks @ysbaddaden)
  • Fixed performance issue due to unbuffered IO read. IO#sync only affect writes, introduce IO#read_buffering?. (#6304, #6474, thanks @asterite, @bcardiff)
  • Fixed handling of closed state in HTTP::Server::Response. (#6477, thanks @straight-shoota)
  • Fixed change encoding name comparison to be case insensitive for UTF-8. (#6355, thanks @asterite)
  • Fixed support for quoted charset value in HTTP. (#6354, thanks @asterite)
  • Fixed docs regarding udp example on Socket::Addrinfo. (#6388, thanks @faustinoaq)
  • Fixed HTTP::Client will set connection: close header on one-shot requests. (#6410, thanks @asterite)
  • Fixed OpenSSL::Digest for multibyte strings. (#6471, thanks @RX14)
  • Fixed missing Host header when using HTTP::Client#exec. (#6481, thanks @straight-shoota)
  • Add HTTP::Server#bind(URI|String) that infers protocol from scheme. (#6500, thanks @straight-shoota)
  • Add HTTP::Params.new and HTTP::Params#empty?. (#6241, thanks @icyleaf)
  • Add support for multiple Etags in If-None-Match header for HTTP::Request and HTTP::StaticFileHandler. (#6219, thanks @straight-shoota)
  • Add IDNs normalization to punycode in OpenSSL::SSL::Socket. (#6306, thanks @paulkass)
  • Add application/wasm to the default MIME types of HTTP::StaticFileHandler. (#6377, thanks @MakeNowJust)
  • Add URI#absolute? and URI#relative?. (#6311, thanks @mamantoha)

Crypto

Concurrency

  • Fixed Atomic#swap with reference types. (#6428, thanks @Exilor)

System

Spec

Compiler

  • Fixed named arguments expansion from double splat clash with local variable names. (#6378, thanks @asterite)
  • Fixed auto assigned ivars arguments expansions when clash with keywords. (#6379, thanks @asterite)
  • Fixed resulting type of union of tuple metaclasses. (#6342, thanks @asterite)
  • Fixed ICE when using unbound type parameter inside generic type. (#6292, thanks @asterite)
  • Fixed ICE when using unions of metaclasses. (#6307, thanks @asterite)
  • Fixed ICE related to literal type guessing and generic types hierarchy. (#6341, thanks @asterite)
  • Fixed ICE related to not and inlinable values. (#6452, thanks @asterite)
  • Fixed rebind variables type in while condition after analyzing its body. (#6295, thanks @asterite)
  • Fixed corner cases regarding automatic casts and method instantiation. (#6284, thanks @asterite)
  • Fixed parsing of \A (and others) inside %r{...} inside macros. (#6282, thanks @asterite)
  • Fixed parsing of of named tuple inside generic type arguments. (#6413, thanks @asterite)
  • Fixed disallow cast from module class to virtual metaclass. (#6320, thanks @asterite)
  • Fixed disallow return inside a constant's value. (#6347, thanks @asterite)
  • Fixed debug info for closured self. (#6346, thanks @asterite)
  • Fixed parsing error of newline before closing macro. (#6382, thanks @asterite)
  • Fixed missing error if constant has NoReturn type. (#6411, thanks @asterite)
  • Fixed give proper error when doing sizeof uninstantiated generic type. (#6418, thanks @asterite)
  • Fixed private aliases at top-level are now considered private. (#6432, thanks @asterite)
  • Fixed setters with multiple arguments as now disallowed. (#6324, thanks @maxfierke)
  • Fixed type var that resolves to number in restriction didn't work. (#6504, thanks @asterite)
  • Add support for class variables in generic classes. (#6348, thanks @asterite)
  • Add support for exception handling in Windows (SEH). (#6419, thanks @RX14)
  • Refactor codegen of binary operators. (#6330, thanks @bcardiff)
  • Refactor use JSON::Serializable instead of JSON.mapping. (#6308, thanks @kostya)
  • Refactor Crystal::Call#check_visibility and extract type methods. (#6484, thanks @asterite, @bcardiff)
  • Change how metaclasses are shown. Use Foo.class instead of Foo:Class. (#6439, thanks @RX14)

Tools

Formatter

  • Fixed formatting of { {1}.foo, ...} like expressions. (#6300, thanks @asterite)
  • Fixed formatting of when with numbers. Use right alignment only if all are number literals. (#6392, thanks @MakeNowJust)
  • Fixed formatting of comment in case's else. (#6393, thanks @MakeNowJust)
  • Fixed code fence when language is not crystal will not be formatted. (#6424, thanks @asterite)

Doc generator

  • Add line numbers at link when there are duplicated filenames in "Defined in:" section. (#6280, #6489, thanks @r00ster91)
  • Fix docs navigator not scrolling into open type on page load. (#6420, thanks @soanvig)

Others

@waj waj released this Jun 28, 2018 · 310 commits to master since this release

Assets 13

Standard library

Macros

Collections

Serialization

  • Add #dup and #clone for JSON::Any and YAML::Any. (6266, thanks @asterite)
  • Add docs example of nesting mappings to YAML.builder. (#6097, thanks @kalinon)

Time

Files

Networking

Misc

  • Fixed mmap usage on OpenBSD 6.3+. (#6250, thanks @jcs)
  • Fixed big/big_int, big/big_float, etc are now able to be included directly. (#6267, thanks @asterite)
  • Refactor dependency in Crystal::Hasher to avoid load order issues. (#6184, thanks @ysbaddaden)

Compiler

  • Fixed a leakage of unbounded generic type variable and show error. (#6128, thanks @asterite)
  • Fixed error message when lookup of library fails and lib's name contains non-alpha chars. (#6187, thanks @oprypin)
  • Fixed integer kind deduction for very large negative numbers. (#6182, thanks @rGradeStd)
  • Refactor specs tempfiles and data files usage in favor of portability (#5951, thanks @straight-shoota)
  • Improve formatting and information in some compiler error messages. (#6261, thanks @RX14)

Tools

Formatter

Doc generator

Misc

@bcardiff bcardiff released this Jun 15, 2018 · 350 commits to master since this release

Assets 13

New features and breaking changes

  • (breaking-change) Time zones has been added to Time. (#5324, #5819, thanks @straight-shoota)
  • (breaking-change) Drop HTTP.rfc1123_date in favor of HTTP.format_time and add time format implementations for ISO-8601, RFC-3339, and RFC-2822. (#5123, thanks @straight-shoota)
  • (breaking-change) crystal deps is removed, use shards. (#5544, thanks @asterite)
  • (breaking-change) Hash#key was renamed as Hash#key_for. (#5444, thanks @marksiemers)
  • (breaking-change) JSON::Any and YAML::Any have been re-implemented solving some inconsistencies and avoiding the usage of recursive aliases (JSON::Type and YAML::Type have been removed). (#5183, thanks @asterite)
  • (breaking-change) Multiple heredocs can be used as arguments and methods can be invoked writing them in the initial delimiter, also empty heredocs are now supported. (#5578, #5602, #6048, thanks @asterite and @MakeNowJust)
  • (breaking-change) Refactor signal handlers and avoid closing pipe at exit. (#5730, thanks @ysbaddaden)
  • (breaking-change) Improve behaviour of File.join with empty path component. (#5915, thanks @straight-shoota)
  • (breaking-change) Drop Colorize#push in favor of Colorize#surround and allow nested calls across the stack. (#4196, thanks @MakeNowJust)
  • (breaking-change) File.stat was renamed to File.info and a more portable API was implemented. (#5584, #6161, thanks @RX14 and @bcardiff)
  • (breaking-change) Refactor HTTP::Server to bind to multiple addresses. (#5776, #5959, thanks @straight-shoota)
  • (breaking-change) Remove block argument from loop. (#6026, thanks @asterite)
  • (breaking-change) Do not collapse unions for sibling types. (#6024, thanks @asterite)
  • (breaking-change) Disallow typeof in type restrictions. (#5192, thanks @asterite)
  • (breaking-change) Perform unbuffered read when IO::Buffered#sync = true. (#5849, thanks @RX14)
  • (breaking-change) Drop when _ support. (#6150, thanks @MakeNowJust)
  • (breaking-change) The DivisionByZero exception was renamed to DivisionByZeroError. (#5395, thanks @sdogruyol)
  • A bootstrap windows port has been added to the standard library. It's not usable for real programs yet. (#5339, #5484, #5448, thanks @RX14)
  • Add automatic casts on literals arguments for numbers and enums. (#6074, thanks @asterite)
  • Add user defined annotations. (#6063, #6084, #6106, thanks @asterite)
  • Add macro verbatim blocks to avoid nested macros. (#6108, thanks @asterite)
  • Allow namespaced expressions to define constants eg: Foo::Bar = 1. (#5883, thanks @bew)
  • Allow trailing = in symbol literals. (#5969, thanks @straight-shoota)
  • Allow redefining None to 0 for @[Flags] enum. (#6160, thanks @bew)
  • Suggest possible solutions to failing requires. (#5487, thanks @RX14)
  • Allow pointers of external C library global variables. (#4845, thanks @larubujo)
  • Decouple pretty-printing (pp) and showing the expression (!): p, pp, p!, pp!. (#6044, thanks @asterite)
  • Add ivars default value reflection in macros. (#5974, thanks @asterite)
  • Add argless overload to Number#round to rounds to the nearest whole number. (#5397, thanks @Sija)
  • Add Int#bits_set? to easily check that certain bits are set. (#5619, thanks @RX14)
  • Add Float32 and Float64 constants. (#4787, thanks @konovod)
  • Add allocated bytes per operation in Benchmark.ips. (#5522, thanks @asterite)
  • Add String#to_utf16 and String.from_utf16. (#5541, #5579, #5583 thanks @asterite, @RX14 and @straight-shoota)
  • Add String#starts_with?(re: Regex). (#5485, thanks @MakeNowJust)
  • Add Regex.needs_escape?. (#5962, thanks @Sija)
  • Add Hash#last_key and Hash#last_value. (#5760, thanks @j8r)
  • Add no-copy iteration to Indexable. (#4584, thanks @cjgajard)
  • Add Time#at_{beginning,end}_of_second (#6167, thanks @straight-shoota)
  • Add IO::Stapled to combine two unidirectional IOs into a single bidirectional one. (#6017, thanks @straight-shoota)
  • Add context to errors in JSON.mapping generated code. (#5932, thanks @straight-shoota)
  • Add JSON::Serializable and YAML::Serializable attribute powered mappings. (#6082, thanks @kostya)
  • Add mode param to File.write. (#5754, thanks @woodruffw)
  • Add Punycode/IDNA support and integrate with DNS lookup. (#2543, thanks @MakeNowJust)
  • Add HTTP::Client#options method. (#5824, thanks @mamantoha)
  • Add support for Last-Modified and other cache improvements to HTTP::StaticFileHandler. (#2470, #5607, thanks @bebac and @straight-shoota)
  • Add operations and improvements related to BigDecimal and BigFloat. (#5437, #5390, #5589, #5582, #5638, #5675, thanks @Sija and @mjago)
  • Add BigDecimal and UUID JSON support. (#5525, #5551, thanks @lukeasrodgers and @lachlan)
  • Add missing UUID#inspect. (#5574, thanks @ngsankha)
  • Add Logger configuration in initializer. (#5618, thanks @Sija)
  • Add custom separators in CSV.build. (#5998, #6008 thanks @Sija)
  • Add INI.build to emit INI files. (#5298, thanks @j8r)
  • Add Process.chroot. (#5577, thanks @chris-huxtable)
  • Add Tempfile.tempname to create likely nonexisting filenames. (#5360, thanks @woodruffw)
  • Add FileUtils#ln, ln_s, and ln_sf. (#5421, thanks @woodruffw)
  • Add support 8bit and true color to Colorize. (#5902, thanks @MakeNowJust)
  • Add comparison operators between classes. (#5645, thanks @asterite)
  • Add exception cause in backtrace. (#5833, thanks @RX14)
  • Add unhandled exception as argument in at_exit. (#5906, thanks @MakeNowJust)
  • Add support to target aarch64-linux-musl. (#5861, thanks @jirutka)
  • Add #clear method to ArrayLiteral/HashLiteral for macros. (#5265, thanks @Sija)
  • Add Bool#to_unsafe for C bindings. (#5465, thanks @woodruffw)
  • Spec: Add expectations starts_with, ends_with. (#5881, thanks @kostya)
  • Formatter: Add --include and --exclude options to restrict directories. (#4635, thanks @straight-shoota)
  • Documentation generator: improved navigation, searching, rendering and SEO. (#5229, #5795, #5990, #5657, #6073, thanks @straight-shoota, @Sija and @j8r)
  • Playground: Add button in playground to run formatter. (#3652, thanks @samueleaton)

Standard library bugs fixed

Compiler bugs fixed

  • Fixed enum generated values when a member has value 0. (#5954, thanks @bew)
  • Fixed compiler issue when previous compilation was interrupted. (#5585, thanks @asterite)
  • Fixed compiler error with an empty ensure block. (#5396, thanks @MakeNowJust)
  • Fixed parsing regex in default arguments. (#5481, thanks @MakeNowJust)
  • Fixed parsing error of regex literal after open parenthesis. (#5453, thanks @MakeNowJust)
  • Fixed parsing of empty array with blank. (#6107, thanks @asterite)
  • Static libraries are now found correctly when using the --static compiler flag. (#5385, thanks @jreinert)
  • Improve error messages for unterminated literals. (#5409, thanks @straight-shoota)
  • Fixed ProcNotation and ProcLiteral introspection in macros. (#5206, thanks @javanut13)
  • Cross compilation honors --emit and avoid generating bc_flags in current directory. (#5521, thanks @asterite)
  • Fixed compiler error with integer constants as generic arguments. (#5532, thanks @asterite)
  • Fixed compiler error with self as base class. (#5534, thanks @asterite)
  • Fixed macro expansion when mutating the argument. (#5247, thanks @MakeNowJust)
  • Fixed macro expansion edge cases. (#5680, #5842, #6163, thanks @asterite, @MakeNowJust and @splattael)
  • Fixed macro overload on named args. (#5808, thanks @bew)
  • Fixed macro numeric types used in interpreter. (#5972, thanks @straight-shoota)
  • Fixed missing debug locations in several places. (#5597, thanks @asterite)
  • Fixed missing information in AST nodes needed for macro expansion. (#5454, thanks @MakeNowJust)
  • Fixed multiline error messages in emitted by ASTNode#raise macro method. (#5670, thanks @asterite)
  • Fixed nested delimiters and escaped whitespace in string/symbol array literals. (#5667, thanks @straight-shoota)
  • Fixed custom array/hash-like literals in nested modules. (#5685, thanks @asterite)
  • Fixed usage of static array in C externs. (#5690, thanks @asterite)
  • Fixed spawn over expression with receivers. (#5781, thanks @straight-shoota)
  • Fixed prevent heredoc inside interpolation. (#5648, thanks @MakeNowJust)
  • Fixed parsing error when a newline follows block arg. (#5737, thanks @bew)
  • Fixed parsing error when macro argument is followed by a newline. (#6046, thanks @asterite)
  • Fixed compiler error messages wording. (#5887, thanks @r00ster91)
  • Fixed recursion issues in method_added macro hook. (#5159, thanks @MakeNowJust)
  • Fixed avoid using type of updated argument for type inference. (#5166, thanks @MakeNowJust)
  • Fixed parsing error message on unbalanced end brace in macros. (#5420, thanks @MakeNowJust)
  • Fixed parsing error message on keywords are used as arguments. (#5930, #6052, thanks @MakeNowJust and @esse)
  • Fixed parsing error message on missing comma for named tuples. (#5981, thanks @MakeNowJust)
  • Fixed missing handling of cond node in visitor. (#6032, thanks @veelenga)
  • Fixed cli when --threads has invalid value. (#6039, thanks @r00ster91)
  • Fixed private methods can now be called with explicit self receiver. (#6075, thanks @MakeNowJust)
  • Fixed missing some missing rules of initializer in initializers macro methods. (#6077, thanks @asterite)
  • Fixed regression bug related to unreachable code. (#6045, thanks @asterite)

Tools bugs fixed

Misc

Note: crystal-0.25.0-2.pkg & crystal-0.25.0-2-darwin-x86_64.tar.gz Darwin packages fix a bug with a missing clock_gettime on older MacOS X versions (ie, El Capitan & previous).

@waj waj released this Mar 9, 2018 · 750 commits to master since this release

Assets 10
Mar 6, 2018
Run nightly at midnight
Dec 13, 2017
Crystal Language version 0.24.1

@RX14 RX14 released this Dec 23, 2017 · 788 commits to master since this release

Assets 10

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 Time.new 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)

Misc

Pre-release

@matiasgarciaisaia matiasgarciaisaia released this Oct 30, 2017 · 869 commits to master since this release

Assets 10

⚠️ 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

@matiasgarciaisaia matiasgarciaisaia released this Jul 13, 2017 · 1175 commits to master since this release

Assets 6

This is mainly a bugfix release.

The biggest changes are not in the compiler's codebase, but in the release process. Specifically, compatibility with older platforms lost in the 0.23.0 release has been recovered (Debian 7/Ubuntu 14.04, Centos 6), while keeping the builds with LLVM 3.8.