This Week in Programming: The Time Has Come to Pay Attention to WebAssembly

13 Dec 2019 12:00pm, by

I don’t know about you, but even just hearing the term “assembly” can cause a spike in my blood pressure and an uptick in my pulse. The word alone conjures up memories of goofing around with what seemed like a purely incomprehensible language that, when used improperly (which was most of the time, it seemed) could quickly overwrite your boot sector and render your computer unusable — or otherwise generally cause some level of harm that felt rather less likely with ol’ BASIC. (Yes, this was something I did in the 80s.)

If you happen to share any of these anxieties, fret not over WebAssembly (WASM). Rather than bringing the possibility of overwritten boot sectors, WebAssembly offers the ability to bring high-level languages, like C, C++, and Rust to the browser, as well as outside of the browser.  In short, WebAssembly is a binary instruction format for a stack-based virtual machine and this week, the World Wide Web Consortium (W3C) dubbed it an official web standard and the fourth language for the Web that allows code to run in the browser, joining HTML, CSS and JavaScript.

The gist of WebAssembly is that it brings high-performance applications, such as image and video editing, games, streaming music, among many other use cases, “by being a virtual machine and execution environment enabling loaded pages to run as native compiled code” and providing “near-native performance, optimized load time, and perhaps most importantly, a compilation target for existing codebases,” according to the W3C announcement.

As for the initial comparison of WebAssembly to its namesake, the primary difference here is that WASM is running in a virtual machine, which means it is essentially sandboxed and can be blocked from going and making a kernel call (or overwriting your boot sector).

With this week’s news, WebAssembly has officially reached version 1.0 and is supported in the browser engines for Firefox, Chrome, Safari, and Internet Explorer, and the Bytecode Alliance launched last month to help ensure “a WebAssembly ecosystem that is secure by default” and for bringing WebAssembly to the aforementioned outside-the-browser use.

Of course, not everything is 100% rosy. As pointed out by an article in The Register, WebAssembly also brings with it an increased level of obfuscation of what exactly is going on, giving it an increased ability to perform some surreptitious actions. For example, they cite one study that “found ‘over 50 percent of all sites using WebAssembly apply it for malicious deeds, such as [crypto] mining and obfuscation.'” Nonetheless, with WebAssembly gaining this designation by W3C, it is, indeed, time to pay closer attention to the newly nominated Web language standard.

This Week in Programming

  • And Then There Was KotlinConf: While AWS was busy sucking all the proverbial air out of the room with its re:Invent conference last week, Kotlin users and builders alike were busy with KotlinConf in Copenhagen. For a brief recap of what’s happened in the world of Kotlin this past year, you can take a gander at Google’s recent blog post on Android’s commitment to Kotlin. Suffice to say, Android’s declaration of Kotlin as a supported language has helped its popularity, with Google touting “nearly 60% of the top 1,000 Android apps contain Kotlin code.” If you’re one to look to the future rather than the past, then perhaps take a look instead at Kotlin-creator JetBrain’s blog post on what to expect in Kotlin 1.4 and beyond. The gist is this: Kotlin 1.4 is expected for spring of 2020, primarily with improvements on performance and quality, rather than big language changes. Of course, you’d rather watch than read, you can also check out the keynote from KotlinConf.

  • JetBrains’ Major IntelliJ Update: JetBrains has released the final update for its IntelliJ IDEA Java IDE, and SDTimes calls it a major update, noting that the release “faster IDE startup, better UI responsiveness, less UI and editor freezes, reduced memory consumption (specifically on Gradle projects), and a bunch of bug fixes.” According to the JetBrains blog post, the development cycle leading up to this release saw “more than 1600 issues that together received a total of more than 3900 votes in our issue tracker.”
  • It’s Time for Google’s Summer of Code: Well, it’s very obviously not summer for those of us in the northern hemisphere, but it is, rather, time for Google to announce its Google Summer of Code 2020, which will be its 16th summer of matching student developers with open source projects for summer internships. According to the blog post, the program has provided this opportunity to 15,000 university students from 109 countries over the past 15 years, and applications for this year will open up on March 25th, with the program commencing on January 14, 2020. So, if you know a fledgling developer looking for hands-on experience, this may be the way to go.
  • Flutter Targets ‘Ambient Computing’: Google held Flutter Interact this week, making a number of announcements, and also laying out the idea of ambient computing, writing that Flutter is the first UI platform designed for ambient computing. What exactly is “ambient computing” you may ask? “Many of us transition throughout the day between multiple devices,” they write, and “in this emerging world, the focus starts to move away from any individual device towards an environment where your services and software are available wherever you need them.” That is ambient computing — a world where the device is irrelevant. Flutter was built to help build apps for both iOS and Android, and now Google says it wants to make Flutter “a portable toolkit for building beautiful experiences wherever you might want to paint pixels on the screen.” Beyond the conceptual, Google also announced Flutter 1.12, improved Flutter desktop support for macOS, and web support that makes it “possible to build and consume web plug-ins, enabling Flutter apps to take advantage of a growing ecosystem of Dart components for everything from Firebase to the latest web APIs.” Speaking of Dart, version 2.7 was launched this week, with added support for extension methods, plus a new package for handling strings with special characters.
  • Coffee Cups and Data-Blocking USB Dongles: Finally, we are just a couple weeks out from the consumerist, gift-giving holidays and StackOverflow has a not-half-bad list of last-minute gift ideas for the programmer in your life that I thought might be a useful link, in case you were stuck. That said, you’re the programmer, so maybe this is just the shopping list for yourself.

Amazon Web Services is a sponsor of The New Stack.

A newsletter digest of the week’s most important stories & analyses.