Add this suggestion to a batch that can be applied as a single commit.
  This suggestion is invalid because no changes were made to the code.
  Suggestions cannot be applied while the pull request is closed.
  Suggestions cannot be applied while viewing a subset of changes.
  Only one suggestion per line can be applied in a batch.
  Add this suggestion to a batch that can be applied as a single commit.
  Applying suggestions on deleted lines is not supported.
  You must change the existing code in this line in order to create a valid suggestion.
  Outdated suggestions cannot be applied.
  This suggestion has been applied or marked resolved.
  Suggestions cannot be applied from pending reviews.
  Suggestions cannot be applied on multi-line comments.
  Suggestions cannot be applied while the pull request is queued to merge.
  Suggestion cannot be applied right now. Please check back later.
  
    
  
    
Created by
brew bumpCreated with
brew bump-formula-pr.resourceblocks have been checked for updates.release notes
Colorize.on_tty_only!the default behavior (#15881, thanks @HertzDevil)IO.pipeblocking mode (#15823, thanks @ysbaddaden)IO::Stapled.pipeblocking args to nil, as perIO.pipe(#15925, thanks @ysbaddaden)Socketblocking mode (#15804, thanks @ysbaddaden)File(#15930, thanks @ysbaddaden)SystemError.from_errnointo a macro (#15874, thanks @straight-shoota)Features
lang
{% if ...; end; ... %}macro expressions (#15917, thanks @HertzDevil){% elsif %}when stringifyingMacroIfnodes (#15928, thanks @HertzDevil)stdlib
Colorize.default_enabled?(#15912, thanks @HertzDevil)Struct.pre_initialize(#15896, thanks @HertzDevil)Path(#15590, thanks @HertzDevil)WebSocket#do_ping,#do_closehelper methods for overrides (#15545, thanks @luislavena)HTTP::Request#uri(#15816, thanks @syeopite)BigRational#to_i(#15809, thanks @HertzDevil)Float::Primitive#sign_bit(#15830, thanks @HertzDevil)Crystal::EventLoop#reopened(FileDescriptor)hook (#15640, thanks @ysbaddaden)Crystal::EventLoop::FileDescriptor#open(#15750, thanks @ysbaddaden)Thread::Local(T)(#15616, thanks @ysbaddaden)XML.libxml2_version(#15623, thanks @straight-shoota)YAML::Builder#start_document(*, implicit_start_indicator)(#15835, thanks @straight-shoota)XMLtypes (#15833, thanks @HertzDevil)Path.from_json_object_key(#15877, thanks @jneen)Time::Location#{to,from}_{json,yaml}(#15939, thanks @Sija)XML::DocumentfromXML::Node(#15920, thanks @ysbaddaden)Crystal::System.wstr_literalon Windows (#15747, thanks @HertzDevil)String#ensure_suffixandString#ensure_prefix(#15782, thanks @MatheusRich)truncate_at_nullparameter toString.new(Bytes)and.from_utf16(#15887, thanks @HertzDevil)Time.month_week_date(#15620, thanks @HertzDevil)Time::Format(#15890, thanks @HertzDevil)compiler
--x86-asm-syntaxfor emitting Intel style assembly (#15612, thanks @HertzDevil)MacroIfunlessnodes properly (#15919, thanks @HertzDevil)elsifwhen stringifyingIfnodes (#15918, thanks @HertzDevil)MacroVarnodes (#15947, thanks @Blacksmoke16)pointerof(#15876, thanks @straight-shoota)tools
max-widthin API docs (#15672, thanks @straight-shoota)Bugfixes
lang
stdlib
NO_COLORto be non-empty (#15880, thanks @HertzDevil)UInt64to track iteration count during warm-up calculation inBenchmark::IPS(#15780, thanks @syeopite)Array#|for different item types (#15756, thanks @straight-shoota)Fiber::ExecutionContext#enqueuefrom bareThread(#15767, thanks @ysbaddaden)Crystal::System::Fiber::RESERVED_STACK_SIZEinitializer on Windows (#15820, thanks @HertzDevil)Thread::LinkedList#inspect(#15829, thanks @HertzDevil)BigFloat#formatnot compiling (#15796, thanks @HertzDevil)BigDecimal#format(#15795, thanks @HertzDevil)BigDecimalorBigFloattosprintf%i(#15808, thanks @HertzDevil)Float32#absfor signed zeros (#15814, thanks @HertzDevil)Float32#-andFloat64#-flip sign bit (#15857, thanks @HertzDevil)Filepassed toProcess.execand.run(win32) (#15703, thanks @ysbaddaden)Fiber::ExecutionContext::Isolated#wait(#15872, thanks @ysbaddaden)exec_recursive's block raises (#15893, thanks @straight-shoota)Thread, notFiber::ExecutionContext::Isolated(#15909, thanks @ysbaddaden)Path#relative_tofor non-normalized anchor (#15737, thanks @straight-shoota)src/termios.cron Windows (#15852, thanks @HertzDevil)Time::Location::InvalidTZDataErrordropping default message (#15824, thanks @HertzDevil)compiler
typeof(#15971, thanks @HertzDevil)Case,Asm, andSelect(#15452, thanks @FnControlOption)Notas call receiver (#15801, thanks @Blacksmoke16)Crystal::Var#==(#15884, thanks @HertzDevil)tools
MacroIfnodes with onlyMacroLiteralbodies (#15938, thanks @Blacksmoke16)Chores
stdlib
Enum.from_valueraiseArgumentErrorinstead ofException(#15624, thanks @HertzDevil)not_nil!calls with bang methods (#15847, thanks @straight-shoota)be_nilandbe_true/be_falseeverywhere in specs (#15867, thanks @straight-shoota)compiler
is_a?calls with convenient alternatives (#15860, thanks @straight-shoota)other
typosintegration (#15873, thanks @straight-shoota)Performance
lang
stdlib
Indexable#find(#15674, thanks @straight-shoota)Float#infinite?and#nan?(#15813, thanks @HertzDevil)compiler
Refactor
stdlib
offseta required parameter inIndexable#find(#15671, thanks @straight-shoota)Digest.updateoverloads forBytes(#15736, thanks @straight-shoota)Sliceliterals inCrypto::Bcrypt(#15781, thanks @HertzDevil)IO::FileDescriptor(win32) (#15753, thanks @ysbaddaden)Crystal::EventLoop::FileDescriptor#opennow sets the non/blocking flag (#15754, thanks @ysbaddaden)http/files (#15675, thanks @straight-shoota)StaticFileHandler#callinto structured components (#15678, thanks @straight-shoota)Slice.literalforfast_floatwhen supported (#15667, thanks @HertzDevil)src/lib_c/(#15565, thanks @ysbaddaden)Exception::CallStack.decode_backtrace_framehelper (#15615, thanks @ysbaddaden)Crystal::EventLoop#closedo the actual close (not just cleanup) (#15641, thanks @ysbaddaden)LibXML.xmlGcMemSetupwith.xmlMemSetup(#15626, thanks @straight-shoota)IOs inSpec::CLI(#15882, thanks @HertzDevil)Specwith exhaustive cases (#15879, thanks @HertzDevil)String::CHAR_TO_DIGITandCHAR_TO_DIGIT62(#15745, thanks @HertzDevil)String#%with justification methods (#15821, thanks @HertzDevil)chars.sizeonStrings (#15822, thanks @HertzDevil)compiler
Documentation
stdlib
Digest(#15696, thanks @Vici37)Crypto::Bcrypt::Password#to_s(#15935, thanks @hugopl)OpenSSL::Cipher(#15964, thanks @Fijxu)Crystal::Macros::StringLiteral#to_utf16(#15748, thanks @HertzDevil)GC::Statsproperties (#15676, thanks @ysbaddaden)__crystal_pseudo_alignofdocs (#15945, thanks @syeopite)CSV(#15695, thanks @Vici37)be_nilexpectation does (#15954, thanks @Blacksmoke16)Dir(#15697, thanks @Vici37)SocketandIO::FileDescriptorhandles (#15977, thanks @straight-shoota)String#linesand#each_line(#15894, thanks @straight-shoota)compiler
Specs
stdlib
to_ain expectations withSlice(#15735, thanks @straight-shoota)crypto/subtle(#15702, thanks @straight-shoota)HTTP::Requestwith resource string//(#15546, thanks @miry)putscall (#15942, thanks @Sija)compiler
tools
Infrastructure
release-updatescript: Truncate CHANGELOG (#15679, thanks @straight-shoota)release/1.16into master (#15729, thanks @straight-shoota)docs_main.cr(#15621, thanks @straight-shoota)scripts/release-update.shidempotent previous CHANGELOG entry (#15731, thanks @straight-shoota)release/1.16@1.16.3 into master (#15774, thanks @straight-shoota)install_docs(#15853, thanks @straight-shoota)LLVM_VERSIONoverride insideMakefile(#15765, thanks @HertzDevil)spec/std/data/zoneinfo.zip(#15831, thanks @HertzDevil)XML CIworkflow (#15923, thanks @straight-shoota)CMAKE_MSVC_RUNTIME_LIBRARYfor 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.