Skip to content

WASM support #177

@kitknox

Description

@kitknox

This is to document and get feedback on WASM support in rootshell. I've landed initial support that allows you to cross compile elsewhere to WASI, copy the resulting binary to the rootshell iOS local shell and then run it. Support exists for sandboxed filesystem read/write access, TCP sockets, DNS, and TLS/HTTPS network requests. Sessions can run cooked or raw. This is going to need to be strictly framed using the Educational use exception for App Store purposes. Bundling of package managers for pre-compiled WASM binaries may be a step too far. I plan on working to get a minimal version approved before spending too much time on something that might just be rejected. (Even though other apps like a-Shell already leverage WASM in a terminal type environment.)

I did a demo port of outside which is a rust TUI weather application. It was fairly small to do as an initial port and exercises filesystem and network access in a raw mode session. This repo is also GPL which we otherwise cannot directly bundle in the binary on the App Store as well.

I will get a repo up that documents the compilation steps, and how the network primitives work. I have demos working so far in both rust and go. Note that the "system calls" for network access have to go through an expensive bridge. This port is smaller than a hello world in go which comes out above 2MB and is noticeably slower to launch.

-rwxr-xr-x  1 kit  staff   1.3M May 11 16:47 outside.wasm*

Link to WASM port is here.

Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions