OC-Wasm

Quick rating

Community listing page, reviews here may not be monitored by the author.

OC-Wasm

No reviews yet

An OpenComputers architecture that runs WebAssembly

No Theme
Tech
In-Game Programming
Mod Addon
Mod Loaders
Forge
Minecraft

Community voices

Reviews

List view
Grid view
Compact view
Sort by
Date
Rating
Helpful
Unhelpful
Edited
Sort ascending
Show per page
10
25
50
Delete this review?

This removes your review from the project. You can write a new review after.

Review submitted for moderation

Your review has been sent to moderators, who will check that it meets our guidelines before it appears publicly.

No reviews yet. Be the first to review this project!

Get it on

Available Platforms

About

Project Details

Type
Mod
Latest Version
oc-wasm-1.12-1.0.0.jar

For authors

Embed Badge

If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.

Custom banner text
ModDex rating badge preview

Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.

Identifiers

Platform IDs

CurseForge ID

Resources

External Links

Source Issues Wiki Discord

About

Description

Overview

OC-Wasm is a CPU architecture for OpenComputers which executes WebAssembly binaries.

Getting Started

To get a basic “hello world”-type application running with OC-Wasm, you’ll need to follow a few steps:

  • Build a computer. OC-Wasm doesn’t add any new items; instead, you use the standard OpenComputers items, just as if you were building a Lua computer. After crafting the CPU or APU, hold it in your hand and Shift-Right-Click to switch architectures—just like you would to switch between Lua 5.2 and 5.3—and you should see WebAssembly in the list.
  • All computers need a BIOS, and WebAssembly computers are no different. If your program is very small (≤4 kiB), you can put it directly on an EEPROM and use it as a BIOS directly. Usually, though, your program will be too big to fit on an EEPROM, so you’ll want a BIOS which can load your program from disk. OC-Wasm-BIOS does just that: it loads a program from /init.wasm on a disk (just like the Lua BIOS loads a program from /init.lua). Since there’s no craftable item that comes with a BIOS, you’ll need to download the BIOS onto an existing computer (presumably running Lua, e.g. via wget) and flash it onto an EEPROM (e.g. via flash). Here’s a one-liner that does that: wget https://gitlab.com/api/v4/projects/27476164/jobs/artifacts/main/raw/packed.wasm?job=Compile -O bios.wasm && flash bios.wasm OC-Wasm-BIOS
  • Create your application. You’ll probably do this outside Minecraft, using regular software development tools. Once you’ve compiled a .wasm file, name it init.wasm and place it in the root directory of a hard drive or floppy disk. This can be done a few different ways:
    • Upload your program to the Internet, put the disk in a working computer, download the file to it with wget, and move the disk to the new computer.
    • Place the file directly in the proper place in your Minecraft save game directory, if you have access to it. You probably want to set bufferChanges to false in the filesystem section of your OpenComputers config file if you’re regularly using this method.
  • Boot your computer!

Working in Rust

A number of crates are available to make writing OC-Wasm programs in Rust ergonomic:

  • OC-Wasm-Cassette provides an easy way to use the Cassette async executor to run an async fn as your main function.
  • OC-Wasm-Sys is a set of raw FFI bindings. You probably don’t want to use this crate directly, but it underpins all the other ones.
  • OC-Wasm-Safe is a set of wrappers around OC-Wasm-Sys that provide memory safety, safe handling of opaque value descriptors, and mutual exclusion over system calls that cannot be invoked multiple times simultaneously.
  • OC-Wasm-Futures is a set of async futures that make it easier to write an OC-Wasm program using async and await.
  • OC-Wasm-OpenComputers is a set of high-level wrappers around the component APIs supported by ordinary OpenComputers (such as the redstone API, the filesystem API, the GPU API, etc.).
  • OC-Wasm-Immersive is a set of high-level wrappers around the component APIs supported by Immersive Engineering and Immersive Technology machines.

As of this writing, OC-Wasm-OpenComputers is incomplete, and there are few crates for high-level wrappers around other mods that can interact with OpenComputers (e.g. via the adapter block); however, community contributions (in the form of merge requests to OC-Wasm-OpenComputers or new crates for content from mods) are very welcome!

Working in Zig

AmandaC from the OpenComputers community has started early work on a repository with a Zig library and a few small examples for OC-Wasm.

Other Versions

DCNick3 made a port of OC-Wasm to Minecraft 1.7.10. If you run into any problems with it, please report them there, not here.

Technical Details

If you want to work in a language which doesn’t already have support libraries, or you’re just curious how things work under the hood, please have a look at the OC-Wasm Javadoc.

Screenshots

Gallery

This project has no gallery images yet.

Versions

Files

Relations

Project Relations

More like this

Similar Mods

Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.

On ModDex

Community snapshot

0
Ratings
0
Followers
0
In stacks

By the numbers

Statistics

~10,000
Downloads
Last Updated
Created
Last synced
When ModDex last fetched this project from CurseForge or Modrinth. Every project is re-checked on a schedule, and any project that ships a new file is synced automatically within hours of the release.
New file updates sync automatically
How syncing works