All Versions
118
Latest Version
Avg Release Cycle
46 days
Latest Release
511 days ago

Changelog History
Page 4

  • v0.27.2 Changes

    February 05, 2019

    Standard library

    • ๐Ÿ›  Fixed integer overflow in main thread stack base detection. (#7373, thanks @ysbaddaden)

    Networking

    • ๐Ÿ›  Fixes TLS exception during shutdown. (#7372, thanks @bcardiff)
    • ๐Ÿ›  Fixed HTTP::Client support exception on missing Content-Type. (#7371, thanks @bew)
  • v0.27.1 Changes

    January 30, 2019

    Language changes

    • ๐Ÿ‘ Allow trailing commas inside tuple types. (#7182, thanks @asterite)

    Standard library

    • ๐ŸŽ (performance) Optimize generating UUID from String. (#7030, thanks @jgaskins)
    • ๐ŸŽ (performance) Improve SemanticVersion operations. (#7234, thanks @j8r)
    • ๐Ÿ›  Fixed markdown inline code parsing. (#7090, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed inappropriate uses of Time.now. (#7155, thanks @straight-shoota)
    • ๐Ÿ‘‰ Make Nil#not_nil! raise NilAssertionError. (#7330, thanks @r00ster91)
    • โž• Add SemanticVersion to API docs. (#7003, thanks @Blacksmoke16)
    • โž• Add docs to discourage the use of Bool#to_unsafe other than for C bindings. (#7320, thanks @oprypin)
    • ๐Ÿ”จ Refactor #to_s to be independent of the name method. (#7295, thanks @asterite)

    Macros

    • ๐Ÿ›  Fixed docs of ArrayLiteral#unshift. (#7127, thanks @Blacksmoke16)
    • ๐Ÿ›  Fixed Annotation#[] to accept String and Symbol as keys. (#7153, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed NamedTupleLiteral#[] to raise a compile error for invalid key type. (#7158, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed getter/property macros to work properly with Bool types. (#7313, thanks @Sija)
    • โž• Add read_file macro method. (#6967, #7094, thanks @Sija, @woodruffw)
    • โž• Add StringLiteral#count. (#7239, thanks @Blacksmoke16)

    Numeric

    • ๐Ÿ›  Fixed scale issues when dividing BigDecimal. (#7218, thanks @Sija)
    • ๐Ÿ‘ Allow underscores in the String passed to Big* constructors. (#7107, thanks @Sija)
    • โž• Add conversion methods and docs to Complex. (#5440, thanks @Sija)
    • โž• Add specs for Int128, UInt128. (#7173, thanks @bcardiff)
    • Add unsafe number ops value.to_X!/T.new!/Int#&**. (#7226, thanks @bcardiff)
    • โž• Add overflow detection with preview opt-in. (#7206, thanks @bcardiff)

    Text

    • ๐Ÿ›  Fixed ECR location error reported. (#7137, thanks @MakeNowJust)
    • โž• Add docs to ECR. (#7121, thanks @KCErb)
    • ๐Ÿ”จ Refactor String#to_i to avoid future overflow. (#7172, thanks @bcardiff)

    Collections

    • ๐Ÿ›  Fixed docs example in Hash#from. (#7210, thanks @r00ster91)
    • ๐Ÿ›  Fixed docs links of Enumerable#chunks and Iterator#chunk. (#6941, thanks @r00ster91)
    • โœ‚ Remove implicit null skip from Hash to JSON serialization. (#7053, thanks @MakeNowJust)
    • โž• Add Iterator#slice_after. (#7146, thanks @asterite)
    • โž• Add Iterator#slice_before. (#7152, thanks @asterite)
    • Add Iteratory#slice_when and Iterator#chunk_while. (#7159, thanks @asterite)
    • โž• Add Enumerable#to_h(&block). (#7150, thanks @Sija)
    • โž• Add Enumerable#one?. (#7166, thanks @asterite)
    • โž• Add several Enumerable, Iterator and Array overloads that accept a pattern. (#7174, thanks @asterite)
    • โž• Add docs to hash constructors. (#6923, thanks @KCErb)

    Serialization

    • โž• Add conversion between JSON and YAML. (#7232, thanks @straight-shoota)
    • Standardize #as_T/#as_T? methods between JSON::Any/YAML::Any. (#6556, thanks @j8r)
    • โž• Add Set#from_yaml. (#6310, thanks @kostya)

    Time

    • ๐Ÿ›  Fixed Time::Span initializer and sleep for big seconds. (#7221, thanks @asterite)
    • ๐Ÿ›  Fixed docs to show proper use of parse. (#7035, thanks @jwoertink)
    • โž• Add missing Float#weeks method similar to Int#weeks. (#7165, thanks @vlazar)

    Files

    • ๐Ÿ›  Fix mkstemps support on aarch64. (#7300, thanks @silmanduin66)
    • Validate LibC error codes in specs involving Errno errors. (#7087, thanks @straight-shoota)
    • โž• Add microsecond precision to System::File.utime (Unix). (#7156, thanks @straight-shoota)
    • โž• Add missing tempfile cleanup in specs. (#7250, thanks @bcardiff)
    • โž• Add docs for file open modes. (#6664, thanks @r00ster91)

    Networking

    • ๐Ÿ›  Fixed HTTP::Client edge case of exception during in TLS initialization. (#7123, thanks @asterite)
    • ๐Ÿ›  Fixed OpenSSL::SSL::Error.new to not raise Errno. (#7068, thanks @straight-shoota)
    • ๐Ÿ›  Fixed URI encoding in StaticFileHandler::DirectoryListing. (#7072, thanks @Sija)
    • โž• Add MIME registry. (#5765, #7079, #7080, thanks @straight-shoota, @Sija)
    • โž• Add MIME::MediaType for parsing mime media types. (#7077, thanks @straight-shoota)
    • โž• Add support for 100-continue in HTTP::Server::Response. (#6912, thanks @jreinert)
    • โž• Add support for creating sockets from raw file descriptors. (#6894, thanks @myfreeweb)
    • โž• Add SNI support for OpenSSL. (#7291, thanks @bararchy)
    • ๐Ÿ‘Œ Improve HTTP::Server docs. (#7251, thanks @straight-shoota)
    • ๐Ÿ”จ Refactor OpenSSL specs to reduce chances of failing. (#7202, thanks @bcardiff)

    Crypto

    • โž• Add OpenSSL::Cipher#authenticated? to see if the cipher supports aead. (#7223, thanks @danielwestendorf)

    System

    • ๐Ÿ›  Fixed inline ASM when compiling for ARM. (#7041, thanks @omarroth)
    • Implement Crystal::System for Win32. (#6972, thanks @markrjr)
    • โž• Add Errno#errno_message getter. (#6702, thanks @r00ster91)

    Spec

    • Detect nesting it and pending at run-time. (#7297, thanks @MakeNowJust)

    Compiler

    • ๐Ÿ›  Fixed how LLVM::Type.const_int emit Int128 literals. (#7135, thanks @bcardiff)
    • ๐Ÿ›  Fixed ICE related to named tuples. (#7163, thanks @asterite)
    • ๐Ÿ›  Fixed automatic casting for private top-level methods. (#7310, thanks @asterite)
    • Give proper error if defining initialize inside enum, allow Enum.new. (#7266, thanks @asterite)
    • Give proper error when trying to access instance variable of union type. (#7194, thanks @asterite)
    • Give proper error when trying to instantiate Module. (#6735, thanks @r00ster91)
    • Give proper error related to named arguments. (#7288, thanks @asterite)
    • ๐Ÿ“œ Parse required comma between block args. (#7343, thanks @asterite)
    • ๐Ÿ‘Œ Improve inference in recursion that involves blocks. (#7161, thanks @asterite)
    • โž• Add locations to all expanded macro arguments. (#7008, thanks @MakeNowJust)
    • Turn a not compiler specific error while requiring into ICE. (#7208, thanks @MakeNowJust)
    • โœ‚ Remove old nil? error on pointer types. (#7180, thanks @asterite)
    • ๐Ÿ‘Œ Improve too big tuple and named tuple error message. (#7131, thanks @r00ster91)
    • โ†ช Workaround buggy offset debug info values. (#7335, thanks @bcardiff)
    • ๐Ÿ”จ Refactor extract helper methods to emit Float32, Float64 values. (#7134, thanks @bcardiff)
    • ๐Ÿ”จ Refactor filename resolution logic out of interpret_run. (#7051, thanks @Sija)
    • ๐Ÿ”จ Refactor internals regarding overflow. (#7262, thanks @bcardiff)
    • ๐Ÿ”จ Refactor Crystal::Codegen::Target and consolidate triple handling. (#7282, #7317, thanks @RX14, @bcardiff)

    Tools

    • โšก๏ธ Update README template. (#7118, thanks @mamantoha)
    • Capitalise Crystal in CLI output. (#7224, thanks @dwightwatson)

    Formatter

    • ๐Ÿ›  Fixed formatting of multiline literal elements. (#7048, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed formatting of heredoc with interpolations. (#7184, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed prevent conflict between nested tuple types and macro expressions. (#7097, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed format when typeof appears inside generic type. (#7176, thanks @asterite)
    • ๐Ÿ›  Fixed format of newline after &.foo in call. (#7240, thanks @MakeNowJust)
    • Honor same behaviour for single or multiple file arguments. (#7144, thanks @straight-shoota)
    • ๐Ÿ”จ Refactor remove quotes from overflow symbols in formatter spec. (#6968, thanks @r00ster91)
    • Major rework of crystal tool format command. (#7257, thanks @MakeNowJust)

    Doc generator

    • ๐Ÿ”’ (security) Prevent XSS via args. (#7056, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed generation of toplevel. (#7063, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed display of double splat and block arg. (#7029, #7031, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed keep trailing spaces in macros. (#7099, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed avoid showing subtypes of aliased type. (#7124, thanks @asterite)
    • ๐Ÿ›  Fixed style of methods when hovering. (#7022, thanks @r00ster91)
    • ๐Ÿ›  Fixed duplicate source_link field. (#7033, thanks @bcardiff)
    • ๐Ÿ›  Fixed missing keywords in Doc::Highlighter. (#7054, thanks @MakeNowJust)
    • โž• Add --format option to docs command. (#6982, thanks @mniak)

    Others

    • CI improvements and housekeeping. (#7018, #7043, #7133, #7139, #7230, #7227, #7263, thanks @bcardiff)
    • CI split formatting check. (#7228, thanks @bcardiff)
    • ๐Ÿ— Depend on standard variable to let the user define the build date. (#7186, thanks @eli-schwartz)
    • Reorganize community section in README, add forum. (#7235, thanks @straight-shoota)
    • ๐Ÿ›  Fixed docs grammar and typos. (#7034, #7242, #7331, thanks @r00ster91, @girng)
    • ๐Ÿ‘Œ Improve samples. (#6454, thanks @r00ster91)
    • ๐Ÿ›  Fixed 0.27.0 CHANGELOG. (#7024, thanks @arcage)
    • โšก๏ธ Update ISSUE_TEMPLATE to include forum. (#7301, thanks @straight-shoota)
    • โšก๏ธ Update LICENSE's copyright year. (#7246, thanks @matiasgarciaisaia)
  • v0.27.0 Changes

    November 01, 2018

    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

    • (breaking-change) Rename Time#epoch to Time#to_unix. Also #epoch_ms to #to_unix_ms, and #epoch_f to #to_unix_f. (#6662, thanks @straight-shoota)
    • ๐Ÿ›  Fixed spec for Time::Location.load_local with TZ=nil. (#6740, thanks @straight-shoota)
    • โž• Add support for ISO calendar week to Time. (#6681, thanks @straight-shoota)
    • โž• Add Time::Format support for %G, %g, %V. (#6681, thanks @straight-shoota)
    • โž• Add Time::Location loader support for Windows. (#6363, thanks @straight-shoota)
    • Add Time#to_local_in to change time zone while keeping wall clock. (#6572, thanks @straight-shoota)
    • Add Time::UNIX_EPOCH and drop private UNIX_SECONDS constant. (#6908, thanks @j8r)
    • ๐Ÿ”„ Change Time::DayOfWeek to ISO ordinal numbering based on Monday = 1. (#6555, thanks @straight-shoota)
    • ๐Ÿ”จ Refactor time specs. (#6574, thanks @straight-shoota)
    • โž• Add docs for singular method aliases, add Int#microsecond alias. (#6297, thanks @Sija)

    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

    • (breaking-change) Remove deprecated alias HTTP::Server#bind_ssl. Use HTTP::Server#bind_tls. (#6699, thanks @straight-shoota)
    • โž• Add Socket::Address#pretty_print and #inspect. (#6704, thanks @straight-shoota)
    • โž• Add Socket::IPAddress loopback, unspecified and broadcast methods/constants. (#6710, thanks @straight-shoota)
    • Fixed Socket#reuse_port? if SO_REUSEPORT is not supported. (#6706, thanks @straight-shoota)
    • ๐Ÿ›  Fixed TCPServer handling of reuse_port. (#6940, thanks @RX14)
    • โž• Add docs to demonstrate parameters for HTTP::Client. (#5145, thanks @HCLarsen)
    • โž• Add docs examples to Socket::Server#accept. (#6705, thanks @straight-shoota)
    • ๐Ÿ”จ Refactor socket_spec.cr into separate files. (#6700, thanks @straight-shoota)
    • ๐Ÿ”จ Refactor specs of HTTP::Client to remove inheritance for test server. (#6909, thanks @straight-shoota)
    • ๐Ÿ‘Œ Improve specs for HTTP::Server#close. (#5958, thanks @straight-shoota)
    • ๐Ÿ‘Œ Improve specs for socket. (#6711, thanks @straight-shoota)

    Crypto

    • ๐Ÿ›  Fixed OpenSSL bindings to work with LibreSSL. (#6917, thanks @LVMBDV)
    • โž• Add support for OpenSSL 1.1.1. (#6738, thanks @ysbaddaden)

    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

    • ๐Ÿ‘ Allow pending to be used without blocks. (#6732, thanks @tswicegood)
    • โž• Add be_empty expectation. (#6614, thanks @mamantoha)
    • โž• Add specs for expectation methods. (#6512, thanks @rodrigopinto)

    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

    • ๐Ÿ‘Œ Improve installation section in README template. (#6914, #6942, thanks @r00ster91)
    • ๐Ÿ‘Œ Improve contributors section in README template. (#7005, thanks @r00ster91)

    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

    • CI improvements and housekeeping. (#6658, #6739, #6930, thanks @bcardiff, @RX14)
    • โž• Add VERSION file and support for specifying the build commit. (#6966, thanks @bcardiff)
    • โž• Add support for specifying the build date. (#6788, thanks @peterhoeg)
    • โšก๏ธ Update Contributing section in README.md. (#6911, thanks @r00ster91)
  • v0.26.1 Changes

    August 27, 2018

    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

    • ๐Ÿ›  Fixed docs for Time::Format. (#6578, thanks @straight-shoota)

    Files

    • ๐Ÿ›  Fixed zlib handling of buffer error. (#6610, thanks @asterite)

    Networking

    • ๐Ÿ—„ (deprecate) HTTP::Server#bind_ssl in favor of HTTP::Server#bind_tls. (#6551, thanks @bcardiff)
    • โž• Add tls scheme to HTTP::Server#bind. (#6533, thanks @straight-shoota)
    • ๐Ÿ›  Fixed HTTP::Server crash with self-signed certificate. (#6590, thanks @bcardiff)
    • ๐Ÿ”จ Refactor HTTP::Server specs to use free ports. (#6530, thanks @straight-shoota)

    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

    • ๐Ÿ›  Fixed formatting of newline before &.method in call. (#6535, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed formatting of empty heredoc. (#6567, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed formatting of string literal in interpolation. (#6568, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed formatting of comments in case when. (#6595, thanks @asterite)

    Doc generator

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

    Playground

    • ๐Ÿ›  Fixed internal link. (#6596, thanks @omarroth)

    Others

  • v0.26.0 Changes

    August 09, 2018

    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

    • โž• Add pp! and p! macro methods. (#6374, #6476, thanks @straight-shoota)

    Standard library

    • ๐Ÿ›  Fix docs for Pointer. (#6494, thanks @fxn)
    • ๐Ÿ›  Fix docs of UUID enums. (#6496, thanks @r00ster91)

    Numeric

    • ๐Ÿ›  Fixed Random#rand(Range(Float, Float)) to return Float. (#6445, thanks @straight-shoota)
    • โž• Add docs of big module overloads. (#6336, thanks @laginha87)

    Text

    • (breaking-change) String#from_utf16(pointer : Pointer(UInt16)) returns now {String, Pointer(UInt16)}. (#6333, thanks @straight-shoota)
    • โž• Add support for unicode 11.0.0. (#6505, thanks @asterite)
    • Add an optional argument to String#check_no_null_byte to customize error message. (#6333, thanks @straight-shoota)
    • โž• Add ECR.render for rendering directly as String. (#6371, thanks @straight-shoota)
    • ๐Ÿ›  Fix docs for Char (#6487, thanks @r00ster91)

    Collections

    • โž• Add docs for StaticArray. (#6404, #6488, thanks @straight-shoota, @r00ster91, @hinrik)
    • ๐Ÿ”จ Refactor Array#concat. (#6493, thanks @fxn)

    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

    • (breaking-change) Make location a required argument for Time.parse. (#6369, thanks @straight-shoota)
    • ๐Ÿ“œ Add Time.parse!, Time.parse_utc, Time.parse_local. (#6369, thanks @straight-shoota)
    • ๐Ÿ›  Fix docs comment missing (#6387, thanks @faustinoaq)

    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

    • ๐Ÿ›  Fixed Crypto::Bcrypt::Password#== was hiding Reference#==(other). (#6356, thanks @straight-shoota)

    Concurrency

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

    System

    • ๐Ÿ›  Fixed raise Errno if Process.new fails to exec. (#6501, thanks @straight-shoota, @lbguilherme)
    • โž• Add support for WinError UTF-16 string messages. (#6442, thanks @straight-shoota)
    • ๐Ÿ”จ Refactor platform specifics from ENV to Crystal::System::Env and implement for Windows. (#6333, #6499, thanks @straight-shoota)

    Spec

    • โž• Add TAP formatter to spec suite. (#6286, thanks @straight-shoota)

    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

    • Flatten project structure created by crystal init. (#6317, thanks @straight-shoota)

    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

    • ๐Ÿ›  Fixed system_spec does no longer emit errors messages on BSD platforms. (#6289, thanks @jcs)
    • ๐Ÿ›  Fixed compilation issue when running spec against compiler and std together. (#6312, thanks @straight-shoota)
    • โž• Add support for LLVM 6.0. (#6381, #6380, #6383, thanks @felixbuenemann)
    • CI improvements and housekeeping. (#6313, #6337, #6407, #6408, #6315, thanks @bcardiff, @MakeNowJust, @r00ster91, @maiha)
  • v0.25.1 Changes

    June 27, 2018

    Standard library

    Macros

    • ๐Ÿ›  Fixed Object.delegate is now able to be used with []= methods. (#6178, thanks @straight-shoota)
    • ๐Ÿ›  Fixed p! pp! are now able to be used with tuples. (#6244, thanks @bcardiff)
    • โž• Add #copy_with method to structs generated by record macro. (#5736, thanks @chris-baynes)
    • โž• Add docs for ArrayLiteral#push and #unshift. (#6232, thanks @MakeNowJust)

    Collections

    • โž• Add docs for Indexable#zip and #zip? methods. (#5734, thanks @rodrigopinto)

    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

    • ๐Ÿ›  Fixed docs regarding formatting and parsing Time. (#6208, #6214, thanks @r00ster91 and @straight-shoota)
    • ๐Ÿ›  Fixed Time internals for future Windows support. (#6181, thanks @RX14)
    • โž• Add Time::Span#microseconds, Int#microseconds and Float#microseconds. (#6272, thanks @asterite)
    • โž• Add specs. (#6174, thanks @straight-shoota)

    Files

    • ๐Ÿ›  Fixed File.extname edge case. (#6234, thanks @bcardiff)
    • ๐Ÿ›  Fixed FileInfo#flags return value. (#6248, thanks @fgimian)

    Networking

    • ๐Ÿ›  Fixed IO#write(slice : Bytes) won't write information if slice is empty. (#6269, thanks @asterite)
    • ๐Ÿ›  Fixed docs regarding HTTP::Server#bind_tcp method. (#6179, #6233, thanks @straight-shoota and @MakeNowJust)
    • โž• Add Etag support in HTTP::StaticFileHandler. (#6145, thanks @emq)

    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

    • ๐Ÿ›  Fixed crash when semicolon after block paren were present. (#6192, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed invalid code produced when heredoc and comma were present. (#6222, thanks @straight-shoota and @MakeNowJust)
    • ๐Ÿ›  Fixed crash when one-liner begin/rescue were present. (#6274, thanks @asterite)

    Doc generator

    • ๐Ÿ›  Fixed JSON export that prevent jumping to constant. (#6218, thanks @straight-shoota)
    • ๐Ÿ›  Fixed crash when virtual types were reached. (#6246, thanks @bcardiff)

    Misc

    • CI improvements and housekeeping. (#6193, #6211, #6209, #6221, #6260, thanks @bcardiff, @kostya and @r00ster91)
    • โšก๏ธ Update man page. (#6259, thanks @docelic)
  • v0.25.0 Changes

    June 11, 2018

    ๐Ÿ†• 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

    • ๐Ÿ›  Fixed String#sub handling of negative indexes. (#5491, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed String#gsub in non-ascii strings. (#5350, thanks @straight-shoota)
    • ๐Ÿ›  Fixed String#dump for UTF-8 characters higher than \uFFFF. (#5668, thanks @straight-shoota)
    • ๐Ÿ›  Fixed String#tr edge case optimization bug. (#5913, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed String#rindex when called with Regex. (#5594, thanks @straight-shoota)
    • ๐Ÿ›  Fixed Time::Span precision loss and boundary check. (#5563, #5786, thanks @petoem and @straight-shoota)
    • 0๏ธโƒฃ Array#sample was fixed to use the provided random number generator (instead of the default) in all cases. (#5419, thanks @c910335)
    • โž• Add short-circuit logic in Deque#rotate! for singleton and empty queues. (#5399, thanks @willcosgrove)
    • Slice#reverse! was optimised to be up to 43% faster. (#5401, thanks @larubujo)
    • ๐Ÿ›  Fixed Regex#inspect when escaping was needed. (#5841, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed JSON.mapping now generates type restriction on getters. (#5935, thanks @Daniel-Worrall)
    • ๐Ÿ›  Fixed JSON.mapping documentation regarding unions. (#5483, thanks @RX14)
    • ๐Ÿ›  Fixed JSON.mapping and YAML.mapping to allow properties property. (#5180, #5352, thanks @maxpowa and @Sija)
    • ๐Ÿ›  Fixed YAML int and float parsing. (#5699, #5774, thanks @straight-shoota)
    • ๐Ÿ›  Fixed WebSocket handshake validation. (#5327, #6027 thanks @straight-shoota)
    • ๐Ÿ›  Fixed HTTP::Client is able to use ipv6 addresses. (#6147, thanks @bcardiff)
    • ๐Ÿ›  Fixed handling some invalid responses in HTTP::Client. (#5630, thanks @straight-shoota)
    • ๐Ÿ›  Fixed HTTP::ChunkedContent will raise on unterminated content. (#5928, #5943, thanks @straight-shoota)
    • 0๏ธโƒฃ URI#to_s now handles default ports for lots of schemes. (#5233, thanks @lachlan)
    • HTTP::Cookies is able to deal with spaces in cookies. (#5408, thanks @bararchy)
    • ๐Ÿ›  Fixed MIME type of SVG images in HTTP::StaticFileHandler. (#5605, thanks @damianham)
    • ๐Ÿ›  Fixed URI encoding in StaticFileHandler#redirect_to. (#5628, thanks @straight-shoota)
    • ๐Ÿ›  Fixed before_request callbacks to be executed right before writing the request in HTTP::Client. (#5626, thanks @asterite)
    • ๐ŸŽ Dir.glob was re-implemented with performance improvements and edge cases fixed. (#5179, thanks @straight-shoota)
    • ๐Ÿ›  Fixed File.extname edge case for '.' in path with no extension. (#5790, thanks @codyjb)
    • ๐Ÿ›  Some ECDHE curves were incorrectly disabled in OpenSSL clients, this has been fixed. (#5494, thanks @jhass)
    • ๐Ÿ›  Fixed allow bcrypt passwords up to 71 bytes. (#5356, thanks @ysbaddaden)
    • ๐Ÿ–จ Unhandled exceptions occurring inside Process.fork now print their backtrace correctly. (#5431, thanks @RX14)
    • ๐Ÿ›  Fixed Zip no longer modifies deflate signature. (#5376, thanks @luislavena)
    • ๐Ÿ›  Fixed INI parser edge cases and performance improvements. (#5442, #5718 thanks @woodruffw, @j8r)
    • ๐Ÿ›  Fixed initialization of LibXML. (#5587, thanks @lbguilherme)
    • ๐Ÿ‘ฏ Some finalizers were missing for example when the object where cloned. (#5367, thanks @alexbatalov)
    • ๐Ÿ›  Fixed sigfault handler initialization regarding sa_mask. (#5677 thanks @ysbaddaden)
    • ๐Ÿ›  Fixed missing reference symbol in ARM. (#5640, thanks @blankoworld)
    • ๐Ÿ›  Fixed detect LLVM 5.0 by llvm-config-5.0 command. (#5531, thanks @Vexatos)
    • โช Restore STDIN|OUT|ERR blocking state on exit. (#5802, thanks @bew)
    • ๐Ÿ›  Fixed multiple at_exit handlers chaining. (#5413, thanks @bew)
    • ๐Ÿ›  Fixed senders were not notified when channels were closed. (#5880, thanks @carlhoerberg)
    • ๐Ÿ›  Fixed forward unhandled exception to caller in parallel macro. (#5726, thanks @lipanski)
    • ๐Ÿ›  Fixed Markdown parsing of code fences appearing on the same line. (#5606, thanks @oprypin)
    • ๐Ÿ›  Fixed OpenSSL bindings to recognize LibreSSL. (#5676, #6062, #5949, #5973 thanks @LVMBDV and @RX14)
    • ๐Ÿ›  Fixed path value in to UNIXSocket created by UNIXServer. (#5869, thanks @straight-shoota)
    • ๐Ÿ›  Fixed Object.delegate over setters. (#5964, thanks @straight-shoota)
    • ๐Ÿ›  Fixed pp will now use the same width on every line. (#5978, thanks @MakeNowJust)
    • ๐Ÿ›  Fixes missing stdarg.cr for i686-linux-musl. (#6120, thanks @bcardiff)
    • ๐Ÿ›  Spec: Fixed junit spec formatter to emit the correct XML. (#5463, thanks @hanneskaeufler)

    ๐Ÿ›  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

    • Several crystal init and template improvements. (#5475, #5355, #4691, #5788, #5644, #6031 thanks @woodruffw, @faustinoaq, @bew, @kostya and @MakeNowJust)
    • Formatter: improve formatting of method call arguments with trailing comments. (#5492, thanks @MakeNowJust)
    • Formatter: fix formatting of multiline statements. (#5234, #5901, #6013 thanks @MakeNowJust)
    • Formatter: fix formatting of multi assignment. (#5452, thanks @MakeNowJust)
    • Formatter: fix formatting of backslash ending statements. (#5194, thanks @asterite)
    • Formatter: fix formatting of .[] methods. (#5424, thanks @MakeNowJust)
    • Formatter: fix formatting of statements with comments. (#5655, #5893, #5909, thanks @MakeNowJust)
    • Formatter: fix formatting of nested begin/end. (#5922, thanks @MakeNowJust)
    • Formatter: fix formatting of trailing comma with block calls. (#5855, thanks @MakeNowJust)
    • Formatter: fix formatting of ending expression after heredoc. (#6127, thanks @asterite)
    • ๐Ÿ“š Documentation generator: references to nested types in markdown are now correctly parsed. (#5308, thanks @straight-shoota)
    • ๐Ÿ“š Documentation generator: fix leftovers regarding default old doc directory. (#5406, thanks @GloverDonovan)
    • ๐Ÿ“š Documentation generator: avoid failing on non git directory. (#3700, thanks @MakeNowJust)
    • Crystal::Doc::Highlighter has specs now (#5368, thanks @MakeNowJust)
    • Playground: can now be run with HTTPS. (#5527, thanks @opiation)
    • ๐Ÿ–จ Playground: Pretty-print objects in inspector. (#4601, thanks @jgaskins)

    Misc

  • v0.24.2 Changes

    March 08, 2018
    • ๐Ÿ›  Fixed an Index out of bounds raised during at_exit (#5224, #5565, thanks @ysbaddaden)
    • Re-add Dir#each so it complies with Enumerable (#5458, thanks @bcardiff)
    • ๐Ÿ›  Fixed SSL::Context bug verifying certificates (#5266, #5601, thanks @waj)
    • ๐Ÿ›  Fixed UUID documentation that was missing (#5478, #5542, thanks @asterite)
    • ๐Ÿ›  Fixed a bug with single expressions in parenthesis (#5482, #5511, #5513, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed skip_file macro docs (#5488, thanks @straight-shoota)
    • ๐Ÿ›  Fixed CI build script's LIBRARY_PATH (#5457, #5461, thanks @bcardiff)
    • ๐Ÿ›  Fixed formatter bug with upper-cased fun names (#5432, #5434, thanks @bew)
  • v0.24.1 Changes

    December 23, 2017

    ๐Ÿ†• 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 enabled 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)
    • 0๏ธโƒฃ 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

    • ๐Ÿ›  Fix Makefile, CI, and gitignore to use the new documentation path after #4937. (#5217, thanks @straight-shoota)
    • Miscellaneous code cleanups. (#5318, #5341 and #5366, thanks @bew and @mig-hub)
    • ๐Ÿ“š Documentation fixes. (#5253, #5296, #5300 and #5322, thanks @arcage, @icyleaf, @straight-shoota and @bew)
    • ๐Ÿ›  Fix the in-repository changelog to include 0.24.0. (#5331, thanks @sdogruyol)
  • v0.24.0 Changes

    October 30, 2017
    • (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