That sounds great! - Alon
On Sat, Jan 15, 2022 at 1:03 AM Sebastian Theophil <[email protected]> wrote: > > Am 12.01.2022 um 19:06 schrieb Alon Zakai <[email protected]>: > > > I just have some general thoughts at this point. Curious to hear your > ideas and other people's. > > Maybe a nice starting point would be to make it easier for people to > experiment with typescripten, to get feedback. Could we add minimal > integration on the emscripten side to allow that, just a new option perhaps > (marked experimental), and that uses a module from npm? (Or does this need > more things than can be packaged in npm?) > > > Sounds good to me. More practical experience is certainly needed most at > this point. I could package typescripten for npm. Practically all > TypeScript interface files are on npm as well. Maybe it would be convenient > to have a command line argument to specify which type definitions to pull. > > > A thought I had is whether we could eventually replace embind with > typescripten (or at least the part of embind that supports calls from C++ > to JS). That is, if the core "JS object" class in typescripten had the same > API as embind vals do (for accessing things in a *non*-type-safe way, using > strings). Do you think that could work? If we could replace parts of embind > it would strengthen the case for upstreaming, I think. > > > I could try that out. I think it should work. The base js object already > aggregates emscripten::val anyway. > > I hope to have some time in the coming weeks to work on typescripten and > will hopefully send a PR on GitHub. > > Regards > Sebastian > > > - Alon > > > On Fri, Jan 7, 2022 at 6:01 AM Sebastian Theophil <[email protected]> > wrote: > >> Hi Alon, >> >> thank you very much and it's great to hear that you find this >> interesting. I would be very interested in integrating this with emscripten >> of course. How should we start this process? There are probably a few >> things that still need to be implemented for a good MVP, so to speak. >> >> Regards >> Sebastian >> >> Am Do., 6. Jan. 2022 um 21:59 Uhr schrieb Alon Zakai <[email protected] >> >: >> >>> Hi Sebastian, >>> >>> This is really nice! I watched your talk as well at CppCon ( >>> https://www.youtube.com/watch?v=CLuhogat6aY), very interesting. >>> >>> For a while it's seemed like we need something in this general area, so >>> it's great to see it happen! I think this is a very good design, too (the >>> performance issue with strings is the one concern I have, but as you say in >>> the talk, that can be optimized - I'd use EM_JS for that probably). >>> >>> Did you have ideas about integrating this with upstream Emscripten? I >>> think that might make sense to do, although maybe as part of a larger >>> conversation on our bindings story (atm we have embind and the WebIDL >>> binder, which already have some overlap). >>> >>> - Alon Zakai >>> >>> On Tue, Dec 28, 2021 at 2:21 AM Sebastian Theophil <[email protected]> >>> wrote: >>> >>>> Hi, >>>> >>>> I wanted to plug my own project for some time here on the mailing list >>>> because it also handles JavaScript - C++ interop and now wajic came up so I >>>> thought I pitch in. >>>> >>>> My project https://github.com/think-cell/typescripten produces >>>> type-safe C++ interfaces to JavaScript standard libraries or third-party >>>> libraries. It reads TypeScript interface definition files and transforms >>>> them into C++ shims based on emscripten. >>>> >>>> The resulting C++ code is often a straight-forward port from >>>> TypeScript/JavaScript, e.g., >>>> >>>> JavaScript: >>>> >>>> var elem = document.createElement("p") >>>> elem.innerText = "Hello CppCon 2021" >>>> elem.style.fontSize = "20.0" >>>> document.body.appendChild(elem) >>>> >>>> C++: >>>> >>>> auto elem = js::document()->createElement(js::string("p")); >>>> elem->innerText(js::string("Hello CppCon 2021")); >>>> elem->style()->fontSize(js::string("20vh")); >>>> js::document()->body()->appendChild(elem); >>>> >>>> No macros and the C++ functions return typed JavaScript objects! >>>> Because we use the TypeScript interface definitions, the C++ code is >>>> typechecked. Passing a number to fontSize will create a compiler error. >>>> >>>> The project is not yet meaningfully complete but it bootstraps >>>> successfully, i.e., the compiler understands the interface definition file >>>> for the TypeScript compiler and parser API that it uses itself. TypeScript >>>> generic constraints are not yet supported, for example, but should be. >>>> >>>> Maybe somebody else finds this useful. We have used it internally for a >>>> small web app already that needed to call the tableau.com JavaScript >>>> API. >>>> >>>> Regards >>>> Sebastian >>>> >>>> -- >>>> 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 [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/emscripten-discuss/CAN%3D%3DuddahRRPV02%3DT9TaQd2%3D3YzxqHDBAqg8%3DsWJL-Taqh4-SQ%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/emscripten-discuss/CAN%3D%3DuddahRRPV02%3DT9TaQd2%3D3YzxqHDBAqg8%3DsWJL-Taqh4-SQ%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 [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpSo_RuoctMU1TZObpugbtxS%3DgqrU-41typx2LuDKKMkWw%40mail.gmail.com >>> <https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpSo_RuoctMU1TZObpugbtxS%3DgqrU-41typx2LuDKKMkWw%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 [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/emscripten-discuss/CAN%3D%3Dudd2f0LqvFaCA%2BO7GUa5Yw6rfnnS8CxOzSHQqgcYdvxGUg%40mail.gmail.com >> <https://groups.google.com/d/msgid/emscripten-discuss/CAN%3D%3Dudd2f0LqvFaCA%2BO7GUa5Yw6rfnnS8CxOzSHQqgcYdvxGUg%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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpS0C0fHQT8hJCwuM%3DYzYuGDQ8tGE32kGjm_rFir00%2BVOQ%40mail.gmail.com > <https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpS0C0fHQT8hJCwuM%3DYzYuGDQ8tGE32kGjm_rFir00%2BVOQ%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 [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/emscripten-discuss/7AA336F3-7873-4874-BCD5-E75191E9A1DB%40gmail.com > <https://groups.google.com/d/msgid/emscripten-discuss/7AA336F3-7873-4874-BCD5-E75191E9A1DB%40gmail.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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpSqDeUT9ses33x-Mszo4Px2LnzO3vyWk--CtSj9%2BG1Pzg%40mail.gmail.com.
