All Versions
100
Latest Version
Avg Release Cycle
47 days
Latest Release
127 days ago

Changelog History
Page 1

  • v0.35.1

    June 19, 2020

    Standard library

    Collections

    • โœ‚ Remove Hash#each type restriction to allow working with splats. (#9456, thanks @bcardiff)

    Networking

    • โช Revert IO#write changes in 0.35.0 and let it return Nil. (#9469, thanks @bcardiff)
    • ๐ŸŒฒ Avoid leaking logging context in HTTP request handlers. (#9494, thanks @Blacksmoke16)

    Crypto

    • ๐Ÿ‘‰ Use less strict cipher compatibility for OpenSSL client context. (#9459, thanks @straight-shoota)
    • ๐Ÿ›  Fix Digest::Base block argument type restrictions. (#9500, thanks @straight-shoota)

    ๐ŸŒฒ Logging

    • ๐Ÿ›  Fix Log.context.set docs for hash based data. (#9470, thanks @bcardiff)

    Compiler

    • โš  Show warnings even if there are errors. (#9461, thanks @asterite)
    • ๐Ÿ›  Fix parsing of {foo: X, typeof: Y} type. (#9453, thanks @MakeNowJust)
    • ๐Ÿ›  Fix parsing of proc in hash of key type. (#9458, thanks @MakeNowJust)
    • ๐Ÿ— Revert debug level information changes in specs to fix 32 bits builds. (#9466, thanks @bcardiff)

    Others

    • CI improvements and housekeeping. (#9455, thanks @bcardiff)
    • Code formatting. (#9482, thanks @MakeNowJust)
  • v0.35.0

    June 09, 2020

    Language changes

    • (breaking-change) Let case when be non-exhaustive, introduce case in as exhaustive. (#9258, #9045, thanks @asterite)
    • ๐Ÿ‘ Allow ->@ivar.foo and ->@@cvar.foo expressions. (#9268, thanks @MakeNowJust)

    Macros

    • ๐Ÿ‘ Allow executing OpAssign (+=, ||=, etc.) inside macros. (#9409, thanks @asterite)

    Standard library

    • (breaking-change) Refactor to standardize on first argument for methods receiving IO. (#9134, #9289, #9303, #9318, thanks @straight-shoota, @bcardiff, @oprypin)
    • (breaking-change) Cleanup Digest and OpenSSL::Digest. (#8426, thanks @didactic-drunk)
    • ๐Ÿ›  Fix Enum#to_s for private enum. (#9126, thanks @straight-shoota)
    • Refactor Benchmark::IPS::Entry to use UInt64 in bytes_per_op. (#9081, thanks @jhass)
    • โž• Add Experimental annotation and doc label. (#9244, thanks @bcardiff)
    • โž• Add subcommands to OptionParser. (#9009, #9133, thanks @RX14, @Sija)
    • ๐Ÿ‘‰ Make NamedTuple#sorted_keys public. (#9263, thanks @waj)
    • ๐Ÿ›  Fix example codes in multiple places. (#9203, thanks @maiha)

    Macros

    • (breaking-change) Remove top-level assert_responds_to macro. (#9085, thanks @bcardiff)
    • (breaking-change) Drop top-level parallel macro. (#9097, thanks @bcardiff)
    • ๐Ÿ›  Fix lazy property not forwarding annotations. (#9140, thanks @asterite)
    • โž• Add host_flag? macro method, not affected by cross-compilation. (#9049, thanks @oprypin)
    • Add .each and .each_with_index to various macro types. (#9120, thanks @Blacksmoke16)
    • โž• Add StringLiteral#titleize macro method. (#9269, thanks @MakeNowJust)
    • โž• Add TypeNode methods to check what "type" the node is. (#9270, thanks @Blacksmoke16)
    • ๐Ÿ›  Fix support TypeNode.name(generic_args: false) for generic instances. (#9224, thanks @Blacksmoke16)

    Numeric

    • (breaking-change) Add Int#digits, reverse BigInt#digits result. (#9383, thanks @asterite)
    • ๐Ÿ›  Fix overflow checking for operations with mixed sign. (#9403, thanks @waj)
    • โž• Add BigInt#factorial using GMP. (#9132, thanks @peheje)

    Text

    • โž• Add String#titleize. (#9204, thanks @hugopl)
    • โž• Add Regex#matches? and String#matches?. (#8989, thanks @MakeNowJust)
    • โž• Add IO overloads to various String case methods. (#9236, thanks @Blacksmoke16)
    • ๐Ÿ‘Œ Improve docs examples regarding Regex::MatchData. (#9010, thanks @MakeNowJust)
    • ๐Ÿ‘Œ Improve docs on String methods. (#8447, thanks @jan-zajic)

    Collections

    • (breaking-change) Add Enumerable#first with fallback block. (#8999, thanks @MakeNowJust)
    • ๐Ÿ›  Fix Array#delete_at bug with negative start index. (#9399, thanks @asterite)
    • ๐Ÿ›  Fix Enumerable#{zip,zip?} when self is an Iterator. (#9330, thanks @mneumann)
    • ๐Ÿ‘‰ Make Range#each and Range#reverse_each work better with end/begin-less values. (#9325, thanks @asterite)
    • ๐Ÿ‘Œ Improve docs on Hash. (#8887, thanks @rdp)

    Serialization

    • (breaking-change) Deprecate JSON.mapping and YAML.mapping. (#9272, thanks @straight-shoota)
    • (breaking-change) Make INI a module. (#9408, thanks @j8r)
    • ๐Ÿ›  Fix integration between record macro and JSON::Serializable/YAML::Serializable regarding default values. (#9063, thanks @Blacksmoke16)
    • ๐Ÿ›  Fix XML.parse invalid mem access in multi-thread. (#9098, thanks @bcardiff, @asterite)
    • ๐Ÿ›  Fix double string escape in XML::Node#content=. (#9300, thanks @straight-shoota)
    • ๐Ÿ‘Œ Improve xpath regarding namespaces. (#9288, thanks @asterite)
    • Escape CDATA end sequences. (#9230, thanks @Blacksmoke16)
    • โž• Add JSON and YAML serialization to Path. (#9156, thanks @straight-shoota)
    • Specify pkg-config name for libyaml. (#9426, thanks @jhass)
    • Specify pkg-config name for libxml2. (#9436, thanks @Blacksmoke16)
    • ๐Ÿ‘‰ Make YAML specs robust against libyaml 0.2.5. (#9427, thanks @jhass)

    Time

    • (breaking-change) Support different number of fraction digits for RFC3339 time format. (#9283, thanks @waj)
    • ๐Ÿ›  Fix parsing AM/PM hours. (#9334, thanks @straight-shoota)
    • ๐Ÿ‘Œ Improve File.utime precision from second to 100-nanosecond on Windows. (#9344, thanks @kubo)

    Files

    • (breaking-change) Move Flate, Gzip, Zip, Zlib to Compress. (#8886, thanks @bcardiff)
    • (breaking-change) Cleanup File & FileUtils. (#9175, thanks @bcardiff)
    • ๐Ÿ›  Fix realpath on macOS 10.15 (Catalina). (#9296, thanks @waj)
    • ๐Ÿ›  Fix File#pos, File#seek and File#truncate over 2G on Windows. (#9015, thanks @kubo)
    • ๐Ÿ›  Fix File.rename to overwrite the destination file on Windows, like elsewhere. (#9038, thanks @oprypin)
    • ๐Ÿ›  Fix File's specs and related exception types on Windows. (#9037, thanks @oprypin)
    • โž• Add support for Path arguments to multiple methods. (#9153, thanks @straight-shoota)
    • โž• Add Path#each_part iterator. (#9138, thanks @straight-shoota)
    • โž• Add Path#relative_to. (#9169, thanks @straight-shoota)
    • โž• Add support for Path pattern to Dir.glob. (#9420, thanks @straight-shoota)
    • ๐Ÿ Implement File#fsync on Windows. (#9257, thanks @kubo)
    • โ™ป๏ธ Refactor Path regarding empty and .. (#9137, thanks @straight-shoota)

    Networking

    • (breaking-change) Make IO#skip, IO#write returns the number of bytes it skipped/written as Int64. (#9233, #9363, thanks @bcardiff)
    • (breaking-change) Improve error handling and logging in HTTP::Server. (#9115, #9034, thanks @waj, @straight-shoota)
    • (breaking-change) Change HTTP::Request#remote_address type to Socket::Address?. (#9210, thanks @waj)
    • ๐Ÿ›  Fix flush methods to always flush underlying IO. (#9320, thanks @straight-shoota)
    • ๐Ÿ›  Fix HTTP::Server sporadic failure in SSL handshake. (#9177, thanks @waj)
    • WebSocket shouldn't reply with same close code. (#9313, thanks @waj)
    • Ignore response body during WebSocket handshake. (#9418, thanks @waj)
    • Treat cookies which expire in this instant as expired. (#9061, thanks @RX14)
    • Set sync or flush_on_newline for standard I/O on Windows. (#9207, thanks @kubo)
    • Prefer HTTP basic authentication in OAuth2 client. (#9127, thanks @crush-157)
    • โฌ†๏ธ Defer request upgrade in HTTP::Server (aka: WebSockets). (#9243, thanks @waj)
    • ๐Ÿ‘Œ Improve URI::Punycode, HTTP::WebSocketHandler, HTTP::Status documentation. (#9068, #9130, #9180, thanks @Blacksmoke16, @dscottboggs, @wontruefree)
    • โœ‚ Remove HTTP::Params::Builder#to_s, use underlying IO directly. (#9319, thanks @straight-shoota)
    • ๐Ÿ›  Fixed some regular failing specs in multi-thread mode. (#9412, thanks @bcardiff)

    Crypto

    • ๐Ÿ”’ (security) Update SSL server secure defaults. (#9026, thanks @straight-shoota)
    • Add LibSSL NO_TLS_V1_3 option. (#9350, thanks @lun-4)

    ๐ŸŒฒ Logging

    • (breaking-change) Rename Log::Severity::Warning to Warn. Drop Verbose. Add Trace and Notice. (#9293, #9107, #9316, thanks @bcardiff, @paulcsmith)
    • (breaking-change) Allow local data on entries via Log::Metadata and redesign Log::Context. (#9118, #9227, #9150, #9157, thanks @bcardiff, @waj)
    • (breaking-change) Split top-level Log::Metadata from Log::Metadata::Value, drop immutability via clone, improve performance. (#9295, thanks @bcardiff)
    • (breaking-change) Rework Log.setup_from_env and defaults. (#9145, #9240, thanks @bcardiff)
    • โž• Add Log.capture spec helper. (#9201, thanks @bcardiff)
    • ๐ŸŒฒ Redesign Log::Formatter. (#9211, thanks @waj)
    • โž• Add to_json for Log::Context. (#9101, thanks @paulcsmith)
    • โž• Add Log::IOBackend#new with formatter named argument. (#9105, #9434, thanks @paulcsmith, @bcardiff)
    • ๐Ÿ‘ Allow nil as context raw values. (#9121, thanks @bcardiff)
    • โž• Add missing Log#with_context. (#9058, thanks @bcardiff)
    • ๐Ÿ›  Fix types referred in documentation. (#9117, thanks @bcardiff)
    • ๐Ÿ‘ Allow override context within logging calls. (#9146, thanks @bcardiff)
    • Check severity before backend. (#9400, thanks @asterite)

    Concurrency

    System

    • (breaking-change) Deprecate Process#kill, use Process#signal. (#9006, thanks @oprypin, @jan-zajic)
    • Process raises IO::Error (or subclasses). (#9340, thanks @waj)
    • โž• Add Process.quote and fix shell usages in the compiler. (#9043, #9369, thanks @oprypin, @bcardiff)
    • ๐Ÿ Implement Process support on Windows. (#9047, #9021, #9122, #9112, #9149, #9310, thanks @oprypin, @RX14, @kubo, @jan-zajic)
    • ๐Ÿ›  Fix compile-time checking of dup3/clock_gettime methods definition. (#9407, thanks @asterite)
    • ๐Ÿ‘‰ Use Int64 as portable Process.pid type. (#9019, thanks @oprypin)

    โš™ Runtime

    • (breaking-change) Deprecate top-level fork. (#9136, thanks @bcardiff)
    • (breaking-change) Move Debug to Crystal namespace. (#9176, thanks @bcardiff)
    • ๐Ÿ›  Fix segfaults when static linking with musl. (#9238, thanks @waj)
    • Allow calling at_exit inside at_exit. (#9388, thanks @asterite)
    • Rework DWARF loading and fix empty backtraces in musl. (#9267, thanks @waj)
    • โž• Add DragonFly(BSD) support. (#9178, thanks @mneumann)
    • โž• Add Crystal::System::Process to split out system-specific implementations. (#9035, thanks @oprypin)
    • ๐Ÿšš Move internal CallStack to Exception::CallStack. (#9076, thanks @bcardiff)
    • Specify pkg-config name for libevent. (#9395, thanks @jhass)

    Spec

    • Reference global Spec in be_a macro. (#9066, thanks @asterite)
    • โž• Add -h short flag to spec runner. (#9164, thanks @straight-shoota)
    • ๐Ÿ›  Fix crystal spec file paths on Windows. (#9234, thanks @oprypin)
    • โ™ป๏ธ Refactor spec hooks. (#9090, thanks @straight-shoota)

    Compiler

    • (breaking-change) Improve compiler single-file run syntax to make it shebang-friendly #!. (#9171, thanks @RX14)
    • (breaking-change) Use Process.quote for crystal env output. (#9428, thanks @MakeNowJust)
    • (breaking-change) Simplify Link annotation handling. (#8972, thanks @RX14)
    • ๐Ÿ›  Fix parsing of foo:"bar" inside call or named tuple. (#9033, thanks @asterite)
    • ๐Ÿ›  Fix parsing of anonymous splat and block arg. (#9113, thanks @MakeNowJust)
    • ๐Ÿ›  Fix parsing of unless inside macro. (#9024, #9167, thanks @MakeNowJust)
    • ๐Ÿ›  Fix parsing of \ (backslash + space) inside regex literal to (space). (#9079, thanks @MakeNowJust)
    • ๐Ÿ›  Fix parsing of ambiguous '+' and '-'. (#9194, thanks @max-codeware)
    • ๐Ÿ›  Fix parsing of capitalized named argument. (#9232, thanks @asterite)
    • ๐Ÿ›  Fix parsing of {[] of Foo, self.foo} expressions. (#9329, thanks @MakeNowJust)
    • ๐Ÿ›  Fix cast fun function pointer to Proc. (#9287, thanks @asterite)
    • ๐Ÿ—„ Make compiler warn on deprecated macros. (#9343, thanks @bcardiff)
    • ๐Ÿ‘ Basic support for Win64 C lib ABI. (#9387, thanks @oprypin)
    • ๐Ÿ Make the compiler able to run on Windows and compile itself. (#9054, #9062, #9095, #9106, #9307, thanks @oprypin, @Sija)
    • โž• Add docs regarding CRYSTAL_OPTS. (#9018, thanks @straight-shoota)
    • โœ‚ Remove Process.run("which") from compiler. (#9141, thanks @straight-shoota)
    • โ™ป๏ธ Refactor type parser. (#9208, thanks @MakeNowJust)
    • โ™ป๏ธ Refactor & clean-up in compiler. (#8781, #9195, thanks @rhysd, @straight-shoota)
    • โ™ป๏ธ Refactor CrystalPath::Error. (#9359, thanks @straight-shoota)
    • โ™ป๏ธ Refactor and improvements on spec_helper. (#9367, #9059, #9393, #9351, #9402, thanks @straight-shoota, @jhass, @oprypin)
    • Split general ABI specs from x86_64-specific ones, run on every platform. (#9384, thanks @oprypin)

    Language semantics

    • ๐Ÿ›  Fix RegexLiteral#to_s output when first character of literal is whitespace. (#9017, thanks @MakeNowJust)
    • ๐Ÿ›  Fix autocasting in multidispatch. (#9004, thanks @asterite)
    • ๐Ÿ›  Fix propagation of annotations into other scopes. (#9125, thanks @asterite)
    • ๐Ÿ›  Fix yield computation inside macro code. (#9324, thanks @asterite)
    • ๐Ÿ›  Fix incorrect type generated with as? when type is a union. (#9417, #9435, thanks @asterite)
    • Don't duplicate instance var in inherited generic type. (#9433, thanks @asterite)
    • Ensure type_vars works for generic modules. (#9161, thanks @toddsundsted)
    • 0๏ธโƒฃ Make autocasting work in default values against unions. (#9366, thanks @asterite)
    • Skip no closure check for non-Crystal procs. (#9248, thanks @jhass)

    Debugger

    • ๐Ÿ‘Œ Improve debugging support. (#8538, thanks @skuznetsov)
    • ๐Ÿšš Move recent additions to DIBuilder to LLVMExt. (#9114, thanks @bcardiff)

    Tools

    Formatter

    • ๐Ÿ›  Fix formatting of regex after some comments. (#9109, thanks @MakeNowJust)
    • ๐Ÿ›  Fix formatting of &.!. (#9391, thanks @MakeNowJust)
    • Avoid crash on heredoc with interpolations. (#9382, thanks @MakeNowJust)
    • โ™ป๏ธ Refactor: code clean-up. (#9231, thanks @MakeNowJust)

    Doc generator

    • ๐Ÿ›  Fix links to methods with String default values. (#9200, thanks @bcardiff)
    • ๐Ÿ›  Fix syntax highlighting of heredoc. (#9396, thanks @MakeNowJust)
    • ๐Ÿ“„ Correctly attach docs before annotations to following types. (#9332, thanks @asterite)
    • ๐Ÿ‘ Allow annotations and :ditto: in macro. (#9341, thanks @bcardiff)
    • โž• Add project name and version to API docs. (#8792, thanks @straight-shoota)
    • โž• Add version selector to API docs. (#9074, #9187, #9250, #9252, #9254, thanks @straight-shoota, @bcardiff)
    • ๐Ÿ‘‰ Show input type path instead of full qualified path on generic. (#9302, thanks @MakeNowJust)
    • โœ‚ Remove README link in API docs. (#9082, thanks @straight-shoota)
    • โœ‚ Remove special handling for version tags in docs generator. (#9083, thanks @straight-shoota)
    • Refactor is_crystal_repo based on project name. (#9070, thanks @straight-shoota)
    • โ™ป๏ธ Refactor Docs::Generator source link generation. (#9119, #9305, thanks @straight-shoota)

    Playground

    • ๐Ÿ‘ Allow building compiler without 'playground', to avoid dependency on sockets. (#9031, thanks @oprypin)
    • โž• Add support to jquery version 3. (#9028, thanks @deiv)

    Others

    • CI improvements and housekeeping. (#9012, #9129, #9242, #9370, thanks @bcardiff)
    • โšก๏ธ Update to Shards 0.11.1. (#9446, thanks @bcardiff)
    • Tidy up Makefile and crystal env output. (#9423, thanks @bcardiff)
    • Always include lib directory in the CRYSTAL_PATH. (#9315, thanks @waj)
    • Use SOURCE_DATE_EPOCH only to determine compiler date. (#9088, thanks @straight-shoota)
    • ๐Ÿ Win CI: Bootstrap Crystal, build things on Windows, publish the binary. (#9123, #9155, #9144, #9346, thanks @oprypin)
    • Regenerate implementation tool sample. (#9003, thanks @nulty)
    • Avoid requiring non std-lib spec spec_helper. (#9294, thanks @bcardiff)
    • ๐Ÿ‘Œ Improve grammar and fix typos. (#9087, #9212, #9368, thanks @MakeNowJust, @j8r)
    • ๐Ÿ“„ Hide internal functions in docs. (#9410, thanks @bcardiff)
    • Advertise full crystal spec command for running a particular spec. (#9103, thanks @paulcsmith)
    • โšก๏ธ Update README. (#9225, #9163, thanks @danimiba, @straight-shoota)
    • ๐Ÿ›  Fix LICENSE and add NOTICE file. (#3903, thanks @MakeNowJust)
  • v0.34.0

    April 06, 2020

    Language changes

    • (breaking-change) Exhaustive case expression check added, for now it produces warnings. (#8424, #8962, thanks @asterite, @Sija)
    • Let Proc(T) be used as a Proc(Nil). (#8969, #8970, thanks @asterite)

    Standard library

    • (breaking-change) Replace Errno, WinError, IO::Timeout with RuntimeError, IO::TimeoutError, IO::Error, File::Error, Socket::Error, and subclasses. (#8885, thanks @waj)
    • (breaking-change) Replace Logger module in favor of Log module. (#8847, #8976, thanks @bcardiff)
    • (breaking-change) Move Adler32 and CRC32 to Digest. (#8881, thanks @bcardiff)
    • (breaking-change) Remove DL module. (#8882, thanks @bcardiff)
    • Enable more win32 specs. (#8683, #8822, thanks @straight-shoota)
    • ๐Ÿš€ Make SemanticVersion::Prerelease comparable. (#8991, thanks @MakeNowJust)
    • ๐Ÿ‘‰ Use flag?(:i386) instead of obsolete flag?(:i686). (#8863, thanks @bcardiff)
    • โœ‚ Remove Windows workaround using vsnprintf. (#8942, thanks @oprypin)
    • ๐Ÿ›  Fixed docs broken link to ruby's prettyprint source. (#8915, thanks @matthin)
    • โšก๏ธ Update OptionParser example to exit on --help. (#8927, thanks @vlazar)

    Numeric

    • ๐Ÿ›  Fixed Float32#to_s corner-case. (#8838, thanks @toddsundsted)
    • Fixed make Big*#to_u raise on negative values. (#8826, thanks @Sija)
    • Fixed BigDecimal#to_big_i regression. (#8790, thanks @Sija)
    • โž• Add Complex#round. (#8819, thanks @miketheman)
    • Add Int#bit_length and BigInt#bit_length. (#8924, #8931, thanks @asterite)
    • ๐Ÿ›  Fixed docs of Int#gcd. (#8894, thanks @nard-tech)

    Text

    • (breaking-change) Deprecate top-level with_color in favor of Colorize.with. (#8892, #8958, thanks @bcardiff, @oprypin)
    • โž• Add overloads for String#ljust, String#rjust and String#center that take an IO. (#8923, thanks @asterite)
    • โž• Add missing Regex#hash and Regex::MatchData#hash. (#8986, thanks @MakeNowJust)
    • โฌ†๏ธ Upgrade Unicode to 13.0.0. (#8906, thanks @Blacksmoke16)
    • โช Revert deprecation of String#codepoint_at. (#8902, thanks @vlazar)
    • ๐Ÿšš Move Iconv to Crystal namespace. (#8890, thanks @bcardiff)

    Collections

    • ๐Ÿ›  Fixed make Range#size raise on an open range. (#8829, thanks @Sija)
    • โž• Add Enumerable#empty?. (#8960, thanks @Sija)
    • ๐ŸŽ (performance) Optimized Implementation of Array#fill for zero Values. (#8903, thanks @toddsundsted)
    • โ™ป๏ธ Refactor Reflect to an Enumerable private definition. (#8884, thanks @bcardiff)

    Serialization

    • (breaking-change) Rename YAML::Builder.new with block to YAML::Builder.build. (#8896, thanks @straight-shoota)
    • โž• Add XML.build_fragment. (#8813, thanks @straight-shoota)
    • โž• Add CSV#rewind. (#8912, thanks @asterite)
    • Add Deque#from_json and Deque#to_json. (#8850, thanks @carlhoerberg)
    • ๐Ÿ— Call to IO#flush on CSV, INI, JSON, XML, and YAML builders. (#8876, thanks @asterite)
    • โž• Add docs to Object.from_yaml. (#8800, thanks @wowinter13)

    Time

    • (breaking-change) Improve Time::Span initialization API with mandatory named arguments. (#8257, #8857, thanks @dnamsons, @bcardiff)
    • โž• Add Time::Span#total_microseconds. (#8966, thanks @vlazar)

    Files

    • ๐Ÿ›  Fixed multi-thread race condition by setting fd to -1 on closed File/Socket. (#8873, thanks @bcardiff)
    • ๐Ÿ›  Fixed File.dirname with unicode chars. (#8911, thanks @asterite)
    • Add IO::Buffered#flush_on_newline back and set it to true for non-tty. (#8935, thanks @asterite)
    • Forward missing methods of IO::Hexdump to underlying IO. (#8908, thanks @carlhoerberg)

    Networking

    • (breaking-change) Correctly support WebSocket close codes. (#8975, #8981, thanks @RX14, @Sija)
    • ๐Ÿ‘‰ Make HTTP::Client return empty body_io if content-length is zero. (#8503, thanks @asterite)
    • ๐Ÿ›  Fixed UDP specs in the case of a local firewall. (#8817, thanks @RX14)
    • ๐Ÿ›  Fixed MIME spec examples to not collide with actual registry. (#8795, thanks @straight-shoota)
    • ๐Ÿ›  Fixed UNIXServer, and HTTP::WebSocket specs to ensure server is accepting before closing. (#8755, #8879, thanks @bcardiff)
    • โž• Add type annotation to tls argument in HTTP. (#8678, thanks @j8r)
    • โž• Add Location to HTTP::Request common header names. (#8992, thanks @mamantoha)

    Concurrency

    • โž• Add docs on Future regarding exceptions. (#8860, thanks @rdp)
    • Disable occasionally failing Thread specs on musl. (#8801, thanks @straight-shoota)

    System

    • ๐Ÿ›  Fixed typo on src/signal.cr. (#8805, thanks @lbguilherme)

    โš™ Runtime

    • ๐Ÿ›  Fixed exceptions not being inspectable when running binary from PATH. (#8807, thanks @willhbr)
    • ๐Ÿšš Move AtExitHandlers to Crystal namespace. (#8883, thanks @bcardiff)

    Compiler

    • (breaking-change) Drop disable_overflow compiler flag. (#8772, thanks @Sija)
    • ๐Ÿ›  Fixed url in "can't infer block return type" error message. (#8869, thanks @nilium)
    • ๐Ÿ›  Fixed typo in math interpreter error message. (#8941, thanks @j8r)
    • 0๏ธโƒฃ Use CRYSTAL_OPTS environment variable as default compiler options. (#8900, thanks @bcardiff)
    • โš  Avoid using the default --exclude-warnings value if some is specified. (#8899, thanks @bcardiff)
    • 0๏ธโƒฃ Honor LIBRARY_PATH as default library path, and allow linking with no explicit /usr/lib:/usr/local/lib paths. (#8948, thanks @bcardiff)
    • ๐Ÿ›  Fix Windows LLVM globals codegen in non-single-module mode. (#8978, thanks @oprypin)
    • โž• Add support for LLVM 10. (#8940, thanks @RX14)
    • โœ‚ Remove redundant calls to Object.to_s in interpolation in compiler's code. (#8947, thanks @veelenga)

    Language semantics

    • Type as NoReturn if calling method on abstract class with no concrete subclasses. (#8870, thanks @asterite)

    Tools

    • โž• Add crystal init name validation. (#8737, thanks @straight-shoota)

    Doc generator

    • โš  Show warnings on docs command. (#8880, thanks @bcardiff)

    Others

    • CI improvements and housekeeping. (#8804, #8811, #8982, thanks @bcardiff, @oprypin)
    • โšก๏ธ Update to Shards 0.10.0. (#8988, thanks @bcardiff)
    • ๐Ÿ›  Fix pretty_json sample. (#8816, thanks @asterite)
    • ๐Ÿ›  Fix typos throughout the codebase. (#8971, thanks @Sija)
  • v0.33.0

    February 14, 2020

    Language changes

    Macros

    • โž• Add TypeNode#name(generic_args : BoolLiteral) to return TypeNode's name with or without type vars. (#8483, thanks @Blacksmoke16)

    Standard library

    • (breaking-change) Remove several previously deprecated methods and modules: PartialComparable, Crypto::Bcrypt::Password#==, HTTP::Server::Response#respond_with_error, JSON::PullParser::Kind#==, Symbol#==(JSON::PullParser::Kind), JSON::Token#type, String#at, Time.new, Time.now, Time.utc_now, URI.escape, URI.unescape. (#8646, #8596, thanks @bcardiff, @Blacksmoke16)
    • ๐Ÿ›  Fixed docs wording. (#8606, #8784, thanks @fxn)
    • โž• Add Object#in?. (#8720, #8723, thanks @Sija)
    • ๐Ÿ‘ Allow to create an enum from a symbol. (#8634, thanks @bew)
    • โž• Add VaList#next for getting the next element in a variadic argument list. (#8535, #8688, thanks @ffwff, @RX14)
    • โ™ป๏ธ Refactor ARGF implementation. (#8593, thanks @arcage)
    • ๐Ÿ›  Fixed specs of Colorize on dumb terminal. (#8673, thanks @oprypin)
    • ๐Ÿ›  Fixed some specs on Win32. (#8670, thanks @straight-shoota)

    Numeric

    • โž• Add BigInt#unsafe_shr. (#8763, thanks @asterite)
    • โ™ป๏ธ Refactor Float#fdiv to use binary primitive. (#8662, thanks @bcardiff)

    Text

    • ๐Ÿ›  Fixed \u0000 wrongly added on String#sub(Hash) replaces last char. (#8644, thanks @mimame)

    Collections

    • ๐Ÿ›  Fixed Enumerable#zip to work with union types. (#8621, thanks @asterite)
    • ๐Ÿ›  Fixed docs regarding Hash's initial_capacity. (#8569, thanks @r00ster91)

    Serialization

    • ๐Ÿ‘Œ Improved JSON deserialization into union types. (#8689, thanks @KimBurgess)
    • ๐Ÿ›  Fixed expected error message in libxml2 error spec. (#8699, thanks @straight-shoota)
    • ๐Ÿ›  Fixed JSON::PullParser overflow handling. (#8698, thanks @KimBurgess)
    • ๐Ÿ›  Fixed JSON::Any#dig?/YAML::Any#dig? on non-structure values. (#8745, thanks @Sija)

    Time

    Files

    • (breaking-change) Deprecate File::Info#owner, and File::Info#group; use owner_id, and group_id. (#8007, thanks @j8r)
    • ๐Ÿ›  Fixed Path.new receiving Path as first argument. (#8753, thanks @straight-shoota)
    • ๐Ÿ›  Fixed File.size and File.info to work with Path parameters. (#8625, thanks @snluu)
    • ๐Ÿ›  Fixed Path specs when ENV["HOME"] is unset. (#8667, thanks @straight-shoota)
    • Refactor Dir.mkdir_p to use Path#each_parent and make it work on Win32. (#8668, thanks @straight-shoota)
    • ๐Ÿ›  Fixed IO::MultiWriter specs to close file before reading/deleting it. (#8674, thanks @oprypin)

    Networking

    • ๐Ÿ›  Fixed invalid call to libevent and race conditions on closed IO when resuming readable/writable event. (#8707, #8733, thanks @bcardiff)
    • ๐Ÿ›  Fixed unexpected EOF in terminated SSL connection. (#8540, thanks @rdp)
    • ๐Ÿ›  Fixed HTTP::Cookie to support Int64 max-age values. (#8759, thanks @asterite)
    • ๐Ÿ‘Œ Improve error message for getaddrinfo failure. (#8498, thanks @rdp)
    • Make IO::SysCall#wait_readable and IO::SysCall#wait_writable public, yet :nodoc:. (#7366, thanks @stakach)
    • โ™ป๏ธ Refactor StaticFileHandler to use Path. (#8672, thanks @straight-shoota)
    • โœ‚ Remove fixed date in spec. (#8640, thanks @bcardiff)
    • โœ‚ Remove non-portable error message in TCPServer spec. (#8702, thanks @straight-shoota)

    Crypto

    Concurrency

    System

    • Enable system module for Win32 in prelude. (#8661, thanks @straight-shoota)
    • Handle exceptions raised at __crystal_sigfault_handler. (#8743, thanks @waj)

    โš™ Runtime

    • ๐Ÿ›  Fixed wrongly collected exception object by the GC. Ensure LibUnwind::Exception struct is not atomic. (#8728, thanks @waj)
    • ๐Ÿ›  Fixed reporting of non-statement rows in DWARF backtrace. (#8499, thanks @rdp)
    • โž• Add top level exception handler. (#8735, #8791, thanks @waj)
    • Try to open stdio in non-blocking mode. (#8787, thanks @waj)
    • ๐Ÿ‘ Allow Crystal::System.print_error to use printf like format. (#8786, thanks @bcardiff)

    Spec

    Compiler

    • (breaking-change) Drop support for previously deprecated comma separators in enums and other cleanups. (#8657, thanks @bcardiff)
    • (breaking-change) Drop uppercase F32 and F64 float number suffixes. (#8782, thanks @rhysd)
    • ๐Ÿ›  Fixed memory corruption issues by using LLVM's memset and memcpy that matches target machine. (#8746, thanks @bcardiff)
    • ๐Ÿ›  Fixed ICE when trying to add type inside annotation. (#8628, thanks @asterite)
    • ๐Ÿ›  Fixed ICE on typeof in an unused block. (#8695, thanks @asterite)
    • ๐Ÿ›  Fixed ICE in case of wrong target triple. (#8710, thanks @Sija)
    • ๐Ÿ›  Fixed ICE when raising a macro exception with empty message. (#8654, thanks @jan-zajic)
    • ๐Ÿ›  Fixed parser bug macro with "eenum" in it. (#8760, thanks @asterite)
    • ๐Ÿ”„ Change CRYSTAL_PATH to allow shards to override std-lib. (#8752, thanks @bcardiff)

    Language semantics

    • ๐Ÿ›  Fixed missing virtualization of Proc pointer. (#8757, thanks @asterite)
    • ๐Ÿ›  Fixed type of vars after begin/rescue if all rescue are unreachable. (#8758, thanks @asterite)
    • ๐Ÿ›  Fixed visibility propagation to macro expansions in all cases. (#8762, #8796, thanks @asterite)

    Tools

    Formatter

    • ๐Ÿ›  Fixed indent after comment inside indexer. (#8627, thanks @asterite)
    • ๐Ÿ›  Fixed indent of comments at the end of a proc literal. (#8778, thanks @asterite)
    • ๐Ÿ›  Fixed crash when formating comment after macro. (#8697, thanks @asterite)
    • ๐Ÿ›  Fixed crash when formating exp.!. (#8768, thanks @asterite)
    • โœ‚ Removes unnecessary escape sequences. (#8619, thanks @RX14)

    Doc generator

    • (breaking-change) Deprecate ditto and nodoc in favor of :ditto: and :nodoc:. (#6362, thanks @j8r)
    • ๐Ÿ“„ Skip creation of docs/ dir when not needed. (#8718, thanks @Sija)

    Others

  • v0.32.1

    December 18, 2019

    Standard library

    Collections

    • Fixed docs of Enumerable#each_cons_pair and Iterator#cons_pair. (#8585, thanks @arcage)

    Networking

    • ๐Ÿ›  Fixed HTTP::WebSocket's on_close callback is called for all errors. (#8552, thanks @stakach)
    • ๐Ÿ›  Fixed sporadic failure in specs with OpenSSL 1.1+. (#8582, thanks @rdp)

    Compiler

    Language semantics

    • Combine contiguous string literals before string interpolation. (#8581, thanks @asterite)
  • v0.32.0

    December 11, 2019

    Language changes

    • ๐Ÿ‘ Allow boolean negation to be written also as a regular method call expr.!. (#8445, thanks @jan-zajic)

    Macros

    • โž• Add TypeNode#class_vars to list class variables of a type in a macro. (#8405, thanks @jan-zajic)
    • โž• Add TypeNode#includers to get an array of types a module is directly included in. (#8133, thanks @Blacksmoke16)
    • Add ArrayLiteral#map_with_index and TupleLiteral#map_with_index. (#8049, thanks @Blacksmoke16)
    • โž• Add docs for ArrayLiteral#reduce. (#8379, thanks @jan-zajic)
    • โž• Add lower: named argument to StringLiteral#camelcase. (#8429, thanks @Blacksmoke16)

    Standard library

    Numeric

    • ๐Ÿ›  Fixed % and Int#remainder edge case of min int value against -1. (#8321, thanks @asterite)
    • ๐Ÿ›  Fixed Int#gcd types edge case and improve performance. (#7996, #8419, thanks @yxhuvud, @j8r)
    • โž• Add Int#bits for accessing bit ranges. (#8165, thanks @stakach)
    • ๐Ÿ‘ Allow Number#round with UInt argument. (#8361, thanks @igor-alexandrov)

    Text

    Collections

    • (breaking-change) Deprecate Enumerable#grep, use Enumerable#select. (#8452, thanks @j8r)
    • ๐Ÿ›  Fixed Enumerable#minmax, #min, #max for partially comparable values. (#8490, thanks @TedTran2019)
    • ๐Ÿ›  Fixed Hash#rehash. (#8450, thanks @asterite)
    • ๐Ÿ›  Fixed Array range assignment index out of bounds. (#8347, thanks @asterite)
    • ๐Ÿ›  Fixed endless ranged support for String#[]? and Array#[]?. (#8567, thanks @KarthikMAM)
    • Add Hash#compare_by_identity and Set#compare_by_identity. (#8451, thanks @asterite)
    • Add Enumerable#each_cons_pair and Iterator#cons_pair yielding a tuple. (#8332, thanks @straight-shoota)
    • Add offset argument to all map_with_index methods. (#8264, thanks @asterite)
    • ๐ŸŽ (performance) Optimized version of Tuple#to_a. (#8265, thanks @asterite)
    • โž• Add docs to Hash.merge!(other : Hash, &). (#8380, thanks @jan-zajic)
    • โž• Add docs to Hash.select. (#8391, thanks @jan-zajic)
    • โž• Add docs and specs to Enumerable.reduce. (#8378, thanks @jan-zajic)

    Serialization

    • (breaking-change) Make XML::Reader#expand raise, introduce XML::Reader#expand? for former behavior. (#8186, thanks @Blacksmoke16)
    • ๐Ÿ‘ Allow JSON.mapping & YAML.mapping converter attribute to be applied to Array and Hash. (#8156, thanks @rodrigopinto)
    • Add use_json_discriminator and use_yaml_discriminator to choose type based on property value. (#8406, thanks @asterite)
    • Remove return type self restriction from Object.from_json and Object.from_yaml. (#8489, thanks @straight-shoota)

    Files

    • (breaking-change) Remove expand home (~) by default in File.expand_path and Path#expand, now opt-in argument. (#7903, thanks @didactic-drunk)
    • Fixed bugs in Path regarding #dirname, #each_part, #each_parent. (#8415, thanks @jan-zajic)
    • ๐Ÿ›  Fixed GZip::Reader and GZip::Writer to handle large data sizes. (#8421, thanks @straight-shoota)
    • ๐Ÿ›  Fixed File::Info#same_file? by providing access to 64 bit inode numbers. (#8355, thanks @didactic-drunk)

    Networking

    • ๐Ÿ›  Fixed HTTP::Response#mime_type returns nil on empty Content-Type header. (#8464, thanks @Sija)
    • ๐Ÿ›  Fixed handling of unidirectional SSL servers hang. (#8481, thanks @rdp)
    • โž• Add HTTP::Client#write_timeout. (#8507, thanks @Sija)
    • โšก๏ธ Updated mime type of .js files to text/javascript and include image/webp. (#8342, thanks @mamantoha)
    • โ™ป๏ธ Refactor websocket protocol GUID string. (#8339, thanks @vlazar)

    Crypto

    • (breaking-change) Enforce single-line results of OpenSSL::DigestBase#base64digest via Base64.strict_encode. (#8215, thanks @j8r)

    Concurrency

    System

    โš™ Runtime

    Spec

    • ๐Ÿ›  Fixed --fail-fast behaviour. (#8453, thanks @asterite)
    • โž• Add before, after, and around hooks. (#8302, thanks @asterite)
    • Restrict the type returned by should_not be_nil and others. (#8412, thanks @asterite)
    • โž• Add ability to randomize specs via --order random|<seed-value>. (#8310, thanks @Fryguy)
    • โž• Add specs for Spec filters. (#8242, thanks @Fryguy)
    • โž• Add ability to tag specs. (#8068, thanks @Fryguy)

    Compiler

    • ๐Ÿ›  Fixed musl libc detection (Alpine 3.10 regression bug). (#8330, thanks @straight-shoota)
    • ๐Ÿ›  Fixed pragmas handling in macros. (#8256, thanks @asterite)
    • ๐Ÿ›  Fixed parser crash for 'alias Foo?'. (#8282, thanks @oprypin)
    • ๐Ÿ›  Fixed parser error on newline before closing parenthesis. (#8320, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed generic subtypes edge cases triggering no target defs error. (#8417, thanks @asterite)
    • ๐Ÿ›  Fixed cleanup of local vars reachable by macros. (#8529, thanks @asterite)
    • โž• Add support for LLVM 9. (#8358, thanks @RX14)
    • โž• Add --mcmodel option to compiler. (#8363, thanks @ffwff)
    • Disallow instance_sizeof on union. (#8399, thanks @asterite)
    • โž• Add mention to crystal <command> --help in help. (#3628, thanks @rdp)
    • ๐Ÿ‘Œ Improve error message when a filename is misspelled. (#8500, thanks @rdp)
    • ๐Ÿ‘‰ Show full path of locally compiled Crystal. (#8486, thanks @rdp)
    • Code cleanups. (#8460, thanks @veelenga)

    Language semantics

    • ๐Ÿ›  Fixed method lookup priority when type alias of union is used. (#8258, thanks @asterite)
    • ๐Ÿ›  Fixed visibility modifiers in virtual types. (#8562, thanks @asterite)
    • ๐Ÿ›  Fixed sizeof(Bool). (#8273, thanks @asterite)

    Tools

    Formatter

    • ๐Ÿ›  Fixed indent in arguments. (#8315, thanks @MakeNowJust)
    • ๐Ÿ›  Fixed crash related to parenthesis on generic types. (#8501, thanks @asterite)

    Doc generator

    Playground

    • Do not collapse whitespaces in playground sidebar. (#8528, thanks @hugopl)

    Others

  • v0.31.1

    September 30, 2019

    Standard library

    Numeric

    • ๐Ÿ›  Fixed overflow in Random::Secure. (#8224, thanks @oprypin)

    Networking

    • โ†ช Workaround IO::Evented#evented_write invalid IndexError error. (#8239, thanks @bcardiff)

    Concurrency

    • ๐Ÿ‘‰ Use bdw-gc upstream patch for green threads support. (#8225, thanks @bcardiff)
    • โ™ป๏ธ Refactor Channel to use records instead of tuples. (#8227, thanks @asterite)

    Spec

    Compiler

    • ๐Ÿ›  Fix debug location information when emitting main code from module. (#8234, thanks @asterite)

    Language semantics

    • ๐Ÿ‘‰ Use virtual type for uninitialized. (#8221, thanks @asterite)
  • v0.31.0

    September 23, 2019

    Language changes

    • ๐Ÿ‘ Allow non-captured block args with type restriction using & : T -> U. (#8117, thanks @asterite)

    Macros

    • Ensure @type is devirtualized inside macros. (#8149, thanks @asterite)

    Standard library

    • (breaking-change) Remove Markdown from the std-lib. (#8115, thanks @asterite)
    • (breaking-change) Deprecate OptionParser#parse!, use OptionParser#parse. (#8041, thanks @didactic-drunk)
    • ๐Ÿ›  Fix example codes in multiple places. (#8194, thanks @maiha)

    Numeric

    • (breaking-change) Enable overflow by default. (#8170, thanks @bcardiff)
    • (breaking-change) Make / the arithmetic division for all types. (#8120, thanks @bcardiff)
    • Add BigDecimal# ** and BigRational#** (pow operator). (#7860, thanks @jwbuiter)
    • ๐Ÿ‘ป Avoid overflow exception in Number#round(digits, base). (#8204, thanks @bcardiff)
    • โ™ป๏ธ Refactor Int#divisible_by? for clarity. (#8045, thanks @yxhuvud)

    Text

    • ๐ŸŽ (performance) Minor String#lchop? ASCII-only optimization. (#8052, thanks @r00ster91)

    Collections

    • ๐ŸŽ (performance) Array optimizations for small number of elements. (#8048, thanks @asterite)
    • ๐ŸŽ (performance) Optimize Array#*. (#8087, thanks @asterite)
    • ๐ŸŽ (performance) Hash now uses an open addressing algorithm. (#8017, #8182, thanks @asterite)
    • ๐ŸŽ (performance) Optimize Hash#to_a, Hash#keys and Hash#values. (#8042, thanks @asterite)
    • ๐ŸŽ (performance) Add Hash#put and optimize Set#add?. (#8116, thanks @asterite)
    • ๐Ÿ›  Fixed Slice#== for some generic instantiations, add Slice#<=>. (#8074, thanks @asterite)
    • โž• Add docs on idempotence and methods involving eager evaluation in Iterator. (#8053, thanks @KimBurgess)
    • โž• Add Set#+. (#8121, thanks @sam0x17)
    • โ™ป๏ธ Refactor Hash to use integer division instead of float division. (#8104, thanks @asterite)

    Serialization

    • (breaking-change) Rename XML::Type to XML::Node::Type, introduce XML::Reader::Type. (#8134, thanks @asterite)
    • ๐Ÿ›  Fixed JSON and YAML parsing of NamedTuple with nilable fields. (#8109, thanks @asterite)
    • ๐Ÿ›  Fixed YAML to emit unicode characters as such. (#8132, thanks @asterite)
    • ๐Ÿ›  Fixed INI generation of empty sections. (#8106, thanks @j8r)

    Files

    • ๐ŸŽ (performance) Optimize Path#join by precomputing capacity if possible. (#8078, thanks @asterite)
    • ๐ŸŽ (performance) Optimize Path#join for the case of joining one single part. (#8082, thanks @asterite)
    • ๐ŸŽ (performance) Optimize Dir.glob. (#8081, thanks @asterite)
    • ๐Ÿ›  Fixed File.basename off-by-one corner-case. (#8119, thanks @ysbaddaden)
    • ๐Ÿ›  Fixed unneeded evaluation of Path.home on Path.expand. (#8128, thanks @asterite)
    • ๐Ÿ›  Fixed Zip::Writer STORED compression. (#8142, thanks @asterite)
    • ๐Ÿ›  Fixed missing check on ARGF if read_count is zero. (#8177, thanks @Blacksmoke16)

    Networking

    • (breaking-change) Replace HTTP::Server::Response#respond_with_error with #respond_with_status. (#6988, thanks @straight-shoota)
    • (breaking-change) Handle too long URIs and too large header fields in HTTP::Request.from_io and remove HTTP::Request::BadRequest. (#8013, thanks @straight-shoota)
    • ๐Ÿ†• Fixed memory leak from SSL_new if ssl_accept fails. (#8088, thanks @rdp)
    • ๐Ÿ›  Fixed WebSocket ipv6 hostname connection. (#8066, thanks @MrSorcus)
    • โž• Add URI#query_params method. (#8090, thanks @rodrigopinto)
    • โž• Add URI#resolve and URI#relativize. (#7716, thanks @straight-shoota)
    • โž• Add #clear, #delete, and #size methods to HTTP::Cookies. (#8107, thanks @sam0x17)
    • โ™ป๏ธ Refactor http/server_spec. (#8056, thanks @straight-shoota)
    • โ™ป๏ธ Refactor UDP specs to use random port. (#8139, thanks @waj)

    Concurrency

    • Multithreading. (#8112, thanks @waj)
    • Delay releasing of fiber stack in multi-thread mode. (#8138, thanks @waj)
    • โฑ Make Crystal::Scheduler.init_workers block until workers are ready. (#8145, thanks @bcardiff)
    • ๐Ÿ‘‰ Make Crystal::ThreadLocalValue thread-safe. (#8168, thanks @waj)
    • Let exec_recursive use a thread-local data structure. (#8146, thanks @asterite)
    • โž• Add explicit return types for some channel methods. (#8161, thanks @Blacksmoke16)
    • โœ‚ Remove the dedicated fiber to run the event loop. (#8173, thanks @waj)
    • ๐Ÿ›  Fix corruption of thread linked list. (#8196, thanks @waj)
    • โ†ช Workaround compile on win32 until fibers is implemented. (#8195, thanks @straight-shoota)

    System

    Spec

    Compiler

    • ๐Ÿ›  Fixed ICE on declarations inside fun. (#8076, thanks @asterite)
    • ๐Ÿ›  Fixed missing name_location of some calls. (#8192, thanks @asterite)
    • โš  Activate compiler warnings by default. (#8171, thanks @bcardiff)
    • ๐Ÿ‘Œ Improve return type mismatch error. (#8203, thanks @asterite)
    • ๐Ÿ‘Œ Improve for expression error. (#7641, thanks @r00ster91)

    Language semantics

    • ๐Ÿ›  Fixed abstract def check regarding generic ancestor lookup. (#8098, thanks @asterite)
    • ๐Ÿ›  Fixed missing virtualization of type arguments in Proc types. (#8159, thanks @asterite)
    • ๐Ÿ›  Fixed incorrect typing after exception handler. (#8037, thanks @asterite)
    • ๐Ÿ›  Fixed behaviour when a yield node can't be typed. (#8101, thanks @asterite)
    • ๐Ÿ›  Fixed offsetof on reference types. (#8137, thanks @mcr431)
    • ๐Ÿ‘ Allow rescue var to be closured. (#8143, thanks @asterite)
    • โ™ป๏ธ Refactor class var and constant initialization. (#8067, #8091, thanks @waj)
    • โž• Add runtime check for recursive initialization of class variables and constants. (#8172, thanks @waj)

    Tools

    Doc generator

    • ๐Ÿ›  Fixed link to constructors of another class. (#8110, thanks @asterite)
    • ๐Ÿ“„ Enable docs from previous def and/or ancestors to be inherited. (#6989, thanks @asterite)

    Others

  • v0.30.1

    August 12, 2019

    Standard library

    Numeric

    Networking

    • ๐Ÿ›  Fixed TCP socket leaking after failed SSL connect in HTTP::Client#socket. (#8025, thanks @straight-shoota)
    • Honor normalized header names for HTTP requests. (#8061, thanks @asterite)

    Concurrency

    • ๐Ÿ‘ Don't resume fibers directly from event loop callbacks (or support for libevent 2.1.11). (#8058, thanks @waj)

    Compiler

    Language semantics

    • Consider abstract method implementation in supertype for abstract method checks. (#8035, thanks @asterite)

    Tools

    Formatter

    • ๐Ÿ– Handle consecutive macro literals when subformatting. (#8034, thanks @asterite)
    • ๐Ÿ›  Fixed crash when formatting syntax error inside macro. (#8055, thanks @asterite)

    Others

    • ๐Ÿ“ฆ Use LLVM 6.0.1 for darwin official packages. (#7994, thanks @bcardiff)
    • Split std_specs in 32 bits CI. (#8065, thanks @bcardiff)
  • v0.30.0

    August 01, 2019

    Language changes

    Macros

    • โž• Add args/named_args macro methods to Annotations. (#7694, thanks @Blacksmoke16)
    • Unify resolve and types macro methods API for Type and Path for convenience. (#7970, thanks @asterite)

    Standard library

    • (breaking-change) Remove UUID#to_slice in favor of UUID#bytes to fix dangling pointer issues. (#7901, thanks @ysbaddaden)
    • ๐ŸŽ (performance) Improve Box of reference types. (#8016, thanks @waj)
    • ๐Ÿ›  Fixed initial seed of Random::ISAAC. (#7977, thanks @asterite)
    • ๐Ÿ›  Fixed mem intrinsics for aarch64. (#7983, thanks @drujensen)
    • โž• Add Benchmark.memory. (#7835, thanks @r00ster91)
    • ๐Ÿ‘ Allow setting default capacity for StringPool. (#7899, thanks @carlhoerberg)
    • โž• Add type restrictions to INI. (#7831, thanks @j8r)
    • ๐Ÿ›  Fixed Logger docs. (#7898, thanks @dprobinson)
    • ๐Ÿ›  Fix example codes in multiple places. (#8003, thanks @maiha)

    Numeric

    • ๐Ÿ›  Fixed incorrect Int#% overflow. (#7980, thanks @asterite)
    • Fixed inconsistency between Float#to_s and BigFloat#to_s, always show .0 for whole numbers. (#7982, thanks @Lasvad)

    Text

    • ๐Ÿ›  Fixed unicode alternate ranges generation. (#7924, thanks @asterite)

    Collections

    • โž• Add Enumerable#tally. (#7921, thanks @kachick)
    • โž• Add Enumerable#reduce? overload with not initial value. (#7941, thanks @miketheman)
    • ๐Ÿ›  Fix specs of Enumerable#min_by?. (#7919, thanks @kachick)

    Serialization

    • (breaking-change) JSON: use enums instead of symbols. (#7966, thanks @asterite)
    • ๐Ÿ›  Fixed YAML deserialization of String in a union type. (#7938, thanks @asterite)
    • ๐Ÿ— Validate element names in XML::Builder. (#7965, thanks @Blacksmoke16)
    • ๐Ÿ‘ Allow numeric keys in JSON (ie: Hash(Int32, String).from_json). (#7944, thanks @asterite)
    • โž• Add alias/merge methods to YAML::Builder and YAML::Nodes::Builder. (#7949, thanks @Blacksmoke16)

    Files

    Networking

    Crypto

    • Require openssl algorithm in pkcs5. (#7985, thanks @will)
    • ๐Ÿ›  Fixed cipher expectation in OpenSSL::SSL::Socket spec. (#7871, thanks @j8r)

    Concurrency

    • ๐Ÿ›  Fixed sysconf call on OpenBSD. (#7879, thanks @jcs)

    System

    Compiler

    • ๐Ÿ›  Fixed codegen of pointer.as(Nil). (#8019, thanks @asterite)
    • ๐Ÿ›  Fixed edge cases in parser and stringifier. (#7886, thanks @oprypin)
    • ๐Ÿ›  Fixed concrete_types for virtual metaclass and modules. (#7951, thanks @bcardiff)
    • ๐Ÿ›  Fixed incorrect remove_indirection in TypeDefType. (#7971, thanks @bcardiff)
    • Fixed missing CRYSTAL_SPEC_COMPILER_FLAGS usage in some more specs. (774768, thanks @bcardiff)
    • Revamp compile error formatting & output. (#7748, thanks @martimatix)
    • โž• Add support for LLVM 8. (#7987, thanks @bcardiff)
    • โž• Add support for LLVM 7. (#7986, thanks @bcardiff, @waj, @foutrelis, @wmoxam)
    • โž• Add debug log helper function for codegen. (#7935, #7937, thanks @bcardiff)
    • โ™ป๏ธ Refactor codegen of unions. (#7940, thanks @bcardiff)
    • ๐Ÿšš Move LLVMId from CodeGenVisitor to Program. (#7973, thanks @bcardiff)
    • โ™ป๏ธ Minor additions and refactors on for LLVM codegen. (#7972, thanks @bcardiff)
    • โž• Add bin/check-compiler-flag helper script. Add make clean_cache. (da3892, thanks @bcardiff)

    Language semantics

    • ๐Ÿ›  Fixed generic metaclass argument expansion. (#7916, thanks @asterite)
    • ๐Ÿ›  Fixed top-level private const not being scoped. (#7907, thanks @asterite)
    • ๐Ÿ›  Fixed enum overflow when declaring members. (#7881, thanks @asterite)
    • ๐Ÿ›  Fixed annotation lookup on generic types. (#7891, thanks @asterite)

    Tools

    Formatter

    Doc generator

    • ๐Ÿ‘ Allow rendering tags on methods without any docs. (#7952, thanks @Blacksmoke16)

    Others