Skip to content

Feat/v0.9.0 task coordination#13

Merged
ikelaiah merged 3 commits into
mainfrom
feat/v0.9.0-task-coordination
Jul 15, 2026
Merged

Feat/v0.9.0 task coordination#13
ikelaiah merged 3 commits into
mainfrom
feat/v0.9.0-task-coordination

Conversation

@ikelaiah

Copy link
Copy Markdown
Owner

What does this PR do?

Prepares the v0.9.0 release by adding observable task coordination while preserving compatibility with existing v0.8.x programs.

Key changes:

  • Adds ThreadPool.Tasks with observable task handles, lifecycle states, timed and indefinite waiting, error reporting, and pending-task cancellation.
  • Adds task batches for waiting, progress counts, failure inspection, and group cancellation.
  • Adds efficient chunked SubmitRange processing.
  • Adds Submit and TrySubmit support to both Simple and Producer-Consumer pools.
  • Preserves the existing IThreadPool interface and GUID for v0.8 compatibility.
  • Adds deadlock protection for unsafe self-waiting and nested bounded ranges.
  • Adds task coordination tests, compatibility tests, benchmarks, API documentation, release notes, and real-world examples.
  • Adds PowerShell and POSIX scripts that build all examples into example-bin/.
  • Updates the Lazarus package and documentation for v0.9.0.

Local verification completed on Windows:

  • 81 tests passed with no failures or memory leaks.
  • Package and Release benchmark builds passed.
  • Benchmark smoke test passed.
  • All 15 examples built successfully.

Related issue

None.

Type of change

  • 🐛 Bug fix
  • ✨ New feature
  • 📝 Documentation / examples
  • 🔧 Refactor / internal change

Checklist

  • Tests pass locally (lazbuild tests/TestRunner.lpi then run TestRunner)
  • Added/updated tests where it makes sense
  • Updated CHANGELOG.md
  • Updated docs in docs/ if behavior or API changed
  • New units use {$mode objfpc}{$H+}{$J-} and filenames match unit casing

ikelaiah added 3 commits July 16, 2026 04:36
- add observable Submit and TrySubmit task handles
- add batch waiting, pending cancellation, and chunked ranges
- integrate shared task semantics into both thread pool implementations
- preserve compatibility with the v0.8 IThreadPool interface
- add regression tests, benchmarks, documentation, and examples
- bump the Lazarus package version to 0.9.0
…le-bin/`

Additions:

- `build-examples.ps1`
- `build-examples.sh`
- All 15 `.lpi` projects now output executables to `example-bin/`.
- `example-bin/` is ignored by Git.
- CI now uses the shell script.
- Build instructions added to `README.md`
@ikelaiah ikelaiah self-assigned this Jul 15, 2026
@ikelaiah ikelaiah added documentation Improvements or additions to documentation enhancement New feature or request labels Jul 15, 2026
@ikelaiah
ikelaiah merged commit 2a53bd9 into main Jul 15, 2026
4 checks passed
@ikelaiah
ikelaiah deleted the feat/v0.9.0-task-coordination branch July 15, 2026 19:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant