Skip to content

Conversation

BrewTestBot
Copy link
Member

@BrewTestBot BrewTestBot commented Jul 16, 2025

Created by brew bump


Created with brew bump-formula-pr.

  • resource blocks have been checked for updates.
release notes
### Breaking changes

stdlib

  • Make Colorize.on_tty_only! the default behavior (#15881, thanks @HertzDevil)
  • (concurrency) Rename execution contexts + improve their docs (#15936, thanks @ysbaddaden)
  • (files) Refactor IO.pipe blocking mode (#15823, thanks @ysbaddaden)
  • (files) Fix: set IO::Stapled.pipe blocking args to nil, as per IO.pipe (#15925, thanks @ysbaddaden)
  • (networking) Refactor Socket blocking mode (#15804, thanks @ysbaddaden)
  • (runtime) Let the event loop decide the blocking mode of File (#15930, thanks @ysbaddaden)
  • (serialization) Fix: libxml manual memory management (#15906, #15933, thanks @ysbaddaden)
  • (system) Turn SystemError.from_errno into a macro (#15874, thanks @straight-shoota)

Features

lang

  • (macros) Handle properly stringifying single line blocks (#15568, thanks @Blacksmoke16)
  • (macros) Handle properly stringifying multiline named tuple literals (#15566, thanks @Blacksmoke16)
  • (macros) Handle properly stringifying multiline calls (#15691, thanks @Blacksmoke16)
  • (macros) Handle significant whitespace before a blocks body (#15692, thanks @Blacksmoke16)
  • (macros) Support {% if ...; end; ... %} macro expressions (#15917, thanks @HertzDevil)
  • (macros) Support {% elsif %} when stringifying MacroIf nodes (#15928, thanks @HertzDevil)

stdlib

  • Add Colorize.default_enabled? (#15912, thanks @HertzDevil)
  • [experimental] Add Struct.pre_initialize (#15896, thanks @HertzDevil)
  • (files) Support Windows local device paths in Path (#15590, thanks @HertzDevil)
  • (llvm) Support LLVM 21.0 (development branch) (#15771, thanks @HertzDevil)
  • (networking) Extract WebSocket#do_ping, #do_close helper methods for overrides (#15545, thanks @luislavena)
  • (networking) Add support for IPv6 scoped addresses (RFC4007) (#15263, thanks @foxxx0)
  • (networking) Expose HTTP::Request#uri (#15816, thanks @syeopite)
  • (numeric) Add BigRational#to_i (#15809, thanks @HertzDevil)
  • (numeric) Add Float::Primitive#sign_bit (#15830, thanks @HertzDevil)
  • (runtime) Add explicit Crystal::EventLoop#reopened(FileDescriptor) hook (#15640, thanks @ysbaddaden)
  • (runtime) Add Crystal::EventLoop::FileDescriptor#open (#15750, thanks @ysbaddaden)
  • (runtime) Add Thread::Local(T) (#15616, thanks @ysbaddaden)
  • (serialization) Add XML.libxml2_version (#15623, thanks @straight-shoota)
  • (serialization) Add YAML::Builder#start_document(*, implicit_start_indicator) (#15835, thanks @straight-shoota)
  • (serialization) Support pretty printing of XML types (#15833, thanks @HertzDevil)
  • (serialization) Expose error message from libyaml on emitter errors (#15841, thanks @straight-shoota)
  • (serialization) Add Path.from_json_object_key (#15877, thanks @jneen)
  • (serialization) Add Time::Location#{to,from}_{json,yaml} (#15939, thanks @Sija)
  • (serialization) Extract XML::Document from XML::Node (#15920, thanks @ysbaddaden)
  • (text) [experimental] Add Crystal::System.wstr_literal on Windows (#15747, thanks @HertzDevil)
  • (text) Add String#ensure_suffix and String#ensure_prefix (#15782, thanks @MatheusRich)
  • (text) Add truncate_at_null parameter to String.new(Bytes) and .from_utf16 (#15887, thanks @HertzDevil)
  • (time) Add Time.month_week_date (#15620, thanks @HertzDevil)
  • (time) Improve the TZif database file parser (#15825, thanks @HertzDevil)
  • (time) Support POSIX TZ environment variable strings (#15792, thanks @HertzDevil)
  • (time) Improve whitespace handling in Time::Format (#15890, thanks @HertzDevil)
  • (time) Support Windows system time zone transitions in all years (#15891, thanks @HertzDevil)
  • (time) Support POSIX TZ strings in TZif databases (#15863, thanks @HertzDevil)

compiler

  • (cli) Support --x86-asm-syntax for emitting Intel style assembly (#15612, thanks @HertzDevil)
  • (debugger) Support debug info of 128-bit enum members (#15770, thanks @HertzDevil)
  • (parser) More robust trailing expressions newline implementation (#15614, thanks @Blacksmoke16)
  • (parser) Handle properly stringifying multiline (boolean) expressions (#15709, thanks @Blacksmoke16)
  • (parser) Stringify MacroIf unless nodes properly (#15919, thanks @HertzDevil)
  • (parser) Support elsif when stringifying If nodes (#15918, thanks @HertzDevil)
  • (parser) Add location info to MacroVar nodes (#15947, thanks @Blacksmoke16)
  • (semantic) Improve error message for pointerof (#15876, thanks @straight-shoota)

tools

  • Macro code coverage tool (#15738, thanks @Blacksmoke16)
  • (docs-generator) Limit paragraph max-width in API docs (#15672, thanks @straight-shoota)

Bugfixes

lang

  • [experimental] Do not use private linkage for slice literal buffers (#15746, thanks @HertzDevil)

stdlib

  • Require NO_COLOR to be non-empty (#15880, thanks @HertzDevil)
  • (benchmark) Use UInt64 to track iteration count during warm-up calculation in Benchmark::IPS (#15780, thanks @syeopite)
  • (collection) Fix Array#| for different item types (#15756, thanks @straight-shoota)
  • (concurrency) Fix calling Fiber::ExecutionContext#enqueue from bare Thread (#15767, thanks @ysbaddaden)
  • (concurrency) Simplify Crystal::System::Fiber::RESERVED_STACK_SIZE initializer on Windows (#15820, thanks @HertzDevil)
  • (concurrency) Do not print adjacent nodes in Thread::LinkedList#inspect (#15829, thanks @HertzDevil)
  • (files) Fix async append to file in IOCP (#15681, thanks @ysbaddaden)
  • (numeric) [regression] Fix BigFloat#format not compiling (#15796, thanks @HertzDevil)
  • (numeric) Never output exponent in BigDecimal#format (#15795, thanks @HertzDevil)
  • (numeric) Preserve precision when passing BigDecimal or BigFloat to sprintf %i (#15808, thanks @HertzDevil)
  • (numeric) Fix Float32#abs for signed zeros (#15814, thanks @HertzDevil)
  • (numeric) Ensure unary Float32#- and Float64#- flip sign bit (#15857, thanks @HertzDevil)
  • (runtime) reopen async File passed to Process.exec and .run (win32) (#15703, thanks @ysbaddaden)
  • (runtime) raise on manual fiber resume from sleep (#15744, thanks @ysbaddaden)
  • (runtime) race condition in Fiber::ExecutionContext::Isolated#wait (#15872, thanks @ysbaddaden)
  • (runtime) Prevent leaking memory when exec_recursive's block raises (#15893, thanks @straight-shoota)
  • (runtime) thread specs must test Thread, not Fiber::ExecutionContext::Isolated (#15909, thanks @ysbaddaden)
  • (system) Fix Path#relative_to for non-normalized anchor (#15737, thanks @straight-shoota)
  • (system) [regression] Skip src/termios.cr on Windows (#15852, thanks @HertzDevil)
  • (system) Suspend Windows processes until job objects are set up (#15850, thanks @HertzDevil)
  • (time) Fix Time::Location::InvalidTZDataError dropping default message (#15824, thanks @HertzDevil)
  • (time) Fix IANA time zone names for Windows system time zones (#15914, thanks @HertzDevil)

compiler

  • (codegen) Add file name to file-private virtual types during codegen (#15897, thanks @HertzDevil)
  • (codegen) Clear debug location of top-level implicit return (#15972, thanks @HertzDevil)
  • (codegen) Add file name to file-private generic instance metaclass types during codegen (#15974, thanks @HertzDevil)
  • (codegen) Add debug locations to metaclass nodes and typeof (#15971, thanks @HertzDevil)
  • (interpreter) Fix interpreter guard clauses for signal handling (#15892, thanks @straight-shoota)
  • (parser) Add end locations for Case, Asm, and Select (#15452, thanks @FnControlOption)
  • (parser) [regression] Fix stringification of Not as call receiver (#15801, thanks @Blacksmoke16)
  • (semantic) Fix cleanup of one-to-many assignment with untyped RHS (#15755, thanks @HertzDevil)
  • (semantic) Do not consider type in Crystal::Var#== (#15884, thanks @HertzDevil)

tools

  • (docs-generator) Handle doc locations when file is in parent directory (#15898, thanks @Blacksmoke16)
  • (macro-code-coverage) Better handle coverage reporting of MacroIf nodes with only MacroLiteral bodies (#15938, thanks @Blacksmoke16)

Chores

stdlib

  • [breaking] Make Enum.from_value raise ArgumentError instead of Exception (#15624, thanks @HertzDevil)
  • Fix duplicate keys in hash literals (#15843, thanks @straight-shoota)
  • Remove unused code (#15845, thanks @straight-shoota)
  • Remove shadowed method arguments (#15846, thanks @straight-shoota)
  • Replace some not_nil! calls with bang methods (#15847, thanks @straight-shoota)
  • Remove useless condition literal (#15859, thanks @straight-shoota)
  • Use be_nil and be_true/be_false everywhere in specs (#15867, thanks @straight-shoota)
  • Remove trailing whitespace (#15869, thanks @straight-shoota)
  • Add trailing newlines (#15870, thanks @straight-shoota)
  • (collection) Replace literal conditions with nilable casts (#15844, thanks @straight-shoota)
  • (time) Update Windows zone names (#15728, thanks @straight-shoota)
  • (time) Update Windows zone names using local database (#15837, thanks @HertzDevil)

compiler

  • Replace is_a? calls with convenient alternatives (#15860, thanks @straight-shoota)

other

  • Fix typos and add typos integration (#15873, thanks @straight-shoota)

Performance

lang

  • [experimental] Optimize slice literal codegen on LLVM 21 (#15803, thanks @HertzDevil)

stdlib

  • (collection) Optimize Indexable#find (#15674, thanks @straight-shoota)
  • (numeric) Add specialized implementations for Float#infinite? and #nan? (#15813, thanks @HertzDevil)

compiler

  • Apply performance improvement suggestions from ameba (#15839, thanks @straight-shoota)
  • (codegen) Simplify codegen of mixed-type checked integer addition and subtraction (#15878, thanks @HertzDevil)

Refactor

stdlib

  • (collection) Make offset a required parameter in Indexable#find (#15671, thanks @straight-shoota)
  • (crypto) Add extra Digest.update overloads for Bytes (#15736, thanks @straight-shoota)
  • (crypto) [experimental] Use Slice literals in Crypto::Bcrypt (#15781, thanks @HertzDevil)
  • (files) Ask system to decide non-blocking IO::FileDescriptor (win32) (#15753, thanks @ysbaddaden)
  • (files) Crystal::EventLoop::FileDescriptor#open now sets the non/blocking flag (#15754, thanks @ysbaddaden)
  • (networking) Use relative requires for http/ files (#15675, thanks @straight-shoota)
  • (networking) Split StaticFileHandler#call into structured components (#15678, thanks @straight-shoota)
  • (numeric) [experimental] Use Slice.literal for fast_float when supported (#15667, thanks @HertzDevil)
  • (numeric) Combine the decimal number printing implementations (#15815, thanks @HertzDevil)
  • (runtime) Extract bindings for LibC errno to src/lib_c/ (#15565, thanks @ysbaddaden)
  • (runtime) Extract Exception::CallStack.decode_backtrace_frame helper (#15615, thanks @ysbaddaden)
  • (runtime) Let Crystal::EventLoop#close do the actual close (not just cleanup) (#15641, thanks @ysbaddaden)
  • (serialization) Replace deprecated LibXML.xmlGcMemSetup with .xmlMemSetup (#15626, thanks @straight-shoota)
  • (serialization) XML: modernize API when available & workaround issues with legacy versions (#15899, thanks @ysbaddaden)
  • (specs) Support arbitrary IOs in Spec::CLI (#15882, thanks @HertzDevil)
  • (specs) Replace some lookup hashes in Spec with exhaustive cases (#15879, thanks @HertzDevil)
  • (text) [experimental] Use slice literals for String::CHAR_TO_DIGIT and CHAR_TO_DIGIT62 (#15745, thanks @HertzDevil)
  • (text) Replace some uses of String#% with justification methods (#15821, thanks @HertzDevil)
  • (text) Avoid calling chars.size on Strings (#15822, thanks @HertzDevil)
  • (time) Move most POSIX TZ string functionality to a module (#15866, thanks @HertzDevil)

compiler

  • (codegen) Replace type-id function with lookup table (#15904, thanks @BlobCodes)

Documentation

stdlib

  • (crypto) Add type restrictions to Digest (#15696, thanks @Vici37)
  • (crypto) Add documentation for Crypto::Bcrypt::Password#to_s (#15935, thanks @hugopl)
  • (crypto) Improve docs for OpenSSL::Cipher (#15964, thanks @Fijxu)
  • (macros) [experimental] Document Crystal::Macros::StringLiteral#to_utf16 (#15748, thanks @HertzDevil)
  • (runtime) Document GC::Stats properties (#15676, thanks @ysbaddaden)
  • (runtime) Add links to language specification in docs for pseudo methods (#15864, thanks @straight-shoota)
  • (runtime) Fix unclosed codeblock in __crystal_pseudo_alignof docs (#15945, thanks @syeopite)
  • (serialization) Add type restrictions to CSV (#15695, thanks @Vici37)
  • (specs) Clarify docs in regards to what be_nil expectation does (#15954, thanks @Blacksmoke16)
  • (system) Add type restrictions to Dir (#15697, thanks @Vici37)
  • (system) Improve docs for Socket and IO::FileDescriptor handles (#15977, thanks @straight-shoota)
  • (text) Improve docs for String#lines and #each_line (#15894, thanks @straight-shoota)

compiler

  • (parser) Improve examples for the syntax highlighter documentation (#15699, thanks @tamdaz)

Specs

stdlib

  • Drop to_a in expectations with Slice (#15735, thanks @straight-shoota)
  • (crypto) Unroll test data in specs for crypto/subtle (#15702, thanks @straight-shoota)
  • (networking) Add test for HTTP::Request with resource string // (#15546, thanks @miry)
  • (networking) Pick TCP and UDP local ports differently in socket specs (#15828, thanks @HertzDevil)
  • (serialization) Remove forgotten debug puts call (#15942, thanks @Sija)
  • (text) Simplify specs for string comparison (#15868, thanks @straight-shoota)

compiler

  • (interpreter) Enable interpreter integration test for XML (#15628, thanks @straight-shoota)
  • (parser) Cleanup parser specs (#15446, thanks @FnControlOption)

tools

  • (formatter) Fix formatter specs with string interpolation (#15842, thanks @straight-shoota)

Infrastructure

  • Changelog for 1.17.0 (#15900, #15983, thanks @straight-shoota)
  • Update previous Crystal release 1.16.1 (#15649, thanks @straight-shoota)
  • Update release-update script: Truncate CHANGELOG (#15679, thanks @straight-shoota)
  • Merge release/1.16 into master (#15729, thanks @straight-shoota)
  • Simplify docs_main.cr (#15621, thanks @straight-shoota)
  • Update previous Crystal release 1.16.2 (#15730, thanks @straight-shoota)
  • Fix order of title clean steps in github-changelog helper (#15727, thanks @straight-shoota)
  • Fix scripts/release-update.sh idempotent previous CHANGELOG entry (#15731, thanks @straight-shoota)
  • Merge release/1.16@1.16.3 into master (#15774, thanks @straight-shoota)
  • Update previous Crystal release 1.16.3 (#15773, thanks @straight-shoota)
  • Makefile: Fix target location for install_docs (#15853, thanks @straight-shoota)
  • Add ameba (#15875, thanks @straight-shoota)
  • Allow-list Crystal's funding.json from the project (#15969, thanks @matiasgarciaisaia)
  • Allow LLVM_VERSION override inside Makefile (#15765, thanks @HertzDevil)
  • Add build script for spec/std/data/zoneinfo.zip (#15831, thanks @HertzDevil)
  • (ci) Update GH Actions (#15668, thanks @renovate)
  • (ci) Add XML CI workflow (#15923, thanks @straight-shoota)
  • (ci) Update typos 1.34.0 (#15950, thanks @straight-shoota)
  • (ci) Update korthout/backport-action action to v3.2.1 (#15949, thanks @renovate)
  • (ci) Update cygwin/cygwin-install-action action to v6 (#15965, thanks @renovate)
  • (ci) Drop the static LLVM libraries on Windows MSVC CI (#15797, thanks @HertzDevil)
  • (ci) Set up Inno Setup explicitly on MSVC CI (#15851, #15861, thanks @HertzDevil)
  • (ci) Update library versions for MSVC CI (#15921, thanks @HertzDevil)
  • (ci) Add CI workflow for MinGW-w64 ARM64 builds (#15794, thanks @HertzDevil)
  • (ci) [regression] Use CMAKE_MSVC_RUNTIME_LIBRARY for the MSVC PCRE2 static library (#15802, thanks @HertzDevil)

View the full release notes at https://github.com/crystal-lang/crystal/releases/tag/1.17.0.


@github-actions github-actions bot added the bump-formula-pr PR was created using `brew bump-formula-pr` label Jul 16, 2025
Copy link
Contributor

🤖 An automated task has requested bottles to be published to this PR.

Caution

Please do not push to this PR branch before the bottle commits have been pushed, as this results in a state that is difficult to recover from. If you need to resolve a merge conflict, please use a merge commit. Do not force-push to this PR branch.

@github-actions github-actions bot added the CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. label Jul 16, 2025
@BrewTestBot BrewTestBot enabled auto-merge July 16, 2025 17:40
@BrewTestBot BrewTestBot added this pull request to the merge queue Jul 16, 2025
Merged via the queue into main with commit 85fbf67 Jul 16, 2025
22 checks passed
@BrewTestBot BrewTestBot deleted the bump-crystal-1.17.0 branch July 16, 2025 17:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bump-formula-pr PR was created using `brew bump-formula-pr` CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants