Our great sponsors
-
qsharp
Azure Quantum Development Kit, including the Q# programming language, resource estimator, and Quantum Katas
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
Portability, minimal size, and speed are all priorities. Building with Rust allowed us to really focus on all of these for both WebAssembly and OS binaries.
For example, if you go to the playground that we publish on every push to main (https://microsoft.github.io/qsharp/), and open the Developer Tools to see the network traffic, you'll see that our WebAssembly module is just 1.5MB (504kb over the wire) - which includes the not just the language (parser, type system, IR, etc.) but also the runtime interpreter and quantum simulator.
Similarly, for the native tools, on my MacBook (i.e. ARM64) the command line compiler ("./target/release/qsc") is 3.9MB, which is entirely standalone with no dependencies.
We do have many features to add, so I'm sure those will grow a bit, but we are focused on keeping things as small, portable, and fast as a general principal.
It was previously written in C# and F#: https://github.com/microsoft/qsharp-compiler
I respect the hustle. Sorry for not mentioning https://wasmer.io.
The tooling around F# is very lacklustre, I wish it had better support from MS.
As for learning a functional language, I recommend this Haskell tutorial[0], and accompanying video series of an experienced haskeller running through it[1]. I've read countless texts and tutorials explaining Haskell and FP to me but it didn't fully click until I saw someone with experience using the language and tooling effectively.
[0]: https://github.com/system-f/fp-course
But C# has the ability to compile to WASM and run in the browser, using the Mono WASM runtime that's part of the .NET core repo now.
This is what underpins Blazor.
https://github.com/dotnet/runtime/tree/main/src/mono/wasm
Example C# app running in a browser:
https://github.com/dotnet/runtime/blob/main/src/mono/sample/...