.NET NanoFramework
nanoframework.net
nanoframework.net
There was (semi) recently a "dev day" for Meadow which I found super interesting[1]. The founder of Wilderness Labs has also been doing a bit of streaming on Twitch[2].
They also have some great docs if you're interested in learning about electronics in general[3].
[0] https://community.wildernesslabs.co/t/lay-of-the-land/362
[1] https://www.youtube.com/watch?v=qE8qWhiz8Vw&list=PLoP9Fu9zn7...
[2] https://www.twitch.tv/wildernesslabs
[3] http://developer.wildernesslabs.co/Hardware/Tutorials/Electr...
It's worth noting that Meadow runs full .NET; so you get generics, and all the other modern goodies. Currently we support .NET Framework 4.7.2/.NET Standard 1.6, though we're working on Core3.x support.
Also, we support F# and VB.NET. We even ship templates for both. However, F# 5 broke our F# support. :'( :'(
Hoping to fix the F# support soon.
Their getting started page is a great example of what I experienced. (Linked from their youtube video related to getting started)
https://docs.nanoframework.net/articles/getting-started-guid...
Hoping to fix that soon. I <3 F#.
Also, I've been using .net core on my Macbook and it works great :)
Yeah, it's stock photo. I get it. I guess I would have expected a .net-oriented project may have at least chosen a stock photo with, say, C# code on the screen... :)
So what's the issue with a small bytecode runtime besides a few X performance hit?
I've been using C# for over a decade, but recently switched my focus to Python.
I've been using MicroPython to build wasp-os apps for the PineTime/P8 smartwatch, and I find it to be a great compromise between productivity (REPL, dynamic, expressive syntax) and performance (@native, @viper, C embedding).
It's reasonable to ask if the same is done with NanoFramework.
On the other hand, C#, F# or Rust monomorphise (have reified generics).
That means, that if I have a polymorphic (generic) class `MyClassA<T>`, the compiler (regardless if it is JIT in the runtime as in C#, or AOT as in Rust) monomorphises (reifies) `MyClassA` for each instantiation of `T`. So `MyClassA<MyClassB>` and `MyClassA<MyClassC>` are distinct classes.
For this reason, co-/contra-variance in C# works only for interfaces. Type parameters in classes are invariant. `MyClassA<MyClassB>` and `MyClassA<MyClassC>` are distinct classes, neither sub-/super-class of the other, even if `MyClassB` were a subclass of `MyClassC`.
In C# and Java reflection is used extensively and the generics still exist in C# when reflecting they are gone in Java.
https://en.wikipedia.org/wiki/.NET_Micro_Framework#History
>On 23 January 2017, after numerous attempts to revive .NET Microframework project and bring it to community governance and a period of work "in the dark", a group of embedded systems developers publicly announced .NET nanoFramework as spin-off of .NET Micro Framework.
Check out [Meadow](https://www.wildernesslabs.co/), though. Has both Generics and F# support. :)