Community developer built the Flutter engine for riscv64 Linux on a SpacemiT K3 and ported LocalSend end to end; a 59-line fontconfig patch cuts first-frame time 5.6x for every GTK4/Chromium app on Bianbu.
This week's highlight comes from the SpacemiT community: a developer built the Flutter engine for riscv64 Linux from source on a K3, ported the LocalSend desktop GUI end to end, and fixed a Skia fontconfig bottleneck that slows first frame on every GTK4 / Chromium app under Bianbu - a 5.6x improvement. Both builds are open source, and neither required a single change to upstream Flutter application code.
Flutter has never shipped official riscv64 Linux engine artifacts. Because the engine is C++ (Dart VM, Skia, text layout, platform embeddings) while the framework layer is pure Dart, the framework compiles to any target automatically - it is only the engine binaries that were missing for riscv64. The flutter-riscv64-linux repository closes that gap with a build recipe plus precompiled artifacts. Verified results on K3:
That last point matters most. If your project already targets Linux x86, the same flutter build linux invocation now produces a riscv64 bundle once the engine artifacts are installed into the Flutter SDK - no fork, no patch set to maintain.
Release artifacts come in three packages, so you can pick the download size that fits your link:Bonus performance finding, and arguably the more broadly useful one: Skia's fontconfig font-family matching has a serious cold-start cost. With the 723 fonts that ship as Bianbu's default configuration, first frame took 9.0 seconds. A 59-line patch brings it down to 1.6 seconds - a 5.6x improvement.
This is not just a Flutter problem. Font matching happens inside fontconfig, so every GTK4 / libadwaita / Chromium / Electron-style program on the board pays the same tax on every cold start. The patch and measurement data are in the repository. If you ship any GUI software for Bianbu, this is a free win worth testing on your own workloads - the fix pattern (caching family lookups instead of rescanning on each match request) is small enough to evaluate in an afternoon.To prove the toolchain end to end, the developer ported LocalSend, the popular cross-platform AirDrop-style file sharing app. The localsend-riscv64 port ships as a 20.1 MB deb. Verified on K3:
Only two upstream changes were needed, 10 lines total: a riscv64 entry in cargokit's target map (+6 lines) and a plugin -Werror conflict with ayatana deprecation warnings (+4 lines). No application code was touched. That ratio - ten lines of build plumbing versus zero lines of app logic - is the real headline for teams evaluating RISC-V as a deployment target.
If you have a K3 (or any riscv64 Linux SBC running Bianbu), the shortest path to a first Flutter window:
# 1. Install toolchain deps sudo apt install clang ninja-build pkg-config libgtk-3-dev curl git # 2. Fetch the riscv64 engine package and follow the repo README git clone https://github.com/fivif/flutter-riscv64-linux cd flutter-riscv64-linux # 3. Install the engine into your Flutter SDK, then build any app flutter create hello && cd hello flutter build linux --release # 4. Or skip building entirely and grab the LocalSend deb wget https://github.com/fivif/localsend-riscv64/releases -O localsend.deb sudo dpkg -i localsend.debBudget about two hours for the engine build on a K3 - the reference run was 92 minutes with the machine otherwise idle.
A working riscv64 Flutter engine means cross-platform GUI apps - the same codebase that targets Android, iOS, Windows, and Linux x86 - can now be brought to RISC-V Linux SBCs with near-zero code changes. The SpacemiT K3 (16-core, 60 TOPS NPU, Jetson pin-compatible, RVA23 compliant) is the natural target: run a 30B LLM locally for AI features while Flutter drives the desktop UI on the same board.
For edge and gateway builds, pair it with the SpacemiT K1 (8x X60, 2 TOPS, OpenWrt 23.05) for headless networking workloads, and with WCH RISC-V MCUs - CH32V003 ($0.1) for sub-dollar sensing nodes, CH32V307 for Gigabit Ethernet, CH32V317 for USB 480Mbps, CH32H417 for USB 3.0 - as the low-power periphery around a K3/K1 hub.