straight-shoota
released this
09 Oct 12:11
·
156 commits
to master
since this release
Features
lang
- Allow
^
in constant numeric expressions (#14951, thanks @HertzDevil)
stdlib
- Add support for Windows on aarch64 (#14911, thanks @HertzDevil)
- (collection) [breaking] Add support for negative start index in
Slice#[start, count]
(#14778, thanks @ysbaddaden) - (collection) Add
Slice#same?
(#14728, thanks @straight-shoota) - (concurrency) Add
WaitGroup.wait
andWaitGroup#spawn
(#14837, thanks @jgaskins) - (concurrency) Open non-blocking regular files as overlapped on Windows (#14921, thanks @HertzDevil)
- (concurrency) Support non-blocking
File#read
and#write
on Windows (#14940, thanks @HertzDevil) - (concurrency) Support non-blocking
File#read_at
on Windows (#14958, thanks @HertzDevil) - (concurrency) Support non-blocking
Process.run
standard streams on Windows (#14941, thanks @HertzDevil) - (concurrency) Support
IO::FileDescriptor#flock_*
on non-blocking files on Windows (#14943, thanks @HertzDevil) - (concurrency) Emulate non-blocking
STDIN
console on Windows (#14947, thanks @HertzDevil) - (concurrency) Async DNS resolution on Windows (#14979, thanks @HertzDevil)
- (crypto) Update
LibCrypto
bindings for LibreSSL 3.5+ (#14872, thanks @straight-shoota) - (llvm) Expose LLVM instruction builder for
neg
andfneg
(#14774, thanks @JarnaChao09) - (llvm) [experimental] Add minimal LLVM OrcV2 bindings (#14887, thanks @HertzDevil)
- (llvm) Add
LLVM::Builder#finalize
(#14892, thanks @JarnaChao09) - (llvm) Support LLVM 19.1 (#14842, thanks @HertzDevil)
- (macros) Add
Crystal::Macros::TypeNode#has_inner_pointers?
(#14847, thanks @HertzDevil) - (macros) Add
HashLiteral#has_key?
andNamedTupleLiteral#has_key?
(#14890, thanks @kamil-gwozdz) - (numeric) Implement floating-point manipulation functions for
BigFloat
(#11007, thanks @HertzDevil) - (runtime) Stop & start the world (undocumented API) (#14729, thanks @ysbaddaden)
- (runtime) Add
Pointer::Appender#to_slice
(#14874, thanks @straight-shoota) - (serialization) Add
URI.from_json_object_key?
andURI#to_json_object_key
(#14834, thanks @nobodywasishere) - (serialization) Add
URI::Params::Serializable
(#14684, thanks @Blacksmoke16) - (system) Enable full backtrace for exception in process spawn (#14796, thanks @straight-shoota)
- (system) Implement
System::User
on Windows (#14933, thanks @HertzDevil) - (system) Implement
System::Group
on Windows (#14945, thanks @HertzDevil) - (system) Add methods to
Crystal::EventLoop
(#14977, thanks @ysbaddaden) - (text) Add
underscore_to_space
option toString#titleize
(#14822, thanks @Blacksmoke16) - (text) Support Unicode 16.0.0 (#14997, thanks @HertzDevil)
compiler
- (cli) Adds initial support for external commands (#14953, thanks @bcardiff)
- (interpreter) Add
Crystal::Repl::Value#runtime_type
(#14156, thanks @bcardiff) - (interpreter) Implement
Reference.pre_initialize
in the interpreter (#14968, thanks @HertzDevil) - (interpreter) Enable the interpreter on Windows (#14964, thanks @HertzDevil)
Bugfixes
lang
- Fix
Slice.literal
for multiple calls with identical signature (#15009, thanks @HertzDevil) - (macros) Add location info to some
MacroIf
nodes (#14885, thanks @Blacksmoke16)
stdlib
- (collection) Fix
Range#size
return type toInt32
(#14588, thanks @straight-shoota) - (concurrency) Update
DeallocationStack
for Windows context switch (#15032, thanks @HertzDevil) - (concurrency) Fix race condition in
pthread_create
handle initialization (#15043, thanks @HertzDevil) - (files) [regression] Fix
File#truncate
and#lock
for Win32 append-mode files (#14706, thanks @HertzDevil) - (files) [breaking] Avoid flush in finalizers for
Socket
andIO::FileDescriptor
(#14882, thanks @straight-shoota) - (files) Make
IO::Buffered#buffer_size=
idempotent (#14855, thanks @jgaskins) - (macros) Implement
#sort_by
inside macros usingEnumerable#sort_by
(#14895, thanks @HertzDevil) - (macros) Fix internal error when calling
#is_a?
onExternal
nodes (#14918, thanks @HertzDevil) - (networking) Use correct timeout for
Socket#connect
on Windows (#14961, thanks @HertzDevil) - (numeric) Fix handle empty string in
String#to_f(whitespace: false)
(#14902, thanks @Blacksmoke16) - (numeric) Fix exponent wrapping in
Math.frexp(BigFloat)
for very large values (#14971, thanks @HertzDevil) - (numeric) Fix exponent overflow in
BigFloat#to_s
for very large values (#14982, thanks @HertzDevil) - (numeric) Add missing
@[Link(dll:)]
annotation to MPIR (#15003, thanks @HertzDevil) - (runtime) Add missing return type of
LibC.VirtualQuery
(#15036, thanks @HertzDevil) - (runtime) Fix main stack top detection on musl-libc (#15047, thanks @HertzDevil)
- (serialization) [breaking] Remove
XML::Error.errors
(#14936, thanks @straight-shoota) - (specs) [regression] Fix
Expectations::Be
for module type (#14926, thanks @straight-shoota) - (system) Fix return type restriction for
ENV.fetch
(#14919, thanks @straight-shoota) - (system)
#file_descriptor_close
should set@closed
(UNIX) (#14973, thanks @ysbaddaden) - (system) reinit event loop first after fork (UNIX) (#14975, thanks @ysbaddaden)
- (text) Fix avoid linking
libpcre
when unused (#14891, thanks @kojix2) - (text) Add type restriction to
String#byte_index
offset
parameter (#14981, thanks @straight-shoota)
compiler
- (cli) Add error handling for linker flag sub commands (#14932, thanks @straight-shoota)
- (codegen) Allow returning
Proc
s from top-level funs (#14917, thanks @HertzDevil) - (codegen) Fix CRT static-dynamic linking conflict in specs with C sources (#14970, thanks @HertzDevil)
- (interpreter) Fix Linux
getrandom
failure in interpreted code (#15035, thanks @HertzDevil) - (interpreter) Fix undefined behavior in interpreter mixed union upcast (#15042, thanks @HertzDevil)
- (semantic) Fix
TopLevelVisitor
adding existingClassDef
type to current scope (#15067, thanks @straight-shoota)
tools
- (dependencies) Fix
crystal tool dependencies
format flat (#14927, thanks @straight-shoota) - (dependencies) Fix
crystal tool dependencies
filters for Windows paths (#14928, thanks @straight-shoota) - (docs-generator) Fix doc comment above annotation with macro expansion (#14849, thanks @Blacksmoke16)
- (unreachable) Fix
crystal tool unreachable
& co visiting circular hierarchies (#15065, thanks @straight-shoota)
Chores
stdlib
- [deprecation] Use
Time::Span
inBenchmark.ips
(#14805, thanks @HertzDevil) - [deprecation] Deprecate
::sleep(Number)
(#14962, thanks @HertzDevil) - (runtime) [deprecation] Deprecate
Pointer.new(Int)
(#14875, thanks @straight-shoota)
compiler
- (interpreter) Remove TODO in
Crystal::Loader
on Windows (#14988, thanks @HertzDevil) - (interpreter:repl) Update REPLy version (#14950, thanks @HertzDevil)
Performance
stdlib
- (collection) Always use unstable sort for simple types (#14825, thanks @HertzDevil)
- (collection) Optimize
Hash#transform_{keys,values}
(#14502, thanks @jgaskins) - (numeric) Optimize arithmetic between
BigFloat
and integers (#14944, thanks @HertzDevil) - (runtime) [regression] Cache
Exception::CallStack.empty
to avoid repeatArray
allocation (#15025, thanks @straight-shoota)
compiler
- Avoid unwinding the stack on hot path in method call lookups (#15002, thanks @ggiraldez)
- (codegen) Reduce calls to
Crystal::Type#remove_indirection
in module dispatch (#14992, thanks @HertzDevil) - (codegen) Compiler: enable parallel codegen with MT (#14748, thanks @ysbaddaden)
Refactor
stdlib
- (concurrency) Extract
select
fromsrc/channel.cr
(#14912, thanks @straight-shoota) - (concurrency) Make
Crystal::IOCP::OverlappedOperation
abstract (#14987, thanks @HertzDevil) - (files) Move
#evented_read
,#evented_write
intoCrystal::LibEvent::EventLoop
(#14883, thanks @straight-shoota) - (networking) Simplify
Socket::Addrinfo.getaddrinfo(&)
(#14956, thanks @HertzDevil) - (networking) Add
Crystal::System::Addrinfo
(#14957, thanks @HertzDevil) - (runtime) Add
Exception::CallStack.empty
(#15017, thanks @straight-shoota) - (system) Refactor cancellation of
IOCP::OverlappedOperation
(#14754, thanks @straight-shoota) - (system) Include
Crystal::System::Group
instead of extending it (#14930, thanks @HertzDevil) - (system) Include
Crystal::System::User
instead of extending it (#14929, thanks @HertzDevil) - (system) Fix:
Crystal::SpinLock
doesn't need to be allocated on the HEAP (#14972, thanks @ysbaddaden) - (system) Don't involve evloop after fork in
System::Process.spawn
(UNIX) (#14974, thanks @ysbaddaden) - (system) Refactor
EventLoop
interface for sleeps & select timeouts (#14980, thanks @ysbaddaden)
compiler
- (codegen) Compiler: refactor codegen (#14760, thanks @ysbaddaden)
- (interpreter) Refactor interpreter stack code to avoid duplicate macro expansion (#14876, thanks @straight-shoota)
Documentation
stdlib
- (collection) [breaking] Hide
Hash::Entry
from public API docs (#14881, thanks @Blacksmoke16) - (collection) Fix typos in docs for
Set
andHash
(#14889, thanks @philipp-classen) - (llvm) Add
@[Experimental]
toLLVM::DIBuilder
(#14854, thanks @HertzDevil) - (networking) Add documentation about synchronous DNS resolution (#15027, thanks @straight-shoota)
- (networking) Add
uri/json
todocs_main
(#15069, thanks @straight-shoota) - (runtime) Add docs about
Pointer
's alignment requirement (#14853, thanks @HertzDevil) - (runtime) Reword
Pointer#memcmp
's documentation (#14818, thanks @HertzDevil) - (runtime) Add documentation for
NoReturn
andVoid
(#14817, thanks @nobodywasishere)
Specs
stdlib
- Remove some uses of deprecated overloads in standard library specs (#14963, thanks @HertzDevil)
- (collection) Disable
Tuple#to_static_array
spec on AArch64 (#14844, thanks @HertzDevil) - (serialization) Add JSON parsing UTF-8 spec (#14823, thanks @Blacksmoke16)
- (text) Add specs for
String#index
,#rindex
search forChar::REPLACEMENT
(#14946, thanks @straight-shoota)
compiler
- (codegen) Support return types in codegen specs (#14888, thanks @HertzDevil)
- (codegen) Fix codegen spec for
ProcPointer
of virtual type (#14903, thanks @HertzDevil) - (codegen) Support LLVM OrcV2 codegen specs (#14886, thanks @HertzDevil)
- (codegen) Don't spawn subprocess if codegen spec uses flags but not the prelude (#14904, thanks @HertzDevil)
Infrastructure
- Changelog for 1.14.0 (#14969, thanks @straight-shoota)
- Update previous Crystal release 1.13.1 (#14810, thanks @straight-shoota)
- Refactor GitHub changelog generator print special infra (#14795, thanks @straight-shoota)
- Update distribution-scripts (#14877, thanks @straight-shoota)
- Update version in
shard.yml
(#14909, thanks @straight-shoota) - Merge
release/1.13
@1.13.2 (#14924, thanks @straight-shoota) - Update previous Crystal release 1.13.2 (#14925, thanks @straight-shoota)
- Merge
release/1.13
@1.13.3 (#15012, thanks @straight-shoota) - Update previous Crystal release 1.13.3 (#15016, thanks @straight-shoota)
- [regression] Fix
SOURCE_DATE_EPOCH
inMakefile.win
(#14922, thanks @HertzDevil) - (ci) Update actions/checkout action to v4 - autoclosed (#14896, thanks @renovate)
- (ci) Update LLVM 18 for
wasm32-test
(#14821, thanks @straight-shoota) - (ci) Pin package repos for OpenSSL packages (#14831, thanks @straight-shoota)
- (ci) Upgrade XCode 15.4.0 (#14794, thanks @straight-shoota)
- (ci) Update GH Actions (#14535, thanks @renovate)
- (ci) Add test for OpenSSL 3.3 (#14873, thanks @straight-shoota)
- (ci) Update GitHub runner to
macos-14
(#14833, thanks @straight-shoota) - (ci) Refactor SSL workflow with job matrix (#14899, thanks @straight-shoota)
- (ci) Drop the non-release Windows compiler artifact (#15000, thanks @HertzDevil)
- (ci) Fix compiler artifact name in WindowsCI (#15021, thanks @straight-shoota)
- (ci) Restrict CI runners from runs-on to 8GB (#15030, thanks @straight-shoota)
- (ci) Increase memory for stdlib CI runners from runs-on to 16GB (#15044, thanks @straight-shoota)
- (ci) Use Cygwin to build libiconv on Windows CI (#14999, thanks @HertzDevil)
- (ci) Use our own
libffi
repository on Windows CI (#14998, thanks @HertzDevil)