github crystal-lang/crystal 1.16.0

latest releases: 1.17.1, 1.17.0, 1.16.3...
5 months ago

Features

lang

  • Support Slice.literal in the interpreter (#15531, thanks @HertzDevil)
  • Support Slice.literal with inferred element type (#15529, thanks @HertzDevil)
  • (macros) Error on TypeNode#instance_vars, #has_inner_pointers? macros in top-level scope (#15293, thanks @straight-shoota)
  • (macros) Support sizeof and alignof inside macros for stable types (#15497, thanks @HertzDevil)

stdlib

compiler

tools

Bugfixes

stdlib

  • (collection) Fix hash @indices can grow larger than Int32::MAX bytes (#15347, thanks @ysbaddaden)
  • (collection) Fix Tuple#to_a(&) for arbitrary block output type (#15431, thanks @straight-shoota)
  • (collection) Fix Range#size for unsigned edge cases (#14978, thanks @straight-shoota)
  • (collection) [breaking] Fix the return type of Enumerable#sum, #product for union elements (#15314, thanks @rvprasad)
  • (concurrency) Fix Reference#exec_recursive, #exec_recursive_clone to be fiber aware (#15361, thanks @ysbaddaden)
  • (concurrency) RFC 2: MT safe fiber context switch on ARM (#15582, thanks @ysbaddaden)
  • (crypto) Fix argument type for EVP_CIPHER_get_flags (#15392, thanks @miry)
  • (files) Never remove UNC share name in Path#dirname (#15583, thanks @HertzDevil)
  • (files) Fix File.exists? for special devices on Windows (#15587, thanks @HertzDevil)
  • (llvm) Fix LLVM version detection for -rc1 (#15410, thanks @HertzDevil)
  • (networking) [breaking] Fix parsing HTTP resource string that looks like absolute URL (#15499, thanks @straight-shoota)
  • (runtime) Fix pkg_config name for libgc bindings on FreeBSD (#15532, thanks @straight-shoota)
  • (runtime) RFC 2: MT safe fiber context switch on AArch64 (#15581, thanks @ysbaddaden)
  • (runtime) Add thread safety to at_exit (#15598, thanks @ysbaddaden)
  • (runtime) Remove top-level calls to LibGC.has_method? for backwards compat (#15635, thanks @straight-shoota)
  • (serialization) Fix Union.from_yaml to prioritize String for quoted scalar (#15405, thanks @straight-shoota)
  • (system) signal handler mustn't depend on the event loop (#15325, thanks @ysbaddaden)
  • (system) Corrects Windows lib lookup in case-sensitive OSes (#15362, thanks @luislavena)
  • (system) Fix permissions application in File.copy (#15520, thanks @straight-shoota)
  • (system) [security] Strip periods, spaces for batch file filtering on Windows (#15573, thanks @GeopJr)
  • (system) Extend Windows Process completion key's lifetime (#15597, thanks @HertzDevil)

compiler

tools

  • (formatter) Add uninitialized variables to formatter variable scopes (#15578, thanks @HertzDevil)

Chores

stdlib

compiler

Performance

stdlib

compiler

  • (codegen) Replace inline type IDs with global constants in LLVM IR (#15485, #15505, thanks @HertzDevil)
  • (codegen) Do not load Path call receiver if known to be pure load (#15488, thanks @HertzDevil)
  • (codegen) Only refer to LLVM symbol table in calls to Symbol#to_s (#15486, thanks @HertzDevil)
  • (debugger) Read all DWARF abbreviations tables in a single pass (#15515, thanks @HertzDevil)
  • (debugger) Use binary search to search DWARF line numbers (#15539, thanks @HertzDevil)
  • (debugger) Remove op_index and end_sequence from Crystal::DWARF::LineNumbers::Row (#15538, thanks @HertzDevil)

Refactor

stdlib

compiler

Documentation

lang

stdlib

compiler

other

Specs

stdlib

compiler

Infrastructure

Don't miss a new crystal release

NewReleases is sending notifications on new releases.