К содержимому
NEOBRIDGE INSIGHTПо вопросамinfo@neobridge.kz
⌕
Технические модули

Io: язык сообщений и прототипов с интерпретатором WebAssembly

Io — динамический прототипный язык: вычисления выражаются сообщениями между объектами. Текущая основная цель сборки — WebAssembly/WASI с browser REPL и Io↔JavaScript bridge.

·22 источников·По описаниям проекта ↗
Концептуальная иллюстрация к обзору: Io: язык сообщений и прототипов с интерпретатором WebAssembly
Концептуальная иллюстрация · создана с помощью ИИ
01
КЛЮЧЕВЫЕ СВЕДЕНИЯ

Паспорт проекта

По первоисточникам
Тип
Технические модули
Задача
Исследовать выразительность высокоуровневого динамического программирования, runtime-гибкость и простую унифицированную семантику.
Для кого
Разработчики, уже знакомые с программированием, изучающие Io, и авторы host-приложений, встраивающих WASM-интерпретатор.
Технологии
JavaScript / API / SDK
Что потребуется
Основная сборка требует wasi-sdk и wasmtime; binary исполняется WASI-host.
Основание
22 первоисточников
02
СУТЬ

За 30 секунд

01 / Зачем

Исследовать выразительность высокоуровневого динамического программирования, runtime-гибкость и простую унифицированную семантику.

02 / Как

Выполняет Io-выражения/скрипты с сохраняемым состоянием REPL; browser-интерфейс позволяет запрашивать, создавать и менять HTML-элементы.

03 / Результат

Результаты вычислений, изменённое состояние объектов и DOM; печать Io собирается через printCallback в буфер памяти.

03
ПОСЛЕДОВАТЕЛЬНОСТЬ

Как это работает

01

На входе

API

Исходные строки и сообщения Io, передаваемые host в модуль; browser REPL принимает выражения, DOM API — запросы/операции над элементами.

02

Механизм

Выполняет Io-выражения/скрипты с сохраняемым состоянием REPL; browser-интерфейс позволяет запрашивать, создавать и менять HTML-элементы.

03

Результат

Результаты вычислений, изменённое состояние объектов и DOM; печать Io собирается через printCallback в буфер памяти.

04
ПОДРОБНОСТИ

Что важно понять

01

Техническое устройство

Parser строит дерево IoMessage. Итеративный loop обрабатывает heap-allocated IoEvalFrame, переносит состояние вызовов/корутин из C-stack в управляемые кадры. Память собирает incremental tri-color mark-and-sweep; scheduler FIFO без приоритетов.

02

Для чего создано

Исследовать выразительность высокоуровневого динамического программирования, runtime-гибкость и простую унифицированную семантику.

03

Для кого

Разработчики, уже знакомые с программированием, изучающие Io, и авторы host-приложений, встраивающих WASM-интерпретатор.

04

Сценарии использования

Интерактивное выполнение Io в browser REPL с сохранением переменных/методов; встраивание в WASI-host; программное управление DOM-элементами в пределах реализованного bridge.

05

Идея решения

Унифицировать функции/методы/замыкания через blocks, классы/объекты/locals через prototypes, операции/присваивания через messages; heap-frame evaluator переносит корутины на WASM без платформенного stack-switching.

06

Какую задачу описывает источник

В документации оптимизаций описана конкретная текущая техническая цена: обход heap-дерева сообщений даёт множество переходов по указателям и плохую cache locality. Предложенные улучшения ещё являются планом.

05
ГОТОВНОСТЬ К ПРОВЕРКЕ

Что известно из описания

Полнота описанияЗапуск не проверялся
МеханизмОписано
ТребованияОписано
ОграниченияОписано

Что потребуется

  • Основная сборка требует wasi-sdk и wasmtime; binary исполняется WASI-host.
  • Для прежних native/CMake/dynamic-addon сценариев оставлена отдельная native-ветка/tag, где принимают bugfixes.

Что учитывать

  • В WASM нет native addon system.
  • Браузерный shim не даёт файловую систему; DOM-мост ограничен 256 результатами и строкой 64 КБ, без событий, fetch/async и computed styles.
  • callcc выключен по умолчанию из-за риска обхода очистки ресурсов и повреждения стека обработчиков.
06
СМОТРИМ ГЛУБЖЕ

Комментарий NeoBridge

Общая справка

  • Прототип и сообщение — Прототип — объект, от которого берут поведение. Сообщение выбирает операцию и передаёт ей аргументы.
  • WASM, WASI и REPL — WebAssembly — переносимый формат исполнения; WASI задаёт взаимодействие с окружением; REPL позволяет вводить выражения и сразу получать результаты.
  • DOM и heap-frame — DOM представляет структуру веб-страницы; heap-frame хранит состояние шага вычисления в динамической памяти.
  • Сборщик памяти и callcc — Сборщик освобождает недоступные объекты. callcc захватывает продолжение вычисления, что требует отдельного контроля переходов и очистки ресурсов.
  • API — Правила, по которым программы обращаются друг к другу: например, запрашивают данные или передают команду.
  • Парсинг — Разбор текста по правилам и преобразование его в структуру, с которой может работать программа.

Что стоит уточнить

  • Нужен текущий WASM/browser target или прежний native с addons? Различаются возможности и доступ к окружению.
  • Нужны ли события браузера, сеть, async или большие DOM-выборки? Описанный мост не покрывает эти функции без ограничений.
  • Какая лицензия относится к текущему коду и компонентам? Условия исторического Guide не устанавливают лицензию всей реализации.

Основания и справочные материалы

API ↗Парсинг ↗
↗
ОСНОВАНИЯ

Из первоисточников

22 ссылок

Редакционный обзор NeoBridge Insight по материалам источников ниже. Права на исходные тексты, код и изображения принадлежат их правообладателям. Условия использования указаны в первоисточниках.

Независимое тестирование проекта не проводилось.

← Вернуться к проектам Продолжить исследование ↗