Since you reopened this thread I’ll answer… first for the non-WebAssembly example:
Yes, recreating (this or anything) from scratch is possible in theory, but I assume reusing Kivy would then be the better option. Without knowing almost anything on it (first now hearing of its KV language), I’ve suggested that (don’t know that anyone has done or tied that). Maybe there are issues reusing it using PyCall, and using pyjulia is better to use Julia code from Kivy/Python?
Kivy is for mobile: Android and iOS; at first I believe only for that but at least also for Windows, OS X and Linux. Supporting Android fully has special issues of its own (and to be cross-platform across mobile, let alone to desktops too). Only JDK languages have it at the moment, and Go.
Go using gomobile build
can also support Android (and iOS) by but any non-JDK language, with or without the help of Go, will at least have some of the same limitations (also Kivy, but it or at least Go should be good enought for most games):
Current limitations are listed below.
- Only a subset of Go types are currently supported.
- Language bindings have a performance overhead.
- There are a few limitations on how the exported APIs should look due to the limitations of the target language.
Right, and that sound very interesting, for web use. Compiling to JavaScript will allow you to have its GC, but while WebAssembly currently doesn’t have GC capability, it may not be a showstopper. You could always distribute one as part of a Julia runtime and it should be able to be smaller than the 60 KB Blazar runtime. I’m just using that as an example for what it possible. As I understand it, it includes a full .NET runtime (“CLR”, not sure if it has JIT; but it must have a GC at least). Julia’s runtime that needs to run in the WebAssemly/browser could be stripped down to just GC. I’m not sure how easy that is or if it’s better to adopt some other GC that already exists. I believe other language target WebAssembly, but I only recall Go, as another language with GC. Rust (and C/C++) also support, and we could reuse all from those three languages, but would still lack GC. One other option is (as with the robotics Julia example) is avoiding the GC. If you can do that then the lack og GC may not be a problem client-side.
Q: Does Blazor compile my entire .NET based app to WebAssembly?
No, a Blazor app consists of normal compiled .NET assemblies that get downloaded and run in a web browser using a WebAssembly based .NET runtime. Only the .NET runtime itself is compiled to WebAssembly. That said
Q: Wouldn’t the app download size be huge if it also includes a .NET runtime?
Not necessarily. .NET runtimes come in all shapes in sizes. Early Blazor prototypes used a compact .NET runtime (including assembly execution, garbage collection, threading) that compiled to a mere 60KB of WebAssembly.
Q: What features will Blazor support?
Blazor will support all of the features of a modern single page app framework:
A component model for building composable UI
Routing
Layouts
Forms and validation
Dependency injection
JavaScript interop
Live reloading in the browser during development
Server-side rendering
Full .NET debugging both in browsers and in the IDE
Rich IntelliSense and tooling
Publishing and app size trimming
[…]
Q: Can I use Blazor without running .NET on the server?
Yes […]
[interesting what they build on, seem all platforms are relevant for this project…]
Building the Repo
Prerequisites:
Run end-to-end tests
Prerequisites: