Acme-Parataxis
view release on metacpan or search on metacpan
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [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 { ... }`, and `await( $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_FIBERS` limit to 1024.
- Expose thread pool config with `set_max_threads` and `max_threads`.
## [v0.0.9] - 2026-02-21
Asynchronous HTTP::Tiny is basically a semi-automatic footgun.
eg/preempt.pl view on Meta::CPAN
Acme::Parataxis::run(
sub {
say 'Starting cooperative preemption demo...';
my @futures;
push @futures, Acme::Parataxis->spawn(
sub {
my $count = 0;
while ( $count < 5 ) {
say ' [A] iteration ' . ++$count;
# busy loop
for ( 1 .. 50 ) {
my $x = $_ * 2;
Acme::Parataxis->maybe_yield();
}
}
say ' [A] finished';
}
);
push @futures, Acme::Parataxis->spawn(
sub {
( run in 0.757 second using v1.01-cache-2.11-cpan-5735350b133 )