Acme-Parataxis

 view release on metacpan or  search on metacpan

Changes.md  view on Meta::CPAN

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 1.059 second using v1.01-cache-2.11-cpan-5735350b133 )