OC-Wasm
Активный0.0
Установок
Последнее обновление
Обзор OC-Wasm
OC-Wasm представляет собой архитектуру центрального процессора для мода OpenComputers, предназначенную для выполнения бинарных файлов WebAssembly.
С чего начать
Чтобы запустить базовое приложение по типу «привет, мир» с использованием OC-Wasm, выполните несколько основных шагов:
Сборка компьютера В OC-Wasm не добавляются новые предметы — используются стандартные компоненты OpenComputers, как и при создании компьютера на Lua. После создания процессора или APU удерживайте его в руке и нажмите Shift+ПКМ, чтобы сменить архитектуру — аналогично переключению между Lua 5.2 и 5.3. В списке доступных архитектур выберите WebAssembly.
Установка BIOS
Как и любому компьютеру, системе на WebAssembly требуется BIOS. Если ваша программа очень мала (≤4 КБ), её можно записать прямо на EEPROM и использовать как BIOS. Однако чаще всего программы слишком велики для EEPROM, поэтому потребуется BIOS, способный загружать программу с диска. OC-Wasm-BIOS решает эту задачу: он загружает программу из файла /init.wasm на диске (подобно тому, как BIOS Lua загружает /init.lua).
Поскольку готового предмета с BIOS нет, потребуется скачать BIOS на работающий компьютер (вероятно, на Lua, например с помощью wget) и прошить его на EEPROM (например, командой flash). Вот однострочная команда для этого:
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
Создание приложения
Разработку приложения обычно проводят вне Minecraft с использованием стандартных инструментов программирования. После компиляции файла .wasm присвойте ему имя init.wasm и поместите в корневую директорию жёсткого диска или дискеты. Это можно сделать несколькими способами:
- Загрузите программу в интернет, вставьте диск в работающий компьютер, скачайте файл с помощью
wgetи перенесите диск в новый компьютер.
- Разместите файл непосредственно в нужном месте папки сохранения игры Minecraft, если у вас есть к ней доступ. Рекомендуется установить
bufferChangesв значениеfalseв разделеfilesystemконфигурационного файла OpenComputers, если вы часто используете этот метод.
Запуск компьютера После выполнения подготовительных шагов остаётся только загрузить компьютер!
Разработка на Rust
Для удобства написания программ OC-Wasm на Rust доступен ряд крейтов:
- OC-Wasm-Cassette — упрощает использование асинхронного исполнителя Cassette для запуска
async fnв качестве основной функции. - OC-Wasm-Sys — предоставляет низкоуровневые FFI-привязки. Обычно его не используют напрямую, он служит основой для остальных крейтов.
- OC-Wasm-Safe — набор обёрток над OC-Wasm-Sys, обеспечивающих безопасность памяти, корректную работу с дескрипторами непрозрачных значений и взаимное исключение для системных вызовов, которые не могут выполняться параллельно.
- OC-Wasm-Futures — набор асинхронных фьючерсов, упрощающих написание программ OC-Wasm с использованием
asyncиawait. - OC-Wasm-OpenComputers — высокоуровневые обёртки для API компонентов, поддерживаемых стандартным OpenComputers (например, API редстоуна, файловой системы, GPU и т.д.). + OC-Wasm-Immersive — высокоуровневые обёртки для API компонентов, поддерживаемых машинами модов Immersive Engineering и Immersive Technology.
На момент написания крейт OC-Wasm-OpenComputers ещё не завершён, и существует мало библиотек для высокоуровневого взаимодействия с другими модами (например, через адаптер). Однако сообществу предлагается积极参与 в развитии проекта — принимаются пул-реквесты в OC-Wasm-OpenComputers и предложения новых крейтов для контента других модов.
Разработка на Zig
Участник сообщества OpenComputers под ником AmandaC начал работу над репозиторием с библиотекой Zig и несколькими небольшими примерами для OC-Wasm.
Другие версии
DCNick3 создал порт OC-Wasm для Minecraft 1.7.10. Если вы столкнётесь с проблемами при его использовании, сообщайте о них в соответствующем репозитории, а не здесь.
Технические детали
Если вы планируете работать с языком, для которого ещё нет библиотек поддержки, или просто хотите разобраться в внутреннем устройстве системы, ознакомьтесь с Javadoc OC-Wasm.