> Am 12.01.2022 um 19:06 schrieb Alon Zakai <alonza...@gmail.com>:
> 
> 
> 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 <stheop...@gmail.com> 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 <alonza...@gmail.com>:
>>> 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 <stheop...@gmail.com> 
>>> 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 emscripten-discuss+unsubscr...@googlegroups.com.
>>>> 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.
>>> 
>>> -- 
>>> 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/CAEX4NpSo_RuoctMU1TZObpugbtxS%3DgqrU-41typx2LuDKKMkWw%40mail.gmail.com.
>> 
>> -- 
>> 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/CAN%3D%3Dudd2f0LqvFaCA%2BO7GUa5Yw6rfnnS8CxOzSHQqgcYdvxGUg%40mail.gmail.com.
> 
> -- 
> 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/CAEX4NpS0C0fHQT8hJCwuM%3DYzYuGDQ8tGE32kGjm_rFir00%2BVOQ%40mail.gmail.com.

-- 
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/7AA336F3-7873-4874-BCD5-E75191E9A1DB%40gmail.com.

Reply via email to