squadron 3.3.2 squadron: ^3.3.2 copied to clipboard
Multithreading and worker thread pool in Dart to offload CPU-bound and heavy I/O tasks to Isolate or Web Worker threads.
3.3.2 #
- Implemented a
LocalLogger
to have Web workers log messages from the main window (effectively logging via Dart debugger if present). - Removed import of
dart:isolate
from_worker_runner.dart
. - Made
coverage
a dev dependency. - Added a tool to extract coverage metrics during Github Dart workflow.
- Updates badges to include coverage metrics and platform info.
3.3.1 #
- Fixed streaming from
LocalWorker
. - Added tests for
LocalWorker
. - Improved cancellation handling.
- Added tests to improve test coverage.
3.3.0 #
- Implemented
LocalWorker
, a worker-like class living in the same thread as its owner and available for inter-worker messaging. For instance, in a Flutter app, instantiating aLocalWorker
in the main thread enables other workers to (indirectly) call Flutter APIs that are otherwise not available in the context of a secondary thread. LocalWorker
uses the same concepts and approach asWorkers
, such as theoperations
map and theWorkerService
interface.
3.2.2 #
- Document types and release mode (special thanks to SwissCheese5).
- More error handling at communication points.
- Use lower log levels for internal Squadron log messages.
- Added test coverage.
3.2.1 #
- Document the new logging feature.
- Make
sendRequest()
async in browserChannel
(implementation closer to that of nativeChannel
). - Add a timestamp to pool workers to record the time when it was assigned its last task.
- Sort pool workers to distribute tasks to those that have the largest capacity and the oldest timestamp.
- Add command property to
WorkerException
. - Reorganized the test folder.
- Recompiled test Web workers.
3.2.0 #
- Added a logging mechanism to facilitate debugging Squadron's internals.
- Reworked connection flow between main program and worker.
- Reworked task scheduling.
- Fixed issue https://github.com/d-markey/squadron/issues/3.
- Added tests for logging and workers failing to initialize.
3.1.4 #
- Implemented cancellation token to enable worker task notification that cancellation has occured.
- Implemented
TimeOutToken
,CancellableToken
andCompositeToken
. - Updated
README.md
. - Added unit tests.
3.1.0 #
- Several minor changes (some possibly breaking changes but easy to fix).
- Split library into
squadron_service.dart
(worker services only),squadron_worker.dart
(worker services and workers without pool) vs.squadron.dart
(worker services, workers and pools). - Split
Channel
intoChannel
(used to send aWorkerRequest
) andWorkerChannel
(used to send aWorkerResponse
). - Added
ConcurrencySettings
to eventually replaceminWorkers
,maxWorkers
andmaxParallel
. - Added
WorkerPool.execute()
(will eventually replaceWorkerPool.compute()
). - Added
WorkerPool.scheduleTask()
to schedule aValueTask
. Result will be accessible from futureValueTask.value
. - Added
WorkerPool.scheduleStream()
to schedule aStreamTask
. Results will be accessible from streamStreamTask.stream
. ValueTask
andStreamTask
provide information on task execution (eg. status, wait time, execution time...).- Added
WorkerPool.cancel()
to support worker task cancellation. - Updated
README.md
. - Added unit tests.
3.0.0 #
- Split library into
squadron_service.dart
(worker services only),squadron.dart
(worker services and workers without pool) vs.squadron_pool.dart
(worker services, workers and pools). - Moved
connect()
andprocess()
from Worker to WorkerService. - Provided the
run()
function to facilitate implementation of platform workers. - Adapted tests and examples.
- Updated
README.md
.
2.0.2 #
- Single test code base for both platforms.
- Added BitCoin service to test live network access from workers (courtesy of coindesk.com).
- Added PiDigits service (related to https://github.com/d-markey/squadron/issues/1).
- Retaining attempts based on manually operating a browser to run tests in /web (different test code base) and /test/browser-tests (same test code base).
2.0.1 #
- Remove dependency on js package.
2.0.0 #
- This version supports workers running in Isolates as well as Web Workers.
- Platform implementations are now more straightforward thanks to
Worker.connect()
andWorker.process()
. - See examples on how to scaffold services, Squadron Workers and platform workers.
- Added tests for Web Workers (run with
dart run build_runner serve -r
and point your browser to http://localhost:8080/index.html).
1.0.2 #
- Added support for minimum count of workers in pool.
- Make sure Isolate is killed when the worker is stopped.
- Keep track of stats from stopped workers.
- Update tests & examples (proper error handling, command map, worker monitoring).
1.0.1 #
- Improve error handling.
- Improve documentation.
- Add unit tests.
1.0.0 #
- Initial version.