Wasm3 to be Released

Wasm3 is a interpreter of WebAssembly intermediate code with high performance that can be used to run many WASI applications
14 January 2020   247

The first release of wasm3 is available, a very fast interpreter of WebAssembly intermediate code. It is mainly designed to run WebAssembly applications on microcontrollers and platforms for which there is no JIT implementation for WebAssembly, not enough memory for JIT to work, or the creation of executable memory pages necessary for JIT implementation. The project code is written in C and distributed under the MIT license.

Wasm3 passes tests for compatibility with the WebAssembly 1.0 specification and can be used to run many WASI applications, providing performance only 4-5 times lower than JIT engines (liftoff, cranelift) and 11.5 times lower than native code execution. When compared with other WebAssembly interpreters (wac, life, wasm-micro-runtime), wasm3 was 15.8 times faster.

Wasm3 requires 64Kb of memory for code and 10Kb of RAM, which allows you to use the project to run applications compiled in WebAssembly on microcontrollers such as Arduino MKR *, Arduino Due, Particle Photon, ESP8266, ESP32, Air602 (W600), nRF52, nRF51 Blue Pill (STM32F103C8T6), MXChip AZ3166 (EMW3166), Maix (K210), HiFive1 (E310), Fomu (ICE40UP5K) and ATmega1284, as well as on boards and computers based on x86, x64, ARM, MIPS, RISC-V and Xtens architectures . Of the operating systems, Linux (including routers based on OpenWRT), Windows, macOS, Android, and iOS are supported. It was also possible to compile wasm3 into WebAssembly intermediate code to execute the interpreter in a browser or for self-hosting.

High performance is achieved through the use of the Massey Meta Machine (M3) technique in the interpreter, in which, to reduce the overhead of decoding the bytecode, the bytecode is proactively translated into more efficient operations generating pseudo-machine code, and the execution model of the stacked virtual machine is converted to a more efficient register an approach. Operations in M3 are C functions, the arguments of which are the registers of the virtual machine, which can be reflected on the registers of the CPU. Frequently encountered workflows for optimization are converted to summary operations.

Learn more at GitHub.

Linux 5.5 Kernel to be Released

The new version release took 2 months and it has adopted 15505 patches from 1982 developers and 44% of chages relates to device drivers
27 January 2020   206

After two months of development, Linus Torvalds introduced the Linux 5.5 kernel release. Among the most notable changes: the ability to assign alternative names to network interfaces, the integration of cryptographic functions from the Zinc library, the ability to mirror more than 2 disks in Btrfs RAID1, the mechanism for monitoring the status of Live patches, the kunit unit testing framework, the increased performance of the mac80211 wireless stack, the ability to access to the root partition via the SMB protocol, type verification in BPF.

The new version adopted 15505 patches from 1982 developers, the patch size is 44 MB (the changes affected 11781 files, 609208 lines of code were added, 292520 lines were deleted). About 44% of all the changes presented in 5.5 are related to device drivers, about 18% of changes are related to updating the code specific to hardware architectures, 12% are connected to the network stack, 4% to file systems and 3% to internal kernel subsystems.

As always, new version brought the significant number of changes and improvements, you can check them at the official mainling at the LWM.