isolate_manager 5.0.0-rc.11 isolate_manager: ^5.0.0-rc.11 copied to clipboard
Create multiple long-lived isolates for a function (keep it active to send and receive data), supports Worker and WASM on the Web.
5.0.0-rc.11 #
- Implement the
call
method. - Able to generate to WASM with
--wasm
flag (But unusable right now).
5.0.0-rc.10 #
- Fix issue with null
initialParams
increateCustom
. - Remove unused variable
autoMarkAsInitialized
and 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
IsolateManagerWorker
andisolateManagerWorker
annotations. - 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_contactor
to 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.create
behavior (use a newcustomFunction
). - Imptove the type of the
customFunction
andworkerFunction
.
5.0.0-rc.2 #
- Update README.
- Update homepage for beta version.
5.0.0-rc.1 #
- Bump sdk to
^3.3.0
. - Remove
autoInitialize
parameter. - Remove deprecated methods.
- MIGRATION: All
Worker
's MUST be re-compiled- If you're using the
IsolateManagerFunction.workerFunction
, you need to re-generate theJS
for the Web Worker (compile fromDart
toJS
). TheIsolateManagerFunction.customFunction
will be automatically applied. - If you're using the old method, you need to send a
initialized
signal from anIsolate
and 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 themain
method.-
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
IsolateFunctionHelper
in favor of theIsolateManagerFunction
. - Improve the
IsolateManagerFunction.workerFunction
. - [Experiment and Optional] Able to send an
initialized
signal 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 theJS
for the Web Worker (compile fromDart
toJS
). TheIsolateManagerFunction.customFunction
will be automatically applied. -
If you're using the old method, you need to send a
initialized
signal from anIsolate
and 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 themain
method.-
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
create
andcreateCustom
method:- 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_contacter
tov4.1.0
. - Add a class
IsolateFunctionHelper
containscustomFunction
andworkerFunction
. - Deprecate the
createOwnIsolate
in favor of thecreateCustom
. - Deprecate the
isolateWorker
in favor of theIsolateFunctionHelper.workerFunction
. - Improve README.
4.2.1+1 #
- Fixed the issue that causes the
sendMessage
to be unable to throw theException
when thecallback
is set. - Easier to create a Worker by using
isolateWorker
method (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
fetchAndDecode
example. - 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
queuesLength
to get the number of the current queuing elements. - Add
ensureStarted
to able to wait for thestart
method to finish when you want to call thestart
method manually withoutawait
and wait for it later. - Add
isStarted
to check if thestart
method is completed or not.
4.1.0 #
- Add
callback
parameter tocompute
method 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.onMessage
as deprecated. - Add example that uses
callback
parameter to build a progress bar before getting the final result.
4.0.0 #
- Add
sendResultError
toIsolateManagerController
to make it easier to send the Exception from the Isolate to main app. IsolateException
parameters are nowObject
andStackTrace
.- Add parameter type as
P
and change return type toR
. - Add return type as
void
toonDispose
method. - Change
isolateParams
from dynamic toObject?
. - Update tests.
- Update example.
3.0.1 #
- [Fixes]: The
compute
method 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_helper
to README.
2.2.0+4 #
- Improves README.
- Add
IsolateManager.debugLogPrefix
to set the prefix debug logs.
2.2.0+2 #
- Improve
worker.dart
imports. - Use new
worker.dart
in testing.
2.2.0+1 #
- Improve function descriptions.
- Improve README for catching exception with
createOwnIsolate
.
2.2.0 #
- Support
try-catch
block for all platforms including Worker on Web. - Update
worker.dart
to supporttry-catch
block. - 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.compute
for 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
start
withoutawait
:
IsolateManager<int> isolateManager = IsolateManager.create( fibonacci, concurrent: 4, ); isolateManager.start();
- Use
start
when 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
numOfIsolates
toconcurrent
. - Update dependencies.
2.0.2+3 #
- Improve README.
2.0.2+2 #
- Changes the name from
function_name
toworker
. - Improves
worker.dart
form. - Improves README.
2.0.2 #
- Fixes issue in
restart
andstop
methods.
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.dart
to make it works withFutureOr
function. - Add
function_name.js
to example and create example for it.
2.0.1 #
- Remove useless
await
in README. - Downgrade Dart SDK min version to
2.12.0
.
2.0.0 #
- NO BREAKING CHANGE
- Add
Worker
for Web platform (real Isolate on Web). Read README for more details.
1.0.0+1 #
- Update README
1.0.0 #
- BREAKING CHANGE: Change
isolateFunction
parameter ofcreateOwnIsolate
method from named to required parameter. - Added
initialParams
parameter tocreateOwnIsolate
method. - Added
initialParams
getter toIsolateManagerController
. - Bring to stable version.
0.1.0 #
- Update example
0.0.1 #
- Initial release