Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,21 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Deadlock detection now throws `Async\DeadlockError` exception instead of multiple warnings
- **Breaking Change**: Applications relying on deadlock warnings
will need to be updated to catch `Async\DeadlockError` exceptions
- **Breaking Change: PHP Coding Standards Compliance** - Function names updated to follow official PHP naming conventions:
- `spawnWith()` → `spawn_with()`
- `awaitAnyOrFail()` → `await_any_or_fail()`
- `awaitFirstSuccess()` → `await_first_success()`
- `awaitAllOrFail()` → `await_all_or_fail()`
- `awaitAll()` → `await_all()`
- `awaitAnyOfOrFail()` → `await_any_of_or_fail()`
- `awaitAnyOf()` → `await_any_of()`
- `currentContext()` → `current_context()`
- `coroutineContext()` → `coroutine_context()`
- `currentCoroutine()` → `current_coroutine()`
- `rootContext()` → `root_context()`
- `getCoroutines()` → `get_coroutines()`
- `gracefulShutdown()` → `graceful_shutdown()`
- **Rationale**: Compliance with [PHP Coding Standards](https://github.com/php/policies/blob/main/coding-standards-and-naming.rst) - functions must use lowercase with underscores

## [0.4.0] - 2025-09-30

Expand Down
29 changes: 14 additions & 15 deletions async.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ PHP_FUNCTION(Async_spawn)
RETURN_OBJ_COPY(&coroutine->std);
}

PHP_FUNCTION(Async_spawnWith)
PHP_FUNCTION(Async_spawn_with)
{
THROW_IF_ASYNC_OFF;
THROW_IF_SCHEDULER_CONTEXT;
Expand Down Expand Up @@ -290,7 +290,7 @@ PHP_FUNCTION(Async_await)
zend_async_waker_clean(coroutine);
}

PHP_FUNCTION(Async_awaitAnyOrFail)
PHP_FUNCTION(Async_await_any_or_fail)
{
zval *futures;
zend_object *cancellation = NULL;
Expand Down Expand Up @@ -340,7 +340,7 @@ PHP_FUNCTION(Async_awaitAnyOrFail)
RETURN_ZVAL(&result, 0, 0);
}

PHP_FUNCTION(Async_awaitFirstSuccess)
PHP_FUNCTION(Async_await_first_success)
{
zval *futures;
zend_object *cancellation = NULL;
Expand Down Expand Up @@ -396,7 +396,7 @@ PHP_FUNCTION(Async_awaitFirstSuccess)
RETURN_ARR(return_array);
}

PHP_FUNCTION(Async_awaitAllOrFail)
PHP_FUNCTION(Async_await_all_or_fail)
{
zval *futures;
zend_object *cancellation = NULL;
Expand Down Expand Up @@ -435,7 +435,7 @@ PHP_FUNCTION(Async_awaitAllOrFail)
RETURN_ARR(results);
}

PHP_FUNCTION(Async_awaitAll)
PHP_FUNCTION(Async_await_all)
{
zval *futures;
zend_object *cancellation = NULL;
Expand Down Expand Up @@ -485,7 +485,7 @@ PHP_FUNCTION(Async_awaitAll)
RETURN_ARR(return_array);
}

PHP_FUNCTION(Async_awaitAnyOfOrFail)
PHP_FUNCTION(Async_await_any_of_or_fail)
{
zval *futures;
zend_object *cancellation = NULL;
Expand Down Expand Up @@ -528,7 +528,7 @@ PHP_FUNCTION(Async_awaitAnyOfOrFail)
RETURN_ARR(results);
}

PHP_FUNCTION(Async_awaitAnyOf)
PHP_FUNCTION(Async_await_any_of)
{
zval *futures;
zend_object *cancellation = NULL;
Expand Down Expand Up @@ -633,7 +633,7 @@ PHP_FUNCTION(Async_timeout)
RETURN_OBJ(zend_object);
}

PHP_FUNCTION(Async_currentContext)
PHP_FUNCTION(Async_current_context)
{
ZEND_PARSE_PARAMETERS_NONE();

Expand Down Expand Up @@ -661,7 +661,7 @@ PHP_FUNCTION(Async_currentContext)
RETURN_OBJ_COPY(&context->std);
}

PHP_FUNCTION(Async_coroutineContext)
PHP_FUNCTION(Async_coroutine_context)
{
ZEND_PARSE_PARAMETERS_NONE();

Expand All @@ -688,7 +688,7 @@ PHP_FUNCTION(Async_coroutineContext)
RETURN_OBJ_COPY(&context->std);
}

PHP_FUNCTION(Async_currentCoroutine)
PHP_FUNCTION(Async_current_coroutine)
{
ZEND_PARSE_PARAMETERS_NONE();

Expand All @@ -706,7 +706,7 @@ PHP_FUNCTION(Async_currentCoroutine)
RETURN_OBJ_COPY(&coroutine->std);
}

