Skip to main content

FastLED Wasm Compiler

Project description

FastLED WASM Compiler

Build Lint Unit Test Integration Test
Linux x86 Linux x86 Build Linux x86 Lint Linux x86 Unit Test Linux x86 Integration Test
Linux ARM Linux ARM Build Linux ARM Lint Linux ARM Unit Test Linux ARM Integration Test
Windows x86 Windows x86 Build Windows x86 Lint Windows x86 Unit Test Windows x86 Integration Test
Windows ARM Windows ARM Build Windows ARM Lint Windows ARM Unit Test Windows ARM Integration Test
macOS x86 macOS x86 Build macOS x86 Lint macOS x86 Unit Test macOS x86 Integration Test
macOS ARM macOS ARM Build macOS ARM Lint macOS ARM Unit Test macOS ARM Integration Test

Publish Release

Compile your FastLED sketch and run it on the browser!

image

Demo

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

About

Compile FastLED sketches to browser-ready html/js/wasm output using a native Emscripten toolchain.

Compile times are extremely fast thanks to aggressive object caching and sketch fingerprinting. Recompilation of sketch files with minimal changes completes in under a second.

Tutorial Video

Note: This video predates the Rust CLI migration. Install with pip install fastled and run with fastled mysketchfolder.

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

Install

pip install fastled

Alternative installers:

  • uv pip install fastled --system
  • pipx install fastled

Executables

Pre-built binaries are published on each GitHub release:

Ubuntu Install Script

curl -L https://raw.githubusercontent.com/zackees/fastled-wasm/refs/heads/main/install_linux.sh | /bin/bash

Run

Change into a sketch directory and run:

fastled

Useful flags:

Flag Description
--just-compile Compile and exit without opening a browser or watching files
--debug Build with debug-friendly compiler settings
--quick Default build mode
--release Optimized build (~1/3 smaller binary)
--fastled-path <path> Point the build at a local FastLED checkout
--purge Clear cached FastLED downloads and stale WASM build artifacts
--serve-dir <dir> Serve an existing directory without compiling

Features

Hot Reload

Once launched, the compiler remains open and watches for file changes. Edits to your sketch are automatically recompiled and the browser reloads with the updated output. Build output is streamed to the browser in real time via SSE.

Hot Reload FastLED Source

If you launch fastled inside the FastLED repo with --fastled-path, changes to the library source code are detected and trigger recompilation. Unlike sketch-only rebuilds, modifying a header file may produce a longer recompile.

Big Data in /data Directory

Large files (e.g. video) in a sketch's data/ directory are handled specially to avoid round-tripping blobs. The WASM compiler generates a files.json manifest for an emulated SD card system mounted at /data/. Files named *.json, *.csv, *.txt are injected before setup() runs; all others are streamed asynchronously at runtime.

For an example see examples/SdCard in the FastLED repo.

Compile Speed

Three compile modes are available: --quick (default), --release (optimized for size, ~1/3 smaller binary), and --debug (debug-friendly compiler settings). Aggressive object caching means incremental rebuilds are near-instant.

Arduino Compatibility

Most simple Arduino sketches compile out of the box. Common functions like digitalWrite(), Serial.println(), and others are stubbed. digitalRead() returns 0 and analogRead() returns random numbers.

HTTPS

The local preview server supports HTTPS using the bundled localhost certificate pair. HTTPS is required for browser features such as microphone access. See HTTPS_SSL.md.

Python Package

The fastled Python package is a compatibility launcher for the native Rust CLI. Internal build, project discovery, and fuzzy matching behavior lives in Rust and is tested there.

FAQs

Q: Why does FastLED become choppy when the browser tab is in the background? A: FastLED WASM currently runs on the main thread. Chrome throttles the event loop for background tabs. Moving to a Web Worker would solve this.

Q: Why does a long delay() freeze the browser? A: delay() blocks loop() which blocks the main thread. A Web Worker would decouple FastLED from the browser's UI thread.

Q: How can I reduce the compiled size of my sketch? A: A significant portion of the binary is Emscripten JS bundling overhead. The wasm_compiler_settings.py in the FastLED repo can tune this. Using --release produces a ~1/3 smaller binary than --quick.

Development

./install
./test
./lint

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

fastled-2.0.10-py3-none-win_arm64.whl (10.8 MB view details)

Uploaded Python 3Windows ARM64

fastled-2.0.10-py3-none-win_amd64.whl (11.0 MB view details)

Uploaded Python 3Windows x86-64

fastled-2.0.10-py3-none-manylinux_2_28_x86_64.whl (20.4 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

fastled-2.0.10-py3-none-manylinux_2_28_aarch64.whl (20.9 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

fastled-2.0.10-py3-none-macosx_11_0_arm64.whl (11.6 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

fastled-2.0.10-py3-none-macosx_10_12_x86_64.whl (11.9 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file fastled-2.0.10-py3-none-win_arm64.whl.

File metadata

  • Download URL: fastled-2.0.10-py3-none-win_arm64.whl
  • Upload date:
  • Size: 10.8 MB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fastled-2.0.10-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 8feecb8f7af93ffb73a5ec39c5b9247d4905f73e721fb750394a85cc4bbb690f
MD5 d3915ed57c81a068be2b90cbbfb7b879
BLAKE2b-256 70dc5d97ed9f3965ee731b5fbd34e43d6e8611f3e83980cfd7145e71e4ccfb9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastled-2.0.10-py3-none-win_arm64.whl:

Publisher: auto-release.yml on zackees/fastled-wasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastled-2.0.10-py3-none-win_amd64.whl.

File metadata

  • Download URL: fastled-2.0.10-py3-none-win_amd64.whl
  • Upload date:
  • Size: 11.0 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for fastled-2.0.10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 0cc9d0679964b76943e8d0f0abb9dd3bc2ab1a37bd5ba02db0aed4322c865d1e
MD5 f1910d4768c7b8608a2071b387e1a06d
BLAKE2b-256 c1a872339a5b568774a441eea9ab87d597891c38b917ccaa6d0c839ea467f5ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastled-2.0.10-py3-none-win_amd64.whl:

Publisher: auto-release.yml on zackees/fastled-wasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastled-2.0.10-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for fastled-2.0.10-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b97bdd106d3f6d7ca14c27ca807bf88a432223ed2a956ddf741ba71699e9b350
MD5 1c6e159cd9a8174e1d513b04698f3d46
BLAKE2b-256 35805503753a21687735cce2ea11e025b41451471b32bf21ae099632934e6ffe

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastled-2.0.10-py3-none-manylinux_2_28_x86_64.whl:

Publisher: auto-release.yml on zackees/fastled-wasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastled-2.0.10-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for fastled-2.0.10-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e9659d3eb23029cd4579d6c96ee85aa2fac1d6bbe8751215c5a5a4e3fc0dc9d9
MD5 96579dc553f453c1db69171d6bfd7590
BLAKE2b-256 aef56c7957494e4e9153d1784cb5253dc11987d36ca92634023c8b3db2b62ae0

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastled-2.0.10-py3-none-manylinux_2_28_aarch64.whl:

Publisher: auto-release.yml on zackees/fastled-wasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastled-2.0.10-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for fastled-2.0.10-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3df8f7602cafa0ee160899846308c9f473965f88d576527ab185e159759fade
MD5 9e53d10b4294ef93646447163cdeeac6
BLAKE2b-256 0319e8605aa400be3a1017a74baa9f0face1341f2bf1534a217ce7084e973767

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastled-2.0.10-py3-none-macosx_11_0_arm64.whl:

Publisher: auto-release.yml on zackees/fastled-wasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastled-2.0.10-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for fastled-2.0.10-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 32d1d8aeff759af1e4945c030fb4f286b5adee761b802e5f33bdedae0298e846
MD5 44527e5bb2b6114f1d579ac3d7f4c6dd
BLAKE2b-256 42cb4a4d698827245a6cbd59674efe181ab4dc657d989f5e607d6a965740b3fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastled-2.0.10-py3-none-macosx_10_12_x86_64.whl:

Publisher: auto-release.yml on zackees/fastled-wasm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page