libdex 1.2.alpha ================ This is an alpha release for the upcoming GNOME 51. * Dropped the gconstructor for `dex_init()` which means applications must call `dex_init()` at startup themselves from `main()`. * New DexLimiter API for bounded concurrency with explicit acquire/release, automatic permit management while running fibers, and close/reject behavior for queued work * New timeout wrappers for futures: dex_future_with_timeout(), dex_future_with_timeout_msec(), dex_future_with_timeout_seconds(), and dex_future_with_deadline() * Additional GFile async wrappers for temporary directories, copy with progress, trash, append, partial content loading, byte loading, filesystem info queries, default handler lookup, enclosing mount lookup, display-name changes, read/write open/create/replace variants, string content replacement, and symbolic link creation * Additional GIO async wrappers for GAppInfo, GDataInputStream, GOutputStream, GSocketClient, GSocketConnection, GTlsConnection, GDtlsConnection, GResolver, GNetworkMonitor, GProxy, GProxyResolver, GSubprocess, GTlsDatabase, GTlsInteraction, GPermission, and GUnixConnection * New DexCoroutine stackless future type with helpers for suspending on pending futures, plus dex_scheduler_spawn_coroutine() * New DexTaskGroup API for structured concurrency with close, cancel, and cancel-on-error behavior * New DexThreadPool API for bounded threaded work queues * New dex_limiter_run_on_pool(), dex_limiter_run_coroutine(), and dex_limiter_close_after_drain() * New dex_aio_open() and dex_aio_close() * New dex_fiber_yield() * New DEX_DEFINE_CLOSURE_TYPE() helper for closure-like state structs * New dex_set_object() helper and DexObject property support for DexFuture values * New dex_promise_resolve_enum() * New DexStateMachine API to simplify asynchronous state machines with fibers providing a simple API to track state machine transitions. * Future debug names are now enabled by default when compiling with GCC and fibers emit Sysprof marks for their duration * Fix DexObject weak-reference retargeting to avoid a possible lock inversion during finalization * Fix DexChannel receive_all() to unblock queued senders after draining bounded channel capacity * Fix DexDelayed chaining so release waits for the wrapped future in the correct direction * DexPosixAioBackend now delays threadpool startup until the first work item is enqueued. * Make DexSemaphore user-space only * Build system fixes for gio-unix dependency propagation * Fix clang testsuite compatibility around atomic addition * Documentation additions for limiters, timeout-gated futures, coroutines, task groups, thread pools, schedulers, debugging, and GIO wrappers * Testsuite additions for limiters, timeout passthrough behavior, delayed futures, channel receive_all(), weak-reference retargeting, GIO wrappers, AIO, coroutines, fibers, task groups, thread pools, DexObject, and DexTest helpers