РИНЦ Форум ВКонтакте LinkedIn

Стандарт

Моя цель — создать стандарт на нативный программный код. Мы окружены программами, но нет подходящего стандарта, который бы позволил писать быстрые и переносимые прогаммы, не нанимая армию технологов, перекомпилирующих по сто раз под каждый дистрибутив одно и то же.

  • FileMagnet Cocotron Cocoa

    Мост в родной UI Cocoa на macOS

  • Putting Metaclasses to Work

    Объектная модель из легендарной книги

  • RRBC class evolution

    Эволюция библиотек классов без перекомпиляции

  • demo-image

    Затолкать всё в Java пытались, не вышло

Я хочу починить мир

Мне не нравится, как с уходом с Windows потерялась многоязыковость и вообще возможность пробиваться не самым популярным языкам программирования. Во имя прогресса языков программирования соревнование должно быть честным.

Мне не нравится, что под соусом кроссплатформенности нам навязали сначала виртуальные машины, потом скрипты, а теперь и вовсе всё пожрал браузер. Хочу обратно проворные программы.

Мне не нравится многочасовая перекомпиляция статически собранных программ. Хочу хорошую поддержку библиотек для нативного кода.

Лозунг

Скомпилируй трижды, запусти везде* *) Рекоммендуемый набор ещё не вполне определился. Сейчас это: x86_64, x86, wasm.

PE/COFF

Wine запускает их на POSIX, Odin32 на OS/2, HX DOS Extender под DOS. Многократно пройденная дорога, без особенных требований. Для сравнения, поддержка Linux ELF потребовала аппаратную виртуализацию в macOS, либо поддержку в ядрах Solaris и Windows. Некоторые другие форматы как ANDF (TenDRA), PNaCl, UEFI EBC, wasm, не поддерживаются инструментами разработки или имеют ряд тяжело поддерживаемых особенностей.

OpenStep API

Современная его версия существует в macOS. Посредством этого API можно работать с файлами, сетью и рисовать графический интерфейс. Есть две кроссплатформенные реализации: GNUStep и Cocotron.

Объектная модель

За основу берём шедевр, описанный в книге «Putting Metaclasses to Work». Реализация вдохновляется System Object Model. Добавляем хорошее из Objective-C 2.0 вроде ARC. Добавляем типы-значения из .NET.

x86 — это байткод

Этот байткод можно исполнять чуть ли не на каждой активно поддерживаемой архитектуре, вот только отношение к нему надо поменять. Сейчас отношение как к конкуренту родному машинному коду, а должно стать отношение как к конкуренту msil. И крайний срок давности патентов 20 лет, и они истекли или истекают. Те, кто повторяют мантру про лицензирование, пропустили момент, когда эти 20 лет прошли, и по инерции продолжают повторять.

И не забыть браузер

Чтобы утолить жажду кроссплатформенности, но не тащить браузер на рабочий стол, мы потащим рабочий стол в браузер. WebAssembly. Зелёные потоки на сегментированных стеках. Структурная многозадачность. RAII. Написанные в синхронном стиле потоки, ждущие мьютексы и условные переменные. Здесь всё взаимосвяано. Например, если, как при использовании EmScripten, поток не может уйти в ожидание, а обязан вернуть управление на самый верх, какое может толком быть RAII в таких условиях?