PHP_FUNCTION(Async_rootContext)
PHP_FUNCTION(Async_root_context)
{
ZEND_PARSE_PARAMETERS_NONE();

Expand All @@ -721,7 +721,7 @@ PHP_FUNCTION(Async_rootContext)
RETURN_OBJ_COPY(&context->std);
}

PHP_FUNCTION(Async_getCoroutines)
PHP_FUNCTION(Async_get_coroutines)
{
ZEND_PARSE_PARAMETERS_NONE();

Expand All @@ -739,7 +739,7 @@ PHP_FUNCTION(Async_getCoroutines)
ZEND_HASH_FOREACH_END();
}

PHP_FUNCTION(Async_gracefulShutdown)
PHP_FUNCTION(Async_graceful_shutdown)
{
zend_object *cancellation = NULL;

Expand Down Expand Up @@ -909,8 +909,7 @@ static PHP_GINIT_FUNCTION(async)
}

/* {{{ PHP_GSHUTDOWN_FUNCTION */
static PHP_GSHUTDOWN_FUNCTION(async)
{
static PHP_GSHUTDOWN_FUNCTION(async){
#ifdef PHP_WIN32
#endif
} /* }}} */
Expand Down
26 changes: 13 additions & 13 deletions async.stub.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ function spawn(callable $task, mixed ... $args): Coroutine {}
*
* @return Coroutine
*/
function spawnWith(ScopeProvider $provider, callable $task, mixed ... $args): Coroutine {}
function spawn_with(ScopeProvider $provider, callable $task, mixed ... $args): Coroutine {}

/**
* Suspends the execution of a Coroutine until the Scheduler takes control.
Expand All @@ -37,30 +37,30 @@ function protect(\Closure $closure): mixed {}

function await(Awaitable $awaitable, ?Awaitable $cancellation = null): mixed {}

function awaitAnyOrFail(iterable $triggers, ?Awaitable $cancellation = null): mixed {}
function await_any_or_fail(iterable $triggers, ?Awaitable $cancellation = null): mixed {}

function awaitFirstSuccess(iterable $triggers, ?Awaitable $cancellation = null): mixed {}
function await_first_success(iterable $triggers, ?Awaitable $cancellation = null): mixed {}

function awaitAllOrFail(iterable $triggers, ?Awaitable $cancellation = null, bool $preserveKeyOrder = true): array {}
function await_all_or_fail(iterable $triggers, ?Awaitable $cancellation = null, bool $preserveKeyOrder = true): array {}

function awaitAll(iterable $triggers, ?Awaitable $cancellation = null, bool $preserveKeyOrder = true, bool $fillNull = false): array {}
function await_all(iterable $triggers, ?Awaitable $cancellation = null, bool $preserveKeyOrder = true, bool $fillNull = false): array {}

function awaitAnyOfOrFail(int $count, iterable $triggers, ?Awaitable $cancellation = null, bool $preserveKeyOrder = true): array {}
function await_any_of_or_fail(int $count, iterable $triggers, ?Awaitable $cancellation = null, bool $preserveKeyOrder = true): array {}

function awaitAnyOf(int $count, iterable $triggers, ?Awaitable $cancellation = null, bool $preserveKeyOrder = true, bool $fillNull = false): array {}
function await_any_of(int $count, iterable $triggers, ?Awaitable $cancellation = null, bool $preserveKeyOrder = true, bool $fillNull = false): array {}

function delay(int $ms): void {}

function timeout(int $ms): Awaitable {}

function currentContext(): Context {}
function current_context(): Context {}

function coroutineContext(): Context {}
function coroutine_context(): Context {}

/**
* Returns the current coroutine.
*/
function currentCoroutine(): Coroutine {}
function current_coroutine(): Coroutine {}

/**
* Adds an onFinally handler for the current coroutine.
Expand All @@ -70,19 +70,19 @@ function currentCoroutine(): Coroutine {}
/**
* Returns the root Scope.
*/
function rootContext(): Context {}
function root_context(): Context {}

/**
* Returns the list of all coroutines
*
* @return Coroutine[]
*/
function getCoroutines(): array {}
function get_coroutines(): array {}

/**
* Start the graceful shutdown of the Scheduler.
*/
function gracefulShutdown(?CancellationError $cancellationError = null): void {}
function graceful_shutdown(?CancellationError $cancellationError = null): void {}

/**
* Execute an external program.
Expand Down
80 changes: 40 additions & 40 deletions async_arginfo.h
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
/* This is a generated file, edit the .stub.php file instead.
* Stub hash: aca45cee02a4df47e8e1bc3c2517e6925bd522a9 */
* Stub hash: b455b6ae5681c59882adb70f7d033f77d62de5a4 */

ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_Async_spawn, 0, 1, Async\\Coroutine, 0)
ZEND_ARG_TYPE_INFO(0, task, IS_CALLABLE, 0)
ZEND_ARG_VARIADIC_TYPE_INFO(0, args, IS_MIXED, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_Async_spawnWith, 0, 2, Async\\Coroutine, 0)
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_Async_spawn_with, 0, 2, Async\\Coroutine, 0)
ZEND_ARG_OBJ_INFO(0, provider, Async\\ScopeProvider, 0)
ZEND_ARG_TYPE_INFO(0, task, IS_CALLABLE, 0)
ZEND_ARG_VARIADIC_TYPE_INFO(0, args, IS_MIXED, 0)
Expand All @@ -24,34 +24,34 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_await, 0, 1, IS_MIXED, 0)
ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, cancellation, Async\\Awaitable, 1, "null")
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_awaitAnyOrFail, 0, 1, IS_MIXED, 0)
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_await_any_or_fail, 0, 1, IS_MIXED, 0)
ZEND_ARG_OBJ_TYPE_MASK(0, triggers, Traversable, MAY_BE_ARRAY, NULL)
ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, cancellation, Async\\Awaitable, 1, "null")
ZEND_END_ARG_INFO()

