doc/changelogs/v1.13.md
Process.exec stream redirection on Windows (#14986, thanks @HertzDevil)String#index and #rindex for Char::REPLACEMENT (#14937, thanks @HertzDevil)runs-on.com for Aarch64 CI (#15007, thanks @straight-shoota)Hash::Entry (#14862, thanks @HertzDevil)ReferenceStorage(T) atomic if T has no inner pointers (#14845, thanks @HertzDevil)Bool to union upcasts (#14906, thanks @HertzDevil)_ inside macro expressions (#14452, thanks @HertzDevil)Array#insert_all (#14486, thanks @summer-alice)#sort(&block : T, T -> U) (#14693, thanks @beta-ziliani)WaitGroup synchronization primitive (#14167, thanks @ysbaddaden)Atomics of pointer types (#14401, thanks @HertzDevil)Thread.new yields itself (#14543, thanks @ysbaddaden)Atomic(Bool) (#14532, thanks @ysbaddaden)Thread.sleep(Time::Span) (#14715, thanks @ysbaddaden)IO#tty? in Win32 (#14421, thanks @HertzDevil)File.readable? and .writable? in Win32 (#14420, thanks @HertzDevil)File.readable? and .writable? follow symlinks on Windows (#14514, thanks @HertzDevil)LLVM::Context bindings (#14612, thanks @ysbaddaden)UInt32 and UInt64 in Log Context (#14459, thanks @toddsundsted)#[] operator call's macro interpolation (#14523, thanks @HertzDevil)Select (#14600, thanks @HertzDevil)TypeNode#private?, #public? and #visibility (#11696, thanks @Hadeweka)StringLiteral#to_utf16 (#14676, thanks @ysbaddaden)HTTP::Server.new to Indexable(HTTP::Handler) (#14413, thanks @hugopl)EventLoop::Socket module (#14643, thanks @straight-shoota)EventLoop::FileDescriptor module (#14639, thanks @straight-shoota)Crystal::Tracing for runtime tracing (#14659, thanks @ysbaddaden)EventLoop#run(blocking) and EventLoop#interrupt (#14568, thanks @ysbaddaden)Crystal::System::Time.ticks (#14620, thanks @ysbaddaden)Crystal::System::Thread.current_thread?, #scheduler? (#14660, thanks @ysbaddaden)Crystal::System.panic (#14733, thanks @ysbaddaden)Regex::MatchOptions overload for String#index! (#14462, thanks @HertzDevil)StringPool#get? (#14508, thanks @HertzDevil)pkg_config names for pcre2 and pcre (#14584, thanks @straight-shoota)Time::Error (#14743, thanks @Blacksmoke16)-Os and -Oz to optimize binary size (#14463, thanks @ysbaddaden)if bodies inside macro expressions (#14505, thanks @HertzDevil)-> inside certain comma-separated lists (#14506, thanks @HertzDevil)Select nodes' macro interpolation (#14510, thanks @HertzDevil)Expressions#to_s (#14511, thanks @HertzDevil)Enumerable#to_a and Enumerable#tally properly retain return type of T (#14447, thanks @Blacksmoke16)IndexError in #[]?(Range) (#14444, thanks @HertzDevil)Set#to_a(&) (#14519, thanks @meatball133)Hash#rehash to reset @first (#14606, thanks @straight-shoota)NamedTuple#from (#14790, thanks @HertzDevil)NamedTuple.new when using key with a hyphen (#14785, thanks @Blacksmoke16)#fsync and #flock_* on IO::FileDescriptor (#14432, thanks @HertzDevil)IO::FileDescriptor#tty? return false for NUL on Windows (#14509, thanks @HertzDevil)IO::FileDescriptor echo and raw mode methods (#14529, thanks @HertzDevil)File.symlink on Windows (#14522, thanks @HertzDevil)IO#same_content? accepting prefix on second stream (#14664, thanks @straight-shoota)File#read_at for large offsets on Windows (#14708, thanks @HertzDevil)IO::FileDescriptor.new for closed fd (#14697, thanks @straight-shoota)IO::Delimited reading into limited slice with peek (#14772, thanks @straight-shoota)Compress::Gzip extra field (#14550, thanks @kojix2)Socket#close error handling on Windows (#14517, thanks @HertzDevil)HTTP::StaticFileHandler (#14546, thanks @alexkutsan)SOCK_CLOEXEC) (#14632, thanks @carlhoerberg)SOCK_CLOEXEC with FD_CLOEXEC fallback (#14672, thanks @ysbaddaden)Socket#connect timeout type restriction (#14755, thanks @straight-shoota)Socket#connect on Windows (#14756, thanks @straight-shoota)BigRational#format (#14525, thanks @meatball133)printf("%e") and printf("%g") (#14695, thanks @straight-shoota)GC.malloc for gc_none to clear memory (#14746, thanks @straight-shoota)false value (#14779, thanks @dammer)System.retry_with_buffer with stack buffer (#14615, thanks @straight-shoota)Socket & FileDescriptor on Windows (#14634, thanks @ysbaddaden)dup3 and pipe2 to set O_CLOEXEC when available (#14673, thanks @ysbaddaden)retry_with_buffer when big buffer is necessary (#14622, thanks @BlobCodes)Process.run with closed IO (#14698, thanks @straight-shoota)strerror_r over strerror for thread-safe errno (#14764, thanks @ysbaddaden)String#sub raise IndexError if index is equal to size (#14458, thanks @HertzDevil)libpcre2 version detection not working for -RC{N} versions (#14478, thanks @Frityet)Regex#inspect with non-literal-compatible options (#14575, thanks @straight-shoota)- (#14739, thanks @HertzDevil)target_machine for every program (#14694, thanks @straight-shoota)ReferenceStorage(T) non-atomic if T is non-atomic (#14730, thanks @HertzDevil)crystal_formatters.py for Python 3 (#14665, thanks @zw963)Crystal::Path#to_macro_id for global path (#14490, thanks @straight-shoota)Class#=== on metaclass (#11162, thanks @makenowjust)HOST_TRIPLE and TARGET_TRIPLE (#14570, thanks @straight-shoota)#[] operator call (#14526, thanks @HertzDevil)Range#reverse_each (#14709, thanks @yxhuvud)WaitGroup to docs_main.cr (#14624, thanks @straight-shoota)File.readable?, .writable?, .executable? to File::Info (#14484, thanks @straight-shoota)Crystal::System::Socket#system_send (#14637, thanks @straight-shoota)host : String in TCPSocket and Addrinfo (#14703, thanks @straight-shoota)LibEvent::EventLoop#send_to (#14658, thanks @straight-shoota)IO::Evented (#14666, thanks @straight-shoota)IO::Overlapped (#14704, thanks @straight-shoota)CRYSTAL_LIBRARY_RPATH and delay-load helper (#14598, thanks @HertzDevil)Hash for repeated removals and insertions (#14539, thanks @HertzDevil)Int::Primitive#unsafe_chr (#14443, thanks @HertzDevil)String#index(Char) and #rindex(Char) for invalid UTF-8 (#14461, thanks @HertzDevil)String#to_utf16 (#14671, thanks @straight-shoota)#unsafe_as(UInt64) etc. (#14686, thanks @straight-shoota)StaticArray(UInt8, 1)#unsafe_as(UInt8) (#14685, thanks @straight-shoota)LibC._setmode (#14419, thanks @HertzDevil)System::FileDescriptor#unbuffered_{read,write} (#14607, thanks @straight-shoota)#system_read and #system_write for FileDescriptor and Socket (#14626, thanks @straight-shoota)#evented_* methods (#14627, thanks @straight-shoota)IO#read_byte instead of #read_char in HTTP::ChunkedContent (#14548, thanks @straight-shoota)Thread owns its current fiber (instead of Crystal::Scheduler) (#14554, thanks @ysbaddaden)Fiber#enqueue (#14561, thanks @ysbaddaden)Crystal::EventLoop.current (#14559, thanks @ysbaddaden)Fiber.suspend (#14560, thanks @ysbaddaden)OverlappedOperation#synchronous (#14663, thanks @straight-shoota)Crystal::Iocp to Crystal::IOCP (#14662, thanks @straight-shoota)EventLoop.create (#14661, thanks @straight-shoota)type declarations for void pointers with alias in libxml2 (#14494, thanks @straight-shoota)JSON::Any#size to use two branches instead of three (#14533, thanks @meatball133)Spec context state into Spec::CLI (#14259, thanks @HertzDevil)WinError#to_errno (#14515, thanks @HertzDevil)Crystal::System.print_error(fmt, *args, &) to printf (#14617, thanks @ysbaddaden)Crystal::System.retry_with_buffer calling #to_slice (#14614, thanks @straight-shoota)UNIXSocket.pair as Crystal::System::Socket.socketpair (#14675, thanks @ysbaddaden)Pointer.new(Int) (#14683, thanks @straight-shoota)IOCP::OverlappedOperation (#14723, thanks @straight-shoota)IOCP::OverlappedOperation internalize handle and wait_for_completion (#14724, thanks @straight-shoota)Program#size_t and Target#size_bit_width (#14442, thanks @ysbaddaden)Crystal::Select::When with Crystal::When (#14497, thanks @HertzDevil)Set#proper_superset_of? (#14516, thanks @meatball133)Indexable#[]? (#14721, thanks @meatball133)WeakRef by removing ref.value call (#10846, thanks @hugopl)Socket#send (#14638, thanks @straight-shoota)HTTP::WebSocket#stream (#14537, thanks @meatball133)CSV::Builder#row(&) (#14736, thanks @philipp-classen)IO::Evented (#14749, thanks @straight-shoota)Process.on_terminate (#14798, thanks @philipp-classen)Char#ascii_number? stating wrong minimum base (#14521, thanks @meatball133)NO_UTF_CHECK (#14542, thanks @straight-shoota)describe (#14757, thanks @HertzDevil)Compress::Gzip::Writer with extra (#14788, thanks @straight-shoota)Pointer::Appender (#14719, thanks @straight-shoota)normalize/regex_spec (#14545, thanks @straight-shoota)src/VERSION in update-changelog and release-update (#14547, thanks @straight-shoota)shell.nix use llvmPackages.bintools with wrapper for rpath config (#14583, thanks @straight-shoota)src/SOURCE_DATE_EPOCH to release tree (#14574, thanks @straight-shoota)boehmgc package from nixpkgs in shell.nix (#14591, thanks @straight-shoota)shell.nix (#14590, thanks @straight-shoota)pkg-config name in shell.nix (#14593, thanks @straight-shoota)infrastructure (#14781, thanks @straight-shoota)SetShouldExit in Powershell wrapper (#13769, thanks @straight-shoota)primitives_spec with the interpreter on CI (#14438, thanks @HertzDevil)shards.pdb on Windows (#14415, thanks @HertzDevil)