Skip to content

Releases: spider-gazelle/promise

v3.1.0

03 Mar 01:45
Compare
Choose a tag to compare

What's Changed

  • fix: improve tuple Promise.all typing by @Ambyjkl in #3

New Contributors

Full Changelog: v3.0.0...v3.1.0

v3.0.0

26 Sep 11:34
Compare
Choose a tag to compare

fixes issue where you couldn't do Promise.all or Promise.any where the promise types / return values differed.
See #2

Breaking change as now the Promise class has a generic type.
So you can no longer do something like promises = [] of Promise and instead need to do promises = [] of Promise(String) etc

v2.2.3: feat: remove tasker dependency

21 Jun 08:13
Compare
Choose a tag to compare

improve promise timeouts

v2.2.2

22 Mar 23:05
Compare
Choose a tag to compare

add crystal version tag

v2.2.1

08 Jul 14:07
Compare
Choose a tag to compare

update to tasker 2.0

v2.1.0: feat: add supports for timeouts

07 Jan 10:12
Compare
Choose a tag to compare

add support for timeouts (no overhead if they are not used)

v2.0.1: feat: use generic classes to interpret the promise types

07 Jan 04:01
Compare
Choose a tag to compare

The previous version required that promise values were nilable.
i.e. Promise.new(String) == Promise::DeferredPromise(String?)

This is no longer the case
Promise.new(String) == Promise::DeferredPromise(String)

This was achieved by:

  1. Using generic classes to isolate the return value types of promise callbacks
  2. Using macros to differentiate between promise and regular return values without creating a union type
  3. Detecting NoReturn where a callback always raises and creating a Promise::DeferredPromise(Nil) for this case

Otherwise the library functions exactly as before.

v2.0.0

06 Jan 23:01
Compare
Choose a tag to compare

The previous version required that promise values were nilable.
i.e. Promise.new(String) == Promise::DeferredPromise(String?)

This is no longer the case
Promise.new(String) == Promise::DeferredPromise(String)

This was achieved by:

  1. Using a proc to isolate the return value of the promise callbacks
  2. Using macros to differentiate between promise and regular return values without creating a union type
  3. Detecting NoReturn where a callback always raises and creating a Promise::DeferredPromise(Nil) for this case

Otherwise the library functions exactly as before.

v1.4.3

15 Dec 20:53
Compare
Choose a tag to compare

fix issue with promise#map

v1.4.2

06 Dec 05:12
Compare
Choose a tag to compare

adds Promise.map support
fixes a race condition in multi-threaded mode