github crystal-lang/crystal 1.9.0

latest releases: 1.14.0, 1.13.3, 1.13.2...
16 months ago

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 Windows (#13363, thanks @HertzDevil)
  • (networking) Parse IP addresses in Crystal instead of using LibC.inet_pton (#13463, thanks @HertzDevil)
  • (networking) Windows: do not set SO_EXCLUSIVEADDRUSE if SO_REUSEADDR already present (#13477, thanks @HertzDevil)
  • (networking) Implement Socket::IPAddress#to_s with Crystal instead of LibC.inet_ntop (#13483, thanks @HertzDevil)
  • (networking) Ensure Socket checks WinError.wsa_value on Windows, not Errno.value (#13494, thanks @HertzDevil)
  • (numeric) Disallow creating Big* numbers from infinity or NaN (#13351, thanks @HertzDevil)
  • (numeric) Fix LibM.hypotf and ldexpf link errors on Windows (#13485, thanks @HertzDevil)
  • (numeric) Make comparisons between BigRational and BigFloat exact (#13538, thanks @HertzDevil)
  • (runtime) Fix size of type_id in Object.set_crystal_type_id (#13338, thanks @straight-shoota)
  • (runtime) Allow /SUBSYSTEM:WINDOWS on Windows (#13332, thanks @HertzDevil)
  • (runtime) Use correct format strings for crash stack traces (#13408, thanks @HertzDevil)
  • (serialization) Fix handling of quoted boolean values in YAML::Any (#13546, thanks @willhbr)
  • (serialization) Fix ambiguous call with untyped int literal in {JSON,YAML}::Any.new (#13618, thanks @straight-shoota)
  • (system) Fix for Process: ensure chdir is a string (#13503, thanks @devnote-dev)
  • (system) Windows: drop internal environment variables from ENV (#13570, thanks @HertzDevil)
  • (text) Fix String#underscore with multi-character downcasing (#13540, thanks @HertzDevil)
  • (text) Do not attempt downcasing first when case-folding a Char (#13542, thanks @HertzDevil)
  • (text) Handle case folding in String#compare correctly (#13532, thanks @HertzDevil)
  • (time) Update list of Windows time zones (#13501, thanks @HertzDevil)
  • (time) Fix local timezones without DST on Windows (#13516, thanks @HertzDevil)
  • (time) Fix leap second handling for timezone information files (#13600, thanks @HertzDevil)

compiler

tools

  • Display Bool's size as 1 byte in crystal tool hierarchy, not 0 (#13588, thanks @HertzDevil)

Performance

stdlib

tools

  • (docs-generator) Optimize Doc::Method#compute_doc_info to avoid duplicate regex (#13324, thanks @straight-shoota)

Refactor

stdlib

  • Use sentence case for all standard library exceptions (#13400, thanks @HertzDevil)
  • (collection) Refactor code for Deque buffer resizing (#13257, thanks @HertzDevil)
  • (concurrency) Clean up unused code for Windows event loop (#13424, thanks @HertzDevil)
  • (files) Do not reopen current file in File#utime on Windows (#13625, thanks @HertzDevil)
  • (files) Do not reopen current file in File#chmod on Windows (#13627, thanks @HertzDevil)
  • (llvm) [deprecation] Deprecate LLVM::Module#write_bitcode_with_summary_to_file (#13488, thanks @HertzDevil)
  • (llvm) [deprecation] Deprecate LLVM's legacy pass manager (#13579, thanks @HertzDevil)
  • (llvm) Remove two outdated LLVM fun bindings (#13438, thanks @HertzDevil)
  • (llvm) Split LLVM::Builder overloads that don't take an operand bundle (#13564, thanks @HertzDevil)
  • (networking) Move more Socket methods to Crystal::System::Socket (#13346, thanks @HertzDevil)
  • (numeric) Use Int#bit_length instead of Math.log2 followed by #to_i (#13440, thanks @HertzDevil)
  • (numeric) Use GMP's functions for Float-to-BigRational conversion (#13352, thanks @HertzDevil)
  • (serialization) Simplify implementation of Serializable#initialize (#13433, thanks @straight-shoota)
  • (serialization) Use per-thread libxml2 global state on Windows (#13486, thanks @HertzDevil)
  • (text) Refactor String header layout reflection (#13335, thanks @straight-shoota)
  • (text) Refactor symbol quoting into Symbol.quote_for_named_argument (#13595, thanks @straight-shoota)

compiler

Documentation

stdlib

  • (concurrency) Fix operators in Atomic#add, #sub, #max, #min (#13523, thanks @HertzDevil)
  • (concurrency) Hide Crystal::LibEvent from public docs (#13624, thanks @HertzDevil)
  • (macros) Fix doc for return type of Crystal::Macros::Case#else (#13385, thanks @HertzDevil)
  • (system) Reference Process.executable_path at PROGRAM_NAME (#13434, thanks @straight-shoota)
  • (text) Add note about graphemes in String#reverse (#13536, thanks @noraj)

compiler

other

Specs

stdlib

compiler

  • (interpreter) Regenerate spec/interpreter_std_spec.cr (#13310, thanks @cyangle)

Infrastructure

Don't miss a new crystal release

NewReleases is sending notifications on new releases.