Skip to main content

FastLED wasm compiler

Compiles an Arduino/Platformio sketch into a wasm binary that can be run directly in the web browser.

Linting Build and Push Multi Docker Image MacOS_Tests Ubuntu_Tests Win_Tests

About

This python app will compile your FastLED style sketches into html/js/wasm output that runs directly in the browser.

Compile times are extremely fast - I've seen as low as 5 seconds but 8-15 seconds is typical.

This works on Windows/Linux/Mac(arm/x64).

Docker is required.

https://github.com/user-attachments/assets/64ae0e6c-5f8b-4830-ab87-dcc25bc61218

Demo

https://zackees.github.io/fastled-wasm/

Install

pip install fastled-wasm

Note that you may need to install x86 docker emulation on Mac-m1 and later, as this is an x86 only image at the prsent.

Use

Change to the directory where the sketch lives and run

cd <SKETCH-DIRECTORY>
fastled-wasm

Or if you don't have docker then use our web compiler

cd <SKETCH-DIRECTORY>
fastled-wasm --web

After compilation a web browser windows will pop up.

Hot reload by default

Once launched, the compiler will remain open, listening to changes and recompiling as necessary and hot-reloading the sketch into the current browser.

This style of development should be familiar to those doing web development.

Data

If you want to embed data, then do so in the data/ directory at the project root. The files will appear in the data/ director of any spawned FileSystem or SDCard.

About the compilation.

Pre-processing is done to your source files. A fake Arduino.h will be inserted into your source files that will provide shims for most of the common api points.

Revisions

  • 1.0.17 - Pulls updates when necessary. Removed dependency on keyring.
  • 1.0.16 - fastled-wasm package name has been changed to fled
  • 1.0.15 - fled is an alias of fastled-wasm and will eventually replace it. --web-host was folded into --web, which if unspecified will attempt to run a local docker server and fallback to the cloud server if that fails. Specifying --web with no arguments will default to the cloud server while an argument (like localhost) will cause it to bind to that already running server for compilation.
  • 1.0.14 - For non significant changes (comments, whitespace) in C++/ino/*.h files, compilation is skipped. This significantly reduces load on the server and prevents unnecessary local client browser refreshes.
  • 1.0.13 - Increase speed of local compiles by running the server version of the compiler so it can keep it's cache and not have to pay docker startup costs because now it's a persistant server until exit.
  • 1.0.12 - Added suppport for compile modes. Pass in --release, --quick, --debug for different compile options. We also support --profile to profile the build process.
  • 1.0.11 - --web compile will automatically be enabled if the local build using docker fails.
  • 1.0.10 - Watching files is now available for --web
  • 1.0.9 - Enabled web compile. Access it with --web or --web-host
  • 1.0.8 - Allow more than one fastled-wasm browser instances to co-exist by searching for unused ports after 8081.
  • 1.0.7 - Docker multi image build implemented, tool now points to new docker image compile.
  • 1.0.6 - Removed --no-open and --watch, --watch is now assumed unless --just-compile is used.
  • 1.0.5 - Implemented --update to update the compiler image from the docker registry.
  • 1.0.4 - Implemented --watch which will watch for changes and then re-launch the compilation step.
  • 1.0.3 - Integrated live-server to launch when available.
  • 1.0.2 - Small bug with new installs.
  • 1.0.1 - Re-use is no longer the default, due to problems.
  • 1.0.0 - Initial release.

Metadata

Release files for fled 1.0.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fled 1.0.17
File Size Uploaded
fled-1.0.17.tar.gz 157.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fled 1.0.17
File Interpreter ABI Platform
fled-1.0.17-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 176.4 kB

Release files / fled-1.0.17.tar.gz

Download URL fled-1.0.17.tar.gz
Size 157.7 kB
Tags Source
SHA-256 checksum
How to use checksums
911f4e7477e7e02955323521c4b7b291d822749672c4b2e0d4c0332f511a7c43
BLAKE2b-256 checksum
How to use checksums
857ddbbed8f7187119dce2b4d3b25bb498213cea86a55c14823870d291dc6fe8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.5

Release files / fled-1.0.17-py2.py3-none-any.whl

Download URL fled-1.0.17-py2.py3-none-any.whl
Size 18.7 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
52e6a544e9ca55941426bb2606aa769a84e1c39f96004e208763a6a319fecfed
BLAKE2b-256 checksum
How to use checksums
1f6af473fd15534548f4e3073ac6a7d0b2d3bdb2400ce31fc1af355477db3949
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.11.5

Release history Release notifications | RSS feed

This release

1.0.17 This release

2 release files

1.0.16

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page