Skip to content

Releases: crystal-lang/crystal

1.17.1

22 Jul 08:46
1.17.1
19be240
Compare
Choose a tag to compare

Bugfixes

tools

  • (docs-generator) [regression] Revert "Handle doc locations when file is in parent directory" (#15996, thanks @Blacksmoke16)

Infrastructure

1.17.0

16 Jul 11:25
1.17.0
d2c705b
Compare
Choose a tag to compare

Breaking changes

stdlib

Features

lang

stdlib

compiler

tools

Bugfixes

lang

  • [experimental] Do not use private linkage for slice literal buffers (#15746, thanks @HertzDevil)

stdlib

  • Require NO_COLOR to be non-empty ([#15880], thanks @HertzDevil)
  • (benchmark) Use UInt64 to track iteration count during warm-up calculation in Benchmark::IPS ([#15780], thanks @syeopite)
  • (collection) Fix Array#| for different item types ([#15756], thanks @straight-shoota)
  • (concurrency) Fix calling Fiber::ExecutionContext#enqueue from bare Thread ([#15767], thanks @ysbaddaden)
  • (concurrency) Simplify Crystal::System::Fiber::RESERVED_STACK_SIZE initializer on Windows ([#15820], thanks @HertzDevil)
  • (concurrency) Do not print adjacent nodes in Thread::LinkedList#inspect ([#15829], thanks @HertzDevil)
  • (files) Fix async append to file in IOCP ([#15681], thanks @ysbaddaden)
  • (numeric) [regression] Fix BigFloat#format not compiling ([#15796], thanks @HertzDevil)
  • (numeric) Never output exponent in BigDecimal#format ([#15795], thanks @HertzDevil)
  • (numeric) Preserve precision when passing BigDecimal or BigFloat to sprintf %i ([#15808], thanks @HertzDevil)
  • (numeric) Fix Float32#abs for signed zeros ([#15814], thanks @HertzDevil)
  • (numeric) Ensure unary Float32#- and Float64#- flip sign bit ([#15857], thanks @HertzDevil)
  • (runtime) reopen async File passed to Process.exec and .run (win32) ([#15703], thanks @ysbaddaden)
  • (runtime) raise on manual fiber resume from sleep ([#15744], thanks @ysbaddaden)
  • (runtime) race condition in Fiber::ExecutionContext::Isolated#wait ([#15872], thanks @ysbaddaden)
  • (runtime) Prevent leaking memory when exec_recursive's block r...
Read more

1.16.3

12 May 19:46
1.16.3
3f369d2
Compare
Choose a tag to compare

Bugfixes

stdlib

  • (runtime) Fix Crystal::EventLoop::LibEvent and FiberExecutionContext integration (#15759, backported from #15743, thanks @ysbaddaden)

compiler

  • (codegen) Add fallback if __crystal_raise_cast_failed is missing (#15769, backported from #15762, thanks @HertzDevil)
  • (semantic) [regression] Remove type binding on T for Pointer(T)#value= (#15757, backported from #15751, thanks @HertzDevil)

Infrastructure

1.16.2

29 Apr 12:32
1.16.2
84cb0b2
Compare
Choose a tag to compare

Bugfixes

stdlib

compiler

  • (semantic) Do not add ReferenceStorage to Value's subclasses twice (#15718, backported from #15706, thanks @HertzDevil)

Refactor

compiler

  • (codegen) Add __crystal_raise_cast_failed for non-interpreted code (#15712, backported from #15708, thanks @HertzDevil)

Infrastructure

1.16.1

16 Apr 17:15
1.16.1
d2369ac
Compare
Choose a tag to compare

Bugfixes

stdlib

compiler

Documentation

stdlib

Infrastructure

1.16.0

09 Apr 11:18
1.16.0
53cead6
Compare
Choose a tag to compare

Features

lang

  • Support Slice.literal in the interpreter (#15531, thanks @HertzDevil)
  • Support Slice.literal with inferred element type (#15529, thanks @HertzDevil)
  • (macros) Error on TypeNode#instance_vars, #has_inner_pointers? macros in top-level scope (#15293, thanks @straight-shoota)
  • (macros) Support sizeof and alignof inside macros for stable types (#15497, thanks @HertzDevil)

stdlib

compiler

tools

Bugfixes

stdlib

  • (collection) Fix hash @indices can grow larger than Int32::MAX bytes (#15347, thanks @ysbaddaden)
  • (collection) Fix Tuple#to_a(&) for arbitrary block output type (#15431, thanks @straight-shoota)
  • (collection) Fix Range#size for unsigned edge cases (#14978, thanks @straight-shoota)
  • (collection) [breaking] Fix the return type of Enumerable#sum, #product for union elements (#15314, thanks @rvprasad)
  • (concurrency) Fix Reference#exec_recursive, #exec_recursive_clone to be fiber aware (#15361, thanks @ysbaddaden)
  • (concurrency) RFC 2: MT safe fiber context switch on ARM (#15582, thanks @ysbaddaden)
  • (crypto) Fix argument type for EVP_CIPHER_get_flags (#15392, thanks @miry)
  • (files) Never remove UNC share name in Path#dirname (#15583, thanks @HertzDevil)
  • (files) Fix File.exists? for special devices on Windows (#15587, thanks @HertzDevil)
  • (llvm) Fix LLVM version detection for -rc1 (#15410, thanks @HertzDevil)
  • (networking) [breaking] Fix parsing HTTP resource string that looks like absolute URL (#15499, thanks @straight-shoota)
  • (runtime) Fix pkg_config name for libgc bindings on FreeBSD (#15532, thanks @straight-shoota)
  • (runtime) RFC 2: MT safe fiber context switch on AArch64 (#15581, thanks @ysbaddaden)
  • (runtime) Add thread safety to at_exit (#15598, thanks @ysbaddaden)
  • (runtime) Remove top-level calls to LibGC.has_method? for backwards compat (#15635, thanks @straight-shoota)
  • (serialization) Fix Union.from_yaml to prioritize String for quoted scalar (#15405, thanks @straight-shoota)
  • (system) signal handler mustn't depend on the event loop (#15325, thanks @ysbaddaden)
  • (system) Corrects Windows lib lookup in case-sensitive OSes (#15362, thanks @luislavena)
  • (system) Fix permissions application in File.copy (#15520, thanks @straight-shoota)
  • (system) [security] Strip periods, spaces for batch file filtering on Windows (#15573, thanks @GeopJr)
  • (system) Extend Windows Process completion key's lifetime (#15597, thanks @HertzDevil)

compiler

Read more

1.15.1

04 Feb 17:43
1.15.1
89944bf
Compare
Choose a tag to compare

Bugfixes

stdlib

  • (networking) Disable directory path redirect when directory_listing=false (#15393, thanks @straight-shoota)
  • (runtime) [regression] abstract EventLoop::Polling#system_add invalid signature (#15380, backported from #15358, thanks @straight-shoota)
  • (system) [regression] Fix GC sig_suspend, sig_resume for gc_none (#15382, backported from #15349, thanks @ysbaddaden)

Documentation

stdlib

  • (system) Fix code example in Process::Status#exit_code docs (#15381, backported from #15351, thanks @zw963)

Infrastructure

1.15.0

10 Jan 11:39
1.15.0
7b9e2ef
Compare
Choose a tag to compare

Breaking changes

lang

  • Allow constants to start with non-ascii uppercase and titlecase (#15148, thanks @nanobowers)

Features

lang

stdlib

compiler

tools

Bugfixes

lang

  • (macros) Add location information to more MacroIf related nodes (#15100, thanks @Blacksmoke16)

stdlib

  • LibC bindings and std specs on NetBSD 10 (#15115, thanks @ysbaddaden)
  • (files) Treat WinError::ERROR_DIRECTORY as an error for non-existent files (#15114, thanks @HertzDevil)
  • (files) Replace handle atomically in IO::FileDescriptor#close on Windows (#15165, thanks @HertzDevil)
  • (llvm) Fix find-llvm-config to ignore LLVM_CONFIG's escape sequences (#15076, thanks @HertzDevil)
  • (log) [regression] Fix Log to emit with exception even if block outputs nil (#15253, thanks @lachlan)
  • (macros) Avoid identifier naming collision in getter, setter, and property macros (#15239, thanks @jgaskins)
  • (networking) [regression] Fix UNIXSocket#receive (#15107, thanks @straight-shoota)
  • (numeric) Fix Complex#/ edge cases (#15086, thanks @HertzDevil)
  • (numeric) Fix Number#humanize printing of (-)Infinity and NaN (#15090, thanks @lachlan)
  • (runtime) Fix Deadlock with parallel stop-world/fork calls in MT (#15096, thanks @ysbaddaden)
  • (runtime) [regression] Protect constant initializers with mutex on Windows (#15134, thanks @HertzDevil)
  • (runtime) use uninitialized LibC::SigsetT (#15144, thanks @straight-shoota)
  • (runtime) Fix static linking when using MinGW-w64 (#15167, thanks @HertzDevil)
  • (runtime) register GC callbacks inside GC.init (#15278, thanks @ysbaddaden)
  • (runtime) Cleanup nodes in Thread::LinkedList(T)#delete (#15295, thanks @ysbaddaden)
  • (runtime) Make Crystal::EventLoop#remove(io) a class method (#15282, thanks @ysbaddaden)
  • (system) Raise on abnormal exit in Procss::Status#exit_code ([#15241], thanks @straight-shoota)
  • (system) Fix Process::Status for unknown signals ([#15280], thanks @straight-shoota)
  • (system) Fix error handling for LibC.clock_gettime(CLOCK_MONOTONIC) calls ([#15309], thanks @compumike)
  • (text) Fix libiconv build on Windows ([#15095], thanks @HertzDevil)
  • (text) Change sprintf "%c" to support only Char and Int::Primitive ([#15142], thanks @nanobowers)
  • (time) Fix proper error handling for early end in HTTP_DATE parser ([#15232], thanks @straight-shoota)

[#1...

Read more

1.14.1

08 Jan 17:43
1.14.1
db6128a
Compare
Choose a tag to compare

Bugfixes

tools

  • (formatter) Handle trailing comma with multiple parameters on the same line (#15097, thanks @Blacksmoke16)

Infrastructure

1.14.0

09 Oct 12:11
1.14.0
dacd97b
Compare
Choose a tag to compare

Features

lang

stdlib

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

stdlib

  • (collection) Fix Range#size return type to Int32 (#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 and IO::FileDescriptor (#14882, thanks @straight-shoota)
  • (files) Make IO::Buffered#buffer_size= idempotent (#14855, thanks @jgaskins)
  • (macros) Implement #sort_by inside macros using Enumerable#sort_by (#14895, thanks @HertzDevil)
  • (macros) Fix internal error when calling #is_a? on External 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 Procs 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 existing ClassDef type to current scope ([#15067], thanks @straight-shoota)

[#1...

Read more