Releases: crystal-lang/crystal
Releases · crystal-lang/crystal
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...
1.0.0
Language changes
- Support
Tuple#[](Range)
with compile-time range literals. (#10379, thanks @HertzDevil)
Macros
- Don't use named argument key names as parameters for
method_missing
calls. (#10388, thanks @HertzDevil)
Standard library
- (breaking-change) Drop deprecated definitions. (#10386, thanks @bcardiff)
- Fix example codes in multiple places. (#10505, thanks @maiha)
Macros
- (breaking-change) Always add explicit return types in getter/property macros. (#10405, thanks @Sija)
Numeric
- (breaking-change) Change default rounding mode to
TIES_EVEN
. (#10508, thanks @straight-shoota) - Fix downcasting float infinity. (#10420, thanks @straight-shoota)
- Fix
String#to_f
out of range behaviour. (#10425, thanks @straight-shoota) - Implement rounding mode for
Number#round
. (#10413, #10360, #10479, thanks @straight-shoota)
Text
- Add missing unicode whitespace support to
String
methods. (#10367, thanks @straight-shoota)
Collections
- Fix
Range#==
to ignore generic type arguments. (#10309, thanks @straight-shoota) - Make
Enumerable#flat_map
,Iterator#flat_map
work with mixed element types. (#10329, thanks @HertzDevil) - Remove duplicated
sort
related specs. (#10208, thanks @makenowjust) - Fix docs regarding
Set#each
return type. (#10477, thanks @kachick) - Fix docs examples regarding
Set#*set_of?
. (#10285, thanks @oddp) - Fix expectation on set specs. (#10482, thanks @kachick)
Serialization
- (breaking-change) Serialize
Enum
to underscoredString
by default. (#10431, thanks @straight-shoota, @caspiano) - (breaking-change) Use class instead of struct for types in XML module. (#10436, thanks @hugopl)
- Add
YAML::Nodes::Node#kind
. (#10432, thanks @straight-shoota)
Files
- Let
IO::Memory
not be writable with read-onlySlice
. (#10391, thanks @straight-shoota) - Allow
Int64
values withinIO#read_at
. (#10356, thanks @Blacksmoke16) - Add
IO::Sized#remaining=(value)
to reuse an existing instance. (#10520, thanks @jgaskins)
Networking
- (security) Remove Cookie Name Decoding. (#10442, thanks @security-curious)
- (breaking-change) Remove implicit en-/decoding for cookie values. (#10485, thanks @straight-shoota)
- (breaking-change) Split
HTTP::Cookies.from_headers
into separate methods for server/client. (#10486, thanks @straight-shoota) - (performance) Minor performance improvements to
HTTP::Cookies
. (#10488, thanks @straight-shoota) - Respect subclasses when constructing
HTTP::Client
from class methods. (#10375, thanks @oprypin) - Make the
content-length
header more RFC compliant. (#10353, thanks @Blacksmoke16) - Fix
#respond_with_status
when headers written or closed. (#10415, thanks @straight-shoota) - Fix
Cookie#==
to take all ivars into account. (#10487, thanks @straight-shoota) - Remove implicit
path=/
fromHTTP::Cookie
. (#10491, thanks @straight-shoota) - Add
HTTP::Request#local_address
. (#10385, thanks @carlhoerberg)
Logging
- Close
AsyncDispatcher
on#finalize
. (#10390, thanks @straight-shoota)
System
- Fix
Process.parse_argument
behavior against a quote in a word. (#10337, thanks @makenowjust) - Add aarch64 support for macOS/darwin targets. (#10348, thanks @maxfierke, @RomainFranceschini)
- Add
LibC::MAP_ANONYMOUS
to x86_64-darwin to match other platforms. (#10398, thanks @sourgrasses)
Runtime
- Improve error message for ELF reader on uninitialized runtime. (#10282, thanks @straight-shoota)
Compiler
- (breaking-change) Disallow surrogate halves in escape sequences of string and character literals, use
\x
for arbitrary binary values. (#10443, thanks @HertzDevil) - Fix ICE when exhaustive in-clause calls pseudo-method. (#10382, thanks @HertzDevil)
- Fix ICE when parsing
foo.%
calls. (#10351, thanks @makenowjust) - Fix edge cases for symbol quoting rules. (#10389, thanks @HertzDevil)
- Support closured vars inside
Const
initializer. (#10478, thanks @RX14) - Documentation grammar fix. (#10369, thanks @szTheory)
Language semantics
- Don't fail on untyped
is_a?
. (#10320, thanks @asterite) - Fix named arguments in
super
andprevious_def
calls. (#10400, thanks @HertzDevil) - Fix assignments in array literals. (#10009, thanks @straight-shoota)
- Consider type var splats in generic type restrictions. (#10168, thanks @HertzDevil)
- Align
Proc.new(&block)
's behaviour with other captured blocks. (#10263, thanks @HertzDevil) - Don't merge
NamedTuple
metaclasses through instance types. (#10501, thanks @HertzDevil) - Access instantiations of
NamedTuple
and other generics uniformly. (#10401, thanks @HertzDevil) - Improve error message for auto-cast error at Var assign. (#10327, thanks @straight-shoota)
- Exclude abstract defs from "no overload matches" errors. (#10483, thanks @HertzDevil)
- Support splats inside tuple literals in type names. (#10430, thanks @HertzDevil)
- Accept pointer instance types on falsey conditional branches. (#10464, thanks @HertzDevil)
- Match named arguments by external parameter names when checking overload cover. (#10530, thanks @HertzDevil)
Doc generator
Others
- CI improvements and housekeeping. (#10299, #10340, #10476, #10480, thanks @bcardiff, @Sija, @straight-shoota)
- Update distribution-scripts to use Shards v0.14.1. (#10494, thanks @bcardiff)
- Add GitHub issue templates. (#8934, thanks @j8r)
- Add LLVM 11.1 to the list of supported versions. (#10523, thanks @Sija)
- Fix SDL examples crashes. (#10470, thanks @megatux)
0.36.1
Standard library
- Fix
Enum.from_value?
for flag enum with nonInt32
base type. (#10303, thanks @straight-shoota)
Text
Collections
- Explicitly return a
Hash
inHash#dup
andHash#clone
(reverts #9871). (#10331, thanks @straight-shoota)
Serialization
Runtime
Compiler
- (performance) Initialize right-away constants in a separate function. (#10334, thanks @asterite)
- Fix incorrect casting between different union types. (#10333, thanks @asterite)
- Fix a formatting error in the "missing argument" error. (#10325, thanks @BlobCodes)
- Fix while condition assignment check for Not. (#10347, thanks @asterite)
- Allow operators and setters-like macros names back. (#10338, thanks @asterite)