Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
v0.0.10 - 2026-02-22
This version comes with a dynamic thread pool and an improved API.
Added
- New ergonomic API using exported functions like
async { ... },fiber { ... }, andawait( $target ).
Changed
- Refactored native thread pool to use cond vars (
PARA_COND_*) instead of busy polling, reducing idle CPU usage to near zero. - Switched to a global job queue for the thread pool for better load balancing across worker threads.
- Reduced default fiber stack size from 4MB to 512K.
- Worker threads are now only spawned when the first asynchronous job is submitted.
- Increased
MAX_FIBERSlimit to 1024. - Expose thread pool config with
set_max_threadsandmax_threads.
v0.0.9 - 2026-02-21
Asynchronous HTTP::Tiny is basically a semi-automatic footgun.
Fixed
- Resolved
AvFILLp(av) == -1and!AvREAL(av)assertion failures inPerl_pp_entersubonDEBUGGINGbuilds of Perl. This was fixed by ensuring Slot 0 (the argument array) of the next pad depth is correctly initialized during fiber context switches.
Changed
- Increased fiber stack size to 4MB to provide better support for deep Perl calls and regex operations. This is a temp solution.
v0.0.8 - 2026-02-19
All the remaining failing smokers all had old versions of Affix and sure enough when I installed v1.0.6, I saw the same failure. Always the most obvious thing...
Changed
- Require Affix v1.0.7
v0.0.7 - 2026-02-18
Another dist targetting a specific CPAN smoker. I cannot replicate the failure in https://www.cpantesters.org/cpan/report/f0ca1d14-0cfa-11f1-9988-e7d94c615303, so I'm just trying different things...
Fixed?
- Arguments passed to a fiber might not be released until the fiber object was destroyed.
v0.0.6 - 2026-02-18
Fixed
- Resolved assertion failures in
Perl_cx_popsub_argsandPerl_pp_entersubwhen running on aDEBUGGINGbuild of Perl. This was fixed by ensuringCvDEPTHand pads are correctly restored during context switches. (I hope...)
Added
- Added
--debugbuild to GitHub Actions matrix to ensure future compatibility with Perl debugging builds.
Changed
- Refactored
swap_perl_stateto be more robust regarding Perl's internal stack management.
v0.0.5 - 2026-02-18
Changed
- I'm honeslty just throwing stuff at the wall. Between my local machines and GH CI workflows, I cannot replicate some of the failures I'm seeing from smokers which makes them virtually impossible to resolve.
v0.0.4 - 2026-02-17
Changed
- Attempt to only spawn max X threads in
t/006_parallel.twhere X is 3 or theget_thread_pool_size()? See https://www.cpantesters.org/cpan/report/ecf1410e-0c46-11f1-8628-aee76d8775ea - Recalculate
PL_curpad = AvARRAY(PL_comppad)inswap_perl_state? See https://www.cpantesters.org/cpan/report/e7244bd8-0c44-11f1-b3ab-94362698fc84
v0.0.3 - 2026-02-17
Changed
- Adding an optional timeout to
await_readandawait_write. - Allow fibers to return complex data (AV*, HV*).
v0.0.2 - 2026-02-17
Fixed
- Fixed segfault in
coro_yieldby adding NULL checks for destroyed or missing fibers. - Resolved stall in exception handling by introducing
last_sendertracking to preventparent_idcycles.
Changed
- Made unit tests a lot more noisy
v0.0.1 - 2026-02-16
Changes
- It exists! It shouldn't but it does.