├── .gitignore ├── .vscode └── settings.json ├── 404.html ├── CNAME ├── CODE_OF_CONDUCT.md ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── README.md ├── _config.yml ├── _data └── authors.yml ├── _includes ├── foot.html ├── footer.html ├── head.html ├── header.html ├── social_share.html └── subscribe.html ├── _layouts ├── default.html └── post.html ├── _posts ├── 2017-10-13-issue-1.md ├── 2017-10-20-issue-2.md ├── 2017-10-27-issue-3.md ├── 2017-11-10-issue-5.md ├── 2017-11-17-issue-6.md ├── 2017-11-24-issue-7.md ├── 2017-11-3-issue-4.md ├── 2017-12-01-issue-8.md ├── 2017-12-08-issue-9.md ├── 2017-12-15-issue-10.md ├── 2017-12-22-issue-11.md ├── 2017-12-29-issue-12.md ├── 2018-01-05-issue-13.md ├── 2018-01-12-issue-14.md ├── 2018-01-19-issue-15.md ├── 2018-01-26-issue-16.md ├── 2018-02-02-issue-17.md ├── 2018-02-09-issue-18.md ├── 2018-02-16-issue-19.md ├── 2018-02-23-issue-20.md ├── 2018-03-02-issue-21.md ├── 2018-03-09-issue-22.md ├── 2018-03-16-issue-23.md ├── 2018-03-23-issue-24.md ├── 2018-03-30-issue-25.md ├── 2018-04-06-issue-26.md ├── 2018-04-13-issue-27.md ├── 2018-04-20-issue-28.md ├── 2018-04-27-issue-29.md ├── 2018-05-04-issue-30.md ├── 2018-05-11-issue-31.md ├── 2018-05-18-issue-32.md ├── 2018-05-25-issue-33.md ├── 2018-06-01-issue-34.md ├── 2018-06-08-issue-35.md ├── 2018-06-15-issue-36.md ├── 2018-06-22-issue-37.md ├── 2018-06-29-issue-38.md ├── 2018-07-06-issue-39.md ├── 2018-07-13-issue-40.md ├── 2018-07-20-issue-41.md ├── 2018-07-26-issue-42.md ├── 2018-08-10-issue-43.md ├── 2018-08-17-issue-44.md ├── 2018-08-24-issue-45.md ├── 2018-09-02-issue-46.md ├── 2018-09-07-issue-47.md ├── 2018-09-14-issue-48.md ├── 2018-09-21-issue-49.md ├── 2018-09-28-issue-50.md ├── 2018-10-05-issue-51.md ├── 2018-10-11-issue-52.md ├── 2018-10-19-issue-53.md ├── 2018-10-26-issue-54.md ├── 2018-11-02-issue-55.md ├── 2018-11-09-issue-56.md ├── 2018-11-16-issue-57.md ├── 2018-11-23-issue-58.md ├── 2018-11-30-issue-59.md ├── 2018-12-07-issue-60.md ├── 2018-12-14-issue-61.md ├── 2018-12-23-issue-62.md ├── 2019-01-04-issue-63.md ├── 2019-01-11-issue-64.md ├── 2019-01-18-issue-65.md ├── 2019-01-25-issue-66.md ├── 2019-02-08-issue-67.md ├── 2019-02-15-issue-68.md ├── 2019-02-22-issue-69.md ├── 2019-02-29-issue-70.md ├── 2019-03-08-issue-71.md ├── 2019-03-15-issue-72.md ├── 2019-03-22-issue-73.md ├── 2019-03-29-issue-74.md ├── 2019-04-07-issue-75.md ├── 2019-04-15-issue-76.md ├── 2019-04-19-issue-77.md ├── 2019-04-26-issue-78.md ├── 2019-05-03-issue-79.md ├── 2019-05-10-issue-80.md ├── 2019-05-18-issue-81.md ├── 2019-05-24-issue-82.md ├── 2019-05-31-issue-83.md ├── 2019-06-07-issue-84.md ├── 2019-06-21-issue-85.md ├── 2019-06-28-issue-86.md ├── 2019-07-05-issue-87.md ├── 2019-07-12-issue-88.md ├── 2019-07-19-issue-89.md ├── 2019-07-26-issue-90.md ├── 2019-08-16-issue-91.md ├── 2019-08-23-issue-92.md ├── 2019-08-30-issue-93.md ├── 2019-09-06-issue-94.md ├── 2019-09-20-issue-95.md ├── 2019-09-27-issue-96.md ├── 2019-10-04-issue-97.md ├── 2019-10-18-issue-98.md ├── 2019-11-01-issue-99.md ├── 2019-11-11-issue-100.md ├── 2019-11-22-issue-101.md ├── 2019-11-29-issue-102.md ├── 2019-12-06-issue-103.md ├── 2019-12-13-issue-104.md ├── 2019-12-23-issue-105.md ├── 2020-01-03-issue-106.md ├── 2020-01-10-issue-107.md ├── 2020-01-17-issue-108.md ├── 2020-01-24-issue-109.md ├── 2020-02-06-issue-110.md ├── 2020-02-17-issue-111.md ├── 2020-02-27-issue-112.md ├── 2020-03-06-issue-113.md ├── 2020-03-20-issue-114.md ├── 2020-04-17-issue-115.md ├── 2020-04-24-issue-116.md ├── 2020-05-07-issue-117.md ├── 2020-05-17-issue-118.md ├── 2020-05-26-issue-119.md ├── 2020-06-05-issue-120.md ├── 2020-06-20-issue-121.md ├── 2020-06-30-issue-122.md ├── 2020-07-03-issue-123.md ├── 2020-07-17-issue-124.md ├── 2020-08-03-issue-125.md ├── 2020-08-16-issue-126.md ├── 2020-08-25-issue-127.md ├── 2020-09-01-issue-128.md ├── 2020-09-10-issue-129.md ├── 2020-09-17-issue-130.md ├── 2020-09-24-issue-131.md ├── 2020-10-02-issue-132.md ├── 2020-10-09-issue-133.md ├── 2020-10-16-issue-134.md ├── 2020-10-23-issue-135.md ├── 2020-10-30-issue-136.md ├── 2020-11-13-issue-137.md ├── 2020-11-20-issue-138.md ├── 2020-12-04-issue-139.md ├── 2020-12-18-issue-140.md ├── 2021-01-08-issue-141.md ├── 2021-01-22-issue-142.md ├── 2021-02-12-issue-143.md ├── 2021-02-26-issue-144.md ├── 2021-03-12-issue-145.md ├── 2021-03-26-issue-146.md ├── 2021-04-09-issue-147.md ├── 2021-04-30-issue-148.md ├── 2021-05-14-issue-149.md ├── 2021-05-28-issue-150.md ├── 2021-06-11-issue-151.md ├── 2021-07-02-issue-152.md ├── 2021-07-16-issue-153.md ├── 2021-08-06-issue-154.md ├── 2021-08-20-issue-155.md ├── 2021-09-03-issue-156.md ├── 2021-09-17-issue-157.md ├── 2021-10-08-issue-158.md ├── 2021-10-29-issue-159.md ├── 2021-11-19-issue-160.md ├── 2021-12-10-issue-161.md ├── 2022-01-07-issue-162.md ├── 2022-01-21-issue-163.md ├── 2022-02-04-issue-164.md ├── 2022-02-18-issue-165.md ├── 2022-03-04-issue-166.md ├── 2022-03-18-issue-167.md ├── 2022-04-01-issue-168.md ├── 2022-04-15-issue-169.md ├── 2022-04-29-issue-170.md ├── 2022-05-13-issue-171.md ├── 2022-05-27-issue-172.md ├── 2022-06-10-issue-173.md ├── 2022-06-24-issue-174.md ├── 2022-07-15-issue-175.md ├── 2022-08-12-issue-176.md ├── 2022-08-26-issue-177.md ├── 2022-09-09-issue-178.md ├── 2022-09-23-issue-179.md ├── 2022-10-07-issue-180.md ├── 2022-10-28-issue-181.md ├── 2022-11-11-issue-182.md ├── 2022-12-02-issue-183.md ├── 2023-01-06-issue-184.md ├── 2023-01-27-issue-185.md ├── 2023-02-17-issue-186.md ├── 2023-03-03-issue-187.md ├── 2023-03-24-issue-188.md ├── 2023-04-14-issue-189.md ├── 2023-05-05-issue-190.md ├── 2023-05-26-issue-191.md ├── 2023-06-09-issue-192.md ├── 2023-07-07-issue-193.md ├── 2023-07-28-issue-194.md ├── 2023-09-01-issue-195.md ├── 2023-09-29-issue-196.md ├── 2023-10-13-issue-197.md └── 2023-11-10-issue-198.md ├── assets ├── state-of-webassembly-2021.csv ├── state-of-webassembly-2022.csv └── state-of-webassembly-2023.csv ├── css ├── style.css └── syntax.css ├── favicon.ico ├── feed.json ├── feed.xml ├── img ├── 131-1.png ├── 132-1.jpg ├── 133-1.png ├── 134-1.png ├── 135-1.png ├── 136-1.png ├── 137-1.gif ├── 138-1.jpg ├── 139-1.png ├── 140-1.png ├── 141-1.png ├── 142-1.png ├── 144-1.png ├── 145-1.png ├── 146-1.png ├── 147-1.png ├── 148-1.gif ├── 149-1.png ├── 150-1.jpeg ├── 151-1.png ├── 152-1.png ├── 153-1.png ├── 154-1.png ├── 156-1.png ├── 157-1.png ├── 158-1.png ├── 159.png ├── 160-1.png ├── 162-1.png ├── 163-1.png ├── 164.png ├── 165.png ├── 166.png ├── 167.jpeg ├── 168.jpeg ├── 169.png ├── 170.png ├── 171.jpeg ├── 172.png ├── 173.png ├── 174.png ├── 175.png ├── 177.png ├── 179.png ├── 180.png ├── 181.jpeg ├── 182.png ├── 183.png ├── 185.png ├── 187.png ├── 188.png ├── 189.png ├── 190.png ├── 191.png ├── 192.png ├── 194.png ├── 196.png ├── 198.png └── logo.png ├── index.html └── subscribe.html /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | _site/ 3 | .jekyll-metadata 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cSpell.words": [ 3 | "WASI" 4 | ] 5 | } -------------------------------------------------------------------------------- /404.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | title: Page not found 4 | permalink: /404.html 5 | --- 6 | 7 |
MOZILLA.ORG
12 |
13 | When you see new blog post from Lin Clark appear, you know you're in for a treat! - In this post Lin discusses how the design of WebAssembly allows compilation to start before the entire module is downloaded. Mozilla now compiles WebAssemby across multiple threads in parallel, allowing it to compile faster than the network can deliver the code!
14 |
15 |
16 | ### [Oxidizing Source Maps with Rust and WebAssembly](https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with-rust-and-webassembly/)
17 |
18 | MOZILLA.ORG
19 |
20 | This is another great (and epic) post from Mozilla, here Nick and Tom describe the work they've been doing to take the source-map JavaScript library and migrate it to Rust. This allows them to compile it to WebAssembly resulting in a x5 performance boost. This highly detailed blog post shares their findings.
21 |
22 |
23 | ### [Mono and WebAssembly - Updates on Static Compilation](http://www.mono-project.com/news/2018/01/16/mono-static-webassembly-compilation/)
24 |
25 | MONO-PROJECT.COM
26 |
27 | The Mono team have been exploring two different approaching to bringing C# to the web, the first is a WebAssembly interpreter that processes the .NET Intermediate Language within the browser. The second, more efficient, approach is static compilation of C# into WebAssembly. This blog post gives an update on how this work is progressing.
28 |
29 |
30 | ### And Finally ...
31 |
32 | The Meltdown / Spectre fixes that broke WebAssembly on iOS [are fixed and will be with us soon](https://github.com/kripken/emscripten/issues/6042#issuecomment-356412040)!
33 |
--------------------------------------------------------------------------------
/_posts/2018-01-26-issue-16.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #16'
4 | author: ceberhardt
5 | ---
6 |
7 | ## Latest News
8 |
9 | ### [WebAssembly and Rust: Performance Analysis](https://www.polaris64.net/blog/programming/2018/webassembly-wasm-rust-webgl-mandelbrot-performance-analysis)
10 |
11 | POLARIS64.NET
12 |
13 | This blog post compares a mandelbrot algorithm implemented in JavaScript, versus a WebAssembly equivalent written in Rust. As previous results have shown, the JavaScript implementation is really quite fast! [As we saw last week](https://hacks.mozilla.org/2018/01/making-webassembly-even-faster-firefoxs-new-streaming-and-tiering-compiler/), WebAssembly's performance sweet spot is significantly faster parse and load times, not runtime performance.
14 |
15 | ### [Astro - a new language that targets WebAssembly](https://github.com/appcypher/astro)
16 |
17 | GITHUB.COM
18 |
19 | It is taking a while for garbage collected languages to provide WebAssembly support, which is leaving room for some creativity! Astro is a new multi-paradigm language designed specifically for WebAssembly.
20 |
21 | ### Bundler wars, Parcel vs. Webpack
22 |
23 | MEDIUM.COM
24 |
25 | This week has seen significant releases from a couple of web bundlers, first Parcel, a recent newcomer, [released v1.5 with WebAssembly support](https://medium.com/@devongovett/parcel-v1-5-0-released-source-maps-webassembly-rust-and-more-3a6385e43b95). Parcel has a zero-config design, which means you can just write Rust code, and import it into JavaScript and Parcel will do the rest!
26 |
27 | Hot on its heels, [Webpack 4.0 beta was released](https://medium.com/webpack/webpack-4-beta-try-it-today-6b1d27d7d7e2), providing WebAssembly support for C++, Rust and various other languages using their 'loader' pattern.
28 |
29 | ### And Finally ...
30 |
31 | WebAssembly is spreading ... this pull request looks at [replacing the C++ code in node-sass with WebAssembly](https://github.com/sass/node-sass/pull/2220). Soon everyone will be using WebAssembly, without even knowing it!
32 |
--------------------------------------------------------------------------------
/_posts/2018-02-02-issue-17.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #17'
4 | author: ceberhardt
5 | ---
6 |
7 | ## Latest News
8 |
9 | ### [Shrinking WebAssembly and JavaScript Code Sizes in Emscripten](https://hacks.mozilla.org/2018/01/shrinking-webassembly-and-javascript-code-sizes-in-emscripten/)
10 |
11 | MOZILLA.ORG
12 |
13 | Emscripten is the 'original' tool for compiling to WebAssembly. It is built on the LLVM compiler toolchain, with its own Fastcomp backend that generates asm.js, and produced many of the early game-engine demos. While Emscripten certainly paved the way for WebAssembly, one of the common complaints has been the size of the code it generates. Thankfully that has changed, this post describes how a simple 'add' example has slimmed down from 10,837 to 42 bytes!
14 |
15 | ### [Apple broke WebAssembly - and are leaving it broken!](https://www.scirra.com/blog/218/apple-broke-webassembly-and-are-leaving-it-broken)
16 |
17 | SCIRRA.COM
18 |
19 | As a result of the fallout from Spectre / Meltdown browser vendors very quickly pulled a few browser features, SharedArrayBuffer for example. One unintended consequence of this was that WebAssembly stopped working for iOS devices. Apple are very much aware of this issue, and [we have heard news that it has been fixed](https://github.com/kripken/emscripten/issues/6042#issuecomment-356412040), however, it is still broken in the latest release.
20 |
21 | ### [Video - A Hackers Guide to WebAssembly](https://www.youtube.com/watch?v=5GnhcqBwqck)
22 |
23 | YOUTUBE.COM
24 |
25 | The number of meetup and conference talks on WebAssembly is starting to increase as news of this technology spreads. This is a particularly good introduction.
26 |
27 | ### And Finally ...
28 |
29 | What will WebAssembly be used for now, and in the future? I [asked that very question on Twitter and received many great responses](https://twitter.com/WasmWeekly/status/959030299786129411).
30 |
--------------------------------------------------------------------------------
/_posts/2018-02-09-issue-18.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #18'
4 | author: ceberhardt
5 | ---
6 |
7 | ## Latest News
8 |
9 | ### [WebAssembly Studio](https://webassembly.studio/)
10 |
11 | WEBASSEMBLY.STUDIO
12 |
13 | Regardless of which language you want to use, the WebAssembly tooling can be a bit of a pain to install. If you just want to have a quick play, this online playground is a great place to start. It currently supports C and Rust, but I'm sure other languages will appear in future.
14 |
15 | ### [A new experiment: Browser-based web apps with .NET and Blazor](https://blogs.msdn.microsoft.com/webdev/2018/02/06/blazor-experimental-project/)
16 |
17 | MICROSOFT.COM
18 |
19 | WebAssembly support for C# started off as an open-source project called Blazor a number of months ago. C# is one of the more challenging languages to compile to WebAssembly due to the need for a garbage collector (which WebAssembly currently lacks). This blog post announces that Blazor has become an official ASP.NET project, with this backing it is likely to move a lot more quickly towards its goals.
20 |
21 | For a detailed look at how Blazor works, I'd suggest [this post from Steve Sanderson](http://blog.stevensanderson.com/2018/02/06/blazor-intro/). They are targeting two runtime models, Ahead-of-time (AOT) compilation and an interpreted mode. Fascinating stuff!
22 |
23 | ### [Perspective by J.P. Morgan](https://jpmorganchase.github.io/perspective/)
24 |
25 | GITHUB.IO
26 |
27 | Perspective is an open-source project from the investment bank JPM (which is a little unusual for starters!). The library creates real-time pivot visualisations from streaming data, using WebAssembly for the number-crunching. Lots of [interesting discussion over on Hacker News](https://news.ycombinator.com/item?id=16317124).
28 |
29 | ### And Finally ...
30 |
31 | I'll leave you with a quote from Steven Sanderson:
32 |
33 | *Whether it pleases you or not, web development is going to change over the next few years. WebAssembly will allow web developers to choose from a much wider range of languages and platforms than ever before. This is a good thing - our world is finally growing up!*
34 |
--------------------------------------------------------------------------------
/_posts/2018-02-16-issue-19.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #19'
4 | author: ceberhardt
5 | ---
6 |
7 | ## Latest News
8 |
9 | ### [A Wee Allocator for WebAssembly](http://fitzgeraldnick.com/2018/02/09/wee-alloc.html)
10 |
11 | FITZGERALDNICK.COM
12 |
13 | Rust doesn't require a Garbage Collector, making it a great language for the current Web Assembly MVP. However, it still needs a way to allocate / deallocate memory. There is currently a lot of focus on 'slimming down' Rust WASM modules, and this post takes it to another level, it describes in detail the process of creating a very lightweight memory allocator specifically for WebAssembly.
14 |
15 | ### [Emulation in the Browser adds WebAssembly](http://blog.archive.org/2018/02/13/emulation-in-the-browser-adds-webassembly/)
16 |
17 | ARCHIVE.ORG
18 |
19 | The Internet Archive has a goal to archive as many old computer games and ROMs as possible, using in-browser emulation to ensure that they are viewable for many years to come. This post announces their plan to use WebAssembly for a better emulation experience.
20 |
21 | ### [WebAssembly - it's Official!](https://www.w3.org/blog/news/archives/6838)
22 |
23 | W3.ORG
24 |
25 | The W3, who govern the various internet specifications, have published the first WebAssembly Working Drafts. We're on our way to becoming official!
26 |
27 | ### And Finally ...
28 |
29 | WebAssembly, Flash an a [cheeky Queen reference](https://twitter.com/tamarcurry/status/962771843961638912)!
30 |
--------------------------------------------------------------------------------
/_posts/2018-02-23-issue-20.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #20'
4 | author: ceberhardt
5 | ---
6 |
7 | ## Latest News
8 |
9 | ### [Current state of compiling TypeScript to WebAssembly](https://wanago.io/2018/02/19/current-state-compiling-typescript-webassembly/)
10 |
11 | WANAGO.IO
12 |
13 | WebAssembly is a compilation target that has a great many benefits - smaller bundles, faster parse / load times, faster execution. These benefits are equally desirable to JavaScript developers as they are to those using C++, Rust, etc ...
14 |
15 | Wouldn't it be great if you could compile JavaScript to WebAssembly?
16 |
17 | The most likely route to achieving this at the moment is via TypeScript, and this post gives a good overview of the current options.
18 |
19 | ### [Maybe you don't need Rust and WASM to speed up your JS](https://mrale.ph/blog/2018/02/03/maybe-you-dont-need-rust-to-speed-up-your-js.html)
20 |
21 | MRALE.PH
22 |
23 | A few week back the Mozilla Hacks blog published an article about moving part of their source-maps library to Rust, giving a x6 performance increase.
24 |
25 | This blog post argues that significant performance increases could have been achieved simply by optimising the existing JavaScript - and goes into a lot of detail. A great read.
26 |
27 | ### [.NET Rocks talks WebAssembly](https://www.dotnetrocks.com/default.aspx?ShowNum=1517)
28 |
29 | DOTNETROCKS.COM
30 |
31 | With the excitement around Blazor, which has become an official ASP.NE project, this popular podcast talks to Steve Sanderson and Daniel Roth to find out more about the project.
32 |
33 | ### And Finally ...
34 |
35 | Anyone fancy some ['official' stickers](https://twitter.com/_cibo_/status/966736901699964928)?
36 |
--------------------------------------------------------------------------------
/_posts/2018-03-02-issue-21.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #21'
4 | author: ceberhardt
5 | ---
6 |
7 | ## Latest News
8 |
9 | ### [Optimizing WebAssembly Startup Time](https://pspdfkit.com/blog/2018/optimize-webassembly-startup-performance/)
10 |
11 | PSPDFKIT.COM
12 |
13 | The PSPDFKit team were early adopters of WebAssembly, using it to create a serverless version of their PDF viewer last year. In this post the team share some tips and tricks on improving WebAssembly startup team - some great advice here!
14 |
15 | ### [Speed Without Wizardry](http://fitzgeraldnick.com/2018/02/26/speed-without-wizardry.html)
16 |
17 | FITZGERALDNICK.COM
18 |
19 | The latest in the source maps optimisation saga! A few weeks back the Mozilla Hacks blog posted and article that detailed how they had [significantly improved source map performance using WebAssembly](https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with-rust-and-webassembly/). Shortly after, Vyacheslav Egorov, published an article that showed how [more performance could be squeezed out of JavaScript](https://mrale.ph/blog/2018/02/03/maybe-you-dont-need-rust-to-speed-up-your-js.html). This post provides further commentary on (and praise for) Vyacheslav's changes.
20 |
21 | ### [WebAssembly architecture for Go](https://docs.google.com/document/d/131vjr4DH6JFnb-blm_uRdaC0_Nv3OUwjEY5qVCxCup4/edit#heading=h.mjo1bish3xni)
22 |
23 | GOOGLE.COM
24 |
25 | A brief document that outlines the design decisions that went into the new WebAssembly architecture for Go - which is targeted for their 1.11 release.
26 |
27 | ### And Finally ...
28 |
29 | crates.io, the site used to distribute Rust packages, has [added a WebAssembly category](https://github.com/rust-lang/crates.io/pull/1269#issuecomment-369638823).
30 |
--------------------------------------------------------------------------------
/_posts/2018-03-09-issue-22.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #22'
4 | author: ceberhardt
5 | ---
6 |
7 | ## Latest News
8 |
9 | ### [GOTO 2017: WebAssembly What? And What Next?](https://www.youtube.com/watch?v=R9wn99Xheq4)
10 |
11 | YOUTUBE.COM
12 |
13 | In this fantastic talk from Google's GOTO conference Ben Tizer gives a great introduction to the practical size of WebAssembly, followed by Andreas Rossberg, who gives us some insight into the specification and how it was formed.
14 |
15 | In the final part of the talk Andreas takes a look at upcoming WebAssembly features, giving a quick insight into what features like tail-call, multi-return, GC and host bindings might bring, and when. Here's a [direct link to Andreas' part of the talk](https://youtu.be/R9wn99Xheq4?t=34m34s).
16 |
17 | This is a 'must watch' video!
18 |
19 | ### [Creating a WebAssembly-powered Library](https://hackernoon.com/creating-webassembly-powered-library-for-modern-web-846da334f8fc)
20 |
21 | HACKERNOON.COM
22 |
23 | WebAssembly is a great tool for bringing existing C / C++ libraries to the web. In this post, Kagami does a great job of describing how to create a library for recording voice messages using the LAME encoder.
24 |
25 | ### [Emscripting a C library to Wasm](https://developers.google.com/web/updates/2018/03/emscripting-a-c-library)
26 |
27 | GOOGLE.COM
28 |
29 | Another article on the same theme, this one focusses on using Emscripten to compile the WepP image decoder into WebAssemby.
30 |
31 | ### [A brain**ck to WebAssembly compiler](https://github.com/verdie-g/brainfuck2wasm)
32 |
33 | GITHUB.COM
34 |
35 | Brain**ck is an esoteric programming language with jus a small handful of commands, here is a quick example ... `[->+<]`
36 |
37 | This project compiles brain**ck to wasm, giving an [online playground](https://verdie-g.github.io/brainfuck2wasm/).
38 |
39 | ### And Finally ...
40 |
41 | There's an upcoming online discussion on wasm on the 29th of March, well worth signing up for.
42 |
--------------------------------------------------------------------------------
/_posts/2018-03-16-issue-23.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #23'
4 | author: ceberhardt
5 | ---
6 |
7 | ## Latest News
8 |
9 | ### [Making WebAssembly better for Rust & for all languages](https://hacks.mozilla.org/2018/03/making-webassembly-better-for-rust-for-all-languages/)
10 |
11 | MOZILLA.ORG
12 |
13 | This has been a big news week for WebAssembly, and this post by Lin Clark is probably the biggest! Mozilla are pushing to make Rust a first-class language for the web. This post looks at how they are tackling some of the main areas of friction; bundling, npm distribution and JS bindings. The post also announces [wasm-bindgen](https://github.com/alexcrichton/wasm-bindgen), a language-independent tool for generating bindings that make it easier to pass structured data between a wasm module and the host environment.
14 |
15 | ### [Ooui.Wasm - .NET in the browser](http://praeclarum.org/post/171899388348/oouiwasm-net-in-the-browser)
16 |
17 | PRAECIARUM.ORG
18 |
19 | You'll no doubt have heard of the Blazor project, which combines the Mono team's efforts to run C# on the web with Razor templates, creating a SPA framework? The Ooui framework is also making significant progress towards bringing .NET to the browser, using the same Mono wasm runtime, combined with Xaml.
20 |
21 | ### [JWebAssembly](https://github.com/jcapsule/jwebassembly)
22 |
23 | GITHUB.ORG/small>
24 |
25 | Want to run WebAssembly within a JVM? Here you go ... a wasm runtime written in Java!
26 |
27 | ### And Finally ...
28 |
29 | File under 'misinformation' ... here's a much-shared, yet ill-informed blog post that warns of how WebAssembly [opens up the browser to C/C++ exploits](https://react-etc.net/entry/web-security-exploits-c-to-javascript-webassembly).
30 |
--------------------------------------------------------------------------------
/_posts/2018-03-23-issue-24.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #24'
4 | author: ceberhardt
5 | ---
6 |
7 | ## Latest News
8 |
9 | ### [Get started building .NET web apps that run in the browser with Blazor](https://blogs.msdn.microsoft.com/webdev/2018/03/22/get-started-building-net-web-apps-in-the-browser-with-blazor/)
10 |
11 | MICROSOFT.COM
12 |
13 | It was only a few weeks ago that Blazor, an open source project by Steve Sanderson, was adopted by Microsoft. This blog post announces an impressive looking 'preview' release. Definitely of interest for C# .NET devs wanting to target the web. For a good background on how Blazor works I'd recommend [Steve's earlier blog post](https://blogs.msdn.microsoft.com/webdev/2018/03/22/get-started-building-net-web-apps-in-the-browser-with-blazor/).
14 |
15 | Of course, the hype-machine is in full swing, with the Visual Studio magazine declaring ['Death to JavaScript'](https://visualstudiomagazine.com/articles/2018/03/23/blazor-alpha.aspx). The [comments on reddit](https://www.reddit.com/r/programming/comments/86efaa/first_official_preview_of_aspnet_blazor_released/) are also a fun read if you've got a few hours to spare. Either way, there are a whole lot of people who bet on Silverlight, who are a little happier now!
16 |
17 | ### [Quick Sort](https://www.npmjs.com/package/quicksort.wasm)
18 |
19 | NPMJS.ORG
20 |
21 | This is the first 'pure wasm' module I've seen on npm. It's a simple quick-sort algorithm, written directly in WebAssembly wat text format. I'm sure we'll see more of these in future!
22 |
23 | ### [A Rust Framework for making Client Web Apps](https://github.com/DenisKolodin/yew)
24 |
25 | GITHUB.ORG
26 |
27 | Yew is a modern Rust framework inspired by Elm and ReactJS, bringing Rust another step closer to being a first-class language for the web.
28 |
29 | ### And Finally ...
30 |
31 | The Ember team announced that [they are replacing their core VM with WebAssembly](https://twitter.com/WasmWeekly/status/976033248806686722), written in Rust.
32 |
--------------------------------------------------------------------------------
/_posts/2018-03-30-issue-25.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #25'
4 | author: ceberhardt
5 | ---
6 |
7 | ## Latest News
8 |
9 | ### [ES Module Integration Proposal](https://github.com/WebAssembly/esm-integration)
10 |
11 | GITHUB.ORG
12 |
13 | The current version of WebAssembly is very much an MVP (Minimum Viable Product), meaning that its feature set is quite minimal. There are numerous proposals currently in flight that will bring garbage collection, host bindings, SIMD and many other new features.
14 |
15 | With WebPack, Rollup and other bundlers racing ahead and integration WebAssembly there is a pressing need to get some standard in place. This proposal, which has an [excellent explainer video](https://www.youtube.com/watch?v=qR_b5gajwug&feature=youtu.be), seeks to put in place a standard before the community races too far ahead!
16 |
17 | ### [The current state of Kotlin and WebAssembly](https://superkotlin.com/kotlin-and-webassembly/)
18 |
19 | SUPERKOTLIN.COM
20 |
21 | Another area where WebAssembly is rapidly evolving is language support. This post looks at the current state of Kotlin support. It uses the LLVM compiler, so wasm compilation is certainly possible, however, there are quite a few loose ends that need tidying up. This post explores them.
22 |
23 | ### [C#, WebAssembly and Zork](http://www.dshifflet.com/blog/20180325.html)
24 |
25 | DSHIFFLET.COM
26 |
27 | An interesting blog post where the author shares his experience of porting a text-based adventure game to the web. Rather than use Blazor, they have used Ooui.
28 |
29 | ### And Finally ...
30 |
31 | With Blazor, this [opens the door for Microsoft releasing Silverlight 6](https://twitter.com/WasmWeekly/status/978324220181610497).
32 |
--------------------------------------------------------------------------------
/_posts/2018-04-06-issue-26.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #26'
4 | author: ceberhardt
5 | ---
6 |
7 | ## Latest News
8 |
9 | ### [JavaScript to Rust and Back Again: A wasm-bindgen Tale](https://hacks.mozilla.org/2018/04/javascript-to-rust-and-back-again-a-wasm-bindgen-tale/)
10 |
11 | MOZILLA.ORG
12 |
13 | The interface between WebAssembly and JavaScript is currently a massive pain point. Your only options for passing data between the two are directly four numeric types, and indirectly via linear memory (i.e. an array). This restriction effects the JS / wasm interface irrespective of which language you are using (C++, Rust, AssemblyScript).
14 |
15 | This blog post introduces wasm-bindgen, a new tool from the Mozilla team, that generates code in both Rust and wasm that creates richer bindings, allowing you to seamlessly pass strings, structs, and even DOM objects. It is a kind of 'future polyfill' for [host bindings](https://github.com/WebAssembly/host-bindings). The tool is also language agnostic by design, so expect to see the bindings improve in other languages too.
16 |
17 | ### [WebAssembly powered Matrix and Vector library](https://github.com/maierfelix/glmw)
18 |
19 | GITHUB.COM
20 |
21 | The number of WebAssembly powered libraries is slowly rising, this one is a port of gl-matrix, which claims to run twice as fast.
22 |
23 | ### [Video - The WebAssembly Revolution Has Begun](https://www.infoq.com/presentations/webassembly-wasm-intro)
24 |
25 | INFOQ.COM
26 |
27 | Jay Phelps is something of a WebAssembly expert, here he talks about WebAssembly, discussing what it is, how it can be used today, and the opportunities it will unlock in the years to come.
28 |
29 | ### And Finally ...
30 |
31 | How about [WebAssembly contracts running on blockchain](https://twitter.com/5chdn/status/972077427563393025)?
32 |
--------------------------------------------------------------------------------
/_posts/2018-04-27-issue-29.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #29'
4 | author: ceberhardt
5 | ---
6 |
7 | In this issue we're going deep - with a couple of articles that explore the WebAssembly instruction set in more detail ...
8 |
9 | ## [Writing WebAssembly by Hand](http://blog.scottlogic.com/2018/04/26/webassembly-by-hand.html)
10 |
11 | SCOTTLOGIC.COM
12 |
13 | WebAssembly was designed as a compilation target / runtime for a wide range of higher-level programming languages. However, it is surprisingly easy to write by hand! This blog post explores the WAT text format and looks at implementing Conway's Game of Life.
14 |
15 | ## [How does Dynamic Dispatch work in WebAssembly?](http://fitzgeraldnick.com/2018/04/26/how-does-dynamic-dispatch-work-in-wasm.html)
16 |
17 | FITZGERALDNICK.COM
18 |
19 | Dynamic dispatch is a technique that allows language to dynamically determine which implementation of an operation to invoke at runtime. It is a feature of most programming languages, although they differ in exactly how it is implemented.
20 |
21 | This post explores the WebAssembly call_indirect instruction, which allows dynamic invocation of functions. It also compares how the same dynamic code (written in Rust) differs when compiled to WebAssembly and x86. Fascinating stuff!
22 |
23 | ## And The Rest ...
24 | - [The Web Assembles](http://blog.scottlogic.com/2018/04/24/the-web-assembles.html) - a white paper that looks at why we need WebAssembly, and how it will effect the future of web development
25 | - [Blazor, Razor, WebAssembly, and Mono - How the pieces fit together](http://blog.qt.io/blog/2018/04/23/beta-qt-webassembly-technology-preview/) - an interesting post that describes how the pieces in this complex puzzle all fit together!
26 | - [Code cartoons, Rust and WebAssembly](http://podplayer.net/#/?id=49589095) - a podcast with Lin Clark
27 |
28 | ### And Finally ...
29 |
30 | What if there were a [physical CPU that executed WebAssembly](https://github.com/lastmjs/wasm-metal/blob/master/README.md)? 😱😱😱
--------------------------------------------------------------------------------
/_posts/2018-05-11-issue-31.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #31'
4 | author: ceberhardt
5 | ---
6 |
7 | This week the annual Google I/O conference took place in California. If you haven't seen it already, I'd highly recommend watching the [future of the web session](https://www.youtube.com/watch?v=BnYq7JapeDA) which focussed on WebAssembly. Most of the links in this week's issue are from that talk.
8 |
9 | ### [AutoCAD Web](https://web.autocad.com/#/)
10 |
11 | AUTOCAD.COM
12 |
13 | This is probably the most significant commercial usage of WebAssembly so far, the full AutoCAD design application is now available on the web, via a 9 MByte wasm file, compiled from C++. Unfortunately it doesn't work on Firefox - [feel the rage on reddit](https://www.reddit.com/r/firefox/comments/8i4w0w/firefox_pioneered_webassembly_yet_autocad_web/)!
14 |
15 | ### [CodeLabs Physics Engine](https://codelabs.developers.google.com/codelabs/hour-chipmunk/index.html?index=../../io2018#0)
16 |
17 | GOOGLE.COM
18 |
19 | A great tutorial on compiling the Chipmunk physics engine to WebAssembly, with a cool 'hour glass' demo.
20 |
21 | ### [Platform Uno](http://platform.uno/Playground/index.html)
22 |
23 | PLATFORM.UNO
24 |
25 | A UWP (Universal Windows Platform) bridge for iOS, Android and WebAssembly, which will be free and open sourced (soon)
26 |
27 | ### And Finally ...
28 |
29 | A practical application of WebAssembly ... a [Human to Dog translator](https://humantoanimal.com/)!
--------------------------------------------------------------------------------
/_posts/2018-05-18-issue-32.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #32'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [InfoQ Podcast - Colin Eberhardt on WebAssembly](https://www.infoq.com/podcasts/colin-eberhardt-webassembly?utm_source=link&utm_medium=twitter&utm_campaign=calendar)
8 |
9 | INFOQ.COM
10 |
11 | Wesley Reisz talks to Colin Eberhardt, what WebAssembly (WASM) is, a bit of the history of JavaScript, and the future plans for WebAssembly including the threading model and GC.
12 |
13 | ### [A Multi-threaded Fractal Generator in Rust](https://www.reddit.com/r/rust/comments/8hdq5r/a_rust_javascript_web_workers_fractal_renderer/)
14 |
15 | REDDIT.COM
16 |
17 | A Rust + WebAssembly Fractal renderer, the interesting thing about this example is that it uses wasm in WebWorkers to render in parallel. Although it might not be long until WebAssembly gains 'native' threading support, making this sort of thing much easier to achieve!
18 |
19 | ### [Should Vue.js move to WebAssembly?](https://github.com/vuejs/vue/issues/8193)
20 |
21 | GITHUB.COM
22 |
23 | Ember have embraced WebAssembly, using it within Glimmer, their rendering engine. Should Vue do this same? This interesting GitHub issue debates that exact topic.
24 |
25 | ### And Finally ...
26 |
27 | [Be nice to JavaScript](https://twitter.com/getify/status/997098808344547328)
--------------------------------------------------------------------------------
/_posts/2018-05-25-issue-33.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #33'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [AST Explorer - WebAssembly support](https://astexplorer.net/)
8 |
9 | ASTEXPLORER.NET
10 |
11 | An Abstract Syntax Tree (AST) is a tree structure that represents the syntax of source code written in a given language. It is a tremendously useful tool for writing compilers, transpilers and various other language tools. WebAssembly AST is currently in development, via [WebAssemblyJS](https://github.com/xtuc/webassemblyjs), which has recently been integrated with the AST-Explorer website.
12 |
13 | ### [Blazor Context Menu](https://github.com/stavroskasidis/blazorcontextmenu)
14 |
15 | GITHUB.COM
16 |
17 | One of the exciting things about WebAssembly is that it brings other languages, and other communities to the web. The .NET community is vibrant and active, with Blazor we will no doubt see a lot of new components, tools and creative ideas. This could be the first of many - a context menu written entirely in Blazor.
18 |
19 | ### [Qt WebAssembly Preview](http://blog.qt.io/blog/2018/05/22/qt-for-webassembly/)
20 |
21 | QT.IO
22 |
23 | Qt is a cross-platform UI framework with a long (23 year!) heritage.It is primarily used for desktop application development, but with WebAssembly they are eyeing the web! This blog post announces a preview version of Qt for WebAssembly.
24 |
25 | ### [What and Why of eWasm](http://www.zeroknowledge.fm/26)
26 |
27 | ZEROKNOWLEDGE.FM
28 |
29 | One of the most interesting non-browser hosting applications of WebAssembly is blockchain. In this podcast a couple of Ethereum team members describe their efforts to replace their bespoke VM with WebAssembly and some of the advantages that brings.
30 |
31 | ### And Finally ...
32 |
33 | [What if JavaScript wins?](https://medium.com/@anildash/what-if-javascript-wins-84898e5341a) - could JavaScript become the ubiquitous language? ... *cough* ... WebAssembly!
--------------------------------------------------------------------------------
/_posts/2018-06-01-issue-34.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #34'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [A Dynamic Forth Compiler for WebAssembly](https://el-tramo.be/blog/waforth/)
8 |
9 | EL-TRAMO.BE
10 |
11 | We've seen a lot of articles about bringing various languages to WebAssembly, including Haskell, Go, Lisp and more. However, this article deserves a special mention - it is a Forth compiler / interpreter, written in (a macro enhanced) WAT. Code is JIT-ed, into separate wasm modules which are dynamically loaded into the runtime. Amazing stuff!
12 |
13 | ### [Transpiling WebAssembly to support Multi Value Returns](https://blog.scottlogic.com/2018/05/29/transpiling-webassembly.html)
14 |
15 | SCOTTLOGIC.COM
16 |
17 | The WebAssembly specification is evolving, with many new features on the way. This blog post makes one of these future features available today, multi value returns, using the Babel approach of transpiling.
18 |
19 | ### [Hello WebAssembly](https://medium.com/@caspervonb/hello-webassembly-882bba5c9fb7)
20 |
21 | MEDIUM.COM
22 |
23 | Hello WebAssembly - A Look at WebAssembly Through a Fantasy Console - an interesting article that implements a fictitious processor in WebAssembly Text Format
24 |
25 | ### And Finally ...
26 |
27 | There has been a sudden surge of interest in WebAssembly microkernels again, with lots of discussion on Hacker News around [Nebulet](https://news.ycombinator.com/item?id=17187384) and [Cervus](https://news.ycombinator.com/item?id=17184410).
--------------------------------------------------------------------------------
/_posts/2018-06-08-issue-35.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #35'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Create a CRUD App using Blazor and ASP.NET Core](https://medium.com/@caspervonb/hello-webassembly-882bba5c9fb7http://www.talkingdotnet.com/create-a-crud-app-using-blazor-and-asp-net-core/)
8 |
9 | MEDIUM.COM
10 |
11 | While most of the Rust / WebAssembly demos we are seeing are algorithmic (fractals, 3D etc ...), Blazor has a different focus. Most C# devs work on 'line of business' (LOB) applications. This blog post takes a step-by-step approach to building a simple LOB application, a shopping list.
12 |
13 | ### [Experience The Arch](https://experiencethearch.com/)
14 |
15 | EXPERIENCETHEARCH.COM
16 |
17 | And to prove my point ... this is a programmable display, in the shape of an arch, which Mozilla put together for JSConfEU. You can use the online editor to program the display in Rust. Read more about the project on the Mozilla Hacks blog.
18 |
19 | ### [Snowhash in Rust with WASM](https://joshleeb.com/posts/rust-wasm-snowhash/)
20 |
21 | JOSHLEED.COM
22 |
23 | And again ... more pretty graphics with Rust and WebAssembly ... This cool little demo takes a hash string as the 'seed' for a procedurally generated snowflake.
24 |
25 | ### [Just released: WebAssembly version of Secp256k1 (10x faster than Javascript)](https://blog.bitjson.com/just-released-webassembly-version-of-secp256k1-10x-faster-than-javascript-eb3cebe4d411)
26 |
27 | MEDIUM.COM
28 |
29 | There are now a small number of production-ready libraries using WebAssembly, and this is another one. Secp256k1 is an elliptical hash algorithm which is used by blockchain clients.
30 |
31 | ### And Finally ...
32 |
33 | Did you know that you can [breakpoint Rust code within FireFox](https://twitter.com/ColinEberhardt/status/1004596556589387776)? Yes, we have sourcemaps!
--------------------------------------------------------------------------------
/_posts/2018-06-15-issue-36.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #36'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Scientific Python on the Web](http://droettboom.com/blog/2018/04/04/python-in-the-browser/)
8 |
9 | DROETTBOOM.COM
10 |
11 | Data Science involves experimentation, which doesn't necessarily lend itself to the standard 'application-based' mode of programming. Scientific notebooks mix text, scripting, charting and mathematical analysis into an interactive environment. This blog post looks at bringing Python to Iodide scientific notebooks, where all the analysis is performed in the browser.
12 |
13 | ### [Project IcePuzzle](http://www.matthewmichelotti.com/games/project_ice_puzzle/)
14 |
15 | MATTEWMICHELOTTI.COM
16 |
17 | A game coded in Rust, using WebAssembly, WebGL and Howler.js. This project is partly open source, developed is partly open source in the form of Gate, which is the Rust library that powers this game and can power other similar games.
18 |
19 | ### [Video: 10 Things I Regret About Node.js](https://www.youtube.com/watch?v=M3BM9TB-8yA)
20 |
21 | YOUTUBE.COM
22 |
23 | In this video Ryan Dahl, who created node, shares some of his regrets around the original design decisions. While this is not WebAssembly-specific, one of his regrets is security and the lack of sandboxing. We know a potential solution to that don't we?!
24 |
25 | ### [Video: Voxxed Athens 2018](https://www.youtube.com/watch?v=lOUXzBAXhO4)
26 |
27 | YOUTUBE.COM
28 |
29 | A talk from Voxxed Athens of how WebAssembly is changing the Web and what it means for you.
--------------------------------------------------------------------------------
/_posts/2018-06-22-issue-37.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #37'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WebAssembly Supported by Go](https://github.com/golang/go/issues/18892)
8 |
9 | GITHUB.COM
10 |
11 | This issue, on the golang GitHub project, was closed this week. Guess what that means? Go now supports compilation to WebAssembly!
12 |
13 | For an early glimpse of what this means for the Go community, check out this [early prototype web framework](https://github.com/bketelsen/wasmplay).
14 |
15 |
16 | ### [GopherJS vs WebAssembly for Go](https://dev.to/hajimehoshi/gopherjs-vs-webassembly-for-go-148m)
17 |
18 | DEV.TO
19 |
20 | Prior to the arrival of WebAssembly support, it has been possible to run Go on the web via GopherJS, a Go to JavaScript transpiler. This blog post compares the two different approaches to running Go in the browser.
21 |
22 | ### [The Reports of the Death of JavaScript are Greatly Exaggerated](https://wildermuth.com/2018/06/16/The-Reports-of-the-Death-of-JavaScript-are-Greatly-Exaggerated)
23 |
24 | WILDERMUTH.COM
25 |
26 | WebAssembly has generated no end of discussion around the future, and possible death of JavaScript. Most sensible (and well informed) developers are quite certain that JavaScript is not going to be replaced by WebAssembly, or any of the various languages that compile to it.
27 |
28 | ### [Improved JavaScript and WebAssembly Performance in EdgeHTML17](https://blogs.windows.com/msedgedev/2018/06/19/improved-javascript-webassembly-performance-edgehtml-17/)
29 |
30 | WINDOWS.COM
31 |
32 | With WebAssembly being such a new runtime, we can expect significant performance improvements in all the major browsers over the next few years as optimisations are made. In this post the Edge team reports a 4.5% speed increase for WebAssembly. This week Chrome's V8 team also announced [further performance improvements](https://v8project.blogspot.com/2018/06/v8-release-68.html).
--------------------------------------------------------------------------------
/_posts/2018-06-29-issue-38.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #38'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Even better Source Maps with C++, WebAssembly and Cheerp](https://medium.com/leaningtech/even-better-source-maps-with-c-webassembly-and-cheerp-d872276b7d3c)
8 |
9 | MEDIUM.COM
10 |
11 | A few months ago the Mozilla team published a [really interesting blog post](https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with-rust-and-webassembly/) about migrating a complex JavaScript-based library, that parses source-maps, to Rust + WebAssembly. They demonstrated a x3 increase in performance and much cleaner code.
12 |
13 | This post repeats the same process but using C++ and the Cheerp compiler instead. It showcases an interesting hybrid approach where some of the C++ code is compiled to wasm, and some is compiled to JS, generating the necessary 'wrapper' around the wasm module. Fascinating stuff!
14 |
15 |
16 | ### [Our Vision for Rust and WebAssembly](https://rustwasm.github.io/2018/06/25/vision-for-rust-and-wasm.html)
17 |
18 | GITHUB.IO
19 |
20 | We all know that WebAssembly isn't going to replace JavaScript (not immediately at least). This blog posts provides a thoroughly practical overview of how to Rust and JavaScript will co-exist together, "Surgically inserting Rust compiled to WebAssembly should be the best choice for speeding up the most performance-sensitive JavaScript code paths"
21 |
22 |
23 | ### [How WebAssembly is Accelerating the Future of Web Development](https://zendev.com/2018/06/26/webassembly-accelerating-future-web-development.html)
24 |
25 | ZENDEV.COM
26 |
27 | ... a post full of optimism for a future of linguistic diversity!
28 |
29 |
30 | ### [Some notes on Nebulet](https://lsneff.me/more-answers.html)
31 |
32 | ISNEFF.ME
33 |
34 | Nebulet is a WebAssembly-based microkernel, turning WebAssembly into an OS! This post gives a little background on "why?"
--------------------------------------------------------------------------------
/_posts/2018-07-06-issue-39.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #39'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [A Real-World WebAssembly Benchmark](https://pspdfkit.com/blog/2018/a-real-world-webassembly-benchmark/)
8 |
9 | PSPDFKIT.COM
10 |
11 | The team at PSPDFKit were WebAssembly early-adopters, using the technology to provide PDF rendering within the browser. This involved taking 500,000 lines of C++ and compiling it to WebAssembly.
12 |
13 | In this blog post the team have taken their PDF engine and turned it into a performance benchmark for the browser, allowing you to compare various performance characteristics. The results are fascinating - better still, they have been in discussion with the browser vendors to find out where and how they plan to improve performance. Great job!
14 |
15 |
16 | ### [Making calls to WebAssembly Fast](https://blog.benj.me/2018/07/04/mozilla-2018-faster-calls-and-anyref/)
17 |
18 | BENJ.ME
19 |
20 | One area of WebAssembly performance that hasn't gained much attention yet is the overhead of the JS / WASM interface boundary. Thankfully this has changed in FireFox, this post describes how they've significantly simplified their approach, removing a whole layer of C++ glue code, with impressive results.
21 |
22 | Better still, the FireFox team have also come up with an initial implementation of reference types - the first step towards garbage collection. Exciting stuff!
23 |
24 | ### [Go 1.11 WebAssembly for Gophers](https://medium.zenika.com/go-1-11-webassembly-for-the-gophers-ae4bb8b1ee03)
25 |
26 | ZENIKA.ME
27 |
28 | WebAssembly support for Go is just a few weeks old. This blog post does a great job of describing how to write your first WebAssembly application with Go.
29 |
30 | ### [Hijacking WebAssembly Control Flow](https://www.fastly.com/blog/hijacking-control-flow-webassembly-program)
31 |
32 | FASTLY.COM
33 |
34 | Last week we saw a whole host of article about WebAssembly bringing back Spectre and Meltdown. Honestly, I think they were all tripe!
35 |
36 | This is another security-focussed blog post, but a better one. It takes a look at how type confusion attacks can be compiled to WebAssembly.
37 |
--------------------------------------------------------------------------------
/_posts/2018-07-13-issue-40.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #40'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Vim editor ported to WebAssembly](https://github.com/rhysd/vim.wasm)
8 |
9 | GITHUB.COM
10 |
11 | Vim is a very popular text-based editor that has been around for more than 25 years. This GitHub project is a work-in-progress port of Vim to WebAssembly using the emscripten C compiler. The readme file gives a good technical overview of how this project works.
12 |
13 | This project has gained a lot of attention this week, although most relate to the age old joke of ["how do you exit vim?"](https://stackoverflow.blog/2017/05/23/stack-overflow-helping-one-million-developers-exit-vim/). In this case it is quite simple - just close the tab!
14 |
15 | ### [Tiny Emus](https://floooh.github.io/tiny8bit/)
16 |
17 | GITHUB.IO
18 |
19 | I love emulators and 8 bit computers! What's better than an 8-bit emulator? Six of them!
20 |
21 | This website demos a Commodore C64, ZX Spectrum, Acorn Atom and others, all compiled to WebAssembly using emscripten. You can find the [C sourcecode for all of them on GitHub](https://github.com/floooh/chips).
22 |
23 | ### [Go WebAssembly: Binding structures to JS references](https://medium.zenika.com/go-webassembly-binding-structures-to-js-references-4eddd6fd4d23)
24 |
25 | ENIKA.COM
26 |
27 | Now that Go officially supports WebAssembly we're going to see a lot of creativity in this area. This blog post looks at improving the WebAssembly / JavaScript interface.
28 |
29 | ### And Finally ...
30 |
31 | Like LEGO? like web tech? then head to [logo-bricks](https://logo-bricks.com/) to build your favourite web tech logos in brick form.
32 |
--------------------------------------------------------------------------------
/_posts/2018-07-20-issue-41.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #41'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WebAssembly is more than just the web](http://words.steveklabnik.com/webassembly-is-more-than-just-the-web)
8 |
9 | STEVEKLABNIK.COM
10 |
11 | As Jay Phillips has pointed out a few times, WebAssembly is a bit of a misnomer, it isn't an assembly language (it's a byte-code), and it isn't just for the web! In this blog post Steve Klabnik looks at how the WebAssemby specification has been carefully constructed to ensure that the runtime is not in any way tightly coupled to the web. He gives recent examples of wasm running on blockchain, as a microkernel and looks at the potential of running it on the desktop.
12 |
13 | ### [D now supports WebAssembly](https://wiki.dlang.org/Generating_WebAssembly_with_LDC)
14 |
15 | DLANG.ORG
16 |
17 | D is a relatively new multi-paradigm programming language that was released in 2001. Its goals are to "combine the performance and safety of compiled languages with the expressive power of modern dynamic languages". And now D has been added to the ever-growing list of languages that support WebAssembly.
18 |
19 | ### [WasmBoy - a GameBoy emulator written in AssemblyScript](https://github.com/torch2424/wasmBoy)
20 |
21 | GITHUB.COM
22 |
23 | AssemblyScript is an experimental language - a subset of TypeScript that compiles to WebAssembly. Most AssemblyScript examples are pretty trivial (the usual mandelbrot / fibonacci type stuff) - until now. This project is amazing, an entire emulator written using AssemblyScript. It certainly does a good job of demonstrating the viability of this language - really exciting stuff!
24 |
25 | ### And Finally ...
26 |
27 | OK, this is the same as last week, but it's my pet project, so I'm allowed to push it! ... Like LEGO? like web tech? then head to [logo-bricks](https://logo-bricks.com/) to build your favourite web tech logos in brick form.
--------------------------------------------------------------------------------
/_posts/2018-07-26-issue-42.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #42'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Is WebAssembly the Return of Flash & Java Applets?](https://words.steveklabnik.com/is-webassembly-the-return-of-java-applets-flash)
8 |
9 | STEVEKLABNIK.COM
10 |
11 | In the past we've seen numerous attempts to bring other languages to the web, all of which have failed. It's understandable that people would compare WebAssembly to these previous failures.
12 |
13 | This blog post does a great job of explaining the (numerous) differences between WebAssembly and plugins. There are more than I'd thought of!
14 |
15 |
16 | ### [The future of WebAssembly - A look at upcoming features and proposals](https://blog.scottlogic.com/2018/07/20/wasm-future.html)
17 |
18 | SCOTTLOGIC.COM
19 |
20 | WebAssembly is a nascent technology and the current version is very much an MVP. This blog post takes a look at the WebAssembly roadmap and the features it might gain in the near future.
21 |
22 | There are lots of interesting new features on their way - but some surprises too - the Garbage Collection and Threads proposals aren't what you might expect!
23 |
24 |
25 | ### [What if you could compile JavaScript to WebAssembly?](https://github.com/facebook/prepack/pull/2264)
26 |
27 | GITHUB.COM
28 |
29 | Currently there are two significant obstacles stopping us from compiling JavaScript to WebAssembly, (1) Garbage Collection and (2) a lack of static typing. While (1) is partially solvable, (2) is a show stopper! Current attempts at compiling JS to WASM have had to add strict typing, e.g. AssemblyScript.
30 |
31 | This Pull Request for Prepack suggests a very creative alternative solution. Prepack is a highly optimized bundler that uses partial evaluation - this allows it to infer types, giving a potential mechanism for wasm compilation.
32 |
33 |
34 | ### And Finally ...
35 |
36 | Fancy a WebAssembly job? Microsoft's [Xamarin team are hiring](https://careers.microsoft.com/us/en/job/476886/Principal-Software-Development-Engineer)!
--------------------------------------------------------------------------------
/_posts/2018-08-10-issue-43.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #43'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Grain - a Modern Web Staple](https://grain-lang.org/)
8 |
9 | GRAIN-LANG.ORG
10 |
11 | WebAssembly is bringing a whole host of languages to the web (C++, Rust, Go, C#, Java, and more ...), but it is also bringing completely new languages to the web.
12 |
13 | Grain is a (brand new) functional and strongly-typed programming language. It has been designed specifically for WebAssembly; Grain does not compile to JavaScript. It is supported by a small JS runtime that provides Grain apps with access to the browser APIs.
14 |
15 |
16 | ### [WebAssembly and Blazor .NET – dreaming of sharing .NET code between the client & the server](https://szumiato.pl/2018/08/03/webassembly-and-blazor-net-dreaming-of-sharing-net-code-between-the-client-the-server/)
17 |
18 | SZUMIATO.PL
19 |
20 | There are many occasions when you might want to share server-side code with your client, for example form validation, template rendering, to name a few. This was one of the driving forces behind Node, allowing JS to run server-side.
21 |
22 | This blog post explores how Blazor allows you to share the same c# code between client and server.
23 |
24 | ### [Life - A secure and fast WebAssembly VM](https://medium.com/perlin-network/life-a-secure-blazing-fast-cross-platform-webassembly-vm-in-go-ea3b31fa6e09)
25 |
26 | MEDIUM.COM
27 |
28 | Currently most developers are using WebAssembly within the browser - however the runtime itself was designed to be 'host agnostic', meaning that a WebAssembly VM could be hosted in all kinds of different environments.
29 |
30 | This project is a stand-alone WebAssembly VM, written in Go, that could be used to run wasm code in anywhere you like - smart fridges, mobile phones, etc ...
31 |
32 | ### And Finally ...
33 |
34 | A really interesting twitter thread about a [novel use of WebAssembly in the insurance industry](https://twitter.com/jxxf/status/1027358517462626304).
--------------------------------------------------------------------------------
/_posts/2018-08-17-issue-44.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #44'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Ray Tracing: WebAssembly vs JavaScript](http://matt-harrison.com/raytracing-webassembly-vs-javascript/)
8 |
9 | MATT-HARRISON.COM
10 |
11 | Side-by-side comparisons are a great way of evaluating new technologies. In this blog post Matt describes the development of a Ray Tracer in both JavaScript and Rust (compiled to WebAssembly). The conclusions (and online demo) show that the wasm implementation is an impressive x9 faster!
12 |
13 | ### [WebAssembly is Here!](https://blogs.unity3d.com/2018/08/15/webassembly-is-here/)
14 |
15 | UNITY3D.COM
16 |
17 | *Well yes ... silly title ... we knew that, WebAssembly has been here for ... months!*
18 |
19 | Joking aside, this is a really important blog post. Just over a year ago the Unity team added experimental support for WebAssembly, however, the default linker target remained as asm.js.
20 |
21 | This blog post announces that WebAssembly support is sufficiently to make it the default target, giving code size improvements and a boost in performance (especially with browser that were not asm.js optimised).
22 |
23 | ### [The Problems and Promise of WebAssembly](https://googleprojectzero.blogspot.com/2018/08/the-problems-and-promise-of-webassembly.html)
24 |
25 | BLOGSPOT.COM
26 |
27 | Google's Project Zero team are dedicated to finding zero-day exploits, so that potential dangerous security flaws can be fixed before they are used for more malicious purposes. In this post the team take a look at some of the security issues that have already surface with various WebAssembly implementations.
28 |
29 | There isn't really anything of great concern here - and the following excerpt from the conclusions is quite comforting:
30 |
31 | *"compared to other recent browser features, surprisingly few vulnerabilities have been reported in it. This is likely due to the simplicity of the current design, especially with regards to memory management."*
32 |
33 | ### And Finally ...
34 |
35 | "Any application that can be compiled to WebAssembly, will be compiled to WebAssembly eventually" - [Ending's Law](https://twitter.com/chaishushan/status/1029924713609363458)
--------------------------------------------------------------------------------
/_posts/2018-09-02-issue-46.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #46'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [How WebAssembly influences existing JavaScript frameworks](https://boyan.io/how-webassembly-influences-existing-javascript-frameworks/)
8 |
9 | BOYAN.IO
10 |
11 | WebAssembly isn't going to completely replace JavaScript (at least not for a good few years), so the future is going to be a mixture of JS and WASM. In which case, what does this future look like? and how will the two be used together? This blog post takes a look at some potential scenarios.
12 |
13 | ### [Go WebAssembly - Building a Calculator Tutorial](https://tutorialedge.net/golang/go-webassembly-tutorial/)
14 |
15 | TUTORIALEDGE.NET
16 |
17 | Go recently added WebAssembly support in their v1.11 release, so now is a good time to take a closer look at what a Go application, compiled to WebAssembly looks like.
18 |
19 | This tutorial creates a very simple calculator application - with just an add and subtract button. Interestingly we can see that Go applications have access to JavaScript through js.Global(), meaning that you can access variables and manipulate the DOM. The interface is a bit clumsy, but quite powerful!
20 |
21 | ### [Speed up source-map generation with WebAssembly](https://medium.com/@JevanChan/speed-up-source-map-generation-with-webassembly-google-summer-of-code-2018-e67407ed2e49)
22 |
23 | MEDIUM.COM
24 |
25 | Jevan is working with Google through their 'Summer of Code' programme, and is exploring practical uses of WebAssembly within Webpack. This blog post shares some of the results, where Rust and WebAssembly have made the sourcemaps module up to 60% faster. Great work!
26 |
27 | ### And Finally ...
28 |
29 | Someone spotted that for the 8-bit emulators we shared a few weeks ago, the [screenshots are larger than the emulators themselves](https://twitter.com/FlohOfWoe/status/1035084448520433664)!
--------------------------------------------------------------------------------
/_posts/2018-09-07-issue-47.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #47'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [greenwasm - an implementation of the WebAssembly spec in Rust](https://github.com/Kimundi/greenwasm)
8 |
9 | GITHUB.COM
10 |
11 | This project is seeking to create a complete parser, validator and runtime for WebAssembly in Rust. We've seen a number of projects like this in various languages, many of which are being created for 'fun'. However, the availability of standalone WebAssembly runtimes will mean that WebAssembly can be executed outside of the browser, opening up all kinds of possibilities!
12 |
13 | ### [WebAssembly & The Future of Blockchain Computing](https://medium.com/zkcapital/webassembly-the-future-of-blockchain-computing-1a0ae28f7e40)
14 |
15 | MEDIUM.COM
16 |
17 | On the subject of using WebAssembly outside of the browser ...
18 |
19 | This article gives a quick overview of the Ethereum network, a blockchain technology that allows the execution of smart contracts. These contracts are highlight versatile, however the Solidity language that is used to create them is not widely known. There is growing interest in using WebAssembly as the Virtual Machine for Ethereum, allowing contracts to be programmed in a great many (more conventional) languages.
20 |
21 | ### [Wasabi - a framework for dynamic analysis of WebAssembly](http://wasabi.software-lab.org/)
22 |
23 | SOFTWARE-LABS.ORG
24 |
25 | Wasabi is an interesting little framework that takes a wasm binary and injects instrumentation code, allowing profiling of function calls.
26 |
27 | ### And Finally ...
28 |
29 | [Olin](https://hk.saowen.com/a/b2fcb17048af754fc9f71ec9483dee753920941071d640d2128ca940f49aa803) is a "an attempt at defining a radically new operating primitive to make it easier to reason about, deploy and operate event-driven services" - I'm not entirely sure what this is, but it sounds VERY cool ;-)
--------------------------------------------------------------------------------
/_posts/2018-09-14-issue-48.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #48'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WebAssembly - The Future of Blockchain Computing](https://medium.com/zkcapital/webassembly-the-future-of-blockchain-computing-1a0ae28f7e40)
8 |
9 | MEDIUM.COM
10 |
11 | In previous issues of WasmWeekly we've looked at a few potential uses of WebAssembly outside of the browser. This article looks at the most compelling, WebAssembly replacing EVM as the virtual machine that executed smart contracts on the Ethereum blockchain. If you have no idea what that means, this is the article for you - it gives a gentle introduction and describes just why WebAssembly is a great fit for blockchain.
12 |
13 | ### [Rust and JavaScript Interop](https://blog.ryanlevick.com/posts/wasm-bindgen-interop/)
14 |
15 | RYANLEVICK.COM
16 |
17 | The interface between WebAssembly modules and the JavaScript host is very limited, being little more than functions with numeric arguments. This has led the Rust community to create wasm-bindgen, a tool which enriches the interop layer. This blog post dives into the technical detail of this tool to see how it works.
18 |
19 | ### [Tweet x86](http://twt86.co/#)
20 |
21 | TWT86.CO
22 |
23 | I must admit, I struggled to understand what this is at first - but when I worked it out, I was blown away!
24 |
25 | This website allows you to write x86 assembly language, which is compiled by Nasm, then run on Dosbox, all within the browser. Furthermore, your code is then base64 encoded, allowing you to tweet your creations.
26 |
27 | Wow!
28 |
29 | ### And Finally ...
30 |
31 | If you fancy a long read, [From Rust to Beyond](https://mnt.io/2018/08/21/from-rust-to-beyond-prelude/), is an interesting article that looks at the widening impact of the Rust language.
--------------------------------------------------------------------------------
/_posts/2018-09-21-issue-49.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #49'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WebAssembly Load Times and Performance](https://blogs.unity3d.com/es/2018/09/17/webassembly-load-times-and-performance/)
8 |
9 | UNITY3D.COM
10 |
11 | The Unity framework has recently switched from asm.js to WebAssembly. This highly detailed blog post looks at the impact this has had on application load times and performance - with some fantastic results!
12 |
13 | Most metrics show a significant improvement with the move to WebAssembly, although there is significant variability between browsers. This is a sign of the immaturity of the WebAssembly VM / runtime. I'd expect the performance metrics to converge over time.
14 |
15 | This blog also takes a look at the impact of LiftOff, the recently introduced tiered WebAssembly compiler within Google Chrome. With tiered compilation, your WebAssembly code is rapidly compiled with a non-optimised compiler in order to get it up and running quickly. The results are impressive, with load times reduced by a factor of x10.
16 |
17 | ### [An n-body simulator](https://novoselrok.github.io/nbody-wasm/)
18 |
19 | GITHUB.IO
20 |
21 | This fun little demo shows an n-body simulator, written in C++, and compiled to WebAssembly. It has a whole host of 'galactic' simulations!
22 |
23 | ### [An Interactive Go REPL in the Browser](https://gopry.rice.sh/)
24 |
25 | RICE.SH
26 |
27 | WebAssembly is intended to allow you to compile a wide range of languages so that they can run in the web. Once you can do this, you can compile their compiler / interpreters, allowing you to host the language itself within the browser. Hours of fun!
28 |
29 | ### And Finally
30 |
31 | Like WebAssembly? like LEGO? Then why not [create the WebAssembly logo in LEGO](https://logo-bricks.com/)!
--------------------------------------------------------------------------------
/_posts/2018-10-05-issue-51.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #51'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WebAssembly on Cloudflare Workers](https://blog.cloudflare.com/webassembly-on-cloudflare-workers/)
8 |
9 | CLOUDFLARE.COM
10 |
11 | Cloudflare is a popular Content Delivery Network (CDN), which allows you to accelerate the delivery of you web assets across the globe by caching them at their ~150 datacenters. CDNs have started to become much more 'intelligent', allowing you to execute logic across their network rather than just distribute assets. Cloudflare's own Workers concept allows you to execute JavaScript on their network in a similar way to AWS Lambda. This blog post announces WebAssembly support within workers, which is ideal for number-crunching activities such as image resizing.
12 |
13 | ### [PIB: PHP In Browser](https://oraoto.github.io/pib/)
14 |
15 | GITHUB.IO
16 |
17 | It's always great to hear about another mainstream language offering WebAssembly support. On this website you'll find the highly popular server-side scripting language PHP running entirely within the browser! You can now write your full stack (server and client) in many languages, C#, PHP, Rust, Go and many more ...
18 |
19 | ### [Introducing Ruukh Framework](https://sharadchand.com/2018/10/03/ruukh-framework.html)
20 |
21 | SHARADCHAND.COM
22 |
23 | React has become the most popular framework for JavaScript UI development, so it's no surprise that the React patterns of components and unidirectional data-flow are emerging within other languages. This blog post introduces Ruukh, a new React-inspired framework for Rust.
24 |
25 | ### [A web application completely in Rust](https://medium.com/@saschagrunert/a-web-application-completely-in-rust-6f6bdb6c4471)
26 |
27 | MEDIUM.COM
28 |
29 | On the subject of full-stack and Resct-inspired frameworks, this blog post takes a look at building a complete web app (client and server) in Rust using the Yew framework. A great article that asks the question "are we ready to use this in production?"
30 |
31 | ### And Finally ...
32 |
33 | Did you know that the [dictionary definition of wasm](https://twitter.com/tabatkins/status/1047914446985748480) is "A doctrine, ideology, rule, or theory that is no longer current or fashionable."?
34 |
--------------------------------------------------------------------------------
/_posts/2018-10-11-issue-52.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #52'
4 | author: ceberhardt
5 | ---
6 |
7 | ### 🎂 🎉 🎂 🎉 🎂 🎉 🎂 🎉 🎂 🎉 🎂 🎉 🎂 🎉 🎂 🎉
8 |
9 | Happy Birthday to me! This is the 52nd issue of WasmWeekly, making this the birthday issue. Raise a glass 🍾 have a slice of cake 🍰 and celebrate 🎉 !
10 |
11 | ### [Calls between JavaScript and WebAssembly are finally fast 🎉](https://hacks.mozilla.org/2018/10/calls-between-javascript-and-webassembly-are-finally-fast-%F0%9F%8E%89/)
12 |
13 | MOZILLA.ORG
14 |
15 | For WebAssembly to do anything useful, it must interoperate with its host, via imported and exported functions. Depending on the nature of your WebAssembly application, you might be making a significant number of these calls, therefore it is important that these calls are quick, otherwise the performance benefit of using WebAssembly is undermined.
16 |
17 | Making interop calls fast is actually quite challenging as illustrated by Lin in this excellent article. The good news is, the Mozilla team have made significant improvements, making these calls very fast indeed.
18 |
19 | (I'd like to think the party popper emoji in this URL in celebration of issue #52!)
20 |
21 | ### [Picovoice - Offline Voice AI](https://picovoice.ai/)
22 |
23 | PICOVOICE.AI
24 |
25 | There aren't that many commercial applications of WebAssembly yet, which is why Picovoice is really exciting! This product provides browser-based voice recognition, allowing you to build voice-activated assistance. As you can imagine, the number-crunching capabilities of WebAssembly are ideal for this type of use case.
26 |
27 | ### [WasmDec - A WebAssembly to C Decompiler](https://github.com/wwwg/wasmdec)
28 |
29 | GITHUB.COM
30 |
31 | The WebAssembly Binary Toolkit (WABT) includes tools that ca convert wasm binaries into the more readable WebAssembly Text Format. However, the output is still a little hard to grok! This project allows you to decompile to C, giving a much more accessible output.
32 |
33 | ### And Finally ...
34 |
35 | WebAssembly is starting to feel like a mainstream technology, there's even a [website dedicated to WebAssembly jobs](https://webassemblyjobs.com/)!
--------------------------------------------------------------------------------
/_posts/2018-10-19-issue-53.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #53'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Chrome v8 adds WebAssembly Threads](https://v8.dev/blog/v8-release-70)
8 |
9 | V8.DE
10 |
11 | The current version of WebAssembly is an MVP, with a very limited feature set. There is a public backlog of future features being debates, with one of the most exciting ones being threads. This blog post announces a preview implementation of wasm threads in Chrome! - but don't get too over-excited, wasm will not have native threads, rather, this feature adds atomics, and shared memory access, giving thread-safe constructs. The host environment (i.e. JavaScript) will have to create the threads themselves.
12 |
13 | ### [Serverless Rust with Cloudflare Workers](https://blog.cloudflare.com/cloudflare-workers-as-a-serverless-rust-platform/)
14 |
15 | CLOUDFLARE.COM
16 |
17 | Cloudflare very recently announced that their workers now support WebAssembly. This blog post dives into the details, using Rust to create a worker that generates dynamic prose.
18 |
19 | ### [Serverless Rust with AWS Lambda and WebAssembly](https://blog.scottlogic.com/2018/10/18/serverless-rust.html)
20 |
21 | SCOTTLOGIC.COM
22 |
23 | What's that you say? You want more serverless Rust? This post looks at creating a very simple AWS Lambda function using Rust compiled to WebAssembly, this time without a single line of JavaScript.
24 |
25 | ### [Blazor Tetris](https://twitter.com/WasmWeekly/status/1052644260565213187)
26 |
27 | TWITTER.COM
28 |
29 | You'd expect C# developers to use Blazor to write forms-based business applications, but not in this case! This is a neat demo of Tetris written entirely in C#, compiled to WebAssembly. Nicely done.
30 |
31 | ### And Finally ...
32 |
33 | Do you fancy an internship at Mozilla, [working within the WebAssembly team](https://twitter.com/WasmWeekly/status/1052861045092610048)?
--------------------------------------------------------------------------------
/_posts/2018-10-26-issue-54.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #54'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WebAssembly’s post-MVP future: A cartoon skill tree](https://hacks.mozilla.org/2018/10/webassemblys-post-mvp-future/)
8 |
9 | MOZILLA.ORG
10 |
11 | Another fantastic article, with accompanying cartoons, from Lin Clark. This article takes you on a journey through the various use-cases (skills) that WebAssembly can be used for, weaving in the various proposals and other innovations. It makes for a fantastic read.
12 |
13 | Even if you are familiar with the current state of WebAssembly, I'd thoroughly recommend reading to the end, where the article looks way beyond the browser.
14 |
15 | ### [Multithreading Rust and Wasm](https://rustwasm.github.io/2018/10/24/multithreading-rust-and-wasm.html)
16 |
17 | GITHUB.IO
18 |
19 | A really detailed article that walks through the threading proposal, shared memory and atomics. As well as describing the various challenges, the author presents a working demo, using an example ray tracer. Interestingly this code was not written specifically for the demo, the author found, and adapted, an existing Rust project.
20 |
21 | ### [Welcome to WebPerl!](https://webperl.zero-g.net/)
22 |
23 | ZERO-G.NET
24 |
25 | Time to welcome another language to the WebAssembly family, this time it's Perl 5.
26 |
27 | ### And Finally ...
28 |
29 | PSPDFKit, one of the companies that pioneered the use of WebAssembly, [are looking to hire](https://remote.jobs/programming/8259/).
--------------------------------------------------------------------------------
/_posts/2018-11-02-issue-55.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #55'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WebAssembly Threads ready to try in Chrome 70](https://developers.google.com/web/updates/2018/10/wasm-threads)
8 |
9 | GOOGLE.COM
10 |
11 | This is big news for WebAssembly, and represents significant progress on one fo the more important future features - threading. If you're a regular reader, you'll know that WebAssembly is not gaining support for spawning new threads, instead, this proposal adds share memory and atomics, allowing modules to operate in a threaded environment.
12 |
13 | This post briefly describes the new threading feature, and provides a simple demo that shows pthreads (the standard threading API for C / C++) compiling to WebAssembly using Emscripten.
14 |
15 | ### [NectarJS - JavaScript God Mode](https://nectar-lang.com/)
16 |
17 | NECTAR-LANG.COM
18 |
19 | Compiling JavaScript to WebAssembly isn't straightforwards due to two issues (1) Garbage collection, and (2) the lack of static typing. This website demos a tool that seems to have solved these problems - although there doesn't appear to be any information on how they've done it? Intriguing!
20 |
21 | ### [Holochain Developer Preview Release](https://medium.com/holochain/holochain-developer-preview-release-56d0ede52da)
22 |
23 | MEDIUM.COM
24 |
25 | We all love a bit of WebAssembly on the blockchain! Much of the previous news has focussed on Ethereum (the second biggest network after bitcoin). This post looks at Holochain, which is a P2P alternative to blockchain, and describes why they migrated to Rust in order to compile to WebAssembly - allowing browser-based clients!
26 |
27 | ### And Finally ...
28 |
29 | Should the WebAssembly Working Group consider [changing their name](https://twitter.com/coryzibell/status/1058015585022476288)?
--------------------------------------------------------------------------------
/_posts/2018-11-09-issue-56.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #56'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Wavelet: Pre-Alpha Launch](https://medium.com/perlin-network/wavelet-pre-alpha-launch-7e6c042a0768)
8 |
9 | MEDIUM.COM
10 |
11 | What is Wavelet I hear you ask? Wavelet is a distributed ledger that uses the Avalanche algorithm which is resistant against Sybil attacks. The ledger executes smart contracts on 'Life' - a WebAssembly VM. Make sense? I must admit, I only half understand half of those words.
12 |
13 | It's still worth having a read of this blog post which demonstrates the Rust smart contracts SDK. This signals a very significant use of WebAssembly outside of the browser.
14 |
15 | ### [Defold 1.2.141 supports WebAssembly](https://forum.defold.com/t/defold-1-2-141-has-been-released/33996)
16 |
17 | DEFOLD.COM
18 |
19 | Defold is a 2D gaming engine for writing web-based games. This latest release supports WebAssembly, demonstrating that the technology is very much production-ready.
20 |
21 | ### [Leveling up WebAssembly itself: Going from MVP to brave new world](https://www.youtube.com/watch?time_continue=4&v=mXCDObNkScM)
22 |
23 | YOUTUBE.COM
24 |
25 | A few weeks back Lin Clark published a wonderful (and wildly successful) blog post that described the WebAssembly roadmap via the concept of 'skills'. Here is a video of Lin presenting the same topic at GitHub Universe.
26 |
27 | ### [Writing a Frontend Web Framework with WebAssembly And Go](https://tutorialedge.net/golang/writing-frontend-web-framework-webassembly-go/#components)
28 |
29 | TUTORIALEDGE.NET
30 |
31 | This is a detailed blog post that works through the process of creating a prototype web framework using Go. The React-inspired framework includes a simple component concept and a router.
32 |
33 | ### And Finally ...
34 |
35 | Do you have [22 years of JS and 69 years of ASM experience](https://twitter.com/romanzolotarev/status/1059173843024166913)?
--------------------------------------------------------------------------------
/_posts/2018-11-16-issue-57.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #57'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Image compression using Squoosh](https://github.com/GoogleChromeLabs/squoosh/)
8 |
9 | GITHUB.COM
10 |
11 | Google Chrome Labs have launched a fantastic demo app called Squoosh, which allows you to perform image compression within the browser, on both mobile and desktop. The application itself is a Progressive Web App, allowing offline usage, with C++ codecs compiled to WebAssembly. A real glimpse into the future!
12 |
13 | ### [Cloud Computing without Containers](https://blog.cloudflare.com/cloud-computing-without-containers/)
14 |
15 | CLOUDFLARE.COM
16 |
17 | A few weeks ago CloudFlare announced support for WebAssembly within their cloud-based workers. These are a competitor to AWS lambda (and other function-as-a-service products) that allow you to execute logic on CloudFlare's CDN / edge network. This blog post compares the AWS approach, which uses containers, to CloudFlare's, using V8 isolates - a much more lightweight option, that gives many benefits.
18 |
19 | ### [A WebAssembly backend for OCaml](https://medium.com/@sanderspies/a-webassembly-backend-for-ocaml-b78e7eeea9d5)
20 |
21 | MEDIUM.COM
22 |
23 | This article looks at bringing OCaml to WebAssembly, it's not quite ready yet - but work is in progress!
24 |
25 | ### And Finally ...
26 |
27 | [JSX for Rust](https://twitter.com/jo_liss/status/1061982297753354241)? Tasty!
--------------------------------------------------------------------------------
/_posts/2018-11-23-issue-58.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #58'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Terrarium - run serverless WebAssembly](https://wasm.fastlylabs.com/)
8 |
9 | FASTLYLABS.COM
10 |
11 | A weeks ago Cloudflare announced support for WebAssembly Worklets, allowing you to run wasm on their CDN edge network. It looks like Fastly have followed suite.
12 |
13 | Terrarium goes a step further, using the WebAssembly Studio editor to give an online editor for creating and editing cloud functions in Rust, AssemblyScript or C. WebAssembly has reached the cloud!
14 |
15 | Currently there isn't any documentation available for Terrarium, but it will no doubt appear shortly.
16 |
17 | ### [Wasm on the Blockchain: The Lesser Evil](https://medium.com/polkadot-network/wasm-on-the-blockchain-the-lesser-evil-da8d7c6ef6bd)
18 |
19 | MEDIUM.COM
20 |
21 | There have been a number of articles recently about using WebAssembly as the VM for blockchain. This article describes why it is a good fit, and why it is being used for Polkadot, a protocol for data exchange between blockchains, that creates a multi-chain web!
22 |
23 | ### [Wasmer - Build Once, Run Anywhere.](https://wasmer.io/)
24 |
25 | WASMER.IO
26 |
27 | Wasmer is a standalone WebAssembly runtime, with the goal of creating universal binaries. Based on Cranelift, the experimental FireFox WebAssembly code generator, wasmer allows you to run wasm standalone binaries.
28 |
29 | I must admit, it is a little unclear what you can actually do with wasmer at the moment. The WebAssembly runtime needs a host environment in order to perform any useful I/O operations, and it is unclear what the wasmer host provides. Still, definitely a project to watch.
30 |
31 | ### And Finally ...
32 |
33 | A post that combines WebAssembly, [cryptocurrency and data visualisation](https://blog.scottlogic.com/2018/11/22/crypto-charting-d3fc-perspective.html).
--------------------------------------------------------------------------------
/_posts/2018-11-30-issue-59.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #59'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WasmJit - Spectre Mitigations Part 1](https://medium.com/polkadot-network/wasm-on-the-blockchain-the-lesser-evil-da8d7c6ef6bd)
8 |
9 | WASMJIT.ORG
10 |
11 | WasmJIT is a WebAssembly runtime whose goal is to run wasm code within the Linux kernel. "Why?" - You might ask? To remove the context switching overhead when making IO calls.
12 |
13 | Spectre and Meltdown were a couple of critical CPU-level vulnerabilities discovered this year. This blog post looks at how WasmJIT mitigates these in their runtime.
14 |
15 | ### [WebAssembly doesn’t make unsafe languages safe (yet)](https://00f.net/2018/11/25/webassembly-doesnt-make-unsafe-languages-safe/)
16 |
17 | OOF.NET
18 |
19 | An interesting article, arguing that because WebAssembly maintains the memory model of the source language, it doesn't make unsafe languages safe - NULL pointers are still an issue. Perhaps WebAssembly should include a memory allocator as part of the runtime?
20 |
21 | ### [Codepunk 039: WebAssembly](https://codepunk.io/codepunk-039-webassembly/)
22 |
23 | CODEPUNK.IO
24 |
25 | The Codepunk podcast takes an introductory look at WebAssembly.
26 |
27 | ### And Finally ...
28 |
29 | Vim ported to WebAssembly, [slides from VimConf](https://speakerdeck.com/rhysd/vim-ported-to-webassembly-vimconf-2018)!
--------------------------------------------------------------------------------
/_posts/2018-12-07-issue-60.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! 'Issue #60'
4 | author: ceberhardt
5 | ---
6 |
7 | ### [nginx running on WebAssembly](https://www.wasmjit.org/blog/nginx-on-wasmjit.html)
8 |
9 | WASMJIT.ORG
10 |
11 | There are a few projects on the web that are looking at how to run WebAssemby in Kernel space, removing the need for 'protection rings' and context switching, allowing applications to run faster. In this bog post the wasmjit project announces that they have managed to get nginx (the web server) compiled to wasm, using emscripten, running on their platform. As nginx has significant IO operations, this is a massive step forwards.
12 |
13 | Even more cool, wasmer, another kernel space runtime, [also announced that they can run nginx](https://twitter.com/syrusakbary/status/1070478715702829056) just a day beforehand. The race to make WebAssembly a universal runtime is on!
14 |
15 | ### [ONNX.js machine learning with WebAssembly](https://github.com/Microsoft/onnxjs)
16 |
17 | GITHUB.COM
18 |
19 | At this years Google I/O conference they announced TensorFlow.js which allows you to run machine learning models, and perform training, from within the browser. The newly release ONNX.js framework, from Microsoft, is another framework for running neural networks in the browser. With ONNX.js you can run the models on the GPU, using WebGL, or the CPU, using WebAssembly and Web Workers.
20 |
21 | ### [WebAssembly in Action](https://www.manning.com/books/webassembly-in-action)
22 |
23 | MANNING.COM
24 |
25 | You know a technology has become mainstream when it has an 'In Action' book! This book will be available in Spring 2019, however, you can access it early via the Manning Early Access Programme. There is a 50% discount if you use the code **mlgallant**.
26 |
27 | ### And Finally ...
28 |
29 | WebAssembly makes [JavaScript feel like you're building with bananas](https://twitter.com/secretGeek/status/1068626722449309696), erm ... I guess.
--------------------------------------------------------------------------------
/_posts/2018-12-14-issue-61.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #61"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Reflecting on Rust and WebAssembly in 2018](https://rustwasm.github.io/2018/12/06/reflecting-on-rust-and-wasm-in-2018.html)
8 |
9 | GITHUB.IO
10 |
11 | The Rust community have been right behind WebAssembly from the very start. There are clear synergies between the two, with the hope that WebAssembly can further fuel the rise in popularity of Rust.
12 |
13 | This article reflects on what the Rust community has achieved this year, including wasm binding generation distribution via npm, scaffolds and test / debugging. The article also looks to 2019, asking the community for ideas, which will be assembled into an RFC for the 2019 roadmap.
14 |
15 | ### [From WebAssembly to Native Code via the OCaml Backend](http://simonjf.com/2018/08/27/cmm-of-wasm.html)
16 |
17 | SIMONJF.COM
18 |
19 | There are quite a few articles and projects about compiling languages to WebAssembly, from the esoteric (BrainF\*\*K), to the practical (TypeScript). This post is a little different, it looks at compiling WebAssembly to native code using the OCaml backend. This is quite a technical post!
20 |
21 | ### [Edge programming with Rust and WebAssembly](https://www.fastly.com/blog/edge-programming-rust-web-assembly)
22 |
23 | FASTLY.COM
24 |
25 | A few weeks ago the Fastly online IDE for creating WebAssembly cloud functions appeared online. This blog post provides an in-depth introduction to Terrarium, demonstrating how you can write 'edge functions' (i.e. serverless cloud functions) using Rust.
26 |
27 | Fastly are clearly investing heavily into this concept, having built a multi-language online IDE, as well as a simple playground, [Fastly Fiddle](https://fiddle.fastlydemo.net/).
28 |
29 | ### And Finally ...
30 |
31 | Is [WebAssembly the new Docker](https://twitter.com/munhitsu/status/1071536987306426369)?
32 |
--------------------------------------------------------------------------------
/_posts/2018-12-23-issue-62.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #62"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Sandspiel - a sand simulation in Rust, WebGL and WebAssembly](https://sandspiel.club/)
8 |
9 | SANDSPIEL.CLUB
10 |
11 | This has to be one of the most fun things I've seen with WebAssembly, a falling sand simulator! You can choose from a wide range of materials, add fire, wind, lava, etc... It's great fun creating structures then burning, or blowing them apart. The game also works very well on mobile devices. Once you get bored playing with the game, head over to [GitHub for the sourcecode](https://github.com/maxbittker/sandspiel).
12 |
13 | ### [A standalone WebAssembly VM benchmark](https://medium.com/fluence-labs/a-standalone-webassembly-vm-benchmark-7a0f701da3d5)
14 |
15 | MEDIUM.COM
16 |
17 | There are now a wide number of standalone WebAssembly Virtual Machines to choose from, including Asmble, wasmer, WAVM, life, wasmi and wagon. These have been created for various reasons, some are hobby projects, other power blockchain or serverless projects. This article compares the performance of these VMs using a variety of benchmarks, declaring WAVM the winner.
18 |
19 | ### [WebAssembly Is Fast: A Real-World Benchmark of WebAssembly vs. ES6](https://medium.com/fluence-labs/a-standalone-webassembly-vm-benchmark-7a0f701da3d5)
20 |
21 | MEDIUM.COM
22 |
23 | This is a long, detailed, and excellent article from the creator of WasmBoy, a WebAssembly GameBoy emulator written in AssemblyScript. A couple of interesting points in this article is that the performance is compared to JavaScript (both 'raw' and optimised via Closure Compiler), and on mobile devices. The final conclusion shows that WebAssembly gives a significant speed boost on mobile devices making it an excellent technology for Progressive Web Apps (PWA).
24 |
25 | ### And Finally ...
26 |
27 | Why not [write your resume / CV in WebAssembly](https://jayphelps.github.io/resume/)?
28 |
--------------------------------------------------------------------------------
/_posts/2019-01-04-issue-63.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #63"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Mozilla Hacks’ 10 most-read posts of 2018](https://hacks.mozilla.org/2018/12/mozilla-hacks-10-most-read-posts-of-2018/)
8 |
9 | MOZILLA.ORG
10 |
11 | In the annual tradition of making lists - the Mozilla team look at their most-read blog posts from 2018. Posts about WebAssembly make up an impressive 4 of the top 10. These must-read posts are:
12 |
13 | - [Calls between JavaScript and WebAssembly are finally fast 🎉](https://hacks.mozilla.org/2018/10/calls-between-javascript-and-webassembly-are-finally-fast-%F0%9F%8E%89/)
14 | - [Making WebAssembly even faster: Firefox’s new streaming and tiering compiler](https://hacks.mozilla.org/2018/01/making-webassembly-even-faster-firefoxs-new-streaming-and-tiering-compiler/)
15 | - [Sneak Peek at WebAssembly Studio](https://hacks.mozilla.org/2018/04/sneak-peek-at-webassembly-studio/)
16 | - [WebAssembly’s post-MVP future: A cartoon skill tree](https://hacks.mozilla.org/2018/10/webassemblys-post-mvp-future/)
17 |
18 | ### [WebAssembly: Neither Web, Nor Assembly, but Revolutionary](https://www.javascriptjanuary.com/blog/webassembly-neither-web-nor-assembly-but-revolutionary)
19 |
20 | JAVASCRIPTJANUARY.COM
21 |
22 | If you're relatively new to WebAssembly, this article is a great place to start. It gives a great no-nonsense introduction to what WebAssembly is and how it works, followed by a look at what the future holds in store for this technology.
23 |
24 | ### [WebAssembly SF Meetup](https://www.meetup.com/wasmsf/events/257611153/)
25 |
26 | MEETUP.COM
27 |
28 | There are already a few WebAssembly meetups that have formed in the last year, although this latest meetup, in San Francisco, deserves a special mention. The first meetup is hosted by Mozilla, with talks from Lin Clark and Till Schneidereit. An impressive kick off event!
29 |
30 | ### And Finally ...
31 |
32 | When a [silly joke on twitter goes slightly wrong](https://twitter.com/WasmWeekly/status/1080517999063371776)!
33 |
--------------------------------------------------------------------------------
/_posts/2019-01-11-issue-64.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #64"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [From Angular to Blazor: The Health App](https://blog.jeremylikness.com/from-angular-to-blazor-the-health-app-2e36077d641c)
8 |
9 | JEREMYLIKNESS.COM
10 |
11 | The 'health app' is a non-trivial demo app that Jeremy has implemented in a variety of different languages, making it a great app to demonstrate the current features of Blazor. This is a really detailed tutorial, with some interesting conclusions and observations at the end, the lack of support for INotifyPropertyChange - the cornerstone interface for change managements - is quite surprising. Jeremy explored how this might be implemented in a [follow up blog post](https://blog.jeremylikness.com/mvvm-support-in-blazor-dbc38060a4a0?WT.mc_id=link-twitter-jeliknes).
12 |
13 | ### [WebGL + Rust: Basic Water Tutorial](http://chinedufn.com/3d-webgl-basic-water-tutorial/)
14 |
15 | CHINEDUFN.COM
16 |
17 | The title might say 'basic' but the results look awesome! This tutorial discusses how to simulate water, and looks at how this can be achieved using WebGL an Rust. Interestingly the author opted to use WebAssembly as a result of a twitter vote!
18 |
19 | ### [Fast GIF parsing on the web with WASM + Wuffs](https://dev.to/chromiumdev/fast-gif-parsing-on-the-web-with-wasm--wuffs-48l4)
20 |
21 | DEV.TO
22 |
23 | This is a slightly old one, from a few months back, but I missed it at the time. This tutorial looks at how to implement GIF parsing with WebAssembly using Emscripten. There are also some really interesting performance comparisons between WebAssembly and JavaScript - another non-trivial, and highly-practical performance measurement for WebAssembly.
24 |
25 | ### And Finally ...
26 |
27 | If your [framework doesn't compile to WebAssembly in 2019, then it is dead!](https://twitter.com/DmytroGladkyi/status/1082564715103113216) (controversy alert!)
28 |
--------------------------------------------------------------------------------
/_posts/2019-01-18-issue-65.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #65"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [What’s the Role of WebAssembly in WebRTC?](https://bloggeek.me/webassembly-in-webrtc/)
8 |
9 | BLOGGEEK.ME
10 |
11 | WebRTC is a Google-backed project, and W3C standard, that has been active for the last eight years. It is developing peer-to-peer communications between browsers - for example allowing direct audio / video chat from one browser to another. The raw processing power of WebAssembly opens up all kinds of possibilities for WebRTC - this blog post explores.
12 |
13 | ### [WebAssembly friendly programming with C/C++](https://github.com/3dgen/cppwasm-book/blob/master/en/README.md)
14 |
15 | GITHUB.COM
16 |
17 | As WebAssembly is a very new technology, and language support is evolving very rapidly, it can be hard to find good reference material on how to get started. There are a few mainstream books under development, but this one is a bit different, it's free and open source.
18 |
19 | ### [Compiling Go to WebAssembly](https://www.sitepen.com/blog/compiling-go-to-webassembly/)
20 |
21 | SITEPEN.COM
22 |
23 | A pretty simple, but highly accessible blog post that introduces Go's support for WebAssembly.
--------------------------------------------------------------------------------
/_posts/2019-02-08-issue-67.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #67"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WebAssembly Troubles Parts 1 - 4](http://troubles.md/posts/wasm-is-not-a-stack-machine/)
8 |
9 | TROUBLES.MD
10 |
11 | Every language, every framework, every library has its flaws, and by pointing them out and discussing them we learn a lot. This is an excellent four part critique of WebAssembly, looking at the language design and pinpointing issues that make it hard to create optimized compilers that target this language. The first article looks at the stack-machine nature of the language and highlights that function locals actually 'break' this design.
12 |
13 | ### [Mind the Gap: Analyzing the Performance of WebAssembly vs. Native Code](https://arxiv.org/pdf/1901.09056.pdf)
14 |
15 | ARIXIV.ORG
16 |
17 | We all know that WebAssembly is built for performance, but just how fast is it? You can find a number of articles on the web that provide measurements based on 'microbenchmarks', testing the performance of very small functions, but these are quite misleading. Also, there is often a focus on WebAssembly vs. JavaScript. This detailed scientific paper takes a very thorough look at the performance of WebAssembly compared to native, giving some interesting results and insights.
18 |
19 | ### [Bytecoder - compile Java Bytecode to JavaScript and WebAssembly](https://github.com/mirkosertic/Bytecoder)
20 |
21 | GITHUB.COM
22 |
23 |
24 | Java doesn't have terribly good support for WebAssembly yet, so it's good to see some more people trying to bridge the gap. This project uses an LLVM-style pipeline, with an intermediate representation that is passed to various back-end targets. It also has some impressive demos, if you like shiny things!
25 |
26 | ### [TinyGo - a Go compiler for small places](https://tinygo.org/)
27 |
28 | TINYGO.ORG
29 |
30 | TinyGo is a compiler that is designed for targeting microcontrollers and WebAssembly.
31 |
32 | ### And Finally ...
33 |
34 | Mozilla are [advertising a WebAssembly position](https://careers.mozilla.org/position/gh/1539899/), for someone to help take WebAssembly beyond the web!
--------------------------------------------------------------------------------
/_posts/2019-02-15-issue-68.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #68"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Replacing a hot path in your app's JavaScript with WebAssembly](https://developers.google.com/web/updates/2019/02/hotpath-with-wasm)
8 |
9 | GOOGLE.COM
10 |
11 | While JavaScript can achieve pretty an impressive level of performance, taking time for the various JIT optimisation to 'warm up'. In contrast the performance of WebAssembly is much more predictable. This blog post explores using WebAssembly to address a 'hot path' in an application, which is rotating an image. It takes a look at the various options including Rust, AssemblyScript and C. A really thorough investigation with lots of useful supporting information. A must read!
12 |
13 | ### [WebAssembly & CloudABI](https://medium.com/wasmer/webassembly-cloudabi-b573047fd0a9)
14 |
15 | MEDIUM.COM
16 |
17 | Application Binary Interfaces or ABIs is a contract between two binary applications, allowing them to interoperate, these allow our applications to make 'system calls'. This blog post explores the significance of ABIs and looks at how the various WebAssembly toolchains are tackling this problem.
18 |
19 | ### [Doom 3 running in the browser](http://www.continuation-labs.com/projects/d3wasm/)
20 |
21 | CONTINUATION-LABS.COM
22 |
23 | This is an experimental project to port the Doom 3 Engine to WebAssembly. This blog post is full of technical details, but for most people the technical details don't mater, the demo is just plain awesome!
--------------------------------------------------------------------------------
/_posts/2019-02-22-issue-69.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #69"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WebAssembly Troubles part 4: Microwasm](http://troubles.md/posts/microwasm/)
8 |
9 | TROUBLES.MD
10 |
11 | If you [read issue 67 of WasmWeekly](https://wasmweekly.news/issue-67/) you'll recall an excellent four part series that critiqued WebAssembly and some of the language design decisions, for example highlighting that it isn't strictly speaking a stack-machine. In this latest post the author proposes a fix for the issue, microwasm, which is a subset of wasm, removing features such as locals and block return values. They have also provided an [implementation of microwasm within lightbeam](https://github.com/CraneStation/lightbeam/pull/18), Mozilla's single-pass wasm to native compiler. Exciting stuff!
12 |
13 | ### [Practice your Go WebAssembly with a Game](https://medium.com/@didil/practice-your-go-webassembly-with-a-game-7195dabbfc44)
14 |
15 | MEDIUM.COM
16 |
17 | Elevator Saga is an online programming game where you transport people up and down lifts using JavaScript code. This blog post describes how the author ported the game to Go, with the code sent server-side and returned as a wasm module.
18 |
19 | ### [go-vdom-wasm](https://github.com/mfrachet/go-vdom-wasm)
20 |
21 | GITHUB.COM
22 |
23 | Every language needs a virtual DOM! And now Go has one, this is an early-stage implementation with many TODOs remaining - why not help out? It could certainly do with a JSX style parser.
24 |
25 | ### And Finally ...
26 |
27 | Fancy a challenge? then why not have a go at porting this [funky fluid simulation to WebAssembly](https://twitter.com/WasmWeekly/status/1098831032709795840)?
28 |
--------------------------------------------------------------------------------
/_posts/2019-02-29-issue-70.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #70"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WAS (not WASM)](https://github.com/jedisct1/was-not-wasm)
8 |
9 | GITHUB.COM
10 |
11 | WebAssembly is designed to be secure, yet doesn't really offer many tools for memory management, no allocator, no garbage collector, just a block of linear memory. As a result, when you compile a language to WebAssembly it often needs to add its own memory management library to the module code, this can result in security issues. This project provides a 'hostile' allocator, one which protects against buffer overflows.
12 |
13 | ### [Running WebAssembly 100x faster 🔥](https://medium.com/wasmer/running-webassembly-100x-faster-%EF%B8%8F-a8237e9a372d)
14 |
15 | MEDIUM.COM
16 |
17 | Wasmer is a standalone WebAssembly runtime, and one of it's goals is to be fast! This blog post looks at how they introduced caching in order to significantly improve performance.
18 |
19 | ### [The Explosive Implications of Tron’s Move to WebAssembly](https://u.today/the-explosive-implications-of-trons-move-to-webassembly)
20 |
21 | U.TODAY
22 |
23 | WebAssembly is really starting to take off on the blockchain. This post looks at the advantages it offers, and why Tron is moving to WebAssembly too.
24 |
25 | ### And Finally ...
26 |
27 | Should WebAssembly have its own package manager? Most people [seem to think not](https://github.com/open-source-ideas/open-source-ideas/issues/159)!
--------------------------------------------------------------------------------
/_posts/2019-03-08-issue-71.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #71"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Real time strange attractors](https://github.com/BrutPitt/glChAoS.P)
8 |
9 | GITHUB.COM
10 |
11 | This project is awesome - It plots strange attractors, fractals, 3D hyper-complex fractals (whatever they are!), all in realtime using millions of particles. The screenshots look just amazing. All the sourcecode is there, a great demonstration of the power of WebAssembly.
12 |
13 | ### [An easy programming language, built with Wasm](https://easyprog.online/ide/)
14 |
15 | EASYPROG.ONLINE
16 |
17 | This project provides an easy-to-use online programming language, for educational purposes, built with WebAssembly. An interesting project, though unfortunately not open source.
18 |
19 | Interestingly I'll be at Full Stack NYC in May talking about exactly this topic, [how to create your own compile-to-wasm language](https://skillsmatter.com/conferences/11077-fullstack-nyc-2019-the-conference-on-javascript-node-and-internet-of-things#program) - Colin E. (editor).
20 |
21 | ### [SIMD in Wasm](https://brionv.com/log/2019/03/03/simd-in-webassembly-tales-from-the-bleeding-edge/)
22 |
23 | BRIONV.COM
24 |
25 | SIMD stands for Single Instruction Multiple Data, a technique that allows vector style processing, e.g. adding one vector to another. These instructions are are supported by all modern CPUs. This is an important up-coming feature that will give WebAssembly a further performance boost. This blog takes an early look.
26 |
27 | ### And Finally ...
28 |
29 | React hooks are all the rage. You can now [React hook your wasm](https://github.com/mbasso/react-wasm) (whatever that means!)
30 |
--------------------------------------------------------------------------------
/_posts/2019-03-15-issue-72.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #72"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [pyckitup - a Python game engine for the Web](https://pickitup247.com/pyckitup.html#pyckitup)
8 |
9 | PICKITUP247.COM
10 |
11 | This project uses the popular RustPython interpreter (i.e. a Python interpreter written in Rust), which is compiled to WebAssembly. This is combined with quicksilver, a simple Rust 2D game engine, to allow you to create Python games that run in the browser.interpreter to quicksilver game engine.
12 |
13 | ### [Assembling the Future of Smart Contracts with Sawtooth Sabre](https://www.hyperledger.org/blog/2019/02/08/assembling-the-future-of-smart-contracts-with-sawtooth-sabre)
14 |
15 | HYPERLEDGER.ORG
16 |
17 | Blockchain and the bitcoin currency it supports perform relatively simple transactions on the blockchain's distributed ledger. Smart contracts take this concept a step further, allowing the encoding of much more complex contract logic onto a distributed ledger - resulting an immutable contract. WebAssembly is proving to be a very popular option for contract engines, allowing contracts to be written in a wide range of languages on the 'secure' wasm runtime.
18 |
19 | ### [Writing a wasm loader for Ghidra](https://habr.com/en/post/443318/)
20 |
21 | HABR.COM
22 |
23 | Ghidra is a tool, that the NSA recently open sourced, for reverse engineering. This blog post takes a look at creating a wasm loader for Ghidra, allowing it to reverse engineer WebAssembly.
24 |
25 | ### And Finally ...
26 |
27 | For the good of our community, don't [be that guy](https://twitter.com/WasmWeekly/status/1105557397823725570).
--------------------------------------------------------------------------------
/_posts/2019-03-22-issue-73.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #73"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Programming using WebAssembly - Drawing pixel graphics on an HTML canvas](https://medium.com/@alexc73/programming-using-web-assembly-c4c73a4e09a9)
8 |
9 | MEDIUM.COM
10 |
11 | While WebAssembly has been designed as a compilation target for higher-level languages there are those of us (myself included!) who quite enjoy writing WebAssembly by hand. This post looks at creating a simple Mandelbrot set fractal using hand-cranked WebAssembly code.
12 |
13 | ### [Lys - a language that compiles to WebAssembly](https://lys-lang.dev/)
14 |
15 | LYS-LANG.DEV
16 |
17 | Another one for the low-level enthusiasts, Lys is an entirely new compile-to-wasm language. It started as an experiment in learning WebAssembly, but has resulted in quite a rich language (functional, pattern matching, structs, ...). It's not clear if this is just a personal experiment, or whether Lys is looking to become a viable development language - either way, it's cool 😎
18 |
19 | ### [How to build a crypto isomorphic library with Javascript and WebAssembly](https://medium.com/cubbit/how-to-build-a-crypto-isomorphic-library-with-javascript-and-webassembly-6fc7aa708437)
20 |
21 | MEDIUM.COM
22 |
23 | This article is a very entertaining read, starting with a long intro looking at the history of crypto, long before the web; and ending with Enigma, a crypto engine for the web.
24 |
25 | ### And Finally ...
26 |
27 | You can use WebAssembly [try to out F# in your browser](https://tryfsharp.fsbolero.io/).
28 |
--------------------------------------------------------------------------------
/_posts/2019-03-29-issue-74.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #74"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Standardizing WASI: A system interface to run WebAssembly outside the web](https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/)
8 |
9 | MOZILLA.ORG
10 |
11 | There has been a lot of interest in using WebAssembly outside of the browser, especially for blockchain (as a smart contracts engine), and cloud, where the secure and lightweight nature of the runtime makes it ideal for serverless / edge computing. However, WebAssembly itself lacks any form of system integration (filesystem, I/O, resources) which means each one of these 'out of browser' applications has to create the interface from scratch. That is until now! WASI is a standard system interface, which will make it much easier to develop these novel applications.
12 |
13 | ### [npm and WASM: how can we help?](https://www.youtube.com/watch?v=iRV4VemBMzc)
14 |
15 | YOUTUBE.COM
16 |
17 | Laurie Voss, co-founder and 'Chief Data Officer' at npm, has a lot of data at his fingertips. I this talk Laurie dives into the 1000s of WebAssembly packages on npm to see what we, the community, are building.
18 |
19 | ### [Announcing Lucet: Fastly’s native WebAssembly compiler and runtime](https://www.fastly.com/blog/announcing-lucet-fastly-native-webassembly-compiler-runtime)
20 |
21 | FASTLY.CO
22 |
23 | With WASI we have a standard system interface, and with Lucet, we have an implementation! Fastly are a CDN / edge computing company who have been exploring the use of WebAssembly as a fast and secure VM for your code. They have taken Cranelift, the FireFox WebAssembly JIT compiler, and added the WASI interfaces, with the code ready for you to use on GitHub.
24 |
25 | ### And Finally ...
26 |
27 | With the announcement of WASI, the Docker co-founder [announced that](https://twitter.com/solomonstre/status/1111004913222324225) "If WASM+WASI existed in 2008, we wouldn't have needed to created Docker." - Wow!
--------------------------------------------------------------------------------
/_posts/2019-04-07-issue-75.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #75"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Migrating from wasmi to Wasmer](https://medium.com/wasmer/php-ext-wasm-migrating-from-wasmi-to-wasmer-4d1014f41c88)
8 |
9 | MEDIUM.COM
10 |
11 | php-ext-wasm is an extension that allows you to run WebAssembly code from PHP. Previously it used wasmi, an open source WebAssembly interpreter, to execute modules. This post looks at how the performance of this extension was improved by 29x by moving to wasmer / Cranelift.
12 |
13 | ### [Benchmarking WebAssembly Runtimes](https://medium.com/wasmer/benchmarking-webassembly-runtimes-18497ce0d76e)
14 |
15 | MEDIUM.COM
16 |
17 | And yet more wasmer ... this post compares the performance of various 'back ends' including a single-pass compiler (formerly named Dynasm), Cranelift and LLVM.
18 |
19 | ### [Transport Tycoon Deluxe (TTD) - Online](http://epicport.com/en/ttd)
20 |
21 | EPICPORT.COM
22 |
23 | Transport Tycoon was a business simulation game launched in 1994, there have been a number of editions launched since, including OpenTTD an open source reverse-engineered version of the game. Thanks to WebAssembly, you can now play it online!
24 |
25 | ### [Citybound](https://aeplay.org/citybound)
26 |
27 | AEPLAY.ORG
28 |
29 | Citybound is a city building game that uses microscopic models to vividly simulate the organism of a city arising from the interactions of millions of individuals. It is open source, written in Rust, and now runs on the web, thanks to WebAssembly.
30 |
31 | ### And Finally ...
32 |
33 | Is [SMULX a Pokenom name, or a Cranelift instruction](https://twitter.com/bnjbvr/status/1113792574353965061)?
34 |
--------------------------------------------------------------------------------
/_posts/2019-04-15-issue-76.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #76"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [How We Used WebAssembly To Speed Up Our Web App By 20X (Case Study)](https://www.smashingmagazine.com/2019/04/webassembly-speed-web-app/)
8 |
9 | SMASHINGMAGAZINE.COM
10 |
11 | At the moment it's probably fair to say that WebAssembly is mostly being used for experimentation, we're exploring where the technology sits within the web platform and beyond. That's why articles like this, where WebAssembly is being used for real-world application, are such a good read. Here the author describes how WebAssembly was used to speed up a DNA sequencing app using C / Emscripten.
12 |
13 | ### [Compiling C to WebAssembly using clang/LLVM and WASI](https://00f.net/2019/04/07/compiling-to-webassembly-with-llvm-and-clang/)
14 |
15 | 00F.NET
16 |
17 | WASI (The WebAssembly System Interface), which was released just a few weeks ago, is a standard interface for accessing operating-system-like features such as clocks, filesystems, random numbers and more. The goal of WASI is to make WebAssembly portable across the many out-of-browser applications. This practical little article shows you how to build a WebAssembly module using WASI and the newly released LLVM version 8.
18 |
19 | ### [WebAssembly for Javascript Developers, by Aaron Turner](https://www.youtube.com/watch?v=ZlL1nduatZQ&feature=youtu.be)
20 |
21 | YOUTUBE.COM
22 |
23 | Aaron Turner is the developer behind WasmBoy, a WebAssembly GameBoy Color emulator. Not only was Aaron an early adopter of WebAssembly, this emulator is also written in AssemblyScript, an experimental project for compiling TypeScript to WebAssembly.
24 |
25 | ### And Finally ...
26 |
27 | The author of "Level Up with WebAssembly" shares how he [found the 200 hours needed to write this book](https://www.producthunt.com/stories/how-i-wrote-a-technical-book-in-under-200-hours).
--------------------------------------------------------------------------------
/_posts/2019-04-19-issue-77.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #77"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Pyodide: Bringing the scientific Python stack to the browser](https://hacks.mozilla.org/2019/04/pyodide-bringing-the-scientific-python-stack-to-the-browser/)
8 |
9 | MOZILLA.ORG
10 |
11 | In what is probably one of the most impressive WebAssembly demos, the Mozilla team have ported an entire Python data science stack to the browser. This impressive demo uses Emscripten to compile a Python interpreter into WebAssembly. The end result is between 1x-12x slower than native, depending on the benchmark that is executed. Despite the slowdown, the end result is really quite useable. This is probably one of the most practical, and impressive, WebAssembly applications out there.
12 |
13 | ### [Solving the structured control flow problem once and for all](https://medium.com/leaningtech/solving-the-structured-control-flow-problem-once-and-for-all-5123117b1ee2)
14 |
15 | MEDIUM.COM
16 |
17 | WebAssembly control flow includes loops and branches (based on stack depth), but doesn't allow you to jump to an arbitrary location, i.e. it lacks a 'goto' construct. So, how do you compile a language which supports 'goto' into WebAssembly? This blog post explores the problem in detail.
18 |
19 | ### [wag - a WebAssembly compiler written in Go](https://github.com/tsavola/wag)
20 |
21 | GITHUB.COM
22 |
23 | This is a WebAssembly compiler, it takes wasm modules and compiles them to native machine code.
24 |
25 | ### [Porting Games to the Web with WebAssembly](https://medium.com/@robaboukhalil/porting-games-to-the-web-with-webassembly-70d598e1a3ec)
26 |
27 | MEDIUM.COM
28 |
29 | A brief article that looks at how to port an Asteroids game to WebAssembly using Emscripten. It also has a playable version online and the full sourcecode.
30 |
31 | ### And Finally ...
32 |
33 | WebAssembly was the [fifth most loved language](https://twitter.com/WasmWeekly/status/1116257019017740289) in a recent StackOverflow developer survey. I'm not sure how many of these respondents actually write WebAssembly?!
--------------------------------------------------------------------------------
/_posts/2019-05-03-issue-79.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #79"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [rusty-typescript](https://github.com/yever/rusty-typescript)
8 |
9 | GITHUB.COM
10 |
11 | Modern JavaScript development involves a surprising amount of tooling, with your code undergoing complex transformation, checks and tests. With WebAssembly we have the opportunity to make these tools, and the overall developer experience, faster. This project is a TypeScript transpiler, written in Rust, that aims to provide TS developers with faster tooling.
12 |
13 | ### [My First Wasmtime Experience in Windows 10](https://www.codepool.biz/first-wasmtime-experience-windows-10.html)
14 |
15 | CODEPOOL.BIZ
16 |
17 | WASI, the WebAssembly System Interface, was only announced one month ago. This brief blog post looks at how to use this interface with wasmtime, a standalone WebAssembly virtual machine.
18 |
19 | ### [draw-app - In browser drawing app built in rust / wasm](https://github.com/lynnagara/draw-app)
20 |
21 | GITHUB.COM
22 |
23 | This is a cool little Rust / WebAssembly demo, a browser-based drawing app. It makes use of web-sys for accessing the DOM APIs.
24 |
25 | ### And Finally ...
26 |
27 | Is it OK that [JavaScript developer tools are being re-written in Rust](https://twitter.com/WasmWeekly/status/1123095479603036160)? It seems that most people think 'yes'.
--------------------------------------------------------------------------------
/_posts/2019-05-10-issue-80.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #80"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Introducing .NET 5](https://devblogs.microsoft.com/dotnet/introducing-net-5/)
8 |
9 | MICROSOFT.COM
10 |
11 | The Blazor project, which allow you to run .NET code within a WebAssembly VM (currently in interpreted mode, Blazor compiles the .NET runtime to wasm), has gone from being an experiment to an officially part of the .NET roadmap in a very short space of time. WebAssembly is now signficant part of the .NET strategy - from this announcement, "There will be just one .NET going forward, and you will be able to use it to target Windows, Linux, macOS, iOS, Android, tvOS, watchOS and WebAssembly and more"
12 |
13 | ### [Running WASM Unikernels](https://nanovms.com/dev/tutorials/running-wasm-unikernels)
14 |
15 | NANOVMS.COM
16 |
17 | This blog post takes a simple "Hello World" app, compiles it to wasm using EmScripten, then runs it with Wasmer - a standalone WebAssembly runtime. The next step uses OPS to wrap this in a Unikernel, a specialised bare-bones VM that only includes the system libraries required for the code / runtime it is hosting. Cool!
18 |
19 | ### [Video: WebAssembly for Web Developers](https://www.youtube.com/watch?v=njt-Qzw0mVY&feature=youtu.be)
20 |
21 | YOUTUBE.COM
22 |
23 | Yes, that's right, WebAssembly for Web Developers - fans of Wasmer, Ethereum and Edge-Computing please look away! This is a general introduction to WebAssembly from Google IO 2019.
24 |
25 | ### [WebAssembly Micro Runtime](https://github.com/intel/wasm-micro-runtime)
26 |
27 | GITHUB.COM
28 |
29 | This project is a standalone wasm runtime written in C. Currently it interprets wasm modules, but AOT compilation is on the roadmap. With this project coming from Intel, it is almost certainly targeted at running WebAssembly on embedded / IoT devices.
30 |
31 | ### And Finally
32 |
33 | JavaScriptCore is [now available as a WebAssembly binary](https://twitter.com/mnt_io/status/1126100835304398851), via the wapm package manager, for wasmer - turning the tables on JavaScript!
--------------------------------------------------------------------------------
/_posts/2019-05-18-issue-81.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #81"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [SwiftWasm](https://swiftwasm.org/)
8 |
9 | SWIFTWASM.ORG
10 |
11 | Big news for Swift fans (you should be a fan, it's a great language!), there has been some significant progress made towards bringing Swift to WebAssembly. This webpage provides an online demo, and a link to the team's pull request against Apple's Swift repo.
12 |
13 | ### [1Password uses WebAssembly](https://blog.1password.com/1password-x-may-2019-update/)
14 |
15 | 1PASSWORD.COM
16 |
17 | I always love hearing about where WebAssembly has found its way into production code - currently this doesn't happen too often as the tooling for wasm is still very much in active development. In this blog post the 1Password team indicate a significant performance increase due to their move to WebAssembly for parts of their codebase.
18 |
19 | ### [How to build WebAssembly C# Apps with the Mono AOT and Windows Subsystem for Linux](https://platform.uno/how-to-build-webassembly-c-apps-with-the-mono-aot-and-windows-subsystem-for-linux/)
20 |
21 | PLATFORM.UNO
22 |
23 | Mono, the open source .NET runtime which is used in both Blazor and Uno, currently supports WebAssembly via an interpreted mode. To achieve this the .NET CLR itself is compiled to wasm and DLLs interpreted at runtime. Clearly this has some significant size and performance limitations. This blog post explores the experimental Ahead Of Time (AOT) compilation mode that will compile DLLs directly to wasm.
24 |
25 | ### [V8 release v7.5 - introduces WebAssembly implicit caching](https://v8.dev/blog/v8-release-75)
26 |
27 | V8.DEV
28 |
29 | WebAssembly is going to keep getting faster ... this post from the Chrome team introduces wasm module caching.
30 |
31 | ### And Finally ...
32 |
33 | A few of us have been having fun creating [old-school demos in hand-coded WebAssembly](https://twitter.com/ColinEberhardt/status/1128701985757253632) - why not join the fun? Aaron's latest creation goes a [step further combining WebAssembly and WASI](https://twitter.com/torch2424/status/1129089108322578432).
--------------------------------------------------------------------------------
/_posts/2019-05-24-issue-82.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #82"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Build your own WebAssembly Compiler](https://blog.scottlogic.com/2019/05/17/webassembly-compiler.html)
8 |
9 | SCOTTLOGIC.COM
10 |
11 | Have you ever wanted to build your own compiler? ... of course you have! This detailed article looks at how to create your own programming language that compiles to WebAssembly. It's an awesome must-read article. Although I am slightly biased, as I wrote it ;-)
12 |
13 | ### [Wasm on the Blockchain](https://avive.github.io/wasm_on_the_blockchain/#/)
14 |
15 | GITHUB.IO
16 |
17 | This free event in Berlin, June 8-9th, sounds awesome - it already has a packed agenda, with some amazing speakers from wasmer, Mozilla, Parity and more. Sounds like this is going to be a great (and free) gathering.
18 |
19 | ### [WebAssembly at eBay: A Real-World Use Case](https://www.ebayinc.com/stories/blogs/tech/webassembly-at-ebay-a-real-world-use-case/)
20 |
21 | EBAYINC.COM
22 |
23 | As I've mentioned before, I always enjoy reading about real-world applications of WebAssembly. This blog post, from the eBay team, looks at how they are using WebAssembly for barcode scanning, with some fantastic stats from A/B testing with real users. Their final solution, which 'races' three different algorithms is interesting - and has drawn some skepticism. Either way, fascinating reading.
24 |
25 | ### [Faster script loading with BinaryAST?](https://blog.cloudflare.com/binary-ast/)
26 |
27 | CLOUDFLARE.COM
28 |
29 | This article isn't actually about WebAssembly, instead it looks at BinaryAST, a mechanism for delivering JavaScript to the browser in AST format rather than text. Why should you read it? Because it addresses some of the same issues that WebAssembly does.
30 |
31 | ### And Finally ...
32 |
33 | More [hand-crafted wasm demos](https://twitter.com/binjimint/status/1131204705751773184)!
34 |
--------------------------------------------------------------------------------
/_posts/2019-05-31-issue-83.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #83"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Compiling C to WebAssembly without Emscripten](https://dassur.ma/things/c-to-webassembly/)
8 |
9 | DASSUR.MA
10 |
11 | Emscripten’s goal is to be a drop-in replacement for your off-the-shelf C/C++ compiler and make code that was not written for the web run on the web. To achieve this, Emscripten emulates an entire POSIX operating system for you, which results in a lot of (quite necessary) complexity and wasm / JS glue-code. This post looks at using the underlying compiler technology, LLVM, to create wasm modules without all the Emscripten overhead.
12 |
13 | ### [Introducing inNative - Run WebAssembly Outside The Sandbox at 95% Native Speed](https://innative.dev/news/introducing-innative/)
14 |
15 | INNATIVE.DEV
16 |
17 | InNative asks the question, "just how fast can WebAssembly go?". WebAssembly runs in a sandbox, within the wasm virtual machine. InNative takes a different approach, compiling wasm modules to native code, which is executed directly. And yes, it's fast! - I must admit, I'm not entirely sure what the use case for InNative is, but that doesn't mean it isn't cool!
18 |
19 | ### [Awesome Blazor](https://github.com/AdrienTorris/awesome-blazor)
20 |
21 | GITHUB.COM
22 |
23 | Awesome lists are community created and curated lists of projects, blog posts, sample projects and interesting information relating to specific technologies. This list focusses on Blazor, Microsoft C# to wasm technology. I must admit, I was surprised at just how long this list is! If you're interested in Blazor, you'll find a bucket-load of information here.
24 |
25 | ### And Finally ...
26 |
27 | A post that looks at [mixing WebGL, D3 with a sprinkle of WebAssembly](https://blog.scottlogic.com/2019/05/28/drawing-2d-charts-with-webgl.html). We have all the tech!
--------------------------------------------------------------------------------
/_posts/2019-06-07-issue-84.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #84"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Porting a Face Detector Written in C to WebAssembly](https://sod.pixlab.io/articles/porting-c-face-detector-webassembly.html)
8 |
9 | PIXLAB.IO
10 |
11 | This project really hits WebAsembly's sweet spot, making use of its ability to port performance intensive C++ algorithms to the web. In this case a real-time image processing algorithm for face detection is compiled to WebAssembly using Emscripten.
12 |
13 | ### [Announcing the fastest WebAssembly runtime for Go: wasmer](https://medium.com/wasmer/announcing-the-fastest-webassembly-runtime-for-go-wasmer-19832d77c050)
14 |
15 | MEDIUM.COM
16 |
17 | Go already has a few different wasm runtime, which allow you to embed and execute wasm modules from within your Go application. However, these are currently interpreters, effectively emulating the WebAssembly Virtual Machine. This post announces a module which embed wasmer within Go - giving a ~100 boost in performance!
18 |
19 | ### [Improved WebAssembly Support is Coming to Node.js](https://www.joyent.com/blog/improved-wasm-support-coming-to-node)
20 |
21 | JOYENT.COM
22 |
23 | This post introduces experimental support for wasm imports, where you can directly import wasm just like ECMA modules. It also discusses the WASI interface, which is on its way.
24 |
25 | ### And Finally ...
26 |
27 | One for the Microsoft / Silverlight devs, and article that mourns the history of Silverlight, but [sees new hope in WebAssembly](https://www.infoq.com/articles/webassembly-blazor/).
--------------------------------------------------------------------------------
/_posts/2019-06-28-issue-86.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #86"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Introducing Waxosuit](https://medium.com/@KevinHoffman/introducing-waxosuit-6ad754b48ed9)
8 |
9 | MEDIUM.COM
10 |
11 | As well as writing Programming WebAssembly with Rust, Kevin Hoffman is busy creating Waxosuit - a cloud-native runtime for WebAssembly. Since WebAssembly emerged last year a number of people have seen its potential as a cloud runtime environment, with Fastly and Cloudflare allowing you to run WebAssembly code on their edge networks. Waxosuit uses the wasmer runtime, to create a fully-featured cloud-native runtime suitable for enterprise
12 |
13 | ### [WebAssembly port of Fluid Simulation for Video Game](https://www.buildingphysicsonline.com/MjgIntelFluidDemo/webgl.html#)
14 |
15 | BUILDINGPHYSICSONLINE.COM
16 |
17 | This neat project takes a fluid simulation engine and ports it to the web using WebAssembly. The overall effect is stunning! It works very well on mobile devices too.
18 |
19 | ### [Wasm on the blockchain conference videos](https://www.youtube.com/playlist?list=PL5BszCNLCnMOt7wCU9CmTaaFPP3-cIKmR)
20 |
21 | YOUTUBE.COM
22 |
23 | Earlier this month a small conference was held in Berlin to "Explore the key topics involved in building a modern blockchain smart contracts execution environment based on wasm technology" - the videos from this event have just been published, and you're in for a treat, about 14 hours of watching!
24 |
25 | ### [A piece of Windows 10 is now running on WebAssembly](https://platform.uno/a-piece-of-windows-10-is-now-running-on-webassembly-natively-on-ios-and-android/)
26 |
27 | PLATFORM.UNO
28 |
29 | A few months ago Microsoft open sourced the calculator app. The Platform Uno team have used this opportunity to port it to C#, allowing it to run on iOS, Android, natively - and with WebAssembly, they can run it on the web also.
30 |
31 | ### And Finally ...
32 |
33 | Q: How does WebAssembly facilitate less hackable/more trustless in-browser code execution?
34 | A: [It doesn't!](https://stackoverflow.com/questions/56766674/how-does-web-assembly-facilitate-less-hackable-more-trustless-in-browser-code-ex/56766887#56766887)
35 |
--------------------------------------------------------------------------------
/_posts/2019-07-05-issue-87.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #87"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Video: Evolving Wasm into a proper misnomer](https://www.youtube.com/watch?v=pq-Pa2Fj4nE)
8 |
9 | YOUTUBE.COM
10 |
11 | Last week's WasmWeekly newsletter linked to the "wasm on the blockchain" conference videos, however, the content in these videos is so good they deserve highlighting on multiple occasions. In this video Andreas Rossberg, one of the great minds behind WebAssembly, gives a detailed and insightful look at various wasm features that are currently in development.
12 |
13 | ### [The h Programming Language](https://christine.website/blog/h-language-2019-06-30)
14 |
15 | CHRISTINE.WEBSITE
16 |
17 | The 'h' programming language is a somewhat bizarre esoteric language that does nothing other than print the letter 'h', or a single quote. Despite the somewhat strange nature of this language, it is a great way to learn more about how compilers work, with the language targeting WebAssembly.
18 |
19 | ### [Emscripten and the LLVM WebAssembly backend](https://v8.dev/blog/emscripten-llvm-wasm)
20 |
21 | V8.DEV
22 |
23 | Emscripten is the 'original' WebAssembly compiler, with the original 'fastcomp' compiler backend being used to emit asmjs (a pre-cursor to WebAssembly) back in 2013. This blog post details the new LLVM backend which yields a whole host of performance improvements.
24 |
25 | ### [Porting Redis to WebAssembly with Clang/WASI](https://medium.com/fluence-network/porting-redis-to-webassembly-with-clang-wasi-af99b264ca8)
26 |
27 | MEDIUM.COM
28 |
29 | Some fantastic insights for anyone who is embarking on migrating a large C/C++ application to WebAssembly.
30 |
31 | ### And Finally ...
32 |
33 | Who loves Tetris? Here's a [clone written in Zig](https://raulgrell.github.io/tetris/)
34 |
--------------------------------------------------------------------------------
/_posts/2019-07-12-issue-88.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #88"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Wasm for Blockchain 2019](https://medium.com/nearprotocol/wasm-for-blockchain-2019-d093bfeb6133)
8 |
9 | MEDIUM.COM
10 |
11 | "14 hours of content compressed into a 20 min read"
12 |
13 | This is the third issue of WasmWeekly that has focussed on the recent wasm for Blockchain event in Berlin, and quite righty so, it has generated some fantastic and insightful content form some of the thought leaders in both wasm and blockchain. The conference videos have already been published in their entirety, giving 20 hours of content. This post provides a reasonably detailed summary of each video, and is a fantastic resource. Nice work Maksym, you're a star!
14 |
15 | ### [Training a Neural Network with Wasm and Rust](http://juggernaut.rs/demo/)
16 |
17 | JUGGERNAUT.RS
18 |
19 | Neural Networks are a form of machine learning, where a network of simple neurons are trained to recognise patterns in data. This website demonstrates Juggernaut, a Rust Neural Network library, which has been compiled to WebAssembly, allowing you to play with it online.
20 |
21 | ### [The WebAssembly Go Playground](https://ccbrown.github.io/wasm-go-playground/)
22 |
23 | GITHUB.IO
24 |
25 | This website "doe s exactly what it says on the tin", it's an online playground for running Go in the browser. Go forth and play! (or dig into the sourcecode if you are that way inclined).
26 |
27 | ### And Finally ...
28 |
29 | Adobe are [hiring engineers to port Photoshop to WebAssembly](https://twitter.com/WasmWeekly/status/1149006104782934017)!
30 |
--------------------------------------------------------------------------------
/_posts/2019-07-19-issue-89.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #89"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Faster Fractals with Multi-Threaded WebAssembly](https://blog.scottlogic.com/2019/07/15/multithreaded-webassembly.html)
8 |
9 | SCOTTLOGIC.COM
10 |
11 | When WebAssembly was released a couple of years ago it was an MVP (Minimal Viable Product), one significant feature that was missing from the MVP was threads. The WebAssembly threads proposal is now quite mature and available in both the tooling and Chrome. This blog post explores the internals of this feature, the new instruction set, and how it supports multi-threaded applications.
12 |
13 | ### [A CHIP-8 Emulator with C and WebAssembly](https://shlomnissan.github.io/chip8-wasm/)
14 |
15 | GITHUB.IO
16 |
17 | CHIP-8 was a virtual machine, invented in the 1970s, to allow video games to run across multiple microcomputers. It has a very simple architecture and instruction set, making it an ideal machine for having a go at writing an emulator. This one is written in C, and compiled to WebAssembly with Emscripten - the sourcecode is all on GitHub.
18 |
19 | ### [Not So Fast: Analyzing the Performance of WebAssembly vs. Native Code](https://www.usenix.org/system/files/atc19-jangda.pdf)
20 |
21 | USENIX.ORG
22 |
23 | Reliable performance measurements are tricky - it's all too easy to make measurements based on an overly simplistic or specific algorithm. This scientific paper presents a thorough study of WebAssembly performance using the SPEC CPU test suite. And this findings? As the name suggests, WebAssembly is "not so fast" when compared to native. Personally, I don't see that as a big issues - there are other, much more compelling reasons for using WebAssembly than just performance.
24 |
25 | ### And Finally ...
26 |
27 | A great Twitter thread that asks ["What's the difference between WebAssembly and the JVM / Dart?"](https://twitter.com/Bennett000/status/1150895175817924608).
--------------------------------------------------------------------------------
/_posts/2019-08-16-issue-91.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #91"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Video: WebAssembly: status, WebIDL Bindings, and roadmap](https://vimeo.com/350135351#webassembly)
8 |
9 | VIMEO.COM
10 |
11 | The I/O capabilities of the WebAssembly virtual machine are very limited, making it a challenge to efficiently interact with the host environment, for example, manipulating the DOM. This fantastic talk looks at how the WebAssembly specification has been evolving through host bindings, reference types and more recently WebIDL bindings, in order to make this much easier in the future. Once this work is complete, you can expect WebAssembly adoption to increase significantly!
12 |
13 | ### [Video: WebAssembly on the Server - How System Calls Work](https://www.youtube.com/watch?v=G4l8RX0tA3E&feature=youtu.be)
14 |
15 | YOUTUBE.COM
16 |
17 | Another video that looks at the I/O capabilities of WebAssembly, but this time from the perspective of server-side WebAssembly. In this talk Christine talks about the challenges and introduces Dagger, a stream-based I/O layer for wasm VMs.
18 |
19 | ### [Analysis of Google Keep WebAssembly module](https://webassembly-security.com/google-keep-webassembly-module-analysis/)
20 |
21 | WEBASSEMBLY-SECURITY.COM
22 |
23 | There aren't that many people using WebAssembly in production yet, although one notable usage is within GoogleKeep, a cross-platform note-taking app. This blog post picks apart the WebAssembly module used by this app, finding out how it was built, locating some shaders and various other bits of information.
24 |
25 | ### And Finally ...
26 |
27 | We're all going to be rich! [WebAssembly is the 7th highest paid programming language](https://learnworthy.net/highest-paid-programming-languages-in-2019/)! 🤔
28 |
--------------------------------------------------------------------------------
/_posts/2019-09-06-issue-94.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #94"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [The Three Eggs in a Distributed Basket: Wasm, Blockchain, and Reputation](https://hackernoon.com/the-three-eggs-in-a-distributed-basket-wasm-blockchain-and-reputation-296892cdd77c)
8 |
9 | HACKERNOON.COM
10 |
11 | WebAssembly is gaining traction for various applications out-of-browser - with blockchain being one of them. This brief article neatly summarised the significance of two technologies, WebAssembly and Blockchain, and a concept, Reputation. When all three combine, distributed application could really take off.
12 |
13 | ### [WebAssembly Modules in Rust: An Introduction](https://medium.com/@rossbulat/webassembly-modules-an-introduction-5554b8982402)
14 |
15 | MEDIUM.COM
16 |
17 | The Rust community has some of the most advanced WebAssembly tooling, thanks to the team at Mozilla. This tutorial gives a thorough introduction to the tools and ecosystem, from first steps to publishing your finished module.
18 |
19 | ### [Debugging WebAssembly Outside of the Browser](https://hacks.mozilla.org/2019/09/debugging-webassembly-outside-of-the-browser/)
20 |
21 | MOZILLA.ORG
22 |
23 | Talking of Mozilla, this blog post and video announces some further tooling improvements. Currently debugging support for WebAssembly, i.e. being able to set a breakpoint against a program running on the WebAssembly VM and step through execution in the source language (i.e. Rust, AssemblyScript, C++) is limited. Mozilla are working hard to solve this problem.
24 |
25 | ### [Building WebAssembly Apps in Rust using Smithy](https://www.youtube.com/watch?v=3Z5JpQMpN7Q)
26 |
27 | YOUTUBE.COM
28 |
29 | Smithy is a framework for writing web applications entirely in Rust, allowing you to manipulate the DOM and handle events without a single line of JavaScript. This video, from the frameworks creator, introduces the key concepts.
30 |
--------------------------------------------------------------------------------
/_posts/2019-09-20-issue-95.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #95"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Announcing Uno Platform 2.0](https://platform.uno/announcing-uno-platform-2-0/)
8 |
9 | PLATFORM.UNO
10 |
11 | The Windows UI stack, which uses C# and XAML, has a big following in the development community. The team at Uno have been working to make this stack a viable option for native mobile, desktop and web development, using WebAssembly (for web). At their recent conference (UnoConf) they made a number of announcements, including Xamarin.Forms support for WebAssembly, SkiaSharp (a cross platform graphics framework), and hot-reload. It's great to see a company really investing in WebAssembly.
12 |
13 | ### [Creating the WebAssembly version of Superpowered Audio](https://superpowered.com/web-assembly-audio-javascript-web-audio)
14 |
15 | SUPERPOWERED.COM
16 |
17 | And here's another company that are really investing in WebAssembly. Superpowered is a cross-platform audio SDK, with the web version powered by WebAssembly. This blog post describes some of the challenges they met in creating the web version of their SDK.
18 |
19 | ### [Hypermint](https://github.com/bluele/hypermint)
20 |
21 | GITHUB.COM
22 |
23 | This is a Tendermint-based blockchain that supports WebAssembly. Add it to the long list of blockchains using a WebAssemblyVM, Ethereum (eWASM), Perlin, Tron, EOS, ...
24 |
25 | ### [Video: Native Web Apps: React, JS & WebAssembly to rewrite native apps](https://www.youtube.com/watch?v=lttAKhlKuyM)
26 |
27 | YOUTUBE.COM
28 |
29 | Can React and JavaScript compete with native toolkits when it comes to making super complex, heavy desktop apps? Can we go further and create better-than-native applications? 🤔 in this JSConf presentation Florian talks about why he is using WebAssembly for game making software.
30 |
31 | ### And finally ...
32 |
33 | Will WebAssembly replace JavaScript? Of course not, but [people gonna keep askin'](https://datafloq.com/read/competitor-siblings-webassembly-replace-javascript/6821)
34 |
--------------------------------------------------------------------------------
/_posts/2019-09-27-issue-96.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #96"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [The Blazor Bet](https://odetocode.com/blogs/scott/archive/2019/09/24/the-blazor-bet.aspx)
8 |
9 | ODETOCODE.COM
10 |
11 | This week at the .NET Conference Microsoft announced that Blazor (their WebAssembly powered UI framework) would move from 'preview' to full production release in May 2020. A big step for this relatively new framework. Interestingly Blazor has two modes of operation, client-side using WebAssembly, and server-side where events and DOM updates are streamed using SignalR. This blog post takes a critical look at both techniques.
12 |
13 | ### [WebAssembly Isolation with Tyler McMullen](https://softwareengineeringdaily.com/2019/09/25/webassembly-isolation-with-tyler-mcmullen/)
14 |
15 | SOFTWAREENGINEERINGDAILY.COM
16 |
17 | Isolation is an important concept, it allows different software applications or processes to execute without interfering with each other - it is a critical component in ensuring security. This concept crops up everywhere, from Docker to the Chrome Sandbox. This podcast discusses how WebAssembly allow for isolated workloads, which is one of the reasons Fastly uses it as their runtime for cloud functions.
18 |
19 | ### [WebAssembly Audio Experiment](https://petersalomonsen.com/webassemblymusic/livecodev1/?gist=ea73551e352440d5f470c6af89d7fe7c)
20 |
21 | PETERESALOMONSEN.COM
22 |
23 | This super fun and funky audio experiment creates synthesised music using WebAssembly, written in AssemblyScript.
24 |
25 | ### [Libc++ 9.0.0 Release](https://releases.llvm.org/9.0.0/projects/libcxx/docs/ReleaseNotes.html)
26 |
27 | LLVM.ORG
28 |
29 | The latest release of Libc++ (The C++ standard library) provides support for WASI - the WebAssembly System Interface. What is WASI I hear you ask? Good question! It is a standard interface that adds various I/O capabilities to WebAssembly, making it a much more versatile runtime.
30 |
31 | ### And finally ...
32 |
33 | Wikipedia was wrong about WebAssembly, so [we fixed it](https://twitter.com/WasmWeekly/status/1176529722735562754)!
34 |
--------------------------------------------------------------------------------
/_posts/2019-10-04-issue-97.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #97"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WebAssembly Modules in Rust: Syntax Deep Dive](https://medium.com/@rossbulat/webassembly-modules-in-rust-syntax-deep-dive-dbe18792a084)
8 |
9 | MEDIUM.COM
10 |
11 | Rust has a fantastic WebAssembly ecosystem and this in-depth article covers it in detail. It includes the using Cargo and conditional compilation to include a WebAssembly specific debugging tool for the browser, the use of Foreign Function Interfaces and how Rust deals with asynchronous functions and Javascript Promises. So much good stuff!
12 |
13 | ### [OS](https://github.com/tomaka/os)
14 |
15 | GITHUB.COM
16 |
17 | The name doesn't give much away! This is an experiment to build an operating-system-like environment where executables are all in WASM and are loaded from some IPFS-like (InterPlanetary File System) decentralized network. It is another experiment where WebAssembly is much more deeply integrated into ring 0.
18 |
19 | ### [awesome-wasm-runtimes](https://github.com/appcypher/awesome-wasm-runtimes)
20 |
21 | GITHUB.COM
22 |
23 | WebAssembly was originally designed for the web (there's a clue in the name), and as a result, the early WebAssembly runtimes existing within the browser. However, as the community has woken up to the potential of WebAssembly running outside of the web, a whole family of independent runtimes have come into existence.
24 |
25 | ### [WebAssembly: C++ and WebGL for js13k game jam](https://www.namekdev.net/2019/09/webassembly-cpp-and-webgl-for-js13k-game-jam/)
26 |
27 | NAMEKDEV.NET
28 |
29 | The js13k game jam is an online competition where people compete to write the best game they can in just 13kilobytes of JavaScript. In this post Namek shares his experience of trying to put together an entry using C++ and WebAssembly.
30 |
31 | ### [Running WASI in Javascript with Wasmer-JS](https://medium.com/wasmer/wasmer-js-9a53e837b80)
32 |
33 | MEDIUM.COM
34 |
35 | WebAssembly System Interfaces (WASI) is an exciting new specification that allows running POSIX-like applications anywhere - this post introduces Wasmer-JS, which allows WASI modules to run in the browser and Node.
36 |
--------------------------------------------------------------------------------
/_posts/2019-11-01-issue-99.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #99"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Diving into Ethereum's Virtual Machine(EVM)](https://hackernoon.com/diving-into-ethereums-virtual-machine-the-future-of-ewasm-wrk32iy)
8 |
9 | HACKERNOON.COM
10 |
11 | WebAssembly is bringing the promise of multi-language support to smart contracts running on the blockchain. Ethereum, which is the largest blockchain that supports smart contracts, are planning to move to WebAssembly at some point towards the end of next year. That's amazing news for wasm! This blog post gives a great introduction to the Ethereum virtual machine and the impact these changes are going to make.
12 |
13 | ### [Wasienv: WASI Development Toolchain for C/C++](https://medium.com/wasmer/wasienv-wasi-development-workflow-for-humans-1811d9a50345)
14 |
15 | MEDIUM.COM
16 |
17 | Tooling for WebAssembly is moving at quite a pace, and as a result, it can be quite challenging to find, install and configure all the tools required. Wasienv is a handy all-in-one toolchain for C/C++ devs. Useful stuff!
18 |
19 | ### [The rustsim organization](https://rustsim.org/index.html)
20 |
21 | RUSTSTIM.ORG
22 |
23 | WebAssembly is great for algorithms, number crunching and numeric simulations. This organisation is collecting together a number of libraries, including fluid simulation and physics engines - all written in Rust and targeting WebAssembly.
24 |
25 | ### [A journey of multithreading using WebAssembly](https://www.youtube.com/watch?v=vc5wHbUfEto)
26 |
27 | YOUTUBE.COM
28 |
29 | Multithreading is going to significantly extend the usefulness and potential of WebAssembly. This video provides a great intro into the specification and how it works.
30 |
31 | ### And Finally
32 |
33 | Do you want to help put WebAssembly in your washing machine? Sure you do - [wasmachine is looking for contributors](https://twitter.com/WasmWeekly/status/1188814942583033856).
--------------------------------------------------------------------------------
/_posts/2019-11-29-issue-102.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #102"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WebAssembly on the Blockchain and JavaScript Smart Contracts](https://blog.scottlogic.com/2019/11/26/webassembly-on-the-blockchain.html)
8 |
9 | SCOTTLOGIC.COM
10 |
11 | WebAssembly, despite the name, is a universal runtime that is finding traction on a number of platforms beyond the web. This blog post explores one such example, the use of WebAssembly as a smart contract engine on the blockchain. It takes a look at NEAR protocol, a blockchain with good AssemblyScript support, and creates a simple meetup-style event website with ticket allocation governed by a smart contract written in JavaScript.
12 |
13 | ### [Running WebAssembly on ARM](https://medium.com/wasmer/running-webassembly-on-arm-7d365ed0e50c)
14 |
15 | MEDIUM.COM
16 |
17 | Why is running wasm on ARM important you might ask? ARM chips are optimised for low power environments, and tend to be used for phones, IoT devices and for edge computing. Clearly is important that we can run WebAssembly in these places!
18 |
19 | ### [Made with WebAssembly](https://madewithwebassembly.com/)
20 |
21 | MADEWITHWEBASSEMBLY.COM
22 |
23 | This is a fantastic answer to the question - who's using WebAssembly? a comprehensive list of products, apps and projects that use this technology. I'm sure this list will grow rapidly over time!
24 |
25 | ### [Using WebAssembly With CSP Headers](https://www.aaron-powell.com/posts/2019-11-27-using-webassembly-with-csp-headers/)
26 |
27 | AARON-POWELL.COM
28 |
29 | CSP - Content Security Policy Headers - are a way to improve the overall security of your website, reducing the risk of cross-site scripting attacks. CSP headers declare the domains which are permitted to provide executable scripts on a webpage. This post explores how well CSP works with WebAssembly and uncovers some issues ...
30 |
31 | ### And Finally
32 |
33 | WebAssembly in Action is [currently selling at half price](https://www.manning.com/dotd?utm_source=twitter&utm_medium=social&utm_campaign=deal_of_the_day_november_2019&utm_term=dotd&utm_content=11_29_19_webassembly_in_action)!
--------------------------------------------------------------------------------
/_posts/2019-12-06-issue-103.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #103"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Announcing GraalWasm — a WebAssembly engine in GraalVM](https://medium.com/graalvm/announcing-graalwasm-a-webassembly-engine-in-graalvm-25cd0400a7f2)
8 |
9 | MEDIUM.COM
10 |
11 | GraalVM is a high performance runtime that was launched relatively recently. Its primary goal is to improve the performance of Java virtual machine-based languages to match the performance of native languages. With GraalWasm the team have embedded a WebAssembly virtual machine within their runtime, further increasing the number of languages that can run (and enjoy lightweight interop) within their runtime. Exciting stuff!
12 |
13 | ### [SwiftLaTeX](https://www.swiftlatex.com/ide/ide.html?pid=swiftlatex_foo&share_id=&share=false)
14 |
15 | SWIFTLATEX.COM
16 |
17 | LaTeX is a popular document markup language that is used extensively in academia. SwiftLaTeX provides a WYSIWYG editor for LaTeX documents, with the rendering powered by WebAssembly. The sourcecode for can be [found on GitHub](https://github.com/SwiftLaTeX/SwiftLaTeX), however, the wasm module is checked in as a binary, so it is not clear how it was built - which is a shame.
18 |
19 | ### [Using WebAssembly from .NET with Wasmtime](https://hacks.mozilla.org/2019/12/using-webassembly-from-dotnet-with-wasmtime/)
20 |
21 | MOZILLA.ORG
22 |
23 | Wasmtime is the WebAssembly runtime that is being supported by the newly-formed Bytecode Alliance. This blog post announces a .NET Core integration for their runtime, which allows you to integrate wasm modules into .NET applications.
24 |
25 | ### [WebAssembly Summit](https://webassembly-summit.org/)
26 |
27 | WEBASSEMBLY-SUMMIT.ORG
28 |
29 | The recently announced WebAssembly Summit now has a website. They also have an open call for speakers, which has been extended to Dec 11th, so get your submissions in quickly.
30 |
31 | ### And Finally
32 |
33 | The team at Uno have created their very own [XAML CyberTruck](https://platform.uno/cybertruck-in-xaml-and-running-cross-platform-with-webassembly/)!
--------------------------------------------------------------------------------
/_posts/2019-12-13-issue-104.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #104"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [W3C Recommends WebAssembly](https://www.w3.org/blog/news/archives/8123)
8 |
9 | W3C.ORG
10 |
11 | This notice from W3C marks the official arrival of WebAssembly. The W3C is the official standards body for the World Wide Web, with this announcement officially declaring that WebAssembly is the fourth language of the web alongside HTML, CSS and JavaScript. This is quite a momentous occasion for the technology, and is something that the plugins (Flash, Silverlight) could never have achieved. The future really is bright for WebAssembly.
12 |
13 | ### [Introducing the WebAssembly Hub](https://medium.com/solo-io/introducing-the-webassembly-hub-a-service-for-building-deploying-sharing-and-discovering-wasm-d461719383ca)
14 |
15 | MEDIUM.COM
16 |
17 | Envoy is a high performance C++ distributed proxy, originally built by Lyft, that is designed for single services, applications and large microservice “mesh” architectures. It currently has a plugin architecture, with authors writing extensions in C++. However, the recent launch of WebAssembly Hub now allows authors to extend Envoy using a wide range of languages.
18 |
19 | ### [Introduction to Gate](https://savo.la/introduction-to-gate.html)
20 |
21 | SAVO.LA
22 |
23 | Gate is an experiment in portable execution state, making it possible to save the state of a running program at an arbitrary point of execution, and restore it — possibly on a different kind of system.
24 |
25 | ### [Building a Wavetable Synthesizer From Scratch with Rust, WebAssembly, and WebAudio](https://cprimozic.net/blog/buliding-a-wavetable-synthesizer-with-rust-wasm-and-webaudio/)
26 |
27 | CPRIMOZIC.NET
28 |
29 | This is an epic blog post that delves into audio synthesis in a great deal of detail, combining Rust and WebAssembly with the WebAudio API. Awesome stuff.
30 |
31 | ### And Finally
32 |
33 | The NEAR Protocol team are looking for [WebAssembly Compiler Engineer](https://twitter.com/mzavershynskyi/status/1204932821728387072), remote working is possible.
--------------------------------------------------------------------------------
/_posts/2019-12-23-issue-105.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #105"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Tensorflow.js available on WebAssembly backend 🔥](https://yashints.dev/blog/2019/12/17/tfjs-wasm)
8 |
9 | YASHINTS.DEV
10 |
11 | Tensorflow is Google's machine learning library which was launched on 2015. The web version (Tensorflow.js) was released last year, using a combination of JavaScript and WebGL. Note, in this instance WebGL is not being used for 3D graphics, instead the GPU is being used for high performance mathematics. This blog post announces the WebAssembly port of Tensorflow, which has performance comparable to WebGL (which is quite an achievement).
12 |
13 | ### [WebAssembly hasn’t grabbed JavaScript developers](https://www.infoworld.com/article/3509588/webassembly-hasnt-grabbed-javascript-developers.html)
14 |
15 | INFOWORLD.COM
16 |
17 | The State of JavaScript 2019 survey has just been published, providing some fascinating insights into JavaScript trends and developer sentiment. Of the 21,717 respondents, 1,444 have used WebAssembly, that's approximately 7%. This figure is low enough for the tech press to declare a lack of interest in WebAssembly from JavaScript developers. Personally I think 7% is quite high. I also wonder what this figure would look like in an equivalent survey of Rust developers, which would clearly be a much more appropriate measure of interest!
18 |
19 | ### [WebAssembly as a Platform for Abstraction](http://adventures.michaelfbryan.com/posts/wasm-as-a-platform-for-abstraction/)
20 |
21 | MICHAELFBRYAN.COM
22 |
23 | This newsletter has linked to quite a few articles describing how WebAssembly is being used as a sandboxed and secure runtime for blockchain, serverless and various other applications. However, this is the first article I've seen that actually demonstrated how to implement a WebAssembly embedding. This epic (27 minute read!) blog post demonstrates how to embed Wasmer in order to create a secure plugin architecture.
24 |
25 | ### [nes-rust](https://github.com/takahirox/nes-rust)
26 |
27 | GITHUB.COM
28 |
29 | We've already seen quite a few emulators written in various languages running on WebAssembly (I've written one myself). However, this one adds an extra dimension, this Rust-based NES emulator has remote multiplay support with WebRTC.
--------------------------------------------------------------------------------
/_posts/2020-01-03-issue-106.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #106"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [WebAssembly 2019 Year In Review](https://blog.scottlogic.com/2019/12/24/webassembly-2019.html)
8 |
9 | SCOTTLOGIC.COM
10 |
11 | What better way to start a new year than to take a look back at what has happened in the previous? It has certainly been a busy year for WebAssembly; a full production release of Blazor on its way, the newly launched WebAssembly System Interface (WASI), the Bytecode Alliance and a whole host of great demos. This is a brief post I put together sharing some of my favourite wasm events in 2019. What will 2020 bring?
12 |
13 | ### [Hosting Blazor Applications on GitHub Pages](https://mikaberglund.com/2019/12/29/hosting-blazor-applications-on-github-pages/)
14 |
15 | MIKABERGLUND.COM
16 |
17 | As expected Blazor is really starting to gain traction, which means there will be a lot of people hunting around for advice and practical guidance. This post provides a few tricks and tips for people wishing to host Blazor apps on GitHub pages (which is of course free).
18 |
19 | ### [Making really tiny WebAssembly graphics demos](http://cliffle.com/blog/bare-metal-wasm/)
20 |
21 | CLIFFLE.COM
22 |
23 | I like to think of myself as a bit of a WebAssembly hacker, there is nothing I love more than getting stuck in with hand-crafted WebAssembly code! This blog post is right up my street - creating tiny graphics demos using Rust and WebAssembly, without the support of wasm-pack / wasm-bindgen etc ...
24 |
25 | ### [Who to follow on Twitter](https://twitter.com/MaxGraey/status/1211121452658970626)
26 |
27 | TWITTER.COM
28 |
29 | This tweet provides a handy list of organisations, companies and individuals to follow if you're interested in WebAssembly. Which I assume you are.
30 |
31 | ### And Finally ...
32 |
33 | Can we really be sure whether Blazor is the tool of our dreams, [or a nightmare](https://old.reddit.com/r/csharp/comments/ea5dnb/the_nightmare_before_blazor/faztnnk/)?
--------------------------------------------------------------------------------
/_posts/2020-02-17-issue-111.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #111"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Video: WebAssembly Summit](https://www.youtube.com/watch?v=WZp0sPDvWfw)
8 |
9 | YOUTUBE.COM
10 |
11 | The first wasm conference, WebAssembly Summit, took place in San Francisco (CA) last week. Talks featured Lin Clark, Alon Zakai, Ashley Williams and many other well-known people in the WebAssembly community. The whole event was live-streamed, and is now available to watch again.
12 |
13 | ### [Why Blazor, via WebAssembly, is the future](https://www.linkedin.com/pulse/why-blazor-via-webassembly-future-akash-limbani/)
14 |
15 | LINKEDIN.COM
16 |
17 | Blazor is growing in popularity, and there are many people within the Blazor community that feel this technology is going to have a positive future and experience wide-spread use.
18 |
19 | ### [Blazor Charts](https://www.webassemblyman.com/blazor/blazorcharts.html)
20 |
21 | WEBASSEMBLYMAN.COM
22 |
23 | And a bit more Blazor for you ... this is a neat little charting component for your Blazor applications.
24 |
25 | ### [The Single Open Intermediate Language](http://soil-initiative.org/)
26 |
27 | SOIL-INITIATIVE.ORG
28 |
29 | This is an interesting idea - a non-proprietary intermediate language (IL) that could make it much easier for a wide range of languages to target WebAssembly and other runtimes.
30 |
31 | ### And Finally ...
32 |
33 | If you haven't got time to watch the WebAssembly Summit live stream, you can re-live it via this [excellent live stream on twitter](https://twitter.com/WasmWeekly/status/1227110509574533120).
--------------------------------------------------------------------------------
/_posts/2020-03-06-issue-113.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #113"
4 | author: ceberhardt
5 | ---
6 |
7 | ## [Scripting Applications with WebAssembly](https://tirania.org/blog/archive/2020/Mar-02.html)
8 |
9 | TIRANIA.ORG
10 |
11 | Miguel de Icaza is very well known for his work on Mono (an open source implementation of .NET) and Xamarin (a cross-platform mobile framework). He is also a keen supporter of WebAssembly, having seen its potential as a runtime far beyond the web browser - “WebAssembly is an incredibly exciting space, and every day it seems like it opens possibilities that we could only dream of before.”
12 |
13 | ## [The Future of WebAssembly in Embedded & IoT](https://www.youtube.com/watch?v=M1XYZi-lDSs&feature=emb_title)
14 |
15 | YOUTUBE.COM
16 |
17 | WebAssembly is becoming increasingly popular as a blockchain and serverless runtime. However, it is also gaining traction in the Internet-of-Things space. This video is an open conversation between a number of WebAssembly / IoT experts - well worth watching.
18 |
19 | ## [RetroCastle](https://tinygamefort.com/castle/)
20 |
21 | TINYGAMEFORT.COM
22 |
23 | Adobe Flash used to be the go-to technology for web-based games, however, since Flash 'died' game devs have had to rely on JavaScript. Clearly WebAssembly is now becoming a viable technology and a useful tool for web-based gaming. This is a cool example, with a retro feel.
24 |
25 | ## [WebAssembly / eWasm – What, and Why?](https://blog.embarklabs.io/news/2020/02/24/wasm-ewasm-what-and-why/)
26 |
27 | EMBARKLABS.IO
28 |
29 | This article is part of a wider series, it's relatively introductory in nature, outline the goals of WebAssembly. However, it does do a good job of describing why this technology is such a good fit for Ethereum and blockchain.
30 |
31 | ## And Finally ...
32 |
33 | The author of Rome, a new and all-encompassing toolchain for JavaScript, is [considering using wasm](https://twitter.com/WasmWeekly/status/1233070626161745921).
--------------------------------------------------------------------------------
/_posts/2020-03-20-issue-114.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #114"
4 | author: ceberhardt
5 | ---
6 |
7 | ## [Silverlight is back!](https://opensilver.net/announcements/introducing-opensilver.aspx)
8 |
9 | OPENSILVER.NET
10 |
11 | For those of you who may be unfamiliar with it - Silverlight was a Microsoft product that was a competitor to the Flash plug-in. It brought C#, and the power of XAML to the browsers. However, just as it was starting to gain traction, plug-ins fell out of favour (HTML5 won) and the product slowly died.
12 |
13 | OpenSilver is an open source implementation of Silverlight, based on Blazor / WebAssembly, that allows Silverlight apps to run without the need for the (now defunct) plug-in. Why would you want to do this? Well ... many enterprises and big corporates still have a lot of code running in Flash and Silverlight. Solutions like this hand them a life-raft, helping them keep their aged systems running.
14 |
15 | ## [Faasm](https://github.com/lsds/Faasm)
16 |
17 | GITHUB.COM
18 |
19 | Faasm is a high-performance stateful serverless runtime based on WebAssembly. We've seen a number of individuals and companies innovating with WebAssembly to create serverless 'back ends'. This one looks really interesting as it allows functions to share regions of memory and state.
20 |
21 | ## [Declarative WASM deployment for Istio](https://istio.io/blog/2020/deploy-wasm-declarative/)
22 |
23 | ISTIO.IO
24 |
25 | Istio is a service mesh that reduces the complexity of cloud deployments, they make use of the Envoy Proxy that allows you to add functionality to your mesh using WebAssembly. Wasm all the things!
--------------------------------------------------------------------------------
/_posts/2020-04-24-issue-116.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #116"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Node.js version 14 - with WASI support](https://medium.com/@nodejs/node-js-version-14-available-now-8170d384567e)
8 |
9 | MEDIUM.COM
10 |
11 | WebAssembly System Interface (WASI) is a standard that is being proposed that gives WebAssembly modules access to system resources (e.g. files, console etc ...). The most recent release of Node adds support for WASI, which is a massive step forwards for the standard.
12 |
13 | ### [Extending Istio with Rust and WebAssembly](https://blog.red-badger.com/extending-istio-with-rust-and-webassembly)
14 |
15 | RED-BADGER.COM
16 |
17 | Next up is another non-browser application of WebAssembly. Istio is an open open source service mesh which makes use of Envoy Proxies, which can be extended using WebAssembly modules. This puts WebAssembly right into the core of your cloud platform. This blog post is a great introduction to writing such an extension.
18 |
19 | ### [WASM SYNTH, or, how music taught me the beauty of math](https://timdaub.github.io/2020/02/19/wasm-synth/)
20 |
21 | GITHUB.IO
22 |
23 | WebAssembly is a great language for fun, play and experimentation. A real favourite of WebAssembly geeks is audio synthesis - this blog post is a fantastic introduction to the topic.
24 |
25 | ### [Pyramid Solitaire Ancient Egypt](https://www.solitaireparadise.com/games_list/pyramid_solitaire_ancient_egypt.html)
26 |
27 | SOLITAIREPARADISE.COM
28 |
29 | WebAssembly is becoming more and more a viable technology and a useful tool for web-based gaming. The people at Solitaire Paradise have put this in practice by porting their popular iOS App [Pyramid Solitaire Ancient Egypt](https://apps.apple.com/us/app/pyramid-solitaire-egypt/id490611632) to WebAssembly using Emscripten.
--------------------------------------------------------------------------------
/_posts/2020-05-26-issue-119.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #119"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [The WebAssembly App Gap](https://paulbutler.org/2020/the-webassembly-app-gap/)
8 |
9 | PAULBUTLER.ORG
10 |
11 | This is a fantastic blog post that talks about the various features that have been added to the browser, resulting in what will be a new era of browser-based apps - "the browser has become a formidable platform for a whole class of apps that it wasn’t equipped to compete with a decade ago"
12 |
13 | ### [The Third Age of JavaScript](https://www.swyx.io/writing/js-third-age/)
14 |
15 | SKYX.IO
16 |
17 | And another article on a similar theme - this one doesn't mention WebAssembly specifically, but the author is discussing similar trends - "2020 feels like the start of a new Age. If the First Age was about building out a language, and the Second Age was about users exploring and expanding the language, the Third Age is about clearing away legacy assumptions and collapsing layers of tooling."
18 |
19 | ### [Blazor WebAssembly is now officially released](https://devblogs.microsoft.com/aspnet/blazor-webassembly-3-2-0-now-available/)
20 |
21 | MICROSOFT.COM
22 |
23 | Blazor has gone from being a hobby project, all the way to being an officially supported Microsoft product in the space of just three years. This announcement is sure to drive adoption of Blazor among enterprise software developers.
24 |
25 | ### [🦕🦀Writing WebAssembly in Rust and running it in Deno!](https://dev.to/lampewebdev/writing-webassembly-in-rust-and-runing-it-in-deno-144j)
26 |
27 | DEV.TO
28 |
29 | Deno is a new project that seeks to replace Node, fixing some of the poor design decisions that were made early-on in the project. Deno reached v1.0 just last week. This blog post gives a short and sweet demo or Rust / WebAssembly with Deno.
--------------------------------------------------------------------------------
/_posts/2020-06-05-issue-120.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #120"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Why using WebAssembly and Rust together improves Node.js performance](https://developer.ibm.com/articles/why-webassembly-and-rust-together-improve-nodejs-performance/)
8 |
9 | IBM.COM
10 |
11 | A fantastic in-depth article from a developer in the IBM 'Garage Method' team, looking at how they came to choose Rust / WebAssembly, over Scala, for their application. The reasons why the Rust route won were many, including tooling, community, performance and portability.
12 |
13 | ### [Photon - Image Processing in WebAssembly](https://silvia-odwyer.github.io/photon/)
14 |
15 | GITHUB.IO
16 |
17 | This time last year most of the WebAssembly projects I was sharing were fun prototypes and demos. Now, as WebAssembly has really gained some traction, we're seeing fully-featured libraries emerge. This one uses Rust / WebAssembly to deliver a high performance image processing library. It has a really smart website too!
18 |
19 | ### [What’s behind the hype about Blazor?](https://stackoverflow.blog/2020/02/26/whats-behind-the-hype-about-blazor/)
20 |
21 | STACKOVERFLOW.BLOG
22 |
23 | Blazor WebAssembly has been drawing a lot of attention over the past year - I've noticed a significant number of Blazor questions being asked on StackOverflow, indicating a large user-base, which is probably why the StackOverflow team decided to blog about Blazor. On a personal note, as an ex- Silverlight / WPF developer, I still have my doubts, but am keeping an open mind.
24 |
25 | ### [Cærostris - a Blazor Spotify Client](https://github.com/tresoneur/Caerostris)
26 |
27 | GITHUB.COM
28 |
29 | This is very cool - a fully functioning Spotify client written in Blazor WebAssembly. A fantastic example for those of you who are interested in C# / Blazor.
30 |
31 | ### And Finally ...
32 |
33 | I'm giving an introductory talk to WebAssembly at a local conference, that has now turned virtual, please [do sign up if you are interested](https://ne-rpc.co.uk/sessions/colin-eberhardt.html)!
--------------------------------------------------------------------------------
/_posts/2020-06-20-issue-121.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #121"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [A Tiny, Static, Full-Text Search Engine using Rust and WebAssembly](https://endler.dev/2019/tinysearch/)
8 |
9 | ENDLER.DEV
10 |
11 | Static websites are all the rage at the moment, however, while they have many advantages due to their lightweight nature, the lack of a 'back end' does make things like content search more tricky. This fantastic in-depth blog post describes the development of a really lightweight client-side search engine written in Rust.
12 |
13 | ### [Pont - a multiplayer board game in Rust and WebAssembly](https://www.mattkeeter.com/projects/pont/)
14 |
15 | MATTKEETER.COM
16 |
17 | Pont is a a web-based multiplayer game without any Javascript, both the client and server are written in Rust. The client-side code, which compiles to WebAssembly, uses the web-sys crate for direct DOM manipulation.
18 |
19 | ### [C# interop with C/C++ and Rust in WebAssembly](https://platform.uno/blog/c-interop-with-c-c-and-rust-in-webassembly/)
20 |
21 | PLATFORM.UNO
22 |
23 | One of the goals of WebAssembly is to make language interop easier in the future, by having code complied from various languages share a common runtime. This blog post looks at calling C/C++ and Rust code from C#.
24 |
25 | ### And Finally ...
26 |
27 | If you've got a few hours to spend, why not [try out some classic arcade games](https://archive.org/details/arcade_mrdo) via the WebAssembly version of MAME and the Internet Archive.
--------------------------------------------------------------------------------
/_posts/2020-06-30-issue-122.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #122"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [Blazor and EF Core](https://blog.jeremylikness.com/series/blazor-and-ef-core)
8 |
9 | JEREMYLIKNESS.COM
10 |
11 | Blazor is very much targeted at Line-of-Business (LOB) app developers, i.e. those that work in large enterprises, creating tools and apps that are critical to keeping their business processes flowing. This series, by Jeremy Likness, tackles various enterprise concerns, from database access, to the use of Azure Cloud Functions. A must-read for any serious Blazor developer.
12 |
13 | ### [Extreme WebAssembly 1: pushing browsers to their absolute limits](https://medium.com/leaningtech/extreme-webassembly-1-pushing-browsers-to-their-absolute-limits-56a393435323)
14 |
15 | MEDIUM.COM
16 |
17 | I love a bit of 'extreme' WebAssembly! The company behind CheerpX have "implemented a fast x86 interpreter and JIT compiler that can generate WebAssembly modules on the fly to efficiently execute arbitrary x86 applications and libraries, fully client-side" - extreme indeed!
18 |
19 | ### [A Look Into Creating a Modular WASM Application Outside the Web](https://medium.com/wasde/a-look-into-creating-a-modular-application-using-wasm-outside-the-web-caddfa13a349)
20 |
21 | MEDIUM.COM
22 |
23 | Dynamic module linking, the ability to be able to bring together multiple WebAssembly modules at runtime, is an important feature of the specification. This blog post explores techniques for dynamic linking outside of the browser.
24 |
25 | ### [Writing a simple WASM API layer using interface types and Wasmtime](https://radu-matei.com/blog/wasm-api-witx/)
26 |
27 | RADU-MATEI.COM
28 |
29 | The WebAssembly interface types proposal is a relatively new idea that aims to add a new common set of interface types to the core specification. These types describe an interface in such a way the modules (potentially written in different languages) can interoperate at runtime without the need for glue code, or marshalling of data via the host. This blog post explores a practical example.
30 |
31 | ### And Finally ...
32 |
33 | WebAssembly support is [already at 91%](https://twitter.com/FlockonUS/status/1275967254727819264)!
--------------------------------------------------------------------------------
/_posts/2020-07-03-issue-123.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #123"
4 | author: ceberhardt
5 | ---
6 |
7 | ### [How to Utilize gRPC-Web From a Blazor WebAssembly Application](https://medium.com/@waelkdouh/how-to-utilize-grpc-web-from-a-blazor-webassembly-application-e8313444f75b)
8 |
9 | MEDIUM.COM
10 |
11 | REST / JSON has become the dominant approach to exposing APIs, due to its simplicity and ease of consumption. However, gRPC, which uses a binary encoding and HTTP/2 (which allows streaming and interleaving requests) is gaining traction. This blogpost looks at how to use gRPC from a Blazor application.
12 |
13 | ### [Using Rust and WebAssembly to Process Pixels from a Video Feed](https://dev.to/fallenstedt/using-rust-and-webassembly-to-process-pixels-from-a-video-feed-4hhg)
14 |
15 | DEV.TO
16 |
17 | Streem produce interactive augmented-reality tools. One of the guidance tools they are developing for web is a 3D cursor that can be positioned in a remote video. This blog post looks at how you can process frames from a video-source, in real-time, with WebAssembly.
18 |
19 | ### [To WASM or not to WASM? - a benchmark story](https://dev.to/linkuriousdev/to-wasm-or-not-to-wasm-3803)
20 |
21 | DEV.TO
22 |
23 | The dev team at Linkurious, which creates graphs and visualisations that help companies and governments fight financial crime. The team wanted to evaluate whether WebAssembly could offer a performance advantage for their app, so they implemented an n-body simulation using a range of techniques - this blog post shared the results.
24 |
25 | ### [How Fastly and the developer community are investing in the WebAssembly ecosystem](https://www.fastly.com/blog/how-fastly-and-developer-community-invest-in-webassembly-ecosystem)
26 |
27 | FASTLY.COM
28 |
29 | The team at Fastly were very early adopters of WebAssembly. Their Compute@Edge platform is a serverless compute environment now in beta, built using WebAssembly. The Fastly team have contributed to many important initiatives including WASI, their Lucet runtime, and AssemblyScript - kudos!
--------------------------------------------------------------------------------
/_posts/2022-02-18-issue-165.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #165"
4 | author: ceberhardt
5 | ---
6 |
7 | ## [LibreOffice running on WebAssembly](https://lab.allotropia.de/wasm/)
8 |
9 | ALLOTROPIA.DE
10 |
11 | LibreOffice is a free an open source productivity suite, with a word processor, spreasdheet and various other standard office tools. It has a very long heritage, starting as a fork of OpenOffice, which is around 20 years old. The team behind LibreOffice have been working on a WebAssmebly port for a little while, using the Emscripten compiler (for C++), and [Qt for WebAssembly](https://wiki.qt.io/Qt_for_WebAssembly) for the UI layer. I think this is the first time that a useable demo has been widely circulated.
12 |
13 | If you want to hear more about the details, there is an [accompanying talk from FOSDEM](https://fosdem.org/2022/schedule/event/lotech_lowa/).
14 |
15 | ## [Townscaper](https://oskarstalberg.com/Townscaper/)
16 |
17 | OSKARSTALBERG.COM
18 |
19 | This WebAssembly powered game is absolutely gorgeous - just tap your mouse to build a townscape.
20 |
21 | 
22 |
23 | OK, I guess it isn't much of a _game_ in the strictest sense, in that there isn't much to do beyond just clicking. But wow, it does look good!
24 |
25 | ## [Making a budget Pascal compiler to WebAssembly](https://faizilham.github.io/making-budget-pascal-compiler)
26 |
27 | GITHUB.IO
28 |
29 | Pascal, that takes me back a few years. I think that was one of the first programming languages I learnt around 30 years ago! The author of this post decided to write their own Pascal-to-WebAssembly compiler, because, why not? having dabbled with writing a simple WebAssembly compiler, I'd thoroughly encourage anyone to give this a go. It is a lot of fun.
30 |
31 | ## [How we built our data transformation engine with the Wasm runtime](https://redpanda.com/blog/data-transformation-engine-with-wasm-runtime/)
32 |
33 | REDPANDA.COM
34 |
35 | Redpanda is a streaming platform that is an alternative to the hugely popular Kafka, that allows you to add inline transforms via their WebAssembly engine. This is a bit like serverless functions specifically for Kafka. This blog post talks about why they picked WebAssembly, and delves into the technical details.
36 |
--------------------------------------------------------------------------------
/_posts/2022-10-28-issue-181.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: ! "Issue #181"
4 | author: ceberhardt
5 | ---
6 |
7 | ## [I turned JS into a compiled language (for fun and Wasm)](https://surma.dev/things/compile-js/)
8 |
9 | SURMA.DEV
10 |
11 | The conventional approach to running JavaScript in a WebAssembly VM is to compile a JS runtime (e.g. QuickJS) to run in WebAssembly, then use that to host your code. This of course results in bloated WebAssembly modules as they contain both your code and host runtime.
12 |
13 | What if you could compile JavaScript direct to WebAssembly? Sorry, no, you can't. How about transpiling JavaScript to C++, them compiling that to WebAssembly? Sure, sounds like its worth a try!
14 |
15 | This blog post goes a long way down that particular rabbit-hole, creating a proof-of-concept that supports a number of quite modern JavaScript features. However, ultimately it concludes that the likely runtime performance of this approach will be pretty poor.
16 |
17 | Oh well, it was worth a try!
18 |
19 | ## [flowkey](https://app.flowkey.com/)
20 |
21 | FLOWKEY.COM
22 |
23 | A web application written in Swift! you can [find more details on the Swift forums](https://forums.swift.org/t/web-workers-in-swift-wasm-via-da/60540).
24 |
25 | 
26 |
27 | ## [WASM I/O 2023](https://wasmio.tech/)
28 |
29 | WASMIO.TECH
30 |
31 | It's good to see a conference dedicated to the subject WebAssembly. This is your opportunity to shape this event by proposing talk via their [Call for Papers](https://www.papercall.io/wasmio23). The CFP is open until Jan 17th, giving you a lot of time to work up some ideas!
32 |
33 | ## [wasm-service - HTMX, wasm and Rust](https://github.com/richardanaya/wasm-service)
34 |
35 | GITHUB.COM
36 |
37 | HTMX is a lightweight framework (although I'm not sure framework is really the right word to describe it), that allows you to write interactive web applications using hypertext alone. This is a nice alternative to more full-featured frameworks (React, Angular) if you are building something simple. this prototype connects HTMX events to a Rust-based wasm module running on the client. I'm not entirely sure what advantage this gives, but I love the creativity!
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/ColinEberhardt/wasmweekly/88731bff20ad01a25bf99895bb67d410386ba4a6/favicon.ico
--------------------------------------------------------------------------------
/feed.json:
--------------------------------------------------------------------------------
1 | ---
2 | layout: null
3 | ---
4 |
5 | {
6 | "version": "https://jsonfeed.org/version/1",
7 | "title": "{{ site.title }}",
8 | "home_page_url": "{{ site.url }}",
9 | "feed_url": "{{ site.url }}/feed.json",
10 | "description": "{{ site.description }}",
11 | "icon": "{{ site.url }}{{ site.logo }}",
12 | "favicon": "{{ site.url }}/favicon.ico",
13 | "expired": false,
14 | "author": {
15 | "name": "{{ site.curator.name }}",
16 | "url": "{{ site.url }}"
17 | },
18 | "items": [
19 | {% for post in site.posts %}
20 | {
21 | "id": "{{ site.url }}{{ post.id }}",
22 | "url": "{{ site.url }}{{ post.url }}",
23 | "title": {{ post.title | jsonify }},
24 | "date_published": "{{ post.date | date_to_xmlschema }}",
25 | {% if post.date-updated %}
26 | "date_modified": "{{ post.date-updated | date_to_xmlschema }}",
27 | {% else %}
28 | "date_modified": "{{ post.date | date_to_xmlschema }}",
29 | {% endif %}
30 | "author": {
31 | "name": "{{ site.data.authors[post.author].name }}",
32 | "url": "https://twitter.com/{{ site.data.authors[post.author].twitter }}"
33 | "avatar": "https://github.com/{{ site.data.authors[post.author].github }}.png?size=100"
34 | },
35 | "summary": {{ post.excerpt | jsonify }},
36 | "content_html": {{ post.content | jsonify }}
37 | }{% if forloop.last == false %},{% endif %}
38 | {% endfor %}
39 | ]
40 | }
41 |
--------------------------------------------------------------------------------
/feed.xml:
--------------------------------------------------------------------------------
1 | ---
2 | layout: null
3 | ---
4 |
5 |
6 |