Паспорт проекта
- Тип
- Технические модули
- Задача
- Исследовать выразительность высокоуровневого динамического программирования, runtime-гибкость и простую унифицированную семантику.
- Для кого
- Разработчики, уже знакомые с программированием, изучающие Io, и авторы host-приложений, встраивающих WASM-интерпретатор.
- Технологии
- JavaScript / API / SDK
- Что потребуется
- Основная сборка требует wasi-sdk и wasmtime; binary исполняется WASI-host.
- Основание
- 22 первоисточников
За 30 секунд
Исследовать выразительность высокоуровневого динамического программирования, runtime-гибкость и простую унифицированную семантику.
Выполняет Io-выражения/скрипты с сохраняемым состоянием REPL; browser-интерфейс позволяет запрашивать, создавать и менять HTML-элементы.
Результаты вычислений, изменённое состояние объектов и DOM; печать Io собирается через printCallback в буфер памяти.
Как это работает
На входе
Исходные строки и сообщения Io, передаваемые host в модуль; browser REPL принимает выражения, DOM API — запросы/операции над элементами.
Механизм
Выполняет Io-выражения/скрипты с сохраняемым состоянием REPL; browser-интерфейс позволяет запрашивать, создавать и менять HTML-элементы.
Результат
Результаты вычислений, изменённое состояние объектов и DOM; печать Io собирается через printCallback в буфер памяти.
Что важно понять
Техническое устройство
Parser строит дерево IoMessage. Итеративный loop обрабатывает heap-allocated IoEvalFrame, переносит состояние вызовов/корутин из C-stack в управляемые кадры. Память собирает incremental tri-color mark-and-sweep; scheduler FIFO без приоритетов.
Для чего создано
Исследовать выразительность высокоуровневого динамического программирования, runtime-гибкость и простую унифицированную семантику.
Для кого
Разработчики, уже знакомые с программированием, изучающие Io, и авторы host-приложений, встраивающих WASM-интерпретатор.
Сценарии использования
Интерактивное выполнение Io в browser REPL с сохранением переменных/методов; встраивание в WASI-host; программное управление DOM-элементами в пределах реализованного bridge.
Идея решения
Унифицировать функции/методы/замыкания через blocks, классы/объекты/locals через prototypes, операции/присваивания через messages; heap-frame evaluator переносит корутины на WASM без платформенного stack-switching.
Какую задачу описывает источник
В документации оптимизаций описана конкретная текущая техническая цена: обход heap-дерева сообщений даёт множество переходов по указателям и плохую cache locality. Предложенные улучшения ещё являются планом.
Что известно из описания
Что потребуется
- Основная сборка требует 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 выключен по умолчанию из-за риска обхода очистки ресурсов и повреждения стека обработчиков.
Из первоисточников
Редакционный обзор NeoBridge Insight по материалам источников ниже. Права на исходные тексты, код и изображения принадлежат их правообладателям. Условия использования указаны в первоисточниках.
Независимое тестирование проекта не проводилось.
github.com
- IoLanguage/io↗
- README.md↗
- browser/README.md↗
- docs/Book/Appendix/_index.md↗
- docs/Book/Concurrency/_index.md↗
- docs/Book/Control Flow/_index.md↗
- docs/Book/Introduction/_index.md↗
- docs/Book/Objects/_index.md↗
- docs/Book/Primitives/_index.md↗
- docs/Book/Syntax/_index.md↗
- docs/Guide/_index.md↗
- docs/Implementation/How to Write C Bindings/_index.md↗
- docs/Implementation/Overview/_index.md↗
- docs/Style Guide/_index.md↗
- docs/Technical Notes/Future Work/Exceptions/_index.md↗
- docs/Technical Notes/Future Work/Performance/_index.md↗
- docs/Technical Notes/Stackless/Examples/_index.md↗
- docs/Technical Notes/Stackless/Report/_index.md↗
- docs/Technical Notes/WASM/Browser Target/_index.md↗
- docs/Technical Notes/WASM/DOM Interop/_index.md↗
- docs/Tutorial/_index.md↗
- tools/docker/README.md↗




Комментарий NeoBridge
Общая справка
Что стоит уточнить
Основания и справочные материалы
API ↗Парсинг ↗