Skip to content

Releases: crystal-lang/crystal

1.21.0

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)
Read more

1.20.3

Choose a tag to compare

@ysbaddaden ysbaddaden released this 02 Jul 19:51
1.20.3
2f93147

Bugfixes

stdlib

  • (serialization) [security] add max_nesting to YAML::PullParser (#17107, thanks @ysbaddaden)
  • (serialization) [security] add alias vs anchor ratio check to YAML::PullParser (#17109, thanks @ysbaddaden)

Refactor

stdlib

Infrastructure

1.20.2

Choose a tag to compare

@straight-shoota straight-shoota released this 15 May 20:42
1.20.2
2482c62

Bugfixes

stdlib

  • (concurrency) [regression] Simplify Sync::Mutex#synchronize proc type constraints (#16904, #16937, thanks @ysbaddaden)
  • (runtime) Range#sample eventually loses randomness (#16909, thanks @ysbaddaden)

Infrastructure

1.20.1

Choose a tag to compare

@straight-shoota straight-shoota released this 29 Apr 20:09
1.20.1
e60210e

Bugfixes

stdlib

compiler

tools

  • (formatter) [regression] Revert "Refactor Formatter code for simplification" (#16885, thanks @straight-shoota)

Refactor

stdlib

Infrastructure

1.19.2

Choose a tag to compare

@ysbaddaden ysbaddaden released this 27 Apr 19:44
1.19.2
a9ca680

Security

stdlib

  • (networking) HTTP::Server is no longer vulnerable to request smuggling (#16862, thanks @ysbaddaden)

Bugfixes

stdlib

Infrastructure

1.20.0

Choose a tag to compare

@ysbaddaden ysbaddaden released this 17 Apr 09:40
1.20.0
c7d6de7

Security

stdlib

  • (networking) Fix HTTP::Server is no longer vulnerable to request smuggling (GHSA-wqh5-7w63-pm68)

Features

lang

  • (macros) Add #select and #reject to HashLiteral and NamedTupleLiteral (#16558, thanks @Blacksmoke16)
  • (macros) Refine error message for unsupported named arguments in macros (#16576, thanks @hahwul)

stdlib

compiler

tools

Bugfixes

stdlib

compiler

  • (codegen) Emit unreachable for inlined NoReturn returns ([#16690], thanks @kojix2)
  • (codegen) Fix ...
Read more

1.19.1

Choose a tag to compare

@ysbaddaden ysbaddaden released this 20 Jan 19:53
1.19.1
a3178c3

Bugfixes

stdlib

  • (concurrency) [regression] Fix kqueue timer duration calculation (#16581, thanks @skuznetsov)
  • (concurrency) [regression] time calculations in IOCP and Monitor thread (#16583, thanks @ysbaddaden)

Infrastructure

1.19.0

Choose a tag to compare

@ysbaddaden ysbaddaden released this 15 Jan 17:03
1.19.0
5a44077

Breaking changes

stdlib

Features

lang

stdlib

compiler

tools

Bugfixes

lang

  • (macros) Fix nested sigil delimiter parsing inside macros (#16266, thanks @HertzDevil)

stdlib

  • Fix OptionParser subcommand help to respect custom summary_indent ([#16334], thanks @kojix2)
  • (collection) Fix Hash methods to retain compare_by_identity flag ([#16356], thanks @andrykonchin)
  • (collection) Fix Hash methods and retaining default value ([...
Read more

1.18.2

Choose a tag to compare

@matiasgarciaisaia matiasgarciaisaia released this 21 Oct 18:20
1.18.2
635ca37

Bugfixes

stdlib

  • (files) [regression] Revert type restriction for IO#read_bytes (#16231, thanks @straight-shoota)
  • (runtime) Fix Fiber::ExecutionContext.default_workers_count to avoid taking into account unsupported values (#16227, thanks @Sija)

Infrastructure

1.18.1

Choose a tag to compare

@matiasgarciaisaia matiasgarciaisaia released this 17 Oct 17:13
1.18.1
d29a4d8

Bugfixes

stdlib

  • (networking) [regression] Revert adding type restrictions on HTTP::WebSocket#send etc. (#16218, thanks @straight-shoota)

compiler

Infrastructure