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.
