v0.9.1 makes the project easier to enter and safer to monitor without changing
the established queueing, task, lifecycle, or error contracts.
Highlights
- A shorter README now leads with what the library does, one default path, and
a complete copy-paste example. - The Starter example is a small queue-and-wait program without interactive
pauses or outdated error guidance. - A new examples index organizes all 15 samples by learning goal.
- Bounded pools expose
QueueCount,QueueCapacity, andQueueLoadFactor
directly, so monitoring does not require access to the mutable queue object. BackpressureConfigis available directly on the pool and is protected by
the queue lock.- Duplicate callback work-item logic now lives in one internal unit.
- Obsolete test code and a timing-dependent unit assertion were removed.
Safe bounded-queue monitoring
WriteLn('Queued: ', Pool.QueueCount, '/', Pool.QueueCapacity);
WriteLn('Load: ', Pool.QueueLoadFactor:0:2);
Config := Pool.BackpressureConfig;
Config.MaxAttempts := 3;
Config.HighLoadDelay := 200;
Pool.BackpressureConfig := Config;The legacy Pool.WorkQueue property remains available so existing v0.x source
continues to compile. New code should not mutate it: direct enqueue, dequeue, or
clear operations bypass the pool's completion counter and can invalidate
WaitForAll.
Documentation journey
The project documentation now has clearer roles:
README.mdanswers what the library does and gets a new user
to a running program.examples/README.mdselects the next sample by goal.CHEATSHEET.mdkeeps operational rules on one page.- The Simple, Producer-Consumer, and Tasks API documents remain the canonical
detailed contracts. - Technical guides and archived development plans serve maintainers without
interrupting the beginner path.
Maintenance
ThreadPool.Internal.WorkItems now owns the common untracked callback wrapper.
The existing TSimpleWorkItem and TProducerConsumerWorkItem names remain as
compatibility wrappers. Shared ThreadCount and LastError properties now
come directly from TThreadPoolBase, eliminating redundant overrides.
The inactive legacy threadpooltests.pas suite was removed. The wall-clock
parallel-scaling assertion was also removed from FPCUnit; performance remains
covered by the dedicated benchmark project.
Compatibility
This is a source-compatible patch release. Existing programs can continue to
use:
- all
Queue,TryQueue,Submit,TrySubmit, andSubmitRangeoverloads; WaitForAll,Shutdown, task handles, batches, cancellation, and errors;- both pool constructors and
GlobalThreadPool; - the v0.8
IThreadPoolinterface and GUID; and - legacy
WorkQueueandTBackpressureConfigaccess.
Verification
The release gate builds the Lazarus package, runs all 81 active tests, builds
the benchmark, and builds all 15 examples. CI covers Windows and Linux.