О языке Spin
Язык позволяет описывать динамические структуры данных для ЭВМ со Spin-архитектурой. Ввиду широкого распространения архитектуры фон Неймана планируется реализация Spin-ядра на базе JavaScript, C, Kotlin, Swift, Assembler, чтобы покрыть все существующие устройства.
Проект находится на стадии реализации ядра. Мы создаем среду, где топология данных определяет логику исполнения.
Ядро реализует ленивые вычисления, пока результат формулы не выводится на экран, не пишется в файл, не отправляется по сети, не печатается принтером - не влияет на внешний Мир, формула не будет вычисляться.
Архитектура памяти: Spin-Node
В основе Spin лежит унифицированная ячейка памяти фиксированного размера. Каждый узел графа состоит ровно из 8 адресных указателей. Это обеспечивает детерминированное управление памятью и потенциально позволяет использовать Spin-загрузчик для работы без операционной системы.
Ключевые принципы
Ортогональная связность
Каждый элемент является узлом сразу в двух двусвязных списках. Это позволяет описывать структуры любой сложности через бинарную композицию и перемещаться по графу в любом направлении с минимальной задержкой.
Прямой синтез (JIT)
Текстовое описание Spin преобразуется напрямую в нативный граф в памяти. Одно из полей структуры опеределяет нативную функцию-операцию, что исключает накладные расходы классической интерпретации.
Нативный параллелизм
Топология графа позволяет ядру автоматически определять независимые ветви вычислений и распределять их между потоками CPU без блокировок (Lock-free).
Универсальный рантайм
Единая структура данных позволяет исполнять один и тот же код в браузере, на сервере, в дектоп или напрямую на микроконтроллерах (Bare Metal).
Концепция исполнения
Код парсится в граф зависимостей.
Субъекты инициализируются как изолированные объекты.
Изменение состояния триггерит обновление связанных узлов (Propagation).
Цели разработки
Spin создаётся как инструмент для описания прикладных областей (включая интерфейсы и бизнес-логику) в виде иерархии взаимозависимых элементов. Задача системы — полностью взять на себя системные аспекты: управление памятью, ленивую синхронизацию данных, сеть и распараллеливание вычислений.
Проект находится в стадии активной разработки и открыт для предложений по развитию инфраструктуры, технологическому партнерству и поддержке.