Using Rust for Gamedev
Game development has been a hobby of mine for a long time. Prior to mid-2015 when Rust 1.0 was released, I had been doing gamedev in Java with LibGDX. Since this was a hobby, I chose the technologies I enjoyed using, but that isn’t to say there weren’t frustration. The biggest frustration I had with Java, aside from its verbosity, was that I found myself forced to choose between writing idiomatic Java code and writing Java code that got decent performance. For example, the LibGDX API encourages using their object pooling utilities and specialized resizable array implementations with public native arrays as fields. These are not idiomatic Java practices, but they are useful for making a game that runs smoothly. When you need to be stingy about creating objects, I’d say it’s time to find a new language.
At Mozilla, we want WebAssembly to be as fast as it can be.
This started with its design, which gives it great throughput. Then we improved load times with a streaming baseline compiler. With this, we compile code faster than it comes over the network.
So what’s next?
One of our big priorities is making it easy to combine JS and WebAssembly. But function calls between the two languages haven’t always been fast. In fact, they’ve had a reputation for being slow, as I talked about in my first series on WebAssembly.
That’s changing, as you can see.
This means that in the latest version of Firefox Beta, calls between JS and WebAssembly are faster than non-inlined JS to JS function calls. Hooray!
Non-Web Embeddings for Rust Wasm 2019
The Rust Wasm team has made tremendous progress in building robust developer tooling for Rust targeting WebAssembly on the Web in 2018. However, Non-Web Embeddings are also supported by WebAssembly but have not received much attention yet for Rust Wasm tooling. Our wish for Rust Wasm 2019 is to improve the tooling for Non-Web Wasm Embeddings which we believe also has enormous potential.
Read the article: https://github.com/GoogleChromeLabs/webm-wasm
Works in all major browsers (although Safari can’t play webm ).
The wasm module was created by emscripten’ing libvpx, libwebm and libyuv.
Writing WebAssembly By Hand
WebAssembly is a pretty low-level language, as a result, creating complex applications using this language can be challenging and time consuming. So why would anyone want to do this?
I personally find this low-level exploration a lot of fun. Furthermore, writing WebAssembly is actually quite easy, I’d certainly encourage you to give it a go!
Read the article: https://blog.scottlogic.com/2018/04/26/webassembly-by-hand.html
Go WebAssembly My Experiment
I am using Go as my development language for last 2 years and I am always curious to write some frontend using Go. But it was no luck for a while until go 1.11.1 released with experimental WebAssembly port. So, I had my small experiments with it.
I developed two experimental applications: https://medium.com/@rajnikant12345/go-webassembly-my-experiment-6fc21d4ef4e7
Qt Quick on the Browser
Do you want to run your lovely Qt Quick app on the browsers? Before Qt 5.12, the only way is to use the Qt WebGL streaming plugin. It is, however, just a mirror of the UI and suffers from some problems which will be mentioned later. Starting with Qt 5.12, a new module emerges, the Qt for WebAssembly(QtWasm for short). Briefly speaking, it’s a trial to compile the Qt framework to webassembly, a new form of bytecode that can run on the browsers. This post will explan how to write your first QtWasm app in details, and try to provide solutions to some problems you will inevitably encounter.
Read the article: https://medium.com/@jimmychen009/qt-quick-on-the-browser-30d5349c11ec
WebAssembly Is Fast: A Real-World Benchmark of WebAssembly vs. ES6
After many months of development, version 1.0 of WebAssembly (wasm for friends), is here.
Read the article: https://medium.com/@interlogica/webassembly-1-0-786e4c12e578