Skip to content

Releases: crystal-lang/crystal

1.12.1

11 Apr 12:33
1.12.1
4cea101
Compare
Choose a tag to compare

1.12.1 (2024-04-11)

Bugfixes

tools

  • (formatter) [regression] Fix formatter with whitespace before closing parenthesis (#14471, thanks @straight-shoota)

Infrastructure

1.12.0

09 Apr 13:12
1.12.0
aee9ab6
Compare
Choose a tag to compare

1.12.0 (2024-04-09)

Features

lang

  • Allow multiple parameters and blocks for operators ending in = (#14159, thanks @HertzDevil)

stdlib

compiler

  • Add CRYSTAL_CONFIG_CC compiler config (#14318, thanks @straight-shoota)
  • (cli) Respect NO_COLOR in the compiler (#14260, thanks @HertzDevil)
  • (cli) Respect --static on Windows (#14292, thanks @HertzDevil)
  • (cli) Allow --single-module and --threads for eval and spec (#14341, thanks @HertzDevil)
  • (codegen) Add --frame-pointers to control preservation of frame pointers (#13860, thanks @refi64)
  • (codegen) x86-64 Solaris / illumos support (#14343, thanks @HertzDevil)
  • (interpreter) Support @[Link]'s DLL search order in the interpreter on Windows (#14146, thanks @HertzDevil)
  • (interpreter) Automatically detect MSVC tools on Windows interpreter (#14391, thanks @HertzDevil)
  • (parser) Allow calling #[]= with a block using method syntax (#14161, thanks @HertzDevil)
  • (semantic) Change short_reference for top-level macros to ::foo (#14203, thanks @femto)

tools

Bugfixes

lang

  • (macros) Remove extra newline in top-level FunDef's string representation (#14212, thanks @HertzDevil)
  • (macros) Remove T* and T[N] macro interpolation behavior inside libs (#14215, thanks @HertzDevil)

stdlib

  • (collection) Fix Hash#update when default block also adds given key (#14417, thanks @HertzDevil)
  • (collection) Fix Hash#put_if_absent putting duplicate keys (#14427, thanks @HertzDevil)
  • (concurrency) Reserve stack space on non-main threads for crash recovery on Windows (#14187, thanks @HertzDevil)
  • (concurrency) Add memory barrier to Mutex#unlock on aarch64 (#14272, thanks @jgaskins)
  • (concurrency) init schedulers before we spawn fibers (#14339, thanks @ysbaddaden)
  • (files) Make FileUtils.mv work across filesystems on Windows (#14320, thanks @HertzDevil)
  • (llvm) Use correct string size for LLVM::Type#inline_asm (#14265, thanks @HertzDevil)
  • (llvm) Fix System V ABI for packed structs with misaligned fields (#14324, thanks @HertzDevil)
  • (networking) OpenSSL 3.x reports unexpected EOF as SSL error (#14219, thanks @ysbaddaden)
  • (numeric) Make equality between Complex and other numbers exact (#14309, thanks @HertzDevil)
  • (numeric) Fix #hash for the Big* number types (#14308, thanks @HertzDevil)
  • (runtime) Do not allocate memory in the segmentation fault signal handler (#14327, thanks @HertzDevil)
  • (runtime) Fix crash stack trace decoding on macOS (#14335, thanks @HertzDevil)
  • (runtime) Crystal::RWLock should be a struct (#14345, thanks @ysbaddaden)
  • (runtime) Fix min_by? in IOCP event loop #run_once (#14394, thanks @straight-shoota)
  • (serialization) XML::Reader: Disallow attributes containing null bytes (#14193, thanks @HertzDevil)
  • (serialization) Always call LibXML.xmlInitParser when requiring XML libraries (#14191, thanks @HertzDevil)
  • (system) Fix macro Crystal::LIBRARY_PATH.split when cross-compiling (#14330, thanks @HertzDevil)
  • (system) Add SA_RESTART flag to sigaction syscall (#14351, thanks @ysbaddaden)
  • (text) Add Nil return type restriction to String::Formatter#consume_substitution (#14430, thanks @straight-shoota)

compiler

  • (cli) build --no-codegen output file name error (#14239, thanks @apainintheneck)
  • (codegen) Do not handle inline assembly with "intel" flag as AT&T syntax ([#14264], thanks @HertzDevil)
  • (codegen) [breaking] Respect alignments above alignof(Void*) inside union values ([#14279], thanks @HertzDevil)
  • (codegen) Fix stack corruption in union-to-union casts ([#14289], thanks @HertzDevil)
  • (codegen) Don't copy DLL to output directory if file already exists ([#14315], thanks @HertzDevil)
  • (codegen) Fix Proc#call that takes and returns large extern structs by value ([#14323], thanks @HertzDevil)
  • (codegen) Never discard ivar initializer inside .allocate and .pre_initialize ([#14337], thanks @HertzDevil)
  • (codegen) Use separate names for constant and class variable internals ([#14445], thanks @HertzDevil)
  • (interpreter) fix fiber's resumable property ([#14252], thanks @ysbaddaden)
  • (interpreter) Ensure all constants only have one initializer in the interpreter ([#14381], thanks @HertzDevil)
  • (interpreter) Handle NaN comparisons in the interpreter ([#14441], thanks @HertzDevil)
  • (interpreter) Check UInt16#to_u8 for overflow in the interpreter ([#14436], thanks @HertzDevil)
  • (interpreter) Fix interpreter internal overflow for UInt128#to_f32 and #to_f32! ([#14437], thanks @HertzDevil)
  • (parser) Fix name locations of FunDef and External nodes ([#14267], thanks @HertzDevil)
  • (parser) Fix end locations of Alias nodes ([#14271], thanks @HertzDevil)

...

Read more

1.11.2

18 Jan 13:37
1.11.2
fda656c
Compare
Choose a tag to compare

Bugfixes

stdlib

  • (files) Fix missing cause parameter from IO::Error#initialize (#14242, thanks @straight-shoota)
  • (runtime) Always use %p for pointers in Crystal::System.print_error (#14186, thanks @HertzDevil)
  • (runtime) Fixup for always use %p for pointers in Crystal::System.print_error (#14221, thanks @HertzDevil)

Infrastructure

1.11.1

11 Jan 20:17
1.11.1
0aa3037
Compare
Choose a tag to compare

Bugfixes

stdlib

compiler

Infrastructure

1.11.0

08 Jan 20:09
1.11.0
95d04fa
Compare
Choose a tag to compare

Features

lang

stdlib

compiler

  • (codegen) Add incremental optimization levels (#13464, thanks @kostya)
  • (debugger) Support debug information for 64-bit or unsigned enums (#14081, thanks @HertzDevil)
  • (interpreter) Support instance_sizeof(T) in the interpreter (#14031, thanks @HertzDevil)
  • (interpreter) Support -dynamic.lib in Windows interpreter (#14143, thanks @HertzDevil)
  • (interpreter) Support absolute paths in CRYSTAL_INTERPRETER_LOADER_INFO (#14147, thanks @HertzDevil)
  • (interpreter) Add Crystal::Repl#parse_and_interpret (#14138, thanks @bcardiff)
  • (semantic) Change short_reference for top-level methods to ::foo (#14071, thanks @keshavbiswa)

tools

Bugfixes

stdlib

Read more

1.10.1

13 Oct 07:25
1.10.1
c6f3552
Compare
Choose a tag to compare

Bugfixes

stdlib

Infrastructure

1.10.0

09 Oct 16:03
1.10.0
9c011d7
Compare
Choose a tag to compare

Features

lang

stdlib

compiler

  • Experimental: Add Slice.literal for numeric slice constants (#13716, thanks @HertzDevil)

tools

Bugfixes

lang

  • (macros) Fix missing normalization of macro expressions (and others) (#13709, thanks @asterite)
  • (macros) Fix block parameter unpacking inside macros (#13813, thanks @HertzDevil)

stdlib

compiler

tools

  • (docs-generator) Fix octicon-link icon color on dark mode (#13670, thanks @GeopJr)
  • (docs-generator) Allow word breaks between module names in docs (#13827, thanks @nobodywasishere)
  • (docs-generator) Fix docs dark mode dropdown background on blink (#13840, thanks @GeopJr)
  • (init) Fix shard crystal version in crystal init (#13730, thanks @xendk)
  • (hierarchy): Fix byte sizes for Procs inside extern structs (#13711, thanks @HertzDevil)

Performance

stdlib

Refactor

stdlib

  • Do not use nilable Pointers (#13710, thanks @HertzDevil)
  • (collection) Use Set(T) instead of Hash(T, Bool) (#13611, thanks @HertzDevil)
  • (concurrency) Use Fiber.inactive inside Fiber#run's ensure block (#13701, thanks @HertzDevil)
  • (crypto) Use JSON::Serializable in scripts/generate_ssl_server_defaults.cr (#13667, thanks @HertzDevil)
  • (crypto) Refactor narrow OpenSSL requires for digest implementations (#13818, thanks @straight-shoota)
  • (networking) [deprecation] Add types to HTTP::StaticFileHandler (#13778, thanks @jkthorne)

compiler

  • Restrict some boolean properties to Bool in the compiler (#13614, thanks @HertzDevil)

Documentation

stdlib

Specs

stdlib

  • (numeric) Update specs for Int::Primitive.from_json (#13835, thanks @HertzDevil)
    -...
Read more

1.9.2

19 Jul 16:34
1.9.2
1908c81
Compare
Choose a tag to compare

Bugfixes

stdlib

1.9.1

17 Jul 14:34
1.9.1
c355a34
Compare
Choose a tag to compare

Bugfixes

stdlib

compiler

  • (codegen) Fix generated cc command for cross compile (#13661, thanks @fnordfish)

1.9.0

11 Jul 15:33
1.9.0
6f97ec7
Compare
Choose a tag to compare

Breaking

stdlib

Features

lang

stdlib

compiler

tools

  • (docs-generator) Add dark mode to docs (#13512, thanks @GeopJr)
  • (docs-generator) Add mobile support to docs (#13515, thanks @GeopJr)
  • (formatter) [security] Formatter: escape bi-directional control characters within strings (#13067, thanks @HertzDevil)

Bugfixes

stdlib

  • (collection) Fix Array#flatten to discard Iterator::Stop (#13388, thanks @straight-shoota)
  • (collection) Fix return type of Iterator#chunk and Enumerable#chunks without Drop (#13506, thanks @straight-shoota)
  • (collection) Fix Iterator#with_index(offset) with non-Int32 offset (#13612, thanks @HertzDevil)
  • (concurrency) Fix preview_mt infinite loop on Windows (#13419, thanks @HertzDevil)
  • (concurrency) Fix Atomic#max and #min for signed enums (#13524, thanks @HertzDevil)
  • (concurrency) Fix timeout events getting lost on Windows (#13525, thanks @HertzDevil)
  • (concurrency) Support Atomic(T)#compare_and_set when T is a reference union (#13565, thanks @HertzDevil)
  • (files) Fix Dir#info on Windows (#13395, thanks @HertzDevil)
  • (files) Windows: open standard streams in binary mode (#13397, thanks @HertzDevil)
  • (files) Fix File.info(File::NULL) on Windows (#13421, thanks @HertzDevil)
  • (files) Allow File.delete to remove read-only files on Windows (#13462, thanks @HertzDevil)
  • (files) Make fcntl defined on all platforms (#13495, thanks @HertzDevil)
  • (files) Allow Dir.delete to remove read-only directories on Windows (#13626, thanks @HertzDevil)
  • (files) Use current directory's root for Dir.glob("/...") on Windows (#13628, thanks @HertzDevil)
  • (llvm) Fix LLVM.default_target_triple to normalize aarch64 darwin target (#13597, thanks @straight-shoota)
  • (log) Fix Log::Builder append BroadcastBackend to itself (#13405, thanks @straight-shoota)
  • (macros) Fix error message for calling record macro with kwargs (#13367, thanks @a-alhusaini)
  • (networking) Remove double URL escape in HTTP::Server::Response.redirect (#13321, thanks @threez)
  • (networking) Fix WebSocket capitalization in docs (#13331, thanks @joshrickard)
  • (networking) Fix TCPSocket#tcp_keepalive_idle on Windows (#13364, thanks @HertzDevil)
  • (networking) Fix client-side TCPSocket#remote_address on ...
Read more