#define arginfo_Async_awaitFirstSuccess arginfo_Async_awaitAnyOrFail
#define arginfo_Async_await_first_success arginfo_Async_await_any_or_fail

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_awaitAllOrFail, 0, 1, IS_ARRAY, 0)
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_await_all_or_fail, 0, 1, IS_ARRAY, 0)
ZEND_ARG_OBJ_TYPE_MASK(0, triggers, Traversable, MAY_BE_ARRAY, NULL)
ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, cancellation, Async\\Awaitable, 1, "null")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, preserveKeyOrder, _IS_BOOL, 0, "true")
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_awaitAll, 0, 1, IS_ARRAY, 0)
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_await_all, 0, 1, IS_ARRAY, 0)
ZEND_ARG_OBJ_TYPE_MASK(0, triggers, Traversable, MAY_BE_ARRAY, NULL)
ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, cancellation, Async\\Awaitable, 1, "null")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, preserveKeyOrder, _IS_BOOL, 0, "true")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, fillNull, _IS_BOOL, 0, "false")
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_awaitAnyOfOrFail, 0, 2, IS_ARRAY, 0)
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_await_any_of_or_fail, 0, 2, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, count, IS_LONG, 0)
ZEND_ARG_OBJ_TYPE_MASK(0, triggers, Traversable, MAY_BE_ARRAY, NULL)
ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, cancellation, Async\\Awaitable, 1, "null")
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, preserveKeyOrder, _IS_BOOL, 0, "true")
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_awaitAnyOf, 0, 2, IS_ARRAY, 0)
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_await_any_of, 0, 2, IS_ARRAY, 0)
ZEND_ARG_TYPE_INFO(0, count, IS_LONG, 0)
ZEND_ARG_OBJ_TYPE_MASK(0, triggers, Traversable, MAY_BE_ARRAY, NULL)
ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, cancellation, Async\\Awaitable, 1, "null")
Expand All @@ -67,67 +67,67 @@ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_Async_timeout, 0, 1, Async\\Await
ZEND_ARG_TYPE_INFO(0, ms, IS_LONG, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_Async_currentContext, 0, 0, Async\\Context, 0)
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_Async_current_context, 0, 0, Async\\Context, 0)
ZEND_END_ARG_INFO()

#define arginfo_Async_coroutineContext arginfo_Async_currentContext
#define arginfo_Async_coroutine_context arginfo_Async_current_context

ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_Async_currentCoroutine, 0, 0, Async\\Coroutine, 0)
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_Async_current_coroutine, 0, 0, Async\\Coroutine, 0)
ZEND_END_ARG_INFO()

#define arginfo_Async_rootContext arginfo_Async_currentContext
#define arginfo_Async_root_context arginfo_Async_current_context

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_getCoroutines, 0, 0, IS_ARRAY, 0)
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_get_coroutines, 0, 0, IS_ARRAY, 0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_gracefulShutdown, 0, 0, IS_VOID, 0)
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_Async_graceful_shutdown, 0, 0, IS_VOID, 0)
ZEND_ARG_OBJ_INFO_WITH_DEFAULT_VALUE(0, cancellationError, Async\\CancellationError, 1, "null")
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Async_Timeout___construct, 0, 0, 0)
ZEND_END_ARG_INFO()

