Hi Alon and all!

On Fri, 21 Aug 2020 12:46:18 -0700
Alon Zakai <alonza...@gmail.com> wrote:

> I believe this is from 1.39.16, the changelog entry (
> https://github.com/emscripten-core/emscripten/blob/master/ChangeLog.md#13916-05152020)
> says
> 
> ====
> Change the factory function created by using the MODULARIZE build option to
> return a Promise instead of the module instance. That is, beforehand
> 
>   Module()
> 
> would return an instance (which was perhaps not ready yet if startup was
> async). In the new model, that returns a Promise which you can do .then or
> await on to get notified when the instance is ready, and the callback
> receives the instance. Note that both before and after this change doing
> Module() creates and runs an instance, so the only change is the return
> value from that call. This fixes some long-standing bugs with that option
> which have been reported multiple times, but is a breaking change - sorry
> about that. To reduce the risk of confusing breakage, in a build with
> ASSERTIONS we will show a clear warning on common errors. For more, see
> detailed examples for the current usage in src/settings.js on MODULARIZE.
> (#10697)
> ====
> 
> Thanks Shlomi, good to mention this here as it might help others (I don't
> think we mentioned it in the mailing list before).
> 

Thanks for the extra info, and - you're welcome.

Regards,

        Shlomi

> - Alon
> 
> 
> On Fri, Aug 21, 2020 at 5:24 AM Shlomi Fish <shlo...@shlomifish.org> wrote:
> 
> > Hi all!
> >
> > I'm documenting a recent change in the semantics of Emscripten and emcc
> > (starting from 1.39.x and also seems to affect 2.0.x): Module() now
> > returns a
> > promise and one should for example do:
> >
> > Module().then((result) => {
> >         real_module = result;
> > })
> >
> > E.g like in
> >
> > https://github.com/shlomif/fc-solve/commit/dcdb924262860eb8d023402400fa1e8cd9dce6c2
> > :
> >
> > diff --git a/fc-solve/site/wml/src/ts/web-fc-solve-tests.ts
> > b/fc-solve/site/wml/src/ts/web-fc-solve-tests.ts index f3082e52f..d510bc4fa
> > 100644 --- a/fc-solve/site/wml/src/ts/web-fc-solve-tests.ts
> > +++ b/fc-solve/site/wml/src/ts/web-fc-solve-tests.ts
> > @@ -494,7 +494,12 @@ export function test_js_fc_solve_class(qunit: QUnit,
> > my_callback: () => void) { // var _my_mod = Module({});
> >      const _my_mod = [null];
> >      _my_mod[0] = Module()({
> > -        onRuntimeInitialized: my_func(qunit, _my_mod, my_callback),
> > +        onRuntimeInitialized: () => {
> > +            _my_mod[0].then((result) => {
> > +                _my_mod[0] = result;
> > +                return my_func(qunit, _my_mod, my_callback)();
> > +            });
> > +        },
> >      });
> >      return;
> >  }
> >
> > (my code has a little weirdness of using "Module()()" instead of
> > "Module()" -
> > you can ignore that).
> >
> > For more about js promises, see:
> >
> > https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
> >
> > --
> >
> > Shlomi Fish       https://www.shlomifish.org/
> > Perl Elems to Avoid - https://perl-begin.org/tutorials/bad-elements/
> >
> > There was one Napoleon, one George Washington, and one me!
> >     — Big Boy Caprice in
> >        https://en.wikiquote.org/wiki/Dick_Tracy_%281990_film%29
> >
> > Please reply to list if it's a mailing list post - https://shlom.in/reply
> > .
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "emscripten-discuss" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to emscripten-discuss+unsubscr...@googlegroups.com.
> > To view this discussion on the web visit
> > https://groups.google.com/d/msgid/emscripten-discuss/20200821152439.0cb14ca2%40telaviv1.shlomifish.org
> > .
> >  
> 



-- 

Shlomi Fish       https://www.shlomifish.org/
https://www.shlomifish.org/open-source/resources/tech-tips/

Sometimes you don’t need to be familiar with a better alternative to know that
something sucks. Take Microsoft Word for example.
    — Shlomi Fish’s friend.

Please reply to list if it's a mailing list post - https://shlom.in/reply .

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to emscripten-discuss+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/emscripten-discuss/20200822094257.37ce6dca%40telaviv1.shlomifish.org.

Reply via email to