isolate_manager 5.1.0-rc.1
isolate_manager: ^5.1.0-rc.1 copied to clipboard
Create multiple long-lived isolates for the Functions, supports Worker on the Web (with the effective generator) and WASM compilation.
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