0.003 2026-04-26 09:39:13+02:00 Europe/Vienna
[Features]
- Add named jobs: add() now accepts an optional leading string name,
and result($name) retrieves a job's result by name. Named and unnamed
jobs can be mixed freely; results() still returns all results in
insertion order.
- Add per-job timeout support via SIGALRM (timeout => N constructor option).
Each child process is killed after N seconds. In optimized mode, the
timeout covers the grouped jobs within each fork.
[Bug Fixes]
- Safe error handling in run_on_finish: a failing job no longer dies
inside the parent's wait loop and aborts sibling collection.
- Preserve return values in wait_for_all_optimized() so grouped jobs
retain their individual results.
- Invoke callbacks as each job completes rather than after all jobs
finish — callbacks now fire in completion order.
- Fix memory leak: break circular reference between $self and
Parallel::ForkManager's run_on_finish closure using Scalar::Util::weaken.
- Fix callback indexing bug in wait_for_all() that could skip or misalign
callbacks with their corresponding job results.
- Fix unnecessary empty forks in wait_for_all_optimized() when the number
of jobs is fewer than available CPUs.
- Validate constructor options (max_process, max_process_per_cpu, max_memory,
timeout) are positive numbers — previously zero or negative values passed
silently to Parallel::ForkManager with undefined behavior.
- Validate callback argument in add() is a CODE reference — previously
non-CODE callbacks were silently ignored at execution time.
- Warn when max_memory is used on non-Linux platforms (requires
Sys::Statistics::Linux::MemStats) instead of silently falling back.
[Documentation]
- Improve POD structure: add DESCRIPTION and METHODS sections, fix
formatting issues, add missing semicolon in SYNOPSIS example.
- Document named-jobs API and timeout option in POD/README.
- Add CLAUDE.md with project guidelines for AI-assisted development
(excluded from CPAN release via dist.ini PruneFiles, along with
the .claude/ directory).
- Add AI policy document.
[Testing]
- Modernize test suite from Test::More to Test2::V0.
- Add comprehensive tests for callbacks, edge cases, memory leaks,
named jobs, error handling, and timeout behavior.
[CI/Infrastructure]
- Switch from Travis CI to GitHub Actions.
- Use dynamic Perl version matrix (5.14+) via perl-actions/perl-versions.
- Run in perldocker/perl-tester containers for reproducible builds.
- Use install-with-cpm with a dedicated CI cpanfile.
- Restrict Dist::Zilla build to Perl >= 5.20; older Perls run prove directly.
- Clean up stale test dependencies from CI cpanfile.
0.002 2018-03-20 14:16:28-06:00 America/Denver
0.001 2018-02-16 15:34:46-07:00 America/Denver
* initial version