Skip to content

1.21.0

Latest

Choose a tag to compare

@straight-shoota straight-shoota released this 16 Jul 15:49
1.21.0
57cf7da

Breaking changes

stdlib

Features

lang

stdlib

compiler

tools

  • (docs-generator) Improve wording in warning about doc generator without LibXML2 (#16926, thanks @kojix2)

Bugfixes

stdlib

  • (cli) Fix summary wrapping condition in OptionParser (#16915, thanks @kojix2)
  • (cli) Avoid Process.exec on Windows and explicitly spawn subprocess (#17049, thanks @straight-shoota)
  • (collection) Fix Iterator#compact_map with EmptyIterator (#16928, thanks @straight-shoota)
  • (collection) Fix Iterator#compact_map with non-nilable compactor proc (#16927, thanks @straight-shoota)
  • (concurrency) Fix swapped atomic orderings in Sync::MU fast paths (#17063, thanks @stevegeek)
  • (llvm) Fix use line 0 for unknown debug location (#17013, thanks @straight-shoota)
  • (networking) Fix HTTP::Request.form_params? to recognize Content-Type and charset (#16934, #16971, thanks @swsch, @straight-shoota)
  • (networking) Fix HTTP::Client to retry for connection recovery only (#16981, thanks @straight-shoota)
  • (networking) Disable transport read-ahead for Kernel TLS sockets (#17053, thanks @jage)
  • (runtime) Fiber::ExecutionContext::Monitor compat with old Crystal releases (#17007, thanks @ysbaddaden)
  • (runtime) EventLoop::IoUring#open musn't set O_NONBLOCK when blocking (#17035, thanks @ysbaddaden)
  • (runtime) underperforming unlock conditions in Sync::MU (#17070, thanks @ysbaddaden)
  • (runtime) fdlock#try_close? must release ref after yielding to the block (#17089, thanks @ysbaddaden)
  • (runtime) Fiber::ExecutionContext.current? (#17092, thanks @ysbaddaden)
  • (runtime) Refactor Win32 iocp evloop (#17101, thanks @ysbaddaden)
  • (serialization) memory leak in XML::Node#each_namespace (#17038, thanks @ysbaddaden)
  • (system) skip Windows registry MIME entries with an invalid Content Type (#17106, thanks @SAY-5)
  • (text) Fix IO::Encoder#write when operating on long strings (#16797, thanks @jgaskins)

compiler

  • (cli) Remedy short-flag conflict for crystal spec -p (#17062, thanks @straight-shoota)
  • (codegen) Fix codegen treating distinct lib type aliases as the same type (#16961, thanks @stakach)
  • (interpreter) Add interpreter upcast_distinct for Pointer to Pointer (#16962, thanks @stakach)
  • (interpreter:repl) Fix auto-indentation in the REPL when typing classes. (#16910, thanks @I3oris)
  • (interpreter:repl) Fix interpreter multidispatch cache collision (#16958, thanks @stakach)
  • (parser) Fix lexing MacroVar syntax in literal (#16779, thanks @straight-shoota)
  • (parser) Fix parsing macro var without exps followed by macro expression (#16879, thanks @straight-shoota)
  • (parser) Fix parse parenthesized expression in block arg assignment (#16894, thanks @straight-shoota)
  • (parser) Do not merge nested Expression and ExceptionHandler (#16852, thanks @straight-shoota)
  • (parser) Fix parser silently ignoring &(...), &[...], &{...} in assignment (#16960, thanks @stakach)
  • (parser) Fix parser allow / and // immediately after self, nil, true, false (#16942, thanks @stakach)
  • (parser) Fix short block setter call end location (#17039, thanks @Sija)
  • (semantic) Fix freeze type of variable declared with out (#16870, thanks @straight-shoota)
  • (semantic) Fix lookup_matches_in_type to reject partial matches (#16867, thanks @straight-shoota)
  • (semantic) Fix location of double splat named tuple typenode entry locations (#16889, thanks @Blacksmoke16)
  • (semantic) Fix sizeof, offsetof as generic type argument in inferred ivar type (#16811, thanks @kojix2)
  • (semantic) Fix macro argument errors for path receiver calls (#16923, thanks @kojix2)
  • (semantic) Detect uninitialized ancestor ivars through macro_def initializers (#16959, thanks @stakach)
  • (semantic) Preserve nil_if_read? across while cond filters (#16963, thanks @stakach)
  • (semantic) Keep wider subclass observer when call owner narrows (#16947) (#16990, thanks @stakach)
  • (semantic) Symmetric common_descendent for two generic class types (#10831) (#16999, thanks @stakach)

tools

Chores

stdlib

Performance

stdlib

Refactor

stdlib

compiler

tools

other

Documentation

stdlib

other

Specs

stdlib

compiler

other

Infrastructure