Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fast forward resolved/rejected promises with fibers await #18

Merged

Conversation

WyriHaximus
Copy link
Member

This makes awaiting an already resolved promise significantly faster.

@WyriHaximus WyriHaximus added this to the v4.0.0 milestone Dec 13, 2021
@WyriHaximus WyriHaximus requested review from jsor, cboden and clue December 13, 2021 20:07
@WyriHaximus WyriHaximus force-pushed the fibers-fastforward-resolved-promise branch from fbca226 to 517da31 Compare December 13, 2021 20:18
Copy link
Member

@clue clue left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@WyriHaximus Makes a lot of sense!

Looking forward to also seeing similar changes in the v2/v3 branches 👍

src/SimpleFiber.php Outdated Show resolved Hide resolved
tests/AwaitTest.php Show resolved Hide resolved
src/functions.php Outdated Show resolved Hide resolved
@WyriHaximus WyriHaximus force-pushed the fibers-fastforward-resolved-promise branch 5 times, most recently from ed262a9 to eb47800 Compare December 24, 2021 21:00
@WyriHaximus
Copy link
Member Author

Looking forward to also seeing similar changes in the v2/v3 branches 👍

@clue Once this one lands, I'll port it to the v2 and v3 branches.

This makes `await`ing an already resolved promise significantly faster.
@WyriHaximus WyriHaximus force-pushed the fibers-fastforward-resolved-promise branch from eb47800 to 546cb73 Compare December 24, 2021 21:36
Copy link
Member

@clue clue left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@WyriHaximus Thanks for the update, changes LGTM! :shipit:

@clue clue added new feature New feature or request and removed maintenance labels Jan 5, 2022
@clue clue merged commit ff11a7a into reactphp:main Jan 5, 2022
@WyriHaximus WyriHaximus deleted the fibers-fastforward-resolved-promise branch January 10, 2022 07:32
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Jan 10, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Jan 10, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Jan 10, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Jan 14, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Jan 17, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Jan 17, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Jan 25, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Jan 25, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Jan 25, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Jan 25, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 11, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 11, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 11, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 11, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 11, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 11, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 11, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 11, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 11, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 11, 2022
This makes `await`ing an already resolved promise significantly faster.

Ported from: reactphp#18
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 20, 2022
Since `async()` returns a promise and those are normally cancelable, implementing this puts them in line with the rest of our ecosystem. As such the following example will throw a timeout exception from the canceled `sleep()` call.

```php
$promise = async(static function (): int {
    echo 'a';
    await(sleep(2));
    echo 'b';

    return time();
})();

$promise->cancel();
await($promise);
````

This builds on top of reactphp#15, reactphp#18, reactphp#19, reactphp#26, reactphp#28, reactphp#30, and reactphp#32.
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 21, 2022
Since `async()` returns a promise and those are normally cancelable, implementing this puts them in line with the rest of our ecosystem. As such the following example will throw a timeout exception from the canceled `sleep()` call.

```php
$promise = async(static function (): int {
    echo 'a';
    await(sleep(2));
    echo 'b';

    return time();
})();

$promise->cancel();
await($promise);
````

This builds on top of reactphp#15, reactphp#18, reactphp#19, reactphp#26, reactphp#28, reactphp#30, and reactphp#32.
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 21, 2022
Since `async()` returns a promise and those are normally cancelable, implementing this puts them in line with the rest of our ecosystem. As such the following example will throw a timeout exception from the canceled `sleep()` call.

```php
$promise = async(static function (): int {
    echo 'a';
    await(sleep(2));
    echo 'b';

    return time();
})();

$promise->cancel();
await($promise);
````

This builds on top of reactphp#15, reactphp#18, reactphp#19, reactphp#26, reactphp#28, reactphp#30, and reactphp#32.
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 24, 2022
Since `async()` returns a promise and those are normally cancelable, implementing this puts them in line with the rest of our ecosystem. As such the following example will throw a timeout exception from the canceled `sleep()` call.

```php
$promise = async(static function (): int {
    echo 'a';
    await(sleep(2));
    echo 'b';

    return time();
})();

$promise->cancel();
await($promise);
````

This builds on top of reactphp#15, reactphp#18, reactphp#19, reactphp#26, reactphp#28, reactphp#30, and reactphp#32.
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Feb 24, 2022
Since `async()` returns a promise and those are normally cancelable, implementing this puts them in line with the rest of our ecosystem. As such the following example will throw a timeout exception from the canceled `sleep()` call.

```php
$promise = async(static function (): int {
    echo 'a';
    await(sleep(2));
    echo 'b';

    return time();
})();

$promise->cancel();
await($promise);
````

This builds on top of reactphp#15, reactphp#18, reactphp#19, reactphp#26, reactphp#28, reactphp#30, and reactphp#32.
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Mar 2, 2022
Since `async()` returns a promise and those are normally cancelable, implementing this puts them in line with the rest of our ecosystem. As such the following example will throw a timeout exception from the canceled `sleep()` call.

```php
$promise = async(static function (): int {
    echo 'a';
    await(sleep(2));
    echo 'b';

    return time();
})();

$promise->cancel();
await($promise);
````

This builds on top of reactphp#15, reactphp#18, reactphp#19, reactphp#26, reactphp#28, reactphp#30, and reactphp#32.
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Mar 3, 2022
Since `async()` returns a promise and those are normally cancelable, implementing this puts them in line with the rest of our ecosystem. As such the following example will throw a timeout exception from the canceled `sleep()` call.

```php
$promise = async(static function (): int {
    echo 'a';
    await(sleep(2));
    echo 'b';

    return time();
})();

$promise->cancel();
await($promise);
````

This builds on top of reactphp#15, reactphp#18, reactphp#19, reactphp#26, reactphp#28, reactphp#30, and reactphp#32.
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Mar 3, 2022
Since `async()` returns a promise and those are normally cancelable, implementing this puts them in line with the rest of our ecosystem. As such the following example will throw a timeout exception from the canceled `sleep()` call.

```php
$promise = async(static function (): int {
    echo 'a';
    await(sleep(2));
    echo 'b';

    return time();
})();

$promise->cancel();
await($promise);
````

This builds on top of reactphp#15, reactphp#18, reactphp#19, reactphp#26, reactphp#28, reactphp#30, and reactphp#32.
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Mar 4, 2022
Since `async()` returns a promise and those are normally cancelable, implementing this puts them in line with the rest of our ecosystem. As such the following example will throw a timeout exception from the canceled `sleep()` call.

```php
$promise = async(static function (): int {
    echo 'a';
    await(sleep(2));
    echo 'b';

    return time();
})();

$promise->cancel();
await($promise);
````

This builds on top of reactphp#15, reactphp#18, reactphp#19, reactphp#26, reactphp#28, reactphp#30, and reactphp#32.
WyriHaximus added a commit to WyriHaximus-labs/async that referenced this pull request Mar 4, 2022
Since `async()` returns a promise and those are normally cancelable, implementing this puts them in line with the rest of our ecosystem. As such the following example will throw a timeout exception from the canceled `sleep()` call.

```php
$promise = async(static function (): int {
    echo 'a';
    await(sleep(2));
    echo 'b';

    return time();
})();

$promise->cancel();
await($promise);
````

This builds on top of reactphp#15, reactphp#18, reactphp#19, reactphp#26, reactphp#28, reactphp#30, and reactphp#32.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new feature New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants