github crystal-lang/crystal 1.18.0

one day ago

Features

lang

  • Support ProcPointers of lib funs with parameter types (#16089, thanks @HertzDevil)
  • (annotations) Print deprecation warning on types and aliases (#15962, thanks @ysbaddaden)
  • (annotations) Print deprecation warnings on deprecated method argument (#15999, thanks @ysbaddaden)
  • (macros) [breaking] Expand empty (Named)TupleLiteral to (Named)Tuple.new instead of {} (#16108, thanks @spuun)
  • (macros) Add ArrayLiteral#*, StringLiteral#* and TupleLiteral#* (#16154, #16206, thanks @jneen, @ysbaddaden)

stdlib

compiler

  • (cli) Add the ability to dump type information to a JSON file (#16027, thanks @HertzDevil)
  • (interpreter) Support Proc.new(Void*, Void*) in the interpreter (#16044, thanks @HertzDevil)
  • (interpreter:repl) Fully exit the process on exit! from REPL (#16171, thanks @jneen)
  • (semantic) Resolve types when guessing return type from class method overloads (#16118, thanks @HertzDevil)
  • (semantic) Guess instance variable types from global method calls (#16119, thanks @HertzDevil)

tools

Bugfixes

stdlib

compiler

  • (codegen) Never generate assignments to a block's underscore parameters (#16057, thanks @HertzDevil)
  • (codegen) Fix @[Primitive] codegen for typedefs (#16110, thanks @HertzDevil)
  • (interpreter) never generate assignments to a block's underscore parameters (#16058, thanks @HertzDevil)
  • (interpreter) Add writer.close_on_finalize = false for signal pipe (#16167, thanks @straight-shoota)
  • (interpreter:repl) Continue REPL prompt if input consists entirely of annotations (#16045, thanks @HertzDevil)
  • (parser) Disallow unterminated escaped heredoc without trailing newline (#16046, thanks @HertzDevil)
  • (parser) Require space, semicolon, or newline after class/module/etc. header (#13375, thanks @FnControlOption)
  • (parser) Fix parsing ReadInstanceVar in short block syntax (#16099, thanks @nobodywasishere)
  • (semantic) Pass through variable types unchanged in a while loop (#15980, thanks @HertzDevil)
  • (semantic) deprecation warning for (expanded) deprecated def (#15997, thanks @ysbaddaden)
  • (semantic) Copy annotations in Crystal::Arg#copy_without_location (#16008, thanks @ysbaddaden)
  • (semantic) Copy annotations in Crystal::Def#expand_default_arguments (#16007, thanks @ysbaddaden)
  • (semantic) Copy annotations in Crystal::Def#expand_new_default_arguments (#16013, thanks @ysbaddaden)
  • (semantic) Fix error message for StaticArray with non-integer generic argument N (#16037, thanks @straight-shoota)
  • (semantic) Resolve bound type parameters from generic superclass during path lookup (#10839, thanks @HertzDevil)
  • (semantic) [regression] Ensure hash literals are evaluated from left to right (#16124, thanks @HertzDevil)

Chores

stdlib

Performance

lang

stdlib

compiler

  • Inline Crystal.check_type_can_be_stored (#16130, thanks @HertzDevil)
  • (codegen) Group temporary variables by file name: compound array assignments (#16122, thanks @HertzDevil)

Refactor

stdlib

  • (concurrency) Refactor redundant begin ... end blocks (#16011, thanks @straight-shoota)
  • (networking) Reorder implementation of HTTP::Cookies#<< and []= (#16107, thanks @straight-shoota)
  • (runtime) Remove nilable pointers in Crystal::PointerPairingHeap (#15973, thanks @HertzDevil)
  • (runtime) Remove nilable pointer in Crystal::EventLoop::IOCP#@timer_packet (#15975, thanks @HertzDevil)
  • (runtime) Remove minimum in Fiber::ExecutionContext::Parallel (#15946, thanks @ysbaddaden)
  • (runtime) Pass fd implicitly to System::FileDescriptor and System::Socket (#16137, #16183, thanks @ysbaddaden)
  • (runtime) Drop custom implementation of Fiber::ExecutionContext::Concurrent (#16135, thanks @ysbaddaden)
  • (specs) Keep own colorization state in Spec::CLI (#15926, thanks @HertzDevil)
  • (text) Use ensure_suffix instead of manually checking for suffixes (#15858, thanks @MatheusRich)
  • (time) Remove the old Windows time zone name table (#16006, thanks @HertzDevil)

compiler

tools

other

Documentation

lang

stdlib

  • (benchmark) Add type restrictions to benchmark directory (#15688, thanks @Vici37)
  • (concurrency) Improve docs for Channel#close (#15910, thanks @anaPerezGhiglia)
  • (crypto) Fix doc example for Crypto::BCrypt.new(String, String, Int) (#15931, thanks @hugopl)
  • (crypto) Add type restrictions to crypto directory (#15694, thanks @Vici37)
  • (files) Add type restrictions to mime (#15834, thanks @Vici37)
  • (files) Fix IO::TimeoutError documentation use of deprecated read_timeout= (#16073, thanks @lachlan)
  • (files) Add type restrictions to io (#15698, thanks @Vici37)
  • (llvm) Deprecate each LLVM::ABI::* classes (#15989, thanks @ysbaddaden)
  • (log) Add type restrictions to Log directory (#15777, thanks @Vici37)
  • (networking) Add type restrictions to Oauth directory (#15687, thanks @Vici37)
  • (networking) Add type restrictions to http (#15710, thanks @Vici37)
  • (numeric) Add type restrictions to big (#15689, thanks @Vici37)
  • (runtime) Fix typo in Object docs (#16035, thanks @plambert)
  • (runtime) Tweak docs for Fiber::ExecutionContext (#16196, thanks @ysbaddaden)
  • (serialization) Add type restrictions to json (#15840, #16142, thanks @Vici37, @Sija)
  • (serialization) Add note about default constructor in *::Serializable (#16080, thanks @HertzDevil)
  • (system) Add type restrictions to args parameter in Process (#16031, thanks @BigBoyBarney)
  • (system) Add missing File::NotFoundError exception documentation for File.open (#15826, thanks @Fijxu)
  • (text) Fix return type definition of String#match_full! method (#16001, thanks @Sija)
  • (time) Update links to ISO-8601 to point to an archived version of the page (#15985, thanks @nobodywasishere)
  • (time) Improve docs for Time#to_local_in (#16041, thanks @straight-shoota)

Specs

stdlib

compiler

tools

Infrastructure

Don't miss a new crystal release

NewReleases is sending notifications on new releases.