isolate_manager 6.0.0-rc.25+1
isolate_manager: ^6.0.0-rc.25+1 copied to clipboard
Create multiple long-lived isolates for the Functions, supports Worker on the Web (with the effective generator) and WASM compilation.
6.0.0-rc.25+1 #
- Add
isolate_manager_generatorto dev dependencies in the example.
6.0.0-rc.25 #
- BREAKING CHANGE:
- The
isolate_manager_generatorMUST be added todev_dependenciesto usedart run isolate_manager:generate. - Remove all deprecated methods.
- The
- Return non-zero exit code when errors occur during the
dart run isolate_manager:generateexecution for better error handling in CI/CD pipelines.
6.0.0-rc.24+1 #
- Improve README.
6.0.0-rc.24 #
- Rename the
QueueStrategys:QueueStrategyUnlimited→UnlimitedStrategyQueueStrategyRemoveNewest→DropNewestStrategyQueueStrategyRemoveOldest →DropOldestStrategyQueueStrategyDiscardIncoming→RejectIncomingStrategy
- Cleanup code.
- Remove .vscode.
6.0.0-rc.23 #
- Improve README.
6.0.0-rc.22 #
- Update wrap methods to throw
UnsupportedImTypeExceptionwhen wrapping nullable types in ImType, ImList, and ImMap. - Update tests.
- Improve README.
6.0.0-rc.21 #
- The shared worker now only accept the basename of the
workerNameto compatible with the new generator (since v0.0.6). - Reorganize test file structures.
- BREADKING CHANGE: Recompile test workers.
- Simplify test flow.
6.0.0-rc.20 #
- Add, replace and deprecate the old methods:
ImMap.toUnwrappedMap->ImMap.toDecodedMapImList.toUnwrappedIterable->ImList.toDecodedIterableImList.toUnwrappedList->ImList.toDecodedList
- Update tests.
6.0.0-rc.19 #
- BREAKING CHANGE Replace
UnimplementedErrorwithUnsupportedImTypeExceptioninImTypewrapper methods. - Improve worker function handling to avoid unnecessary wrapping when the worker is not available.
- Add
toString()method toImTypesubclasses for improved debugging. - Able to throw and catch
UnsupportedImTypeExceptioncorrectly across io, js and wasm. - Able to register the custom exceptions (extends
IsolateException) that can be safely transferred between isolates. - Update benchmark for WASM and update the result.
- Improve README.
6.0.0-rc.18 #
-
Replace
IsolateTypes withImTypes and mark the old ones as deprecated. -
BREAKING CHANGE Refactor
ImTypeto prevent nullable values. -
Replace
encodewithwrapanddecodewithunwrapin IsolateType handling across and mark the old ones as deprecated. -
Add some useful methods:
ImList:toIterable,toList,toDecodedIterableandtoDecodedList.ImMap:toMapandtoDecodedMap.
-
Improve error handling when sending exception from Worker to main.
-
Improve the
ImTypeequality and hash code implementations to replaceEquatable. -
Add a converter helper to ensure proper type handling for
int,Iterable<int>,Set<int>andList<int>when compiling to WASM. -
Update tests and README.
-
Able to run tests on WASM via
dart test --platform=chrome --compiler dart2wasm. -
Update the workflows to run test on WASM.
6.0.0-rc.17 #
-
Fixes an issue in the shared isolate manager that
useWorkeris true but there is noworkerNameprovided. -
Add new
onInitcallback to replaceonInitialand make it as deprecated. -
Mark
initialParameterin theIsolateManager.createCustomas deprecated:Before:
void customIsolateFunction(dynamic params) { IsolateManangerFunction.customFunction( params, onInitial: (controller, initialParams) { // Do something here with the `initialParams`. }, ); } final isolate = IsolateManager.createCustom<R, P>( customIsolateFunction, initialParams: 'initialParams', );Now:
void customIsolateFunction(dynamic params) { IsolateManangerFunction.customFunction( params, onInit: (controller) { // Do something here with your own `initialParams` value. }, ); } final isolate = IsolateManager.createCustom<R, P>( customIsolateFunction, ); -
Improve tests.
6.0.0-rc.16+1 #
- Update README.
6.0.0-rc.16 #
- Add
runCustomFunctionmethod to support custom isolate execution with optional callback and debug logging - The
workerNamenow gets the latest mapping value dynamically, avoid the need to recreate theIsolateManagerafter updates. - Refactored the codebase to remove redundant streams.
- Rename
CustomIsolateFunctiontoIsolateCustomFunction, update references and mark the old one as deprecated. - Improve README.
6.0.0-rc.15 #
- Refactored multiple components to improve performance.
- Rewrote benchmarks, regenerated JS worker for benchmarks, and updated benchmark results in README.
- Used
assertto log messages, enhancing performance in release mode. - Fixed several typos.
6.0.0-rc.14+1 #
- Fix README typos.
6.0.0-rc.14 #
- Add an
IsolateManager.runFunctionmethod that automatically applies the appropriateworkerNamewhen executing a function.
6.0.0-rc.13 #
- Improve README.
6.0.0-rc.12 #
- Add an
IsolateManager.runmethod that followsIsolate.runbut also supports Web Workers. - Allow
IsolateTypeto be declared as const. - Refactor to simplify internal code.
- Strengthen tests.
- Improve the README.
- Improve the Benchmarks.
6.0.0-rc.11 #
- Adjust the dependencies.
6.0.0-rc.10 #
- Separate the generator into the
isolate_manager_generatorpackage.
6.0.0-rc.9 #
- Fixed issue that causes subsequent tasks not to be processed after receiving an exception.
6.0.0-rc.8 #
- Able to compute a nullable function with a nullable parameter use IsolateManagerShared.
6.0.0-rc.7 #
- The
IsolateType.encodeis now accept the nullable values.
6.0.0-rc.6 #
- Add
IsolateTypeto use for function parameters and return types to ensure that type is supported when generating a Worker. - Add
test/bin/run.shto generate and run all tests locally. - Use native
dartifyandjstifyto improve perfomances.
6.0.0-rc.5 #
- Improve the generator to generate the worker mappings better.
- Update workflows to ensure backward compatibility.
6.0.0-rc.4 #
- Correctly parse the dart native arguments (Fixes #36).
- [Experiment] Automatically generate the
workerMappingsby adding the--worker-mappings-experiment=lib/main.dartflag to the generator. - The code coverage is now using
dart testinstead offlutter testso we can correctly test the code on bothvmandchrome. - Improve the performaces by improving the way to detect the
IsolateState. - Improve tests.
6.0.0-rc.3 #
- Use
very_good_analysis. - Improve tests.
6.0.0-rc.2 #
- Bump the
webpackage to^1.0.0. - Bump the
analyzerpackage to^6.0.0. - Update the benchmark result.
6.0.0-rc.1 #
- BREAKING CHANGE All the JS files MUST BE recompiled by running
dart run isolate_manager:generate. - Improve the data transfer performances between the Worker and the main App by replacing the
jsonwith theMapwhen sending and receiving data.
Although all tests are passed, many things will be refactored before version 6.0.0 is fully released.
5.5.1 #
- Change the type of the
MapfromStringtodynamicwhen converting bydartify. - Add more tests for the Map.
5.5.0 #
- Able to create a
Mapfunction and use it as aWorkerinstead of using JSON.
5.4.0 #
- Set the max number of the queued computations.
- Control how a new computation is added and retrieved from the Queue.
- Compute a priority computation (promote a computation to the top of the Queue so it will be compute as soon as possible).
5.3.0 #
- Able to add options and flags directly into to Dart to Js Compiler.
- Able to print the debug logs for the dart to js compiler (only if the
--debugflag is specified).
5.2.1+3 #
- Improve README.
5.2.1+1 #
- Improve README.
5.2.1 #
- Update the package
webversion to support a wider range (">=0.5.1 <2.0.0").
5.2.0 #
- Bump the
webto v1.0.0. - Update
README.
5.1.0 #
- Stable now.
5.1.0-rc.1 #
- Improve README.
5.1.0-rc #
-
Add
IsolateManagerSharedto be able to compute the multiple Functions. -
Generate the shared Workers by using the
@isolateManagerSharedWorkerannotation. -
Able to generate a custom Worker from a
customFunctionby using the@isolateManagerCustomWorkerannotation. -
Improve the README.
-
Various improvements and optimizations.
-
The generator:
- The default
dart run isolate_manager:generatecommand will generates both single and shared Workers. - Use
dart run isolate_manager:generate --singleto generate only the single functions (@isolateManagerWorkerand@isolateManagerCustomWorkerannotations). - Use
dart run isolate_manager:generate_shared --sharedto generate only the shared functions (@isolateManagerSharedWorkerannotation).
- The default
-
This is an
rcversion because the various improvements may affect some edge cases so I want to make sure it's fully backward-compatible
5.0.5+1 #
- Improve README.
5.0.5 #
- Avoid using static function for the log printer.
5.0.4 #
- Update the log printer to increase the performances.
- Update benchmark.
5.0.3 #
- Improve pub score.
5.0.2+1 #
- Update some comments and fix some TYPO.
- Rename from
benchmarkstobenchmark.
5.0.2 #
- Change the default generated js to level
O4(Default level when usingflutter build web). - Remove try catch to avoid unknown issues.
- Add more test cases and improve tests.
- Update the Worker base code.
- Update missed types.
- Update README.
5.0.1+1 #
- Re-organize the README.
- Update the description.
5.0.1 #
- Add
--omit-implicit-checksflag when compiling tojsto avoid type check issues. - Add comments to the
IsolateException. - Update README.
5.0.0 #
- Bump sdk to
^3.3.0. - Add a generator to generate the Web Worker by adding the
IsolateManagerWorkerandisolateManagerWorkerannotations (See more in README). - Implement the
callmethod to theIsolateManager. - Improve the
IsolateManager.createbehavior (use a new custom function). - Improve the type of the
customFunctionandworkerFunction. - Remove
autoInitializeparameter. - Remove deprecated methods.
- Bring the
isolate_contactorto this package to make it lighter and easier to maintain. - BREAKING CHANGE: All isolate functions MUST be updated and all Workers MUST be recompiled. See the migration guide at the bottom of the README or at the changelog of the version
5.0.0-rc.1.
5.0.0-rc.11 #
- Implement the
callmethod. - Able to generate to WASM with
--wasmflag (But unusable right now).
5.0.0-rc.10 #
- Fix issue with null
initialParamsincreateCustom. - Remove unused variable
autoMarkAsInitializedand related code in thebase. - Update tests.
5.0.0-rc.9 #
- Able to generate static functions (Classs.function => Class.function.js).
- Improve the generator (only generate the needed files to reduce time).
- Improve the generated logs.
5.0.0-rc.8 #
- Add a generator to generate the Worker JS by adding the
IsolateManagerWorkerandisolateManagerWorkerannotations. - Update README.
5.0.0-rc.7 #
- Update to improve the score.
5.0.0-rc.6 #
- Update the CHANGELOG to show the migration guide.
5.0.0-rc.5 #
- Export the
IsolateState. - Update the CHANGELOG to show the migration guide.
5.0.0-rc.4 #
- Bring the
isolate_contactorto this package and make it lighter and easier to maintain. - Update the tests.
- Remove unneeded platforms in the example.
5.0.0-rc.3 #
- Remove deprecated methods.
- Improve the
IsolateManager.createbehavior (use a newcustomFunction). - Improve the type of the
customFunctionandworkerFunction.
5.0.0-rc.2 #
- Update README.
- Update homepage for beta version.
5.0.0-rc.1 #
- Bump sdk to
^3.3.0. - Remove
autoInitializeparameter. - Remove deprecated methods.
- MIGRATION: All isolate functions MUST be update and all Workers MUST be recompiled:
- If you're using the
IsolateManagerFunction.workerFunction, you need to re-generate theJSfor the Web Worker (compile fromDarttoJS). TheIsolateManagerFunction.customFunctionwill be automatically applied. - If you're using the old method, you need to send a
initializedsignal from anIsolateand aWorker:-
Custom function of an
Isolate: add thecontroller.initialized();to the end of the function.-
Before:
void customFunction(dynamic params) { final controller = IsolateManagerController(params); controller.onIsolateMessage.then((value){ // ... }); } -
After:
void customFunction(dynamic params) async { // Do something sync or async here final controller = IsolateManagerController(params); controller.onIsolateMessage.then((value){ // ... }); controller.initialized(); // <-- }
-
-
On the Web
Worker: addjsSendMessage(IsolateState.initialized.toJson());to the end of themainmethod.-
Before:
void main() { callbackToStream('onmessage', (MessageEvent e) { return js_util.getProperty(e, 'data'); }).listen((message) { // ... }); } -
After:
void main() async { // Do something sync or async here callbackToStream('onmessage', (MessageEvent e) { return js_util.getProperty(e, 'data'); }).listen((message) { // ... }); jsSendMessage(IsolateState.initialized.toJson()); // <-- }
-
-
- If you're using the
4.3.1 #
- Export the
IsolateState.
4.3.0 #
- Support
WASM. - Add benchmark tests.
- Deprecate the
IsolateFunctionHelperin favor of theIsolateManagerFunction. - Improve the
IsolateManagerFunction.workerFunction. - [Experiment and Optional] Able to send an
initializedsignal from the isolate to the main app to ensure that the isolate is ready to receive the messages from the main app. The Migration Steps:- Step 1:
-
If you're using the
IsolateManagerFunction.workerFunction, you need to re-generate theJSfor the Web Worker (compile fromDarttoJS). TheIsolateManagerFunction.customFunctionwill be automatically applied. -
If you're using the old method, you need to send a
initializedsignal from anIsolateand aWorker:-
Custom function of an
Isolate: add thecontroller.initialized();to the end of the function.-
Before:
void customFunction(dynamic params) { final controller = IsolateManagerController(params); controller.onIsolateMessage.then((value){ // ... }); } -
After:
void customFunction(dynamic params) async { // Do something sync or async here final controller = IsolateManagerController(params); controller.onIsolateMessage.then((value){ // ... }); controller.initialized(); // <-- }
-
-
On the Web
Worker: addjsSendMessage(IsolateState.initialized.toJson());to the end of themainmethod.-
Before:
void main() { callbackToStream('onmessage', (MessageEvent e) { return js_util.getProperty(e, 'data'); }).listen((message) { // ... }); } -
After:
void main() async { // Do something sync or async here callbackToStream('onmessage', (MessageEvent e) { return js_util.getProperty(e, 'data'); }).listen((message) { // ... }); jsSendMessage(IsolateState.initialized.toJson()); // <-- }
-
-
-
Step 2: Update the
createandcreateCustommethod:- Before:
final isolate = await IsolateManager.create( function, workerName: 'function', );- After:
final isolate = await IsolateManager.create( function, workerName: 'function', autoInitialize: false, // <-- );
-
- Step 1:
4.2.2 #
- Bump
isolate_contactertov4.1.0. - Add a class
IsolateFunctionHelpercontainscustomFunctionandworkerFunction. - Deprecate the
createOwnIsolatein favor of thecreateCustom. - Deprecate the
isolateWorkerin favor of theIsolateFunctionHelper.workerFunction. - Improve README.
4.2.1+1 #
- Fixed the issue that causes the
sendMessageto be unable to throw theExceptionwhen thecallbackis set. - Easier to create a Worker by using
isolateWorkermethod (Detail in README). - Remove unused methods of the
IsolateManagerController. - Improve README.
- Improve tests.
- Improve the code coverage.
4.1.5+1 #
- Improved README.
4.1.5 #
- Add
fetchAndDecodeexample. - Update README to
fetchAndDecode.
4.1.4 #
- Add more complex examples (also for
Worker).
4.1.3 #
- Add example for
Worker. - Update README.
4.1.2 #
- Update homepage URL.
4.1.1 #
- Add
queuesLengthto get the number of the current queuing elements. - Add
ensureStartedto able to wait for thestartmethod to finish when you want to call thestartmethod manually withoutawaitand wait for it later. - Add
isStartedto check if thestartmethod is completed or not.
4.1.0 #
- Add
callbackparameter tocomputemethod to fully control the final result (Useful when you need to send something like the progress value before sending the final result in the samecompute). - Mark
isolateManager.onMessageas deprecated. - Add example that uses
callbackparameter to build a progress bar before getting the final result.
4.0.0 #
- Add
sendResultErrortoIsolateManagerControllerto make it easier to send the Exception from the Isolate to main app. IsolateExceptionparameters are nowObjectandStackTrace.- Add parameter type as
Pand change return type toR. - Add return type as
voidtoonDisposemethod. - Change
isolateParamsfrom dynamic toObject?. - Update tests.
- Update example.
3.0.1 #
- [Fixes]: The
computemethod will be failed if user tap on a button that calling it multiple times continuously. - Improves tests.
3.0.0 #
- Bumped Dart sdk to
>=2.18.0 <4.0.0.
2.2.0+5 #
- Add
isolates_helperto README.
2.2.0+4 #
- Improves README.
- Add
IsolateManager.debugLogPrefixto set the prefix debug logs.
2.2.0+2 #
- Improve
worker.dartimports. - Use new
worker.dartin testing.
2.2.0+1 #
- Improve function descriptions.
- Improve README for catching exception with
createOwnIsolate.
2.2.0 #
- Support
try-catchblock for all platforms including Worker on Web. - Update
worker.dartto supporttry-catchblock. - Change all the debug logs prefix to
[Isolate Mangager]. - Add test for
try-catch. - Increase min SDK to 2.15.0.
2.1.2+1 #
- Improve pub scores.
2.1.2 #
-
The method
.start()is now optional, the plugin will automatically call this method when using.computefor the first time, so you have 3 way to create the instance:- Basic usage:
IsolateManager<int> isolateManager = IsolateManager.create( fibonacci, concurrent: 4, ); await isolateManager.start();- Use
startwithoutawait:
IsolateManager<int> isolateManager = IsolateManager.create( fibonacci, concurrent: 4, ); isolateManager.start();- Use
startwhen creating the instance:
IsolateManager<int> isolateManager = IsolateManager.create( fibonacci, concurrent: 4, )..start();
2.1.1 #
- On Flutter >3.3.0 -
@pragma('vm:entry-point')annotation must be added to all methods that you want to use for isolation. Read README for more information.
2.1.0 #
- [BREADKING CHANGE]: Change the parameter name from
numOfIsolatestoconcurrent. - Update dependencies.
2.0.2+3 #
- Improve README.
2.0.2+2 #
- Changes the name from
function_nametoworker. - Improves
worker.dartform. - Improves README.
2.0.2 #
- Fixes issue in
restartandstopmethods.
2.0.1+3 #
- Improve function headers.
2.0.1+2 #
- Update function headers.
- Update README.
- Update dependencies.
2.0.1+1 #
- Update base
function_name.dartto make it works withFutureOrfunction. - Add
function_name.jsto example and create example for it.
2.0.1 #
- Remove useless
awaitin README. - Downgrade Dart SDK min version to
2.12.0.
2.0.0 #
- NO BREAKING CHANGE
- Add
Workerfor Web platform (real Isolate on Web). Read README for more details.
1.0.0+1 #
- Update README
1.0.0 #
- BREAKING CHANGE: Change
isolateFunctionparameter ofcreateOwnIsolatemethod from named to required parameter. - Added
initialParamsparameter tocreateOwnIsolatemethod. - Added
initialParamsgetter toIsolateManagerController. - Bring to stable version.
0.1.0 #
- Update example
0.0.1 #
- Initial release