dotnet / runtimelab

This repo is for experimentation and exploring new ideas that may or may not make it into the main dotnet/runtime repo.
MIT License
1.4k stars 197 forks source link

[NativeAOT-LLVM]: Outstanding tasks tracking issue #1828

Open yowl opened 2 years ago

yowl commented 2 years ago

If someone want to contribute to the NativeAOT-LLVM branch, its not obvious what tasks need doing. This issue is a checklist of tasks that can be picked up by whoever is interested. Hopefully this will encourage engagement by providing a list where the difficulty can be marked. The list is in a vague priority list, top items = higher priority, but that's just my own preference and not official. Feel free to pick anything you like.

charlesroddie commented 2 years ago

Once these tasks are done, what will be the status? Will users be able to compile dotnet coffee for running in browser and interacting via DOM or SkiaSharp or is deployment an additional project?

yowl commented 2 years ago

@charlesroddie For DOM, I hope, and no browser has implemented it yet, so its too early to say for sure, but interface types, and the Canonical ABI should allow c#, together with wit-bindgen to interact with the DOM without Javascript. Using Javascript you can do that now, just as Uno and Blazor do. But this is a compiler not a UI framework, so the various additional problems that frameworks like Uno and Blazor solve, e.g. marshalling strings, are not solved here (but some are solved with interface types and the Canonical ABI).

For Skia, that would be interesting to try now. I did look a while back and SkiaSharp had mono dependencies for it's WebAssembly target, but those may have gone now. There's nothing pending I can think of, or in the todo list above, that would prevent Skia from working now, it's a question of what SkiaSharp's dependencies are.

dotnet publish works now producing standard emscripten boiler plate html pages. You can control that with additional options to emcc via /p:EmccExtraArgs= on the dotnet publish command line.

Edit. I tried this and hit https://github.com/dotnet/runtimelab/issues/1830 so we'll need that implemented. Added it to the list.

yowl commented 2 years ago

Skia example, Didn't need #1830 in the end, that was a red herring

https://github.com/yowl/wskia/tree/master

guylangston commented 2 years ago

I would be interested/motivated to help with Linux Build, where is the best place to start?

yowl commented 2 years ago

I would be interested/motivated to help with Linux Build, where is the best place to start?

First get the prerequisites installed so you can install and build the feature/NativeAOT branch. See https://github.com/dotnet/runtimelab/blob/feature/NativeAOT/docs/workflow/building/coreclr/nativeaot.md

Then you can have a read of https://github.com/dotnet/runtimelab/issues/1797 which was my attempt at it . I'm not sure I was totally on track with what I did so if you look at my branch then bear that in mind.

yowl commented 2 years ago

Also, for general help, things that aren't related to this, you can try asking for help on gitter as some of us hang out there, depending on time zones etc. https://gitter.im/dotnet/corert