Name | Modified | Size | Downloads / Week |
---|---|---|---|
Parent folder | |||
crystal-1.18.0-windows-x86_64-msvc-unsupported.zip | < 21 hours ago | 52.5 MB | |
crystal-1.18.0-windows-aarch64-gnu-unsupported.zip | < 21 hours ago | 59.5 MB | |
crystal-1.18.0-windows-x86_64-gnu-unsupported.zip | < 21 hours ago | 60.7 MB | |
crystal-1.18.0-windows-x86_64-msvc-unsupported.exe | < 21 hours ago | 36.2 MB | |
crystal-1.18.0-1-darwin-universal.tar.gz | < 21 hours ago | 59.6 MB | |
crystal-1.18.0-1-linux-x86_64-bundled.tar.gz | < 21 hours ago | 52.4 MB | |
crystal-1.18.0-1-linux-x86_64.tar.gz | < 21 hours ago | 52.0 MB | |
crystal-1.18.0-1.universal.pkg | < 21 hours ago | 59.6 MB | |
crystal-1.18.0-docs.tar.gz | < 21 hours ago | 16.5 MB | |
1.18.0 source code.tar.gz | < 23 hours ago | 3.9 MB | |
1.18.0 source code.zip | < 23 hours ago | 4.8 MB | |
README.md | < 23 hours ago | 26.5 kB | |
Totals: 12 Items | 457.8 MB | 0 |
Features
lang
- Support
ProcPointer
s of lib funs with parameter types (#16089, thanks @HertzDevil) - (annotations) Print deprecation warning on types and aliases (#15962, thanks @ysbaddaden)
- (annotations) Print deprecation warnings on deprecated method argument (#15999, thanks @ysbaddaden)
- (macros) [breaking] Expand empty
(Named)TupleLiteral
to(Named)Tuple.new
instead of{}
(#16108, thanks @spuun) - (macros) Add
ArrayLiteral#*
,StringLiteral#*
andTupleLiteral#*
(#16154, #16206, thanks @jneen, @ysbaddaden)
stdlib
- Add
summary_width
andsummary_indent
toOptionParser
(#15326, thanks @kojix2) - (collection) Add
Set#select!
and#reject!
(#16060, thanks @HertzDevil) - (concurrency) Speed up
Parallel::Scheduler#quick_dequeue?
formax=1
(#15961, thanks @ysbaddaden) - (concurrency) Default execution context is now parallel (MT:1) (#16136, thanks @ysbaddaden)
- (files) [deprecation] Add
.set_blocking
toSocket
andIO::FileDescriptor
and deprecate#blocking
property (#16033, #16129, thanks @ysbaddaden) - (llvm) Support LLVM 21.1 and 22.0 (#16062, #16198, thanks @HertzDevil, @straight-shoota)
- (macros) Add
NumberLiteral#zero?
(#10248, thanks @Sija) - (macros) Add
thread_local
macro (#16173, thanks @ysbaddaden) - (networking) Fix
URI#host=
to wrap IPv6 address in brackets (#16164, thanks @stakach) - (runtime) Lazily instantiate the event loop of isolated execution contexts (#16063, thanks @ysbaddaden)
- (runtime) Add
Fiber::ExecutionContext::Parallel#resize
(#15956, thanks @ysbaddaden) - (runtime) Add
Crystal::System.effective_cpu_count
(#16148, thanks @ysbaddaden) - (runtime) Improve
Fiber::ExecutionContext.default_workers_count
(#16149, thanks @ysbaddaden) - (serialization) Add
Time::Location.from_json_object_key
(#15957, thanks @Sija) - (serialization) Resolve YAML aliases in
YAML::Any
(#15941, thanks @willhbr) - (serialization) Embed libxml2 version number on Windows MSVC (#16104, thanks @HertzDevil)
- (serialization) Add
JSON::Any
wrapper aroundJSON::Any#inspect
output (#15979, thanks @jneen) - (specs) Add
with_tempdir
spec helper (#16005, thanks @straight-shoota) - (system) Add
File.readlink?
(#16004, thanks @straight-shoota) - (text) Add
SemanticVersion.valid?
&SemanticVersion.parse?
(#15051, thanks @devnote-dev) - (text) Add
String.additive_identity
(#15998, thanks @straight-shoota) - (text) Use proper ANSI reset codes in
Colorize
(#16052, thanks @Blacksmoke16) - (text) Update Unicode to 17.0.0 (#16160, thanks @HertzDevil)
- (time) Use canonical IANA name for the local Windows system time zone (#15967, thanks @HertzDevil)
- (time) Load
Location.local
by symlink name (#16002, #16022, thanks @straight-shoota) - (time) Add
Time::Location.load?
(#16121, thanks @straight-shoota) - (time) Format
Time#inspect
with Internet Extended Date/Time Format (#16039, thanks @straight-shoota)
compiler
- (cli) Add the ability to dump type information to a JSON file (#16027, thanks @HertzDevil)
- (interpreter) Support
Proc.new(Void*, Void*)
in the interpreter (#16044, thanks @HertzDevil) - (interpreter:repl) Fully exit the process on
exit!
from REPL (#16171, thanks @jneen) - (semantic) Resolve types when guessing return type from class method overloads (#16118, thanks @HertzDevil)
- (semantic) Guess instance variable types from global method calls (#16119, thanks @HertzDevil)
tools
- (docs-generator) Add support for deprecated parameters in doc generator (#16012, thanks @straight-shoota)
- (hierarchy) Show extern union types in hierarchy tool (#16026, thanks @HertzDevil)
Bugfixes
stdlib
- (files) Fix
fcntl
reference forfds[1]
in socketpair setup (#16072, thanks @kojix2) - (log) Make crystal log resilient to empty LOG_LEVEL env var (#15963, thanks @anaPerezGhiglia)
- (networking) Preserve query params in
StaticFileHandler
redirects (#15789, thanks @syeopite) - (networking) Fix
StaticFileHandler
to return 404 on file error (#16025, #16077, thanks @straight-shoota) - (networking) Run
before_request
callback inHTTP::Client
only once (#16064, thanks @straight-shoota) - (networking) Fix
HTTP::Request#query=
typing (#16143, thanks @Blacksmoke16) - (runtime)
Fiber::ExecutionContext::Parallel::Scheduler#tick
must be unsigned (#16155, thanks @ysbaddaden) - (serialization) Fix add missing
#==
overloads forLog::Metadata::Value
andYAML::Any
(#15732, thanks @straight-shoota) - (serialization) Fix pointer access bug in
XML::NodeSet
(#16055, thanks @toddsundsted) - (serialization) Remove
NOERROR
from LibXML default options (#16103, thanks @straight-shoota) - (serialization) Move
*::Serializable
's private constructors intomacro included
hook (#16147, thanks @HertzDevil) - (serialization) Correctly reference global JSON/YAML modules (#16161, #16169, thanks @Sija, @straight-shoota)
- (serialization) Fix element type inference in
YAML::ArrayConverter.from_yaml
(#16166, thanks @HertzDevil) - (system) Fix return type of
system_close_on_exec=
on Windows (#16095, thanks @straight-shoota) - (time) Fix time zone identifier
America/Argentina/Buenos_Aires
(#16078, thanks @straight-shoota) - (time) Fix
Time#at_beginning_of_week
,#at_end_of_week
to respect local timezone (#16113, thanks @straight-shoota)
compiler
- (codegen) Never generate assignments to a block's underscore parameters (#16057, thanks @HertzDevil)
- (codegen) Fix
@[Primitive]
codegen for typedefs (#16110, thanks @HertzDevil) - (interpreter) never generate assignments to a block's underscore parameters (#16058, thanks @HertzDevil)
- (interpreter) Add
writer.close_on_finalize = false
for signal pipe (#16167, thanks @straight-shoota) - (interpreter:repl) Continue REPL prompt if input consists entirely of annotations (#16045, thanks @HertzDevil)
- (parser) Disallow unterminated escaped heredoc without trailing newline (#16046, thanks @HertzDevil)
- (parser) Require space, semicolon, or newline after class/module/etc. header (#13375, thanks @FnControlOption)
- (parser) Fix parsing
ReadInstanceVar
in short block syntax (#16099, thanks @nobodywasishere) - (semantic) Pass through variable types unchanged in a while loop (#15980, thanks @HertzDevil)
- (semantic) deprecation warning for (expanded) deprecated def (#15997, thanks @ysbaddaden)
- (semantic) Copy annotations in
Crystal::Arg#copy_without_location
(#16008, thanks @ysbaddaden) - (semantic) Copy annotations in
Crystal::Def#expand_default_arguments
(#16007, thanks @ysbaddaden) - (semantic) Copy annotations in
Crystal::Def#expand_new_default_arguments
(#16013, thanks @ysbaddaden) - (semantic) Fix error message for
StaticArray
with non-integer generic argumentN
(#16037, thanks @straight-shoota) - (semantic) Resolve bound type parameters from generic superclass during path lookup (#10839, thanks @HertzDevil)
- (semantic) [regression] Ensure hash literals are evaluated from left to right (#16124, thanks @HertzDevil)
Chores
stdlib
- Drop
Thread::Local(T)
(#16179, thanks @ysbaddaden) - (concurrency) [deprecation] Deprecate
Atomic::Flag
(#15805, thanks @ysbaddaden) - (files) [deprecation] Deprecate the
blocking
parameter ofFile
,Socket
andIO::FileDescriptor
constructors (#16034, #16043, #16047, thanks @ysbaddaden, @Blacksmoke16) - (numeric) [deprecation] Deprecate
Float::Printer::IEEE
(#16050, thanks @HertzDevil) - (system) [deprecation] Deprecate
Process::Status#exit_signal
(#16003, thanks @straight-shoota)
Performance
lang
stdlib
- (numeric) Do not use equality checks in
Int#upto
and#downto
(#16076, thanks @HertzDevil) - (system) Simplify buffer for
File.readlink
(#16021, thanks @straight-shoota) - (time) Optimize
Time#to_s
(#16042, thanks @straight-shoota)
compiler
- Inline
Crystal.check_type_can_be_stored
(#16130, thanks @HertzDevil) - (codegen) Group temporary variables by file name: compound array assignments (#16122, thanks @HertzDevil)
Refactor
stdlib
- (concurrency) Refactor redundant
begin ... end
blocks (#16011, thanks @straight-shoota) - (networking) Reorder implementation of
HTTP::Cookies#<<
and[]=
(#16107, thanks @straight-shoota) - (runtime) Remove nilable pointers in
Crystal::PointerPairingHeap
(#15973, thanks @HertzDevil) - (runtime) Remove nilable pointer in
Crystal::EventLoop::IOCP#@timer_packet
(#15975, thanks @HertzDevil) - (runtime) Remove minimum in
Fiber::ExecutionContext::Parallel
(#15946, thanks @ysbaddaden) - (runtime) Pass
fd
implicitly toSystem::FileDescriptor
andSystem::Socket
(#16137, #16183, thanks @ysbaddaden) - (runtime) Drop custom implementation of
Fiber::ExecutionContext::Concurrent
(#16135, thanks @ysbaddaden) - (specs) Keep own colorization state in
Spec::CLI
(#15926, thanks @HertzDevil) - (text) Use
ensure_suffix
instead of manually checking for suffixes (#15858, thanks @MatheusRich) - (time) Remove the old Windows time zone name table (#16006, thanks @HertzDevil)
compiler
- (codegen) Refactor
Compiler#must_compile?
to clarify the rules. (#16056, thanks @kojix2) - (parser) Add
#has_any_args?
method forASTNode
s (#16115, thanks @straight-shoota)
tools
- (formatter) Simplify control flow in formatter for
Call
nodes (#16170, thanks @straight-shoota)
other
- Refactor
unless ... else
(#16010, thanks @straight-shoota) - Removed unused variables (#16014, thanks @straight-shoota)
Documentation
lang
- (annotations) Enhance documentation of
Deprecated
annotation (#16195, thanks @straight-shoota)
stdlib
- (benchmark) Add type restrictions to benchmark directory (#15688, thanks @Vici37)
- (concurrency) Improve docs for
Channel#close
(#15910, thanks @anaPerezGhiglia) - (crypto) Fix doc example for
Crypto::BCrypt.new(String, String, Int)
(#15931, thanks @hugopl) - (crypto) Add type restrictions to crypto directory (#15694, thanks @Vici37)
- (files) Add type restrictions to mime (#15834, thanks @Vici37)
- (files) Fix
IO::TimeoutError
documentation use of deprecatedread_timeout=
(#16073, thanks @lachlan) - (files) Add type restrictions to io (#15698, thanks @Vici37)
- (llvm) Deprecate each
LLVM::ABI::*
classes (#15989, thanks @ysbaddaden) - (log) Add type restrictions to Log directory (#15777, thanks @Vici37)
- (networking) Add type restrictions to Oauth directory (#15687, thanks @Vici37)
- (networking) Add type restrictions to http (#15710, thanks @Vici37)
- (numeric) Add type restrictions to big (#15689, thanks @Vici37)
- (runtime) Fix typo in
Object
docs (#16035, thanks @plambert) - (runtime) Tweak docs for
Fiber::ExecutionContext
(#16196, thanks @ysbaddaden) - (serialization) Add type restrictions to json (#15840, #16142, thanks @Vici37, @Sija)
- (serialization) Add note about default constructor in
*::Serializable
(#16080, thanks @HertzDevil) - (system) Add type restrictions to
args
parameter inProcess
(#16031, thanks @BigBoyBarney) - (system) Add missing
File::NotFoundError
exception documentation forFile.open
(#15826, thanks @Fijxu) - (text) Fix return type definition of
String#match_full!
method (#16001, thanks @Sija) - (time) Update links to ISO-8601 to point to an archived version of the page (#15985, thanks @nobodywasishere)
- (time) Improve docs for
Time#to_local_in
(#16041, thanks @straight-shoota)
Specs
stdlib
- (networking) Disable UDP multicast spec on macOS (#15990, thanks @straight-shoota)
- (networking) Extract specs for
HTTP::Cookies
to their own file (#16106, thanks @straight-shoota) - (networking) Overhaul
HTTP::Cookies
specs (#16117, thanks @straight-shoota) - (networking) Fix
UDPSocket
broadcast spec to not useconnect
(#16165, thanks @ysbaddaden) - (runtime) Disable flaky spec for
Fiber::ExecutionContext::GlobalQueue
on macOS (#16146, thanks @ysbaddaden) - (system) Enable specs for
close_on_exec
on Windows (#14716, thanks @straight-shoota)
compiler
- Use
<<-CRYSTAL
in compiler specs consistently (#16083, thanks @HertzDevil) - Style the remaining multi-line compiler specs using heredocs (#16125, thanks @HertzDevil)
- (codegen) Style multi-line codegen specs using heredocs (#16081, thanks @HertzDevil)
- (codegen) Style
test_c
codegen specs using heredocs (#16082, thanks @HertzDevil) - (semantic) Style multi-line
assert_type
specs using heredocs (#16088, thanks @HertzDevil) - (semantic) Style multi-line
assert_error
specs using heredocs (#16093, thanks @HertzDevil) - (semantic) Move
crystal_path_spec
fixtures tospec/compiler/data
(#16086, thanks @straight-shoota)
tools
- (formatter) Add specs for
x.[](y)
syntax (#16109, thanks @straight-shoota)
Infrastructure
- Changelog for 1.18.0 (#16153, thanks @straight-shoota)
- Update previous Crystal release 1.17.0 (#15988, thanks @straight-shoota)
- Support debug builds for the MSVC Boehm GC libraries (#15968, thanks @HertzDevil)
- Fix funding.json well-known file name (#16000, thanks @matiasgarciaisaia)
- Lint the Bash auto-completion script (#15993, thanks @HertzDevil)
- Merge
release/1.17
@1.17.1
intomaster
(#16017, thanks @straight-shoota) - Update previous Crystal release 1.17.1 (#16016, thanks @straight-shoota)
- Add new types to GitHub issue templates (#15811, thanks @straight-shoota)
- Disable ameba rule
Lint/Formatting
(#16015, thanks @straight-shoota) - Add
REUSE.toml
(#15992, thanks @straight-shoota) - Default to LLVM 16 in
shell.nix
(#16023, thanks @ysbaddaden) - Avoid updating
forward-compatibility.yml
on release update for patch releases (#16019, thanks @straight-shoota) - Disable
Lint/LiteralsComparison
in more spec files (#16087, thanks @straight-shoota) - Fix typo in Makefile comment (#16126, thanks @kojix2)
- Fix duplicate
--error-trace
option in man page (#16133, thanks @kojix2) - Makefile: Skip grisu3 float printer deprecations in
std_spec
(#16185, thanks @ysbaddaden) - Fix changelog format for Markdown linter (#16188, thanks @straight-shoota)
- (ci) Add
fail-fast: false
for strategy CI jobs (#15960, thanks @straight-shoota) - (ci) Add tests for latest OpenSSL and LibreSSL in Alpine edge (#15812, thanks @straight-shoota)
- (ci) Use MSYS2 Crystal package for ARM64 Windows CI (#15991, thanks @HertzDevil)
- (ci) Add macos-15 runner (#15982, thanks @straight-shoota)
- (ci) Update GH Actions (#16067, thanks @renovate)
- (ci) Update GH Actions (#16084, thanks @renovate)
- (ci) Update crate-ci/typos action to v1.35.5 (#16102, thanks @renovate)
- (ci) Update GH Actions (#16131, thanks @renovate)
- (ci) Update deprecated
macos-13
tomacos-15-intel
(#16197, thanks @straight-shoota) - (ci) Trigger LLVM CI when codegen files are changed (#16116, thanks @HertzDevil)
- (ci) Do not use D drive on MSVC CI (#15986, thanks @HertzDevil)