Сейчас
Продолжается подготовка к раскрутке компилятора:
- доработка runtime: сделана обработка исключительных ситуаций (windows, linux), трассировка стека (linux)
- доработка библиотек: Словарь (hash map), доработка строк
- разработка подсистемы модульного тестирования
- чистка языка и компилятора
Не все влито в мастер, разработка идет в ветках.
Дальше
После выступления на семинаре (презентация выложена в папку doc), появилась возможность думать о следующем шаге после раскрутки компилятора. Раскрутка — шаг очень важный, но технический (и тактический).
Что же касается существенного движения вперед, то я склоняюсь к мысли, что делать надо (более-менее параллельно) три языка:
- язык описания схемы программы. Повторять напрямую то, что было в Вире не считаю правильным, хочу критически пересмотреть и разделить на то, что принципиально и то, что нет. Это язык вне L-категорий, так как в сборке по схеме могут быть использованы компоненты, написанные на языках разных уровней. Мета язык, М-язык.
- язык разработки компонент — L3 или L2, хотя может быть и L4. Мысли бродят разные, определенности пока нет. Чтение The Argentum Book дало еще один повод задуматься. В любом случае, синтаксически язык будет близок к Тривилю, с точки зрения системы типов обязательно будет тип с утиной типизацией, предположительно, будет называться ‘протокол’.
- язык описания пользовательского интерфейса (типа декларативный UI). В Вире, интерфейс строился на компонентах, и это было относительно просто и подходило для «офисных» приложений. Здесь же хочется сделать сразу так, чтобы потом можно было сделать хорошо. Этот язык тоже не вписывается в категории, но по другому. в него должны «просачиваться» императивные части из языков L1-L4. А само декларативное описание должно быть встроено в схему. Основная проблема: надо глубоко входить в тему и искать способ сделать «тривиальную» реализацию — make it simple, as possible… but portable.