I am not sure how limited it is but there are many situation that we just need a value to pass object from one function to another immediately in the same flow
By the way, which the handle would be returned as EM_ASM_INT or EM_ASM_PTR ? On Friday, 24 March 2023 at 01:47:20 UTC+7 s...@google.com wrote: > On Thu, Mar 23, 2023 at 10:12 AM Thaina Yu <thai...@gmail.com> wrote: > >> I don't actually know which things unity would use to hold the value of >> externref, just guessing it would be IntPtr. But by anything it require >> that emscripten can officially define externref first anyway >> > > The problem is that externref can't live in memory, so it can't live > inside a struct or class or array or any C#/C++/C data type. So it's not > going to be very usable IIUC. We already have `EM_VAL` in emscripten > which is a way to refer to a JS object via an integer handle. I don't > think we can build anything better than EM_VAL any time soon, at least > nothing that can work well with C/C++/C#, but perhaps I'm missing something? > > > > >> On Friday, 24 March 2023 at 00:03:02 UTC+7 s...@google.com wrote: >> >>> On Thu, Mar 23, 2023 at 9:51 AM Thaina Yu <thai...@gmail.com> wrote: >>> >>>> I am actually using emscripten from unity and I mainly use C# code from >>>> unity side. But there are tons of 3rd party library and SDK that written >>>> with assumption that we will only use JavaScript. It then need us to >>>> construct javascript object in javascript and pass javascript object >>>> reference all over the places. For example, the google's firebase SDK that >>>> we need to construct it special object type to work with its complex >>>> services >>>> >>>> It then become very frustrating to wrap everything in an API with >>>> mergeInto library that kept growing for everythings related to js object >>>> >>>> With just the ability to pass externref into C# as IntPtr or int64 and >>>> so C# can pass it to another js API after it was done everything in C# is >>>> just what we really need, everything would come together as a flow of >>>> reference. The chain of bottleneck is that unity rely on emscripten to >>>> fully support externref first then it could start support it in some >>>> future. So the sluggish are stacking up >>>> >>> >>> But `IntPtr` and `int64` are fundamentally not externref, right? Or >>> are you imagining those being indexes into a table of externref perhaps? >>> That would work, but then the tricky part becoming managing that table. >>> This is mind what embind does when it refers to JS object from native code >>> I believe. >>> >>> >>>> On Thursday, 23 March 2023 at 23:34:43 UTC+7 s...@google.com wrote: >>>> >>>>> On Thu, Mar 23, 2023 at 9:20 AM Thaina Yu <thai...@gmail.com> wrote: >>>>> >>>>>> Thank you very much. Are there any public discussion or roadmap to >>>>>> add EM_ASM_REF into emscripten? >>>>>> >>>>> >>>>> You are the first person that I know of to suggest it. >>>>> >>>>> Be aware that using externref directly in C/C++ is very limited, even >>>>> after the recent changes. For example you can't store them in structs or >>>>> class or store them to memory. All you can really do with them is pass >>>>> them around and (maybe) put them in tables. So in practice I'm not sure >>>>> how useful this stuff is yet, but I could be wrong? >>>>> >>>>> >>>>> >>>>> >>>>>> >>>>>> On Thursday, 23 March 2023 at 23:17:52 UTC+7 s...@google.com wrote: >>>>>> >>>>>>> On Thu, Mar 23, 2023 at 6:52 AM Thaina Yu <thai...@gmail.com> wrote: >>>>>>> >>>>>>>> Do we have anyway to write hand-written assembly code along with >>>>>>>> emscripten? And is it possible to return that externref from wasm code >>>>>>>> into >>>>>>>> emscripten world? >>>>>>> >>>>>>> >>>>>>> Here is the example how to use externref in assembly: >>>>>>> https://github.com/emscripten-core/emscripten/blob/main/test/core/test_externref.s >>>>>>> >>>>>>> Until recently there was no way to communicate those references >>>>>>> directly to C++ but it maybe possible now that upstream clan support >>>>>>> has >>>>>>> landed. >>>>>>> >>>>>>> There is no current support for externref in EM_ASM. We could >>>>>>> potentially add EM_ASM_REF which returns a ref to C/C++ but until >>>>>>> recently >>>>>>> that would have been impossible. >>>>>>> >>>>>>> >>>>>>>> I am actually using unity which use emscripten to build webgl. >>>>>>>> Would it possible to use EM_ASM_PTR to write wasm code to return as >>>>>>>> pointer >>>>>>>> (externref ? (an so I might return pointer as IntPtr in C#)) ? >>>>>>>> >>>>>>>> On Friday, 17 March 2023 at 22:35:55 UTC+7 tli...@google.com wrote: >>>>>>>> >>>>>>>>> Yes, but note that the usage in that commit is only in >>>>>>>>> hand-written assembly code, not in C/C++. >>>>>>>>> >>>>>>>>> More recently, support for externref landed upstream in clang: >>>>>>>>> https://github.com/llvm/llvm-project/blob/main/clang/test/CodeGen/WebAssembly/wasm-externref.c. >>>>>>>>> >>>>>>>>> AFAIK we haven't yet experimented with it in Emscripten, but in >>>>>>>>> principle >>>>>>>>> it should work. >>>>>>>>> >>>>>>>>> On Fri, Mar 17, 2023 at 10:23 AM Thaina Yu <thai...@gmail.com> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Is this mean externref already usable? >>>>>>>>>> >>>>>>>>>> https://github.com/emscripten-core/emscripten/pull/15913 >>>>>>>>>> >>>>>>>>>> On Monday, 10 October 2022 at 22:56:34 UTC+7 karl.we...@gmail.com >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Does anyone have news on this topic? >>>>>>>>>>> >>>>>>>>>>> tli...@google.com schrieb am Montag, 25. Januar 2021 um >>>>>>>>>>> 19:51:36 UTC+1: >>>>>>>>>>> >>>>>>>>>>>> I don't think so, but you can keep an eye on commits from >>>>>>>>>>>> "wingo" and "pmatos" on reviews.llvm.org to keep track of the >>>>>>>>>>>> progress. >>>>>>>>>>>> >>>>>>>>>>>> On Mon, Jan 25, 2021 at 12:55 AM ben layet <lay...@gmail.com> >>>>>>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Thanks! >>>>>>>>>>>>> Is there a feature ticket in a publicly visible ticket tracker >>>>>>>>>>>>> that I can keep an eye on? >>>>>>>>>>>>> cheers >>>>>>>>>>>>> ben >>>>>>>>>>>>> >>>>>>>>>>>>> On Saturday, 23 January 2021 at 17:54:25 UTC tli...@google.com >>>>>>>>>>>>> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> Not yet, but there are some folks working on this. Perhaps it >>>>>>>>>>>>>> will be ready to use in a few months? It’s hard to say for sure. >>>>>>>>>>>>>> >>>>>>>>>>>>>> On Sat, Jan 23, 2021 at 03:49 ben layet <lay...@gmail.com> >>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> Does emscripten support externref reference types for >>>>>>>>>>>>>>> holding opaque handles to JS objects in C++? If not, any idea >>>>>>>>>>>>>>> when? >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>> 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/7f6178fa-bd05-4f65-aa7c-9e5a405bf851n%40googlegroups.com >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> <https://groups.google.com/d/msgid/emscripten-discuss/7f6178fa-bd05-4f65-aa7c-9e5a405bf851n%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-disc...@googlegroups.com. >>>>>>>>>>>>> >>>>>>>>>>>> To view this discussion on the web visit >>>>>>>>>>>>> https://groups.google.com/d/msgid/emscripten-discuss/68c9b121-f12f-44fa-a91c-2a8b73d2f456n%40googlegroups.com >>>>>>>>>>>>> >>>>>>>>>>>>> <https://groups.google.com/d/msgid/emscripten-discuss/68c9b121-f12f-44fa-a91c-2a8b73d2f456n%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-disc...@googlegroups.com. >>>>>>>>>> >>>>>>>>> To view this discussion on the web visit >>>>>>>>>> https://groups.google.com/d/msgid/emscripten-discuss/57b1491a-7025-4967-a66e-ebcbf10f5e2bn%40googlegroups.com >>>>>>>>>> >>>>>>>>>> <https://groups.google.com/d/msgid/emscripten-discuss/57b1491a-7025-4967-a66e-ebcbf10f5e2bn%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-disc...@googlegroups.com. >>>>>>>> >>>>>>> To view this discussion on the web visit >>>>>>>> https://groups.google.com/d/msgid/emscripten-discuss/ed80516b-e1ac-4ba1-a535-acd1f632a2f5n%40googlegroups.com >>>>>>>> >>>>>>>> <https://groups.google.com/d/msgid/emscripten-discuss/ed80516b-e1ac-4ba1-a535-acd1f632a2f5n%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-disc...@googlegroups.com. >>>>>> >>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/emscripten-discuss/e4853c85-e981-4fa4-a6d8-f64a7ad5c048n%40googlegroups.com >>>>>> >>>>>> <https://groups.google.com/d/msgid/emscripten-discuss/e4853c85-e981-4fa4-a6d8-f64a7ad5c048n%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-disc...@googlegroups.com. >>>> >>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/emscripten-discuss/1018024e-ab04-46c1-bb22-f73183601976n%40googlegroups.com >>>> >>>> <https://groups.google.com/d/msgid/emscripten-discuss/1018024e-ab04-46c1-bb22-f73183601976n%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-disc...@googlegroups.com. >> > To view this discussion on the web visit >> https://groups.google.com/d/msgid/emscripten-discuss/8cb8c47e-fc87-4429-8dcd-1057c6f090f6n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/emscripten-discuss/8cb8c47e-fc87-4429-8dcd-1057c6f090f6n%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 on the web visit https://groups.google.com/d/msgid/emscripten-discuss/82954f49-c753-4c67-8de7-e5524f1e7f0en%40googlegroups.com.