July 30th, 2024

Orca: WebAssembly Apps Without the Web

Orca is developing a cross-platform application stack with a canvas API for 2D graphics and WebGPU backend. It has improved tooling, moved to GitHub, and aims for unified graphical application development.

Read original articleLink Icon
CuriositySkepticismFrustration
Orca: WebAssembly Apps Without the Web

Orca is developing a new stack for cross-platform applications, focusing on a canvas API for 2D vector graphics and a WebGPU compute backend for rendering. Recent updates include a streamlined user tooling, a wasm-compatible C standard library, and enhancements to the vector graphics backend. The project has transitioned to a more permissive license and moved its code repository to GitHub, allowing public access and sponsorship for development. Feedback from users has been collected to address tooling issues encountered during the build and usage of Orca. The initiative aims to create a unified platform for developing, distributing, and running sandboxed graphical applications across various operating systems. The Orca team has been actively sharing progress through blog posts, including an end-of-year recap highlighting significant developments over the past year. The project is led by Martin Fouilleul, who has acknowledged the contributions of early collaborators in making the codebase accessible. Overall, Orca is positioned as a promising framework for developers interested in creating cross-platform applications without relying on traditional web technologies.

Related

Orb: Write WebAssembly with Elixir

Orb: Write WebAssembly with Elixir

Orb leverages Elixir's ecosystem to simplify WebAssembly writing, offering features like composable modules, Hex package manager, ExUnit testing, macros, and syntax highlighting. It enables Elixir code compilation to .wasm, supports reusable modules, and integrates existing Elixir libraries for MIME tasks, showcasing flexibility in WebAssembly development.

20x Faster Background Removal in the Browser Using ONNX Runtime with WebGPU

20x Faster Background Removal in the Browser Using ONNX Runtime with WebGPU

Using ONNX Runtime with WebGPU and WebAssembly in browsers achieves 20x speedup for background removal, reducing server load, enhancing scalability, and improving data security. ONNX models run efficiently with WebGPU support, offering near real-time performance. Leveraging modern technology, IMG.LY aims to enhance design tools' accessibility and efficiency.

Update on GNOME Newton, the Wayland-native accessibility project

Update on GNOME Newton, the Wayland-native accessibility project

The Newton project aims to enhance accessibility on free desktops, focusing on Wayland-protocols, AccessKit, Mutter, Orca, GTK, and libadwaita components. Progress includes running GTK 4 apps in Flatpak sandboxes, with ongoing work to improve Orca functionality on Wayland. Challenges involve optimizing performance and addressing architectural issues for assistive technologies. Future plans may extend support to GNOME Shell UI.

Mako – fast, production-grade web bundler based on Rust

Mako – fast, production-grade web bundler based on Rust

Mako, a Rust-based front-end build tool, is now open-source, aiming to enhance build speed. Tested at Ant Group, it surpasses Webpack in speed, especially with React Server Components, offering an SSU feature. Users can engage via WeChat, Telegram, or RSS, contribute to development, and join support services.

We increased our rendering speeds by 70x using the WebCodecs API

We increased our rendering speeds by 70x using the WebCodecs API

Revideo, a TypeScript framework, boosted rendering speeds by 70 times with WebCodecs API. Challenges overcome by browser-based video encoding. Limited audio processing and browser compatibility remain.

AI: What people are saying
The comments on the Orca application stack reveal various concerns and interests among users.
  • There are questions about the feasibility of porting the application to iOS due to restrictions on running WASM.
  • Some users express skepticism about the choice of using WASM3, citing its maintenance status.
  • Concerns are raised about the lack of Linux support for a cross-platform project.
  • Users highlight the challenges of cross-platform UI development and the need for a mature solution.
  • There are discussions about the programming language used, with some preferring alternatives like TypeScript.
Link Icon 13 comments
By @dathinab - 9 months
They are currently only targeting desktop but I wonder how would you port something like this to iOS, I don't think iOS let's you run a WASM AOT/JIT or similar on iOS. Would you AOT compile WASM to ARM64 and ship that?
By @afavour - 9 months
I had to dig around to find out what language these apps are written in… it appears to be C.

Still interesting though, I’m always fascinated to see what uses come from the WASM sandbox. But I personally won’t be hand crafting UIs in C if I don’t have to.

By @nanomonkey - 9 months
Sadly this only supports wasm3 (WebAssembly 1.0) and doesn't yet have a Linux installation (Windows and Mac only). So no WasmGC (modern garbage collection included version).
By @evacchi - 9 months
interesting that they are shipping their own libc https://github.com/orca-app/orca/blob/main/src/orca-libc/not...
By @feverzsj - 9 months
It's weird that Linux is not supported for a cross-platform project.
By @pjmlp - 9 months
Just target the JVM or CLR, enjoy 25 years of ecosystem maturity in libraries, and bytecode instrumentation, and be done with it.
By @gbraad - 9 months
Must be me, but the page shows nothing now except for an 'empty' page (logo and the statement: "web assembly apps without the web" and top nav "blog", "code", etc. Navigated to https://github.com/orca-app/orca and at least can see what this is all about. Perhaps something was removed or edited?
By @Muromec - 9 months
And it used wasm3, which is maintenance mode according the readme because of reasons.

I don't like this timeline. I can't visit home and I can't have typed continuations in a lightweight wasm interpreter either.

By @amne - 9 months
have we come full circle? are we there yet? where is the "x64-to-wasm" compiler?
By @pshirshov - 9 months
We badly need something like this but mature. Cross-platform UI development is a total mess with literally zero solutions ticking all the boxes.

If you want to write an app which will target all the major platforms (3 desktops and two mobiles), want a native look and minimal effort for every platform you target, there is nothing apart from QT. And it's a real pain to deal with unmanaged memory. Also, QT is a mess, you cannot define your interfaces declaratively (with QML) and easily interact with them from C++ code, you won't have any typings. So, you either have to go the ancient way of imperative UI definitions or do everything in QML which is total mess.

If you drop native look requirement, some small things like https://www.egui.rs/ might work for you.

If you drop the minimal effort requirement, all the webivew based mess might help you but it won't be easy due to multiple reasons.

By @revskill - 9 months
It is still hard to beat typescript on the language level.
By @bmitc - 9 months
Quit naming projects after endangered species. When people search for "orca", they shouldn't be pointed to random software projects but instead research and advocacy groups fighting for orca rights and wellbeing.