News, technical writeups, and announcements directly from the development team.
How the BrowserPod kernel supports running many Linux applications concurrently in the browser using WebAssembly.
The latest release of our state-of-the-art Java runtime that runs completely in the browser via WebAssembly, is now available!
BrowserPod 2.0 ships with a real bash shell, git, and core Linux utilities.
Our interns reflect on their 6 month internships at Leaning Technologies


BrowserPod 1.0 is live: universal in-browser code sandboxes powered by WebAssembly. Node.js available today.
BrowserPod Beta is live: zero latency in-browser code sandboxes in WebAssembly for Node, Python and Rails.

Our interns describe their 6 month internships at Leaning Technologies
The Java in the browser challenge is coming this autumn.
BrowserPod is a WebAssembly-based, client-side container technology that brings full-stack development environments to the browser. Pods run multiple processes with real concurrency, have a persistent block filesystem, and public HTTP endpoints via Portals. Launching with Node.js 22 and with short-term support for Python and Ruby planned, BrowserPod is perfect for web IDEs, interactive docs, and AI coding agents.

The latest release of our state-of-the-art Java runtime that runs completely in the browser via WebAssembly, is now available. Supports up to Java 17.

The latest release of our state-of-the-art Java runtime that runs completely in the browser via WebAssembly, is now available!

You can now use AI to control WebVM, both in terminal and graphical mode
Our state-of-the-art JVM/JDK that runs completely in the browser thanks to WebAssembly, is now available!

CheerpX is a WebAssembly-based virtualization engine for x86 binaries. It is built on top of standard Web technologies, and runs fully in the browser, with no need for server side execution of any sort. This article will explain the architecture of CheerpX and show detailed examples for possible use cases of this technology.
WebVM is a full Linux environment running in the browser, client-side. It is a complete virtual machine, with support for persistent data storage, networking and, as of today’s release, Xorg and complete desktop environments. This article will explain the WebVM architecture, how the main components work, and what you can build with this technology.
WebVM: The Hackathon is a global hybrid event open to all developers. Dive into terminal-based solutions using CheerpX and showcase your coding skills for a chance to win amazing prizes.

