The Crystal Programming Language
cause
parameter from IO::Error#initialize
(#14242, thanks @straight-shoota)%p
for pointers in Crystal::System.print_error
(#14186, thanks @HertzDevil)%p
for pointers in Crystal::System.print_error
(#14221, thanks @HertzDevil)ReferenceStorage
for manual allocation of references (#14106)" (#14207, thanks @straight-shoota)alignof
and instance_alignof
(#14087, thanks @HertzDevil)dll
parameter in @[Link]
(#14131, thanks @HertzDevil)Call
context via new @caller
macro ivar (#14048, thanks @Blacksmoke16)Enumerable#present?
(#13866, thanks @straight-shoota)Enumerable#each_step
and Iterable#each_step
(#13610, thanks @baseballlover723)Enumerable(T)#to_set(& : T -> U) : Set(U) forall U
(#12654, thanks @caspiano)Enumerable(T)#to_a(& : T -> U) forall U
(#12653, thanks @caspiano)IO::Error#target
(#13865, thanks @straight-shoota)LLVM::OperandBundleDef#dispose
(#14095, thanks @HertzDevil)CharLiteral#ord
(#13910, thanks @refi64)MacroIf
and MacroFor
nodes (#13902, thanks @sbsoftware)ASTNode
when generating docs (#14050, thanks @Blacksmoke16)ModuleDef
(#14063, thanks @HertzDevil)Include
and Extend
(#14064, thanks @HertzDevil)ClassDef
, EnumDef
, AnnotationDef
(#14072, thanks @HertzDevil)BigRational
's rounding modes (#13871, thanks @HertzDevil)BigFloat#**(BigInt)
(#13881, thanks @HertzDevil)Math.fma
(#13934, thanks @HertzDevil)Number#integer?
(#13936, thanks @HertzDevil)Int::Primitive#abs_unsigned
and #neg_signed
(#13938, thanks @HertzDevil)Int::Primitive#to_signed
, #to_signed!
, #to_unsigned
, #to_unsigned!
(#13960, thanks @HertzDevil)BigFloat#**
for all Int::Primitive
arguments (#13971, thanks @HertzDevil)Float32::MIN_SUBNORMAL
and Float64::MIN_SUBNORMAL
(#13961, thanks @HertzDevil)Float::Primitive.parse_hexfloat
, .parse_hexfloat?
, #to_hexfloat
(#14027, thanks @HertzDevil)sprintf "%f"
in Crystal using Ryu Printf (#14067, thanks @HertzDevil)sprintf "%e"
in Crystal (#14084, thanks @HertzDevil)sprintf "%a"
in Crystal (#14102, thanks @HertzDevil)sprintf "%g"
in Crystal (#14123, thanks @HertzDevil)Crystal::HOST_TRIPLE
and TARGET_TRIPLE
(#13823, thanks @HertzDevil)Reference.pre_initialize
and .unsafe_construct
(#14108, thanks @HertzDevil)ReferenceStorage
for manual allocation of references (#14106, thanks @HertzDevil)StaticArray#to_json
(#14104, thanks @Vendicated)crystal spec --dry-run
(#13804, thanks @nobodywasishere)crystal spec --list-tags
(#13616, thanks @baseballlover723)Path
directory separators in File.match?
(#13912, thanks @HertzDevil)UUID.v1
, .v2
, .v3
, .v4
, .v5
(#13693, thanks @threez)String
and Char
patterns to StringScanner
(#13806, thanks @funny-falcon)EOL
constant (End-Of-Line) (#11303, thanks @postmodern)Char::Reader#current_char?
, #next_char?
, #previous_char?
(#14012, thanks @HertzDevil)String#matches_full?
(#13968, thanks @straight-shoota)Regex::MatchData#to_s
to return matched substring (#14115, thanks @Vendicated)instance_sizeof(T)
in the interpreter (#14031, thanks @HertzDevil)-dynamic.lib
in Windows interpreter (#14143, thanks @HertzDevil)CRYSTAL_INTERPRETER_LOADER_INFO
(#14147, thanks @HertzDevil)Crystal::Repl#parse_and_interpret
(#14138, thanks @bcardiff)::foo
(#14071, thanks @keshavbiswa)--check
flag to crystal tool unreachable
(#13930, thanks @straight-shoota)crystal tool unreachable
(#13927, thanks @straight-shoota)crystal tool unreachable
(#13929, thanks @straight-shoota)crystal tool unreachable
(#13926, thanks @straight-shoota)--tallies
option to crystal tool unreachable
(#13969, thanks @straight-shoota)Box(T?)
crashing on nil
(#13893, thanks @HertzDevil)Indexable#each_repeated_combination(n)
when n > size
(#14092, thanks @HertzDevil)Process#wait
asynchronous on Windows (#13908, thanks @HertzDevil)Int32::MAX + 1
fibers (#14096, thanks @ysbaddaden)can't resume a running fiber
(#14128, thanks @ysbaddaden)Globber.constant_entry?
matching patterns (#13955, thanks @GeopJr)String::Buffer
and IO::Memory
capacity to grow beyond 1GB (#13989, thanks @straight-shoota)String#to_f(whitespace: false)
work with infinity and NaN (#13875, thanks @HertzDevil)LibGMP::SI
and UI
for size checks, not Long
and ULong
(#13874, thanks @HertzDevil)Number#format
(#14061, thanks @HertzDevil)Int128::MIN.to_s(base: 2)
(#14119, thanks @HertzDevil)Float#format
for nonnegative decimal_place
(#14129, thanks @HertzDevil)@[ThreadLocal]
on Android (#14025, thanks @HertzDevil)Crystal::System.print_error
(#14114, thanks @HertzDevil)FileUtils.ln_sf
to override special file types (#13896, thanks @straight-shoota)Process.exists?
throwing errors on EPERM (#13911, thanks @refi64)Process#prepare_args
(#13942, thanks @GeopJr)Process#close
(#13997, thanks @HertzDevil)Crystal::System::Process#@completion_key
after use (#14068, thanks @HertzDevil)Char::Reader#previous_char
(#14013, thanks @HertzDevil)options
parameter for String#split
, #scan
(#14183, thanks @straight-shoota)Int#milliseconds
and Int#microseconds
(#14105, thanks @bcardiff)is_a?
or responds_to?
's result (#14148, thanks @HertzDevil)Tuple
and NamedTuple
casts (#14040, thanks @HertzDevil)Crystal::Loader
: Skip second linker member on Windows if absent (#14111, thanks @HertzDevil)%r
and %x
when not followed by delimiter start (#13933, thanks @HertzDevil)Path
nodes in certain constructs (#13932, thanks @HertzDevil)ToSVisitor
for expanded string interpolation in backticks (#13943, thanks @straight-shoota)Path
s (#13931, thanks @HertzDevil)ReadInstanceVar
on typedefs (#14044, thanks @HertzDevil)Path
lookup inside macro when def has free variables (#14073, thanks @HertzDevil)crystal docs
check File.exists?
for shard.yml
(#13937, thanks @straight-shoota)Crystal::Macros
unless generating docs (#13970, thanks @straight-shoota)UnreachableVisitor
(#13922, thanks @straight-shoota)LLVM.start_multithreaded
and .stop_multithreaded
(#13949, thanks @HertzDevil)Crystal::Scheduler
(#14098, thanks @ysbaddaden)BigInt#&
, #|
, #^
with Int::Primitive
arguments (#14006, thanks @HertzDevil)BigInt#bit
(#13980, thanks @HertzDevil)#trailing_zeros_count
in Int#gcd
(#14069, thanks @HertzDevil)JSON::Builder#string
with byte-based algorithm (#13915, thanks @straight-shoota)JSON::Builder#string
with direct stringification (#13950, thanks @straight-shoota)HTML.unescape
in native Crystal (#13844, thanks @straight-shoota)String#split
(#14001, thanks @HertzDevil)Crystal::System::Thread
(#13814, thanks @HertzDevil)Thread#set_current_thread
to Fiber
(#14099, thanks @ysbaddaden)IO.copy
in IO#gets_to_end
(#13990, thanks @straight-shoota)pointerof(Path)
in the standard library (#14144, thanks @HertzDevil)LLVMExtSetCurrentDebugLocation
from llvm_ext.cc
for LLVM 9+ (#13965, thanks @HertzDevil)LibLLVM
by C headers (#13948, thanks @HertzDevil)LLVMSetTargetMachineGlobalISel
from LLVM 18 (#14079, thanks @HertzDevil)String::Formatter
when Ryu Printf is available (#14132, thanks @HertzDevil)Crystal::System.print_error
in native Crystal (#14116, thanks @HertzDevil)Char::Reader#@end
(#13920, thanks @straight-shoota)src/html/entities.cr
automatically (#13998, thanks @HertzDevil)divisible_by?
(#13982, thanks @meatball133)markd
and reply
(#13992, thanks @nobodywasishere)--format
option (#13940, thanks @straight-shoota)Char#to_i?
in lexer (#13841, thanks @straight-shoota)UnreachablePresenter
(#13941, thanks @straight-shoota)Hash#put_if_absent
(#13898, thanks @ilmanzo)Array.new
and Hash.new
(#13962, thanks @straight-shoota)Iterator
step-by-step iteration (#13967, thanks @straight-shoota)Crystal::Macros::MagicConstant
(#14070, thanks @HertzDevil)JSON.build
(#14140, thanks @syeopite)Char::Reader
's value semantics (#14008, thanks @HertzDevil)String#index!
(#14038, thanks @gettalong)unreachable
options to manpage (#14164, thanks @straight-shoota)pending_wasm32
(#14086, thanks @HertzDevil)HTTP::Server
specs with MT (#14097, thanks @ysbaddaden)File::AccessDeniedError
expectations in File
specs (#14029, thanks @HertzDevil)HTML.unescape
(#13842, thanks @straight-shoota)String#encode
and String.new
on DragonFlyBSD (#13944, thanks @GeopJr)LLVMExtCreateMCJITCompilerForModule
from llvm_ext.cc
(#13966, thanks @HertzDevil)mkfifo
spec for interpreter (#14051, thanks @HertzDevil)top_level_semantic
in doc spec instead of semantic
(#9352, thanks @makenowjust)generate_data
to separate Makefile (#14015, thanks @straight-shoota)github-changelog
script (#14160, thanks @straight-shoota)scripts/generate_llvm_version_info.cr
(#14112, thanks @HertzDevil)make clean
to remove zipped manpages (#14135, thanks @straight-shoota)scripts/*.cr
all executable (#13999, thanks @HertzDevil)samples/.gitignore
into .gitignore
(#14134, thanks @straight-shoota)topic:infrastructure/ci
on PRs (#14166, thanks @straight-shoota)CMAKE_MSVC_RUNTIME_LIBRARY
flag in win.yml (#13900, thanks @HertzDevil)Colorize::Mode
flags (#13745, thanks @HertzDevil)Hash#put_if_absent
(#13590, thanks @HertzDevil)Set#rehash
(#13630, thanks @HertzDevil)key
in Hash#transform_values
and value
in #transform_keys
(#13608, thanks @baseballlover723)File#rename
(#13640, thanks @carlhoerberg)URI::Params.encode
with IO
parameter (#13798, thanks @jwoertink)Complex#to_i128
, Complex#to_u128
(#13838, thanks @HertzDevil)GC:ProfStats
(#13734, thanks @carlhoerberg)JSON::PullParser#read?
(#13837, thanks @HertzDevil)focus: true
(#13653, thanks @straight-shoota)String#byte_index(Char)
(#13819, thanks @funny-falcon)Slice.literal
for numeric slice constants (#13716, thanks @HertzDevil)tool unreachable
(#13783, thanks @straight-shoota)crystal tool dependencies
(#13631, thanks @straight-shoota)crystal tool hierarchy
(#13715, thanks @HertzDevil)Slice#copy_to
as Nil
(#13774, thanks @erdian718)IO::Buffered#peek
's return type to Bytes
(#13863, thanks @HertzDevil)LibLLVM::VERSION
(#13699, thanks @HOMODELUNA)+
in TypeNode#id
for virtual types (#13708, thanks @HertzDevil)BigDecimal#round
for large digit counts in base 10 (#13811, thanks @HertzDevil)XML.parse_html
explicitly to UTF-8 (#13705, thanks @straight-shoota)UInt64.from_yaml
(#13829, thanks @HertzDevil)Process.new
with nilable chdir parameter on Windows (#13768, thanks @straight-shoota)Char::Reader#each
bounds check after block (#13817, thanks @straight-shoota)HTML.decode_codepoint
(#13843, thanks @straight-shoota).cr.cr
extension in require
path lookup (#13749, thanks @straight-shoota)FunDef
(#13789, thanks @straight-shoota)@[Primitive]
def's return type (#13658, thanks @HertzDevil)crystal init
(#13730, thanks @xendk)Proc
s inside extern structs (#13711, thanks @HertzDevil)IO::Delimited
(#11242, thanks @asterite)IO::DEFAULT_BUFFER_SIZE
in Digest#update
(#13635, thanks @carlhoerberg)OpenSSL::SSL::Socket#peer_certificate
(#13785, thanks @compumike)IO#read_string(0)
(#13732, thanks @jgaskins)LLVM.default_target_triple
to avoid regex (#13659, thanks @straight-shoota)Time::Span
(#13807, thanks @erdian718)Pointer
s (#13710, thanks @HertzDevil)Set(T)
instead of Hash(T, Bool)
(#13611, thanks @HertzDevil)Fiber.inactive
inside Fiber#run
's ensure
block (#13701, thanks @HertzDevil)JSON::Serializable
in scripts/generate_ssl_server_defaults.cr
(#13667, thanks @HertzDevil)HTTP::StaticFileHandler
(#13778, thanks @jkthorne)Bool
in the compiler (#13614, thanks @HertzDevil)Digest::SHA512
(#13796, thanks @jgaskins)Dir#mkdir
, Dir#exists?
(#13795, thanks @jkthorne)HTTP::Headers#add
(#13762, thanks @jkthorne)Int::Primitive.from_json
(#13835, thanks @HertzDevil)Float#to_u!
interpreter primitive specs (#13737, thanks @HertzDevil)Time::Location
cache before .load_android
specs (#13718, thanks @HertzDevil)generate_data
target for running generator scripts (#13700, thanks @straight-shoota)clear_cache
(#13636, thanks @straight-shoota)crystal_bootstrap_version
(#13845, thanks @straight-shoota)Big*
numbers against Float
(#13293, #13294, #13350, #13554, thanks @HertzDevil)LLVM::DIBuilder
functions from llvm_ext.cc
(#13448, thanks @HertzDevil)warning
macro (#13262, thanks @Blacksmoke16)print
macro (#13336, thanks @jkthorne)Enumerable#in_slices_of
(#13108, thanks @pricelessrabbit)Enum.parse
(#13508, thanks @straight-shoota)Enum#to_i128
and #to_u128
(#13576, thanks @meatball133)Enumerable#partition
overload with type filter (#13572, thanks @baseballlover723)IO.pipe
on Windows (#13362, thanks @HertzDevil)File::MatchOptions
to control Dir.glob
's behavior (#13550, thanks @HertzDevil)Socket#reuse_port
on Windows (#13326, thanks @stakach)UDPSocket
on Windows (#13325, thanks @stakach)Socket::IPaddress.v4
, .v6
, .v4_mapped_v6
(#13422, thanks @HertzDevil)URI::Params#merge
, #merge!
and URI#update_query_params
(#13415, thanks @skinnyjames)HTTP::Request#form_params
(#13418, thanks @threez)BigDecimal#%
(#13255, thanks @MattAlp)BigInt
to Int::Primitive
(#13562, thanks @HertzDevil)ignore_serialize
for YAML::Serializable
(#13556, thanks @meatball133)assert_prints
spec helper (#13599, thanks @HertzDevil)Process.exec
on Windows (#13374, thanks @HertzDevil)File::BadExecutableError
(#13491, thanks @HertzDevil)Regex.literal
(#13339, thanks @straight-shoota)#match!
for Regex (#13285, thanks @devnote-dev)Regex::MatchOptions
to matching methods (#13353, thanks @straight-shoota)Char#titlecase
for correct mixed-case transformations (#13539, thanks @HertzDevil)start_day
parameter to Time#at_beginning_of_week
(#13446, thanks @DanielGilchrist)Time.unix_ns
and #to_unix_ns
(#13359, thanks @garymardell)crystal --version
(#13254, thanks @will)%CC%
on Windows (#13376, thanks @HertzDevil)-static
and -dynamic
.lib
suffixes on Windows (#13473, #13645, thanks @HertzDevil)CRYSTAL_LIBRARY_RPATH
for adding dynamic library lookup paths (#13499, thanks @HertzDevil)crystal clear_cache
(#13553, thanks @baseballlover723)Array#flatten
to discard Iterator::Stop
(#13388, thanks @straight-shoota)Iterator#chunk
and Enumerable#chunks
without Drop
(#13506, thanks @straight-shoota)Iterator#with_index(offset)
with non-Int32
offset
(#13612, thanks @HertzDevil)preview_mt
infinite loop on Windows (#13419, thanks @HertzDevil)Atomic#max
and #min
for signed enums (#13524, thanks @HertzDevil)Atomic(T)#compare_and_set
when T
is a reference union (#13565, thanks @HertzDevil)Dir#info
on Windows (#13395, thanks @HertzDevil)File.info(File::NULL)
on Windows (#13421, thanks @HertzDevil)File.delete
to remove read-only files on Windows (#13462, thanks @HertzDevil)fcntl
defined on all platforms (#13495, thanks @HertzDevil)Dir.delete
to remove read-only directories on Windows (#13626, thanks @HertzDevil)Dir.glob("/...")
on Windows (#13628, thanks @HertzDevil)LLVM.default_target_triple
to normalize aarch64 darwin target (#13597, thanks @straight-shoota)Log::Builder
append BroadcastBackend
to itself (#13405, thanks @straight-shoota)record
macro with kwargs (#13367, thanks @a-alhusaini)HTTP::Server::Response.redirect
(#13321, thanks @threez)TCPSocket#tcp_keepalive_idle
on Windows (#13364, thanks @HertzDevil)TCPSocket#remote_address
on Windows (#13363, thanks @HertzDevil)LibC.inet_pton
(#13463, thanks @HertzDevil)SO_EXCLUSIVEADDRUSE
if SO_REUSEADDR
already present (#13477, thanks @HertzDevil)Socket::IPAddress#to_s
with Crystal instead of LibC.inet_ntop
(#13483, thanks @HertzDevil)Socket
checks WinError.wsa_value
on Windows, not Errno.value
(#13494, thanks @HertzDevil)Big*
numbers from infinity or NaN (#13351, thanks @HertzDevil)LibM.hypotf
and ldexpf
link errors on Windows (#13485, thanks @HertzDevil)BigRational
and BigFloat
exact (#13538, thanks @HertzDevil)Object.set_crystal_type_id
(#13338, thanks @straight-shoota)/SUBSYSTEM:WINDOWS
on Windows (#13332, thanks @HertzDevil)YAML::Any
(#13546, thanks @willhbr){JSON,YAML}::Any.new
(#13618, thanks @straight-shoota)ENV
(#13570, thanks @HertzDevil)String#underscore
with multi-character downcasing (#13540, thanks @HertzDevil)Char
(#13542, thanks @HertzDevil)String#compare
correctly (#13532, thanks @HertzDevil)/LIBPATH
from Windows linker command (#13530, thanks @HertzDevil)--emit
files back in current directory when running source (#13604, thanks @HertzDevil)lib
name (#13407, thanks @FnControlOption)Bool
's size as 1 byte in crystal tool hierarchy
, not 0 (#13588, thanks @HertzDevil)Array#concat(Indexable)
(#13280, thanks @HertzDevil)Deque#concat(Indexable)
(#13283, thanks @HertzDevil)BigInt.new(Int::Primitive)
(#13303, thanks @HertzDevil)BigRational#<=>(Int)
(#13555, thanks @HertzDevil)HTML.escape(string, io)
performance (#13139, thanks @BlobCodes)String.ends_with?
to use MatchOptions::ENDANCHORED
(#13551, thanks @straight-shoota)Doc::Method#compute_doc_info
to avoid duplicate regex (#13324, thanks @straight-shoota)Deque
buffer resizing (#13257, thanks @HertzDevil)File#utime
on Windows (#13625, thanks @HertzDevil)File#chmod
on Windows (#13627, thanks @HertzDevil)LLVM::Module#write_bitcode_with_summary_to_file
(#13488, thanks @HertzDevil)LLVM::Builder
overloads that don't take an operand bundle (#13564, thanks @HertzDevil)Socket
methods to Crystal::System::Socket
(#13346, thanks @HertzDevil)Int#bit_length
instead of Math.log2
followed by #to_i
(#13440, thanks @HertzDevil)Float
-to-BigRational
conversion (#13352, thanks @HertzDevil)Serializable#initialize
(#13433, thanks @straight-shoota)Symbol.quote_for_named_argument
(#13595, thanks @straight-shoota)Crystal::Lexer#check_macro_opening_keyword
(#13277, thanks @HertzDevil)Atomic#add
, #sub
, #max
, #min
(#13523, thanks @HertzDevil)Crystal::LibEvent
from public docs (#13624, thanks @HertzDevil)Crystal::Macros::Case#else
(#13385, thanks @HertzDevil)Process.executable_path
at PROGRAM_NAME
(#13434, thanks @straight-shoota)String#reverse
(#13536, thanks @noraj)clear_cache
command (#13621, thanks @straight-shoota)IO::FileDescriptor
's STDIN
mode spec (#13365, thanks @HertzDevil)slow
tag to stdlib specs that compile a program (#13498, thanks @straight-shoota)Process.pgid
spec on Windows (#13476, thanks @HertzDevil)String.new(&)
(#13333, thanks @straight-shoota)CRYSTAL
in comments (#13500, thanks @HertzDevil)Time::Location.load_local
spec if unable to change time zone (#13355, thanks @HertzDevil)spec/interpreter_std_spec.cr
(#13310, thanks @cyangle)release/1.8
(#13361, #13449, thanks @straight-shoota)Makefile.win
(#13383, thanks @HertzDevil).gitattributes
to repository (#13479, thanks @HertzDevil)shell.nix
to nixpkgs-23.05 (#13571, thanks @HertzDevil)target
variable in Makefiles (#13384, thanks @HertzDevil)bin\crystal.ps1
writing to standard error stream (#13372, thanks @HertzDevil)Iterator::ChainIterator
(#13412, thanks @straight-shoota)Log::Metadata#dup
crash with 2+ entries (#13369, thanks @HertzDevil)JSON::Serializable
on certain recursively defined types (#13430, thanks @kostya)String#scan
with empty Regex
match at multibyte char (#13387, thanks @HertzDevil)String#gsub
, #scan
, #split
(#13406, thanks @HertzDevil)StaticArray
's @buffer
(#13319, thanks @HertzDevil)