ZEND_FUNCTION(Async_spawn);
ZEND_FUNCTION(Async_spawnWith);
ZEND_FUNCTION(Async_spawn_with);
ZEND_FUNCTION(Async_suspend);
ZEND_FUNCTION(Async_protect);
ZEND_FUNCTION(Async_await);
ZEND_FUNCTION(Async_awaitAnyOrFail);
ZEND_FUNCTION(Async_awaitFirstSuccess);
ZEND_FUNCTION(Async_awaitAllOrFail);
ZEND_FUNCTION(Async_awaitAll);
ZEND_FUNCTION(Async_awaitAnyOfOrFail);
ZEND_FUNCTION(Async_awaitAnyOf);
ZEND_FUNCTION(Async_await_any_or_fail);
ZEND_FUNCTION(Async_await_first_success);
ZEND_FUNCTION(Async_await_all_or_fail);
ZEND_FUNCTION(Async_await_all);
ZEND_FUNCTION(Async_await_any_of_or_fail);
ZEND_FUNCTION(Async_await_any_of);
ZEND_FUNCTION(Async_delay);
ZEND_FUNCTION(Async_timeout);
ZEND_FUNCTION(Async_currentContext);
ZEND_FUNCTION(Async_coroutineContext);
ZEND_FUNCTION(Async_currentCoroutine);
ZEND_FUNCTION(Async_rootContext);
ZEND_FUNCTION(Async_getCoroutines);
ZEND_FUNCTION(Async_gracefulShutdown);
ZEND_FUNCTION(Async_current_context);
ZEND_FUNCTION(Async_coroutine_context);
ZEND_FUNCTION(Async_current_coroutine);
ZEND_FUNCTION(Async_root_context);
ZEND_FUNCTION(Async_get_coroutines);
ZEND_FUNCTION(Async_graceful_shutdown);
ZEND_METHOD(Async_Timeout, __construct);

static const zend_function_entry ext_functions[] = {
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "spawn"), zif_Async_spawn, arginfo_Async_spawn, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "spawnWith"), zif_Async_spawnWith, arginfo_Async_spawnWith, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "spawn_with"), zif_Async_spawn_with, arginfo_Async_spawn_with, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "suspend"), zif_Async_suspend, arginfo_Async_suspend, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "protect"), zif_Async_protect, arginfo_Async_protect, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "await"), zif_Async_await, arginfo_Async_await, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "awaitAnyOrFail"), zif_Async_awaitAnyOrFail, arginfo_Async_awaitAnyOrFail, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "awaitFirstSuccess"), zif_Async_awaitFirstSuccess, arginfo_Async_awaitFirstSuccess, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "awaitAllOrFail"), zif_Async_awaitAllOrFail, arginfo_Async_awaitAllOrFail, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "awaitAll"), zif_Async_awaitAll, arginfo_Async_awaitAll, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "awaitAnyOfOrFail"), zif_Async_awaitAnyOfOrFail, arginfo_Async_awaitAnyOfOrFail, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "awaitAnyOf"), zif_Async_awaitAnyOf, arginfo_Async_awaitAnyOf, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "await_any_or_fail"), zif_Async_await_any_or_fail, arginfo_Async_await_any_or_fail, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "await_first_success"), zif_Async_await_first_success, arginfo_Async_await_first_success, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "await_all_or_fail"), zif_Async_await_all_or_fail, arginfo_Async_await_all_or_fail, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "await_all"), zif_Async_await_all, arginfo_Async_await_all, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "await_any_of_or_fail"), zif_Async_await_any_of_or_fail, arginfo_Async_await_any_of_or_fail, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "await_any_of"), zif_Async_await_any_of, arginfo_Async_await_any_of, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "delay"), zif_Async_delay, arginfo_Async_delay, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "timeout"), zif_Async_timeout, arginfo_Async_timeout, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "currentContext"), zif_Async_currentContext, arginfo_Async_currentContext, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "coroutineContext"), zif_Async_coroutineContext, arginfo_Async_coroutineContext, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "currentCoroutine"), zif_Async_currentCoroutine, arginfo_Async_currentCoroutine, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "rootContext"), zif_Async_rootContext, arginfo_Async_rootContext, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "getCoroutines"), zif_Async_getCoroutines, arginfo_Async_getCoroutines, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "gracefulShutdown"), zif_Async_gracefulShutdown, arginfo_Async_gracefulShutdown, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "current_context"), zif_Async_current_context, arginfo_Async_current_context, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "coroutine_context"), zif_Async_coroutine_context, arginfo_Async_coroutine_context, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "current_coroutine"), zif_Async_current_coroutine, arginfo_Async_current_coroutine, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "root_context"), zif_Async_root_context, arginfo_Async_root_context, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "get_coroutines"), zif_Async_get_coroutines, arginfo_Async_get_coroutines, 0, NULL, NULL)
ZEND_RAW_FENTRY(ZEND_NS_NAME("Async", "graceful_shutdown"), zif_Async_graceful_shutdown, arginfo_Async_graceful_shutdown, 0, NULL, NULL)
ZEND_FE_END
};

Expand Down
Loading
Loading