Around a month ago, the WebAssembly Community Group voted to advance the [Branch Hinting proposal](https://github.com/WebAssembly/branch-hinting) to phase 4, effectively recommending its addition to the standard, and the Working Group formally added it to the standard by voting it into phase 5 last week. This was a big achievement for me, as the proposal Champion from its inception almost 4 years ago, and for [Leaning Technologies](https://leaningtech.com) (my company), who sponsored this work. In this article I will explain the purpose of the proposal, and the journey that brought it from idea to standard.
Modernising C++/MFC applications into modern web applications can offer significant practical advantages and enable improved efficiency, productivity and flexibility. WebAssembly, and the Cheerp C++ to Wasm compiler offer a uniquely efficient path to achieve this, by preserving the vast majority of existing source code.
A tour of the TypeScript integration features that are a part of Cheerp. Cheerp is a powerful C++ to JavaScript and WebAssembly compiler.
Cheerp is a powerful C/C++ to JavaScript/WASM compiler.
CheerpJ 3.0, a state-of-the-art WebAssembly JVM that runs real-world Java applications in the browser, is now available.
Dragon Court was a free, old-school fantasy, multiplayer browser RPG that came in a Java Applet format but sadly became abandonware. Clarky Lee talks about how he used CheerpJ to bring it back to life.
CheerpJ is a WebAssembly-based JVM that runs fully client side in the browser. It supports Java applications, legacy applets and libraries, with no need for compilation, server backends, plugins, or post-processing steps. CheerpJ 3.0 introduces a completely new JIT-based architecture which makes the tool faster, more usable and much more powerful.


The CheerpJ 3.0 second release candidate is now available! This release includes many improvements to library mode, Web Worker support, and more.
The first release candidate for CheerpJ 3.0 is now available for testing and feedback. This version features a completely new architecture for CheerpJ, with a full OpenJDK runtime and a new scalable JNI architecture.

We hosted a live Ask-Me-Anything (AMA) with CTO and lead dev Alessandro. The main topic was CheerpJ 3.0, but we welcomed any questions across all our products, about WebAssembly, and compilers, or the company in general. We talked about CheerpJ 3.0’s development, its release timeline, and technical details like how 3.0’s architecture differs from 2.0.

Thanks to groundbreaking technologies like CheerpX and CheerpJ, we have successfully redefined what was previously considered achievable within the browser’s environment. While working on such advanced projects, we soon encountered the limitations of a traditional profiling approach, like Chrome’s built-in devtools. As a result, we relied on a custom profiling workflow based on internal Chrome tracing for years which was due for an improvement.
WebVM is a Linux-like virtual machine running fully client-side in the browser. It is based on CheerpX: a x86 execution engine in WebAssembly by Leaning Technologies. With today’s update, you can deploy your own version of WebVM by simply forking the repository on GitHub and editing the included Dockerfile. A GitHub Actions workflow will automatically deploy it to GitHub pages.
For the past year, we have been working on a new architecture for CheerpJ: our implementation of the JVM in HTML5/WebAssembly, designed to run Java applications on the browser. CheerpJ 3.0 will be released in the late summer of 2023, and will be easier to use, faster, and more compatible than ever before. Our live JavaFiddle demo has already been migrated to the current development version.
At Leaning Technologies we are heavily invested in WebAssembly, and we are actively contributing to push the standard forward. Just a few months ago WebAssembly tail-calls were standardized, and we are currently bringing the branch-hinting proposal to Phase 4.

We are proud to announce Cheerp 3.0, the latest major release of our C++ compiler for the Web. This new version is packed with new features and optimizations that, once more, move the state of the art of using C++ as a programming language for Web applications and games. All the compiler core components and libraries are now licensed permissively under the Apache 2.0 / LLVM license, allowing for Cheerp 3.0 to be used for any purpose, with no restrictions.
WebVM, our virtual Linux environment running fully client-side in the browser, now supports networking via Tailscale.
A recurrent need for anybody practising programming is running (and sharing) small snippets of code to quickly test an idea or ask for feedback. These kinds of Web applications are generally called ‘fiddles’, and there are plenty of them out there. The common use cases for fiddles are in education, but anyone can find themselves needing to use one to avoid having to set up a full native execution environment.
This article aims at demystifying WebAssembly tail calls while giving the reader an idea of how we have implemented the feature in WebKit.
CheerpJ 2.3 is the only solution on the market to migrate real-world large-scale Java applications to modern HTML5 with pixel-perfect accuracy.
Discover the "Partial Executer," an LLVM pass that optimizes WebAssembly by removing unreachable code. This article explains the technology, challenges, and benefits, ideal for those versed in LLVM basics.
We made a server-less virtual Linux environment that runs unmodified Debian binaries in the browser. This is powered by CheerpX, a WebAssembly virtualization platform. Feel free to play with it and report bugs: https://webvm.io
How Manifest V3 broke our Chrome extension, and how we are trying to fix it.
Carlo, a Leaning Technologies compiler engineer, has tried something bold. Coming up with a JavaScript to JavaScript optimizing compiler. Optimize for what metric? Performance of code execution (eg. how long does it take to calculate the n-th prime number).
Today we are proud to announce CheerpX for Flash, a solution to run existing Flash applications on any browser after December 2020.
Here at Leaning Technologies, we use WebAssembly daily to create unique and seemingly impossible technologies, like CheerpX (a WebAssembly virtual machine designed to safely run arbitrary x86 libraries and applications in browser) and CheerpJ (a solution to compile and run Java applications in the browser).
Improving support for 64-bit integers in Cheerp, a C/C++ to WebAssembly/JavaScript compiler.
Here at Leaning Technologies we build compilers for the Web (which output a combination of JavaScript and WebAssembly).
This is the first of a series of posts about the problems we have found on our way when using WebAssembly, and how we have solved them.
WebAssembly in its current MVP form is shipped by all major browsers and is already capable of amazing things. This does not mean that its development has concluded: on the contrary, there are many post-MVP feature proposals at different stages of development.
One of the challenges of compiling LLVM IR code to JavaScript and WebAssembly is the structured control flow problem: We have some code represented as a control flow graph (CFG), and we want to convert it into structured control flow. In this article I will describe how to do this conversion, and how to handle irreducible control flow.