isolate_manager 4.3.0-rc.2 isolate_manager: ^4.3.0-rc.2 copied to clipboard
Create multiple long-lived (keep it active to send and receive data) isolates for a function, supports Worker and WASM on the Web.
4.3.0-rc.2 #
- Support
WASM
.
4.3.0-rc.1 #
- Add a benchmark test.
- [Experiment] 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:- If you're using the
IsolateFunctionHelper.workerFunction
, you need to re-generate theJS
for the Web Worker (compile fromDart
toJS
). TheIsolateFunctionHelper.customFunction
is automatically applied. - If you're using the old method:
-
Step 1: 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) { 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) { final Completer completer = Completer(); completer.future.then( (value) => jsSendMessage(value), onError: (err, stack) => jsSendMessage(IsolateException(err, stack).toJson()), ); try { completer.complete(function(message as P) as R); } catch (err, stack) { jsSendMessage(IsolateException(err, stack).toJson()); } }); }
- After:
void main() { callbackToStream('onmessage', (MessageEvent e) { return js_util.getProperty(e, 'data'); }).listen((message) { final Completer completer = Completer(); completer.future.then( (value) => jsSendMessage(value), onError: (err, stack) => jsSendMessage(IsolateException(err, stack).toJson()), ); try { completer.complete(function(message as P) as R); } catch (err, stack) { jsSendMessage(IsolateException(err, stack).toJson()); } }); 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, // <-- );
-
- If you're using the
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')
anotation 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