Releases: crystal-lang/crystal
Releases · crystal-lang/crystal
1.4.1
Standard Library
Collection
Files
- Add missing fun def for
__xstat
(#11985, thanks @straight-shoota)
Runtime
- Add
pthread
link annotations in lib bindings (#12013, thanks @straight-shoota) - Fix GC typedefs on Windows (#11963, thanks @HertzDevil)
Compiler
Semantic
1.4.0
Language
- Add support for
Int128
in codegen and macros (#11576, thanks @BlobCodes) - Support
ProcPointer
s with global path and top-level method references (#11777, thanks @HertzDevil) - Fix documentation for macros
system
andrun
(#11740, thanks @lbguilherme) - Experimental: better type inference for ivars/cvars (#11812, thanks @asterite)
- Support
@[Deprecated]
on constants (#11680, thanks @HertzDevil)
Standard Library
- Fix compiler flags with optional arg eating following flags (#11201, thanks @yb66)
- Support GNU style optional arguments in
OptionParser
(#11546, thanks @HertzDevil) - Remove some unnecessary link annotations (#11563, thanks @straight-shoota)
- Remove useless assignments (#11774, thanks @IgorPolyakov)
- Use "truthy" and "falsey" in more places in the documentation (#11784, thanks @HertzDevil)
- Add missing code blocks for
self
in documentation (#11718, thanks @HertzDevil) - Add support for LLVM 14.0 (#11905, thanks @HertzDevil)
- Fix code examples in doc comments (2022-03) (#11927, thanks @maiha)
Collection
- Remove
Iterator.of(Iterator.stop)
from implementations (#11613, thanks @asterite) - Add allow
Enumerable
arguments forHash#select
and#reject
(#11750, thanks @mamantoha) - Add docs for
Hash#reject!
(#11691, thanks @wontruefree) - Add raising method variants
Enumerable#find!
and#index!
(#11566, thanks @yxhuvud) - (performance) Optimize block-less overloads of
BitArray#fill
(#11450, thanks @HertzDevil) - Adds docs for
Array#replace
(#11682, thanks @wontruefree) - (performance) Optimize
BitArray
's counting methods (#11591, thanks @HertzDevil) - Add some return types to Array, Hash, Set and String (#11822, thanks @asterite)
- Add
Hash#update
(#11881, thanks @ftarulla) - Allow
Bytes[]
to construct an emptyBytes
(#11897, thanks @HertzDevil) - Improve
BitArray
's constructors (#11898, thanks @HertzDevil) - Add overload to
Enumerable#tally
and#tally_by
accepting a hash (#11815, thanks @mamantoha)
Crypto
Files
- Fix race condition in
chown
(#11885, thanks @didactic-drunk) - Add docs for
Dir#each_child
(#11688, thanks @wontruefree) - Add docs for
Dir#path
(#11689, thanks @wontruefree) - Support read-write + binary file modes in
File.open
(#11817, thanks @HertzDevil) - Add docs for
Dir#entries
(#11701, thanks @wontruefree) - Add
IO#getb_to_end
(#11830, thanks @HertzDevil) - Fix
IO::FileDescriptor#pos
giving incorrect position after write (#10865, thanks @didactic-drunk) - Remove reference to binary file mode in
File.open
(#11824, thanks @HertzDevil)
Macros
- Add
#parse_type
(#11126, thanks @Blacksmoke16)
Networking
- (performance) Optimize
URI.decode
(#11741, thanks @asterite) - Fix
address_spec
expectation for Windows Server 2022 (#11794, thanks @straight-shoota) - Add
space_to_plus
option inURI::Params
everywhere (#11821, thanks @asterite) - Improve
URI::Params#inspect
to use hash-like literal (#11880, thanks @straight-shoota) - Use enums instead of symbols for
MIME::Multipart
andHTTP::FormData
(#11617, thanks @HertzDevil)
Numeric
- (breaking-change) Fix: Hide
BigDecimal::ZERO
andBigDecimal::TEN
(#11820, thanks @lbguilherme) - (breaking-change) Add support for scientific notation in
BigFloat#to_s
(#10632, thanks @HertzDevil) - Fix: Inspect string in error message for number parsing (#11883, thanks @straight-shoota)
- Add docs for
Complex#zero?
(#11697, thanks @wontruefree) - Fix E notation parsing in
BigDecimal
(#9577, thanks @stevegeek) - (performance) Optimize Integer decoding from bytes (#11796, thanks @carlhoerberg)
Runtime
- Fix interpreter when shared library
pthread
is missing (#11807, thanks @straight-shoota) - (performance) Implement
Intrinsics.pause
for aarch64 (#11742, thanks @lbguilherme, @jgaskins) - Add crash handler on Windows (#11570, thanks @HertzDevil)
- Add specs for
NamedTuple#from
(#11816, thanks @straight-shoota) - Improve error for incompatible generic arguments for
WeakRef
(#11911, thanks @straight-shoota) - Add the wasm entrypoint defined in Crystal (#11936, thanks @lbguilherme)
Serialization
- Allow passing instance method or conditional expressions to option
ignore_serialize
onJSON::Field
(#11804, thanks @cyangle) - Implement
Iterator.from_json
and#to_json
(#10437, thanks @wonderix)
Specs
- Add
file
andline
arguments toit_iterates
(#11628, thanks @straight-shoota) - Remove duplicate word in documentation (#11797, thanks @samueleaton)
System
- (breaking-change) (security) Fix character mappings for Windows path conversions (#11847, thanks @straight-shoota)
- Add fallback for
Path.home
on Unix (#11544, thanks @HertzDevil) - Relax
ENV.fetch(key, &)
's block restriction (#11779, thanks @HertzDevil) - Refactor target clauses for system implementations (#11813, thanks @straight-shoota)
- Fix
Path
support for UNC shares (#11827, thanks @straight-shoota) - Fix regression for Linux older than 3.17: properly check that
getrandom
is available (#11953, thanks @lbguilherme)
Text
- Fix ensure PCRE JIT mode is available before running spec (#11533, thanks @Blacksmoke16)
- Add more
Colorize
overloads and fix docs (#11832, thanks @asterite) - Refactor
Colorize::Mode
enum (#11663, thanks @straight-shoota) - Add some docs for
UUID
(#11683, thanks @wontruefree) - Add docs for
UUID#urn
(#11693, thanks @wontruefree) - Add docs for
String#[]
(#11690, thanks @wontruefree) - Allow explicit usage of
libiconv
(#11876, thanks @luislavena) - (breaking-change) Fix: Honour encoding in
IO::Memory#to_s
(#11875, thanks @straight-shoota) - Add
self
return type toUUID
constructor methods (#10539, thanks @straight-shoota) - Fix infinite loop for certain
StringPool
initial capacities (#11929, thanks @HertzDevil)
Time
- Add examples to `Time::F...
1.3.2
Standard Library
Text
- Fix buffer overflow in
String#index
(#11747, thanks @asterite, @straight-shoota)
1.3.1
Standard Library
- Remove useless variable declarations in trailing position (#11704, thanks @HertzDevil)
Crypto
- Fix for missing
BIO_*
functions in OpenSSL < 1.1.0 (#11736, thanks @daliborfilus)
Runtime
- Remove string allocation from
GC_set_warn_proc
(#11729, thanks @straight-shoota)
Tools
- Doc generator: Fix escape HTML in code span (#11686, thanks @straight-shoota)
- Fix formatter error for
ProcLiteral
s withUnion
return type (#11709, thanks @HertzDevil)
Other
Release 1.3.0
1.3.0 (2022-01-06)
Compiler
- Refer to
T.class
as "metaclass" in error messages, not "class" (#11378, thanks @HertzDevil) - Create
Reason
enum for exhaustive case in nil-reason check (#11449, thanks @rymiel) - Improve cache directory behaviour on Windows (#11436, thanks @HertzDevil)
- Automatically detect MSVC tools on Windows via
vswhere
(#11496, thanks @HertzDevil) - Clean up .pdb files for temporary executables on MSVC (#11553, thanks @HertzDevil)
- Disable incremental linking on MSVC (#11552, thanks @HertzDevil)
- Allow multiple
--emit
compiler options to stack (#11556, thanks @HertzDevil) - Refactor some type restrictions in the compiler (#11531, thanks @straight-shoota)
- Detect
cl.exe
's path for compiler specs requiring a C compiler (#11560, thanks @HertzDevil) - Increase default stack size on MSVC to 8 MB (#11569, thanks @HertzDevil)
- Resolve compiler wildcard require (#11562, thanks @straight-shoota)
- Compiler: use enums instead of symbols in various places (#11607, thanks @HertzDevil)
Codegen
- Disable specs for
StaticArray#sort_by
on broken targets (#11359, thanks @straight-shoota) - Fix link flag behaviour on Windows MSVC (#11424, thanks @HertzDevil)
- Attach debug locations to splat expansions inside array-like literals (#11655, thanks @HertzDevil)
- Use full name for private types' class variables during codegen (#11651, thanks @HertzDevil)
- Fix codegen when instantiating class methods of typedefs (#11636, thanks @HertzDevil)
- Add minimal load-time DLL support on Windows, support
dllimport
storage class (#11573, thanks @HertzDevil)
Debugger
- Attach debug locations to auto-generated
initialize
methods (#11313, thanks @HertzDevil) - Fix debug location for
~check_proc_is_not_closure
(#11311, thanks @HertzDevil)
Interpreter
crystal i
, a Crystal interpreter (#11159, thanks @asterite)- Implement FFI bindings (#11475, thanks @straight-shoota)
- Add
Crystal::Loader
(#11434, #11662, thanks @straight-shoota, @HertzDevil) - Mark
bswap32
instrinsic with interpreter primitive annotation (#11582, thanks @rymiel) - Split interpreter specs into separate files (#11578, thanks @straight-shoota)
- Workaround for GC issues in interpreter specs (#11634, thanks @straight-shoota)
Parser
- Parser: allow keyword as named argument inside macros (#10377, thanks @asterite)
- Parser: add missing end location to
IsA
node (#11351, thanks @FnControlOption) - Fix node locations for
ProcLiteral
s with parameters (#11365, thanks @HertzDevil) - Fix parser error with named argument
end
in macro body (#11463, thanks @straight-shoota) - Report syntax error for too-long bin/hex/oct integer literals (#11447, thanks @oprypin)
- [lexer] Correctly increase nesting for escaped macro
unless
(#11440, thanks @rymiel) - Show proper syntax errors in some edge cases in the parser (#11446, thanks @oprypin)
- Fix parse
yield
with parenthesis (#11469, thanks @straight-shoota) - Lexer number parsing refactor (#11211, thanks @BlobCodes)
- Allow underscores after a leading zero in
String#to_i
(regression fix) (#11672, thanks @BlobCodes) - Fix no comma before short block in
ToSVisitor
(#11677, thanks @homonoidian) - Unify format of "unexpected token" error (#11473, thanks @straight-shoota)
- Implement lexer int128 support (#11571, thanks @BlobCodes)
Semantic
- Show proper owner for
Class
's methods in error messages (#10590, thanks @HertzDevil) - Be more strict about
ProcNotation
variable declarations (#11372, thanks @HertzDevil) - Allow metaclass parameters in
Proc
literals and pointers (#11367, thanks @HertzDevil) - Fix top-level multi-assign splat variable not working in macros (#11600, thanks @HertzDevil)
- Replace
semantic
withassert_no_errors
in compiler specs whenever possible (#11288, thanks @HertzDevil) - Make
inject_primitives = false
default for semantic specs (#11297, thanks @HertzDevil) - Add spec for #8428 (#10073, thanks @docelic)
- Remove and resolve spurious cast and its associated FIXME (#11455, thanks @rymiel)
- Add pending spec for recursive abstract struct (#11470, thanks @HertzDevil)
Language
- (breaking-change) Require elements in 1-to-n assignments to match targets exactly (#11145, thanks @HertzDevil)
- (breaking-change) Require right-hand side of one-to-many assignments to be
Indexable
(#11545, thanks @HertzDevil) - Support splats on left-hand sides of multiple assignment expressions (#10410, thanks @HertzDevil)
- Make all AST nodes immutable through container-returning methods (#11397, thanks @HertzDevil)
- Add auto upcast for integer and float values (#11431, #11529, thanks @asterite, @beta-ziliani)
Standard Library
- Fix
Process::INITIAL_PWD
for non-existent path (#10525, thanks @straight-shoota) - Resolve some TODOs (#11369, thanks @straight-shoota)
- Refactor some target flag uses (#11466, thanks @straight-shoota)
- Use
Slice(UInt8)#fill
in the standard library (#11468, thanks @HertzDevil) - Update
spec/win32_std_spec.cr
(#11432, #11637, thanks @HertzDevil) - Use strings instead of symbols in
#finalize
specs (#11619, thanks @HertzDevil) - Fix
Enum.parse
to handle case-sensitive member names (#11659, thanks @straight-shoota) - Improve docs for
Object#not_nil!
(#11661, thanks @straight-shoota)
Collection
- (breaking-change) Always use
start
as parameter in subrange-accepting methods (#11350, thanks @HertzDevil) - (breaking-change) Refactor
Indexable::Mutable#fill
's overloads (#11368, thanks @HertzDevil) - Add sorting methods to
StaticArray
(#10889, thanks @HertzDevil) - Add spaceship operator to
StaticArray
(#11364, thanks @henrikac) - (performance) Optimize
BitArray#reverse!
(#11363, thanks @HertzDevil) - (performance) Grow large arrays more slowly (#11482, thanks @mgomes)
- Fix docs for
Indexable::Mutable#map!
(#11349, thanks @HertzDevil) - Add
Slice#unsafe_slice_of
,#to_unsafe_bytes
(#11379, thanks @HertzDevil) - (performance) Avoid reallocation ...
1.2.2
Compiler
- x86_64 ABI: pass structs indirectly if there are no more available registers (#11344, thanks @ggiraldez)
- Add parentheses around type name for metaclasses of unions (#11315, thanks @HertzDevil)
- (regression) Restrict virtual metaclasses to themselves against
Class
(#11377, thanks @HertzDevil) - (regression) Add fallback for union debug type if current debug file is not set (#11390, thanks @maxfierke)
- (regression) Add missing debug locations to constant / class variable read calls (#11417, thanks @HertzDevil)
Standard Library
Collection
- Fix
BitArray#toggle
when toggling empty subrange (#11381, thanks @HertzDevil)
Crypto
- Update for OpenSSL 3.0.0 (#11360, thanks @straight-shoota)
- Restore libressl support and add CI for that (#11400, thanks @straight-shoota)
- Replace lib version comparisons by functional feature checks (#11374, thanks @straight-shoota)
Runtime
- Add support for DWARF 5 (#11399, thanks @straight-shoota)
- Retrieve filename of shared libs, use in stacktraces (#11408, thanks @rdp)
Other
- [CI] Fix enable nix-command as experimental feature (#11398, thanks @straight-shoota)
- [CI] Fix OpenSSL 3 apk package name (#11418, thanks @straight-shoota)
- Update distribution-scripts (#11404, thanks @straight-shoota)
- [CI] Fix pcre download URL (#11422, thanks @straight-shoota)
1.2.1
Compiler
- Adding location to the Path returned by the literal expander for regex (#11334, thanks @beta-ziliani)
Standard Library
- Add support for LLVM 13 (#11302, thanks @maxfierke)
Runtime
Tools
- Update markd subtree to v0.4.2 (#11338, thanks @straight-shoota)
1.2.0
Compiler
- Fix variance checks between generic instances for
Proc#call
and abstract defs. (#10899, thanks @HertzDevil) - Fix
proc_spec
forcing normal compilation instead of JIT (#10964, thanks @straight-shoota) - Fix
ProcNotation#to_s
remove whitespace for nil output type (#10935, thanks @straight-shoota) - Compiler: carry FileModule information inside Block (#11039, thanks @asterite)
- Splat values correctly inside return/break/next statements (#10193, thanks @HertzDevil)
- Handle already stripped column numbers in compiler exceptions (#11008, thanks @pyrsmk)
- Substitute unbound type parameters in virtual metaclass types (#11067, thanks @HertzDevil)
- Improve detection of instance variables in extended modules (#10554, thanks @HertzDevil)
- Don't compute instance variable initializers on unbound generic instances (#11000, thanks @HertzDevil)
- Syntax errors for invalid 128-bit integer literals (#10975, thanks @rymiel)
- Support auto-splatting in captured block literals (#10251, thanks @HertzDevil)
- Detect cyclic includes between generic modules (#10529, thanks @HertzDevil)
- Add stricter checks for arguments to macro methods on AST nodes (#10498, thanks @HertzDevil)
- Compiler: fix
is_a?
for virtual metaclass types (#11121, thanks @asterite) - Fix edge cases with unicode method names (#10978, thanks @HertzDevil)
- Don't emit debug info for unused variable declarations (#10957, thanks @HertzDevil)
- Fix
Call.def_full_name
print full block parameter (#10915, thanks @straight-shoota) - Allow union types to be unbound (#11166, thanks @HertzDevil)
- Make
typeof
start a nested lexical scope (#10796, thanks @HertzDevil) - Fix edge case for intersection between virtual metaclasses (#11185, thanks @HertzDevil)
- Compiler: don't trigger "already had enclosing call" for same object (#11202, thanks @asterite)
- Properly handle indirect arguments for external C functions (#11189, thanks @ggiraldez)
- Fix resolve generic argument in block output type restriction mismatch (#11186, thanks @straight-shoota)
- Secure array slicing when expanding macro for stack trace (#11109, thanks @pyrsmk)
- Fix debug locations for
Proc
pointers (#11243, thanks @HertzDevil) - Allow assignments from generic instance metaclasses to virtual metaclasses (#11250, thanks @HertzDevil)
- Refactor
CrystalPath#find_in_path_relative_to_dir
for readability (#10876, #10990, #10988, thanks @straight-shoota) - Allow constants and instance / class variables as receivers for setter proc pointers (#10741, thanks @HertzDevil)
- Do not use globals for regex (#10951, thanks @asterite)
- Define type filtering through an intersection operation (#10781, thanks @HertzDevil)
- Fix no overflow check when primitive int converts to same type (#11003, thanks @HertzDevil)
- Attach debug locations to generated internal LLVM functions (#10934, thanks @HertzDevil)
- Add helpful error message for invalid number literal like '.42' (#4665, thanks @makenowjust)
- Add
CrystalPath.expand_paths
, expand relative to compiler path (#11030, thanks @straight-shoota) - Clarify usage of "arguments" and "parameters" in error messages (#10378, thanks @HertzDevil)
- (performance) Don't generate type IDs for formal generic instances (#11167, thanks @HertzDevil)
- (performance) Don't generate unique type IDs for virtual metaclasses (#11188, thanks @HertzDevil)
- Add an environment variable for dumping type IDs (#11168, thanks @HertzDevil)
- Allow underscores in macro
for
's loop variables (#11141, thanks @HertzDevil) - (performance) Compiler: cache cleanup transformer (#11197, thanks @asterite)
- Avoid needless union in
LLVM::ABI::AArch64#homogeneous_aggregate?
(#11199, thanks @asterite) - Removing ThinLTO support (#11194, thanks @beta-ziliani)
- Error if abstract def implementation is inherited from supertype (#11056, thanks @straight-shoota)
- (performance) Add
inject_primitives: false
to macro_spec (#11269, thanks @straight-shoota) - Primitive annotations for interpreter (#11147, thanks @asterite)
- Support generic module instances in
TypeNode#includers
(#11116, thanks @HertzDevil) - Reject hash literals with mixed syntax (#11154, thanks @makenowjust)
Language
- Make
.as?(NoReturn)
always returnnil
(#10896, thanks @HertzDevil) - Compiler: make
is_a?(union)
work correctly for virtual types (#11176, thanks @asterite) - Adjust docs for
Crystal::Macros::HashLiteral#[]
(#10930, thanks @kevinsjoberg) - Fix path lookup when ancestor finds type with same name as current scope (#10901, thanks @HertzDevil)
- Fix several compile-time operations on generic instance metaclasses (#11101, thanks @HertzDevil)
- Make
#is_a?
in macros respect the AST node hierarchy (#11062, thanks @HertzDevil) - Add docs to string methods in
SymbolLiteral
andMacroId
(#9298, thanks @makenowjust) - Add clarification about when
instance_vars
can be called (#11171, thanks @willhbr) - Add
file_exists?
macro method (#10540, thanks @Sija)
Standard Library
- (breaking-change) Change nonsense return types to Nil: uncategorized (#10625, thanks @oprypin)
- (breaking-change) Change nonsense return types to Nil in formatter classes (#10623, thanks @oprypin)
- Add base64 to prelude (#11050, thanks @straight-shoota)
- Remove calls to deprecated
SystemError.from_winerror
(#11220, thanks @straight-shoota) - Add support for LLVM 12 (#10873, #11178, thanks @maxfierke, @Blacksmoke16)
- Examples: fix (2021-09) (#11234, thanks @maiha)
- Don't use
:nodoc:
when overriding public methods (#11096, thanks @HertzDevil) - Add internal registry implementation for win32 (#11137, thanks @straight-shoota)
Collection
- (breaking-change) Move
Array#product
toIndexable#cartesian_product
(#10013, thanks @HertzDevil) - Disallow
Slice(T).new(Int)
whereT
is a union of primitive number types (#10982, thanks @HertzDevil) - Make
Array#transpose
,Enumerable#reject
,Enumerable#to_h
work with tuples (#10445, thanks @HertzDevil) - Fix
Enumerable#each
block return type (#10928, thanks @straight-shoota) - Fix key type f...
1.1.1
Language changes
- Revert name of top-level module to
main
(#10993, thanks @beta-ziliani)
Standard Library
- Fix missing required args for
Socket::Addrinfo::Error.new
(#10960, thanks @straight-shoota) - Fix disable unnecessary spec on win32 (#10971, thanks @straight-shoota)
- Remove incorrect type restrictions on index methods with offset (#10972, thanks @straight-shoota)
- Fix: documentation of
#step
inNumber
andChar
(#10966, #11006, thanks @beta-ziliani and @straight-shoota)
Compiler
- Fix parsing macro body with escaped backslash in literal (#10995, thanks @straight-shoota)
Other
- Updating aarch64 actions to use 1.0.0 images (#10976, thanks @beta-ziliani)
1.1.0
1.1.0 (2021-07-14)
Language changes
- Support splat expansions inside tuple and array literals. (#10429, thanks @HertzDevil)
- Support breaks with values inside
while
expressions. (#10566, thanks @HertzDevil)
Macros
- Add
@top_level
to access the top-level scope in macros. (#10682, thanks @beta-ziliani) - Fix: preserve integer sizes in
NumberLiteral#int_bin_op
. (#10713, thanks @collidedscope) - Add
NumberLiteral#to_number
. (#10802, thanks @straight-shoota) - (breaking-change) Add
Crystal::Macros::Path#global?
deprecating the oldCrystal::Macros::Path#global
. (#10812, thanks @HertzDevil) - Minor fixes to docs of
UnaryExpression
macro nodes. (#10816, thanks @HertzDevil) - Add macro method
ASTNode#nil?
. (#10850, #10616, thanks @straight-shoota)
Standard library
Global changes
Windows support
- Port
Socket::Address
to win32 . (#10610, thanks @straight-shoota) - Port
Socket::Addrinfo
to win32. (#10650, thanks @straight-shoota) - Extract system-specifics from Socket. (#10706, thanks @straight-shoota)
- Make
WinError
portable and add it to prelude. (#10725, thanks @straight-shoota) - Improve portability of
SystemError
. (#10726, thanks @straight-shoota) - Refactor
Socket::Addrinfo::Error
based onos_error
. (#10761, thanks @straight-shoota) - Add
WinError.wsa_value
and specs forWinError
. (#10762, thanks @straight-shoota) - Add specs for
Errno
. (#10763, thanks @straight-shoota) - Refactor: Move win32 libc bindings from
winbase.cr
to approriate files. (#10771, thanks @straight-shoota) - Refactor: Change protocol socket fd to
Socket::Handle
. (#10772, thanks @straight-shoota) - Fix
Socket::Connect
error in addrinfo inheritos_error
. (#10782, thanks @straight-shoota) - Reorganize some win32 libc bindings (#10776, thanks @straight-shoota)
Type annotations
- Add type restriction to private
Process
constructor. (#7040, thanks @z64) - Add various return type restrictions (thanks @oprypin, @straight-shoota, and @caspiano):
#10578, #10579,
#10580, #10581,
#10582, #10583,
#10584, #10585,
#10586, #10587,
#10588, #10849,
#10856, #10857,
#10858, #10905 - Add type restrictions for splat-less overloads of some methods. (#10594, thanks @HertzDevil)
Numeric
- Add
Number.new
overload forString
. (#10422, thanks @Blacksmoke16) - Fix
Math.pw2ceil
for zero and 64-bit integers. (#10555, thanks @straight-shoota) - Add
#positive?
&#negative?
toNumber
andTime::Span
. (#10601, thanks @Blacksmoke16) - Fix imprecise
Number#significant
algorithm. (#10615, thanks @straight-shoota) - Add
BigFloat
's rounding modes. (#10618, thanks @HertzDevil) - Fix handling of arithmetic overflow in
BigDecimal#div
. (#10628, thanks @kellydanma) - Clarify behaviour of unsafe
Float
-to-number conversions. (#10631, thanks @HertzDevil) - Fix return type restriction for
Number#humanize
overload. (#10633, thanks @HertzDevil) - Fix
printf
float with with many digits. (#10719, thanks @straight-shoota) - Add
BigDecimal
's missing rounding modes. (#10798, thanks @HertzDevil) - Add support for using big rational
#**
with unsigned ints. (#10887, thanks @stakach) - Add overflow detection to
BigFloat#to_i64
and#to_u64
. (#10630, thanks @HertzDevil)
Text
- (performance) Optimize
Levenshtein.distance
. (#8324, thanks @r00ster91) - Refactor: add private
Slice#hexdump(io : IO)
overload. (#10496, thanks @HertzDevil) - Restrict
MatchData#begin
and#end
toInt32
. (#10656, thanks @straight-shoota) - Refactor: remove
#check_needs_resize
fromIO::Memory
,String::Builder
. (#10732, thanks @straight-shoota) - Fix
Base64#encode
, exclude last 3 bytes from bswap. (#10752, thanks @kostya) - Refactor: avoid union type in
Char::Reader#decode_char_at
. (#10758, thanks @asterite)
Collections
- Add sub/superset checking methods to
Hash
. (#7500, thanks @Sija) - Improve documentation of
Array#[](Range)
. (#10243, thanks @straight-shoota) - Add
Steppable
module as generalizedNumber#step
. (#10279, thanks @straight-shoota) - Add docs for
#map_with_index
. (#10512, thanks @wontruefree) - Add
Array#truncate
. (#10712, thanks @HertzDevil) - Fix: Always copy
Hash
's default block on#dup
and#clone
. (#10744, thanks @HertzDevil) - Apply
Array#push
's resizing heuristic to#unshift
. (#10750, thanks @HertzDevil) - Refactor index / count normalization in range-like methods. (#10753, thanks @HertzDevil)
- Add methods for cumulative folding and prefix sums. (#10789, thanks @HertzDevil)
- Fix: Pass read-only flag to peeked slice in
IO::Memory
. (#10891, thanks @z64)
Crypto
- Add methods for getting peer certificates and signatures in
OpenSSL
. (#8005, thanks @will) - Add docs for
OpenSSL::Cipher
. (#9934, thanks @sol-vin) - Fix format of
src/openssl/cipher.cr
. (#10705, thanks @straight-shoota) - Refine documentation for
Random#urlsafe_base64
. (#10724, thanks @straight-shoota) - Fix ssl context required for
add_x509_verify_flags
. (#10756, thanks @stakach)
Time
- Improve error handling for
load_localtime
on unix. (#10654, thanks @straight-shoota) - Fix broken call to
Time#to_s
. (#10778, thanks @straight-shoota) - Fix
Time#shift
cover date boundaries with zone offset. (#10871, thanks @straight-shoota)
Files
- Fix and unify documentation for
puts
. (#10614, thanks @straight-shoota) - Fix
Path#sibling
return type. (#10655, thanks @Sija) - Add
Path
inFileUtils
's methods to match the interfaces it's wrapping. (#10747, thanks @yb66) - Fix
FileDescriptor#pos
returnInt64
on armv6 ([#10845](https://github.com/crystal-l...