Crystal 1.16.0 released: major updates in file matching, syntax, and execution contexts
Crystal (programming language) 1.16.0 has been released with 162 changes since version 1.15.1. A notable update is the revamped File.match? implementation, which now uses a new matching algorithm to address previous bugs while maintaining documented behaviors. Wildcard and globstar matching have been refined, with changes such as **/a now matching a directly and globstars matching full path segments. Pattern parsing has also improved, with subpatterns in branches respecting their syntax context and special character escapes being recognized correctly.
Additional changes include enhancements to character class grammar, now supporting ranges like [a-], which match both a and -. Parameter name suffixes (? and !) for methods, macros, and blocks are deprecated, with warnings issued to align with general variable naming rules. Enumerable methods #sum and #product now require explicit return types when dealing with union element types, shifting errors from runtime to compile time. HTTP::Request parsing of absolute URL-like resource strings has been corrected, potentially affecting existing code.
Environment handling for subcommands has been updated, and a new preview feature, Execution Contexts, supports multi-threaded or isolated contexts. Compiler CLI enhancements and documentation generator improvements have also been introduced, making Crystal 1.16.0 a significant update for developers.

