Cool! Sounds like I will have to make changes to support a lifecycle around a single instance for my codec instantiation case but arguably that's superior in general. :)
I'll prototype this work soon. -- b On Fri, Dec 13, 2024, 9:56 AM 'Brendan Dahl' via emscripten-discuss < emscripten-discuss@googlegroups.com> wrote: > Update on modularization changes: > > A new experimental setting "-sMODULARIZE=instance" has landed > <https://github.com/emscripten-core/emscripten/pull/22867> in version > 3.1.73. The new output creates a single instance of the Wasm module and > also uses ES module exports for the corresponding exported Wasm and runtime > JS functions. The module also exports a default function for initializing > the module that must be called before any of the named exports can be > called. This style of module is hopefully more similar to what ES module > users expect and should be easier for bundlers to reason about. > > An example of using the module: > > import init, { foo, bar } from "./my_module.mjs" > await init(optionalArguments); > foo(); > bar(); > > Feedback on the new setting is welcome here or please file a github issue. > > On Monday, April 1, 2024 at 4:08:55 PM UTC-7 Brooke Vibber wrote: > >> I don't need internals in global scope, but I _do_ need multiple >> instantiation if possible for the demuxers and codecs in ogv.js. >> >> If that's dropped, I'll have to rewrite some C and JavaScript code for my >> internal APIs to support multiple active data streams in a long-lived >> instance with explicit data structure lifetime management, instead of each >> instance being single-use and garbage collected independently. It wouldn't >> a hard blocker, but it would require some refactoring if there's only one >> mode and it's single-instance. :) >> >> -- b >> >> >> On Mon, Apr 1, 2024 at 12:52 PM 'Sam Clegg' via emscripten-discuss < >> emscripte...@googlegroups.com> wrote: >> >>> A few of us on the core emscripten team have been tossing around ideas >>> about how to improve/modernize the modularization of emscripten-generated >>> code. >>> >>> I've created a google doc >>> <https://docs.google.com/document/d/1ccH3NsRQgEc1HXWI_IFAnMbTM0Vn1lP_EhJmdLRzYvs> >>> with >>> comments open to anyone. Please feel free to comment on this document and >>> raise any concerns you have either there or here on this thread. >>> >>> The first step along the way is to improve encapsulation by bringing >>> back the old `-sMODULARIZE_INSTACE` settings (perhaps with a better name). >>> All this setting really does is wrap the emscripten-generated code in a >>> private function context. I'm hoping we can do this without affecting >>> code size in any significant way. >>> >>> Ideally we would make this new mode the default, or even the only mode. >>> However there will likely be some users who are currently depending on the >>> emscripten internally being available in the global scope. So at least >>> initially this will be optional, and perhaps enabled in `-sSTRICT` mode. >>> >>> It would be very useful to know how many folks currently depend on the >>> internals of the generated code being available in the global scope? Do >>> you use emscripten-generated functions or globals without accessing them >>> via the `Module` object? (Note that if you use --closure=1 you already >>> cannot access these internals due to minification, so you won't be >>> affected by this change). >>> >>> cheers, >>> sam >>> >>> -- >>> 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-disc...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/emscripten-discuss/CAL_va2_FWhBnRgKi_33Fw4nkhqFjV_uJKU4gGdSoBZjKf%3DOTwQ%40mail.gmail.com >>> <https://groups.google.com/d/msgid/emscripten-discuss/CAL_va2_FWhBnRgKi_33Fw4nkhqFjV_uJKU4gGdSoBZjKf%3DOTwQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > 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 visit > https://groups.google.com/d/msgid/emscripten-discuss/dc8c4405-60ae-4c02-9bf4-92c89408f48an%40googlegroups.com > <https://groups.google.com/d/msgid/emscripten-discuss/dc8c4405-60ae-4c02-9bf4-92c89408f48an%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- 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 visit https://groups.google.com/d/msgid/emscripten-discuss/CAFnWYTkVYvd1Ht4%3DKG2YVE%2BC4NHwMqSSQKdW%3DSyfZ4oGV3Ug0A%40mail.gmail.com.