Loment
RU

Дорожная карта

Что идёт дальше

Версии, к которым стремится проект, начиная с 0.1.5, и для чего нужна каждая из них. Это план — форма работы, которую проект задал себе, а не расписание.

Никаких дат, и ничего отсюда нельзя скачать. Каждая строка ниже — выбранное проектом направление; ни одна из них не обязательство по времени, и ни одна не функция, которой можно пользоваться сегодня. Установить можно последний релиз, а что в нём, — на странице истории релизов.

Ближайшая веха: 0.1.5 Alpha 1

Следующее в списке — не функция. Его цель заявлена как нулевая тишина: каждое утверждение, которое делает язык, получает либо вердикт, либо проверку, которая могла бы доказать его неправоту, — ничто не описывается без чего-то, что могло бы опровергнуть это описание.

На входе — обзор того, что хорошо делают другие языки, — взятый из C, Rust, Java и Python, — а цель в том, чтобы каждая его строка оказалась решённой. Разрешены три вердикта: скопировать механизм; скопировать намерение, но не форму; или отказаться напрямую, назвав, в какое противоречие это упирается и чью сторону выбрали. Три формулировки считаются состояниями провала: «не решено», «надо обсудить» и «смотря по обстоятельствам» — строка, кончающаяся одной из них, не решена, а отложена, а правило такое, что отсрочка считается провалом.

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

Насколько толста абстрактная машина

C достаточно тонок, чтобы допускать неопределённое поведение, и именно эта тонкость покупает ему скорость и переносимость — язык не предполагает ничего. Rust достаточно толст, чтобы решать заимствование во время компиляции, и именно эта толщина покупает ему доказательства — язык предполагает очень много. Оба нельзя максимизировать одновременно.

Где живёт разум

Java помещает его в среду выполнения и покупает на это пиковую пропускную способность и более простое сопровождение. Причина существования Loment — программа без среды выполнения и с предсказуемым поведением. Поместить сборщик в ядро — значит отдать то, ради чего этот язык существует — поэтому возврат памяти — это многоуровневый выбор, а не политика.

Когда разрешается имя

Python разрешает во время выполнения: без церемоний, пишешь быстро. Java разрешает во время компиляции: надёжные инструменты и рефакторинг. Один и тот же импорт не может быть проверен во время компиляции и не быть им.

Ни одно из этих трёх не решается находкой ловкой середины. Каждое решается выбором стороны и записью того, чего стоила другая сторона.

Что идёт после

0.1.5 — возврат памяти становится тем, на что можно положиться

Лестница возврата памяти — то, ради чего нужна 0.1.5: момент, когда оно перестаёт быть проектом и становится свойством, на которое программа может рассчитывать. Большая часть лестницы уже построена — у всех четырёх ступеней есть реализации и критерии, адаптивный сборщик и поколенческая половина оба уже появились, и две реализации языка совпадают по ним побайтово. 0.1.5 добавляет то, что не является функцией: уладить это и быть в состоянии сказать, что оно гарантирует, а что нет. Сама лестница описана на её собственной странице, которая держит собственную строку состояния.

0.1.5.x — среда выполнения закончена

Измерение runtime уже существует как режим со значением по умолчанию, и оно обязательно, а не рекомендательно: запросить ступень, которой нужен сборщик, объявив при этом, что артефакт не несёт runtime, — это ошибка компиляции, потому что эти двое противоречат друг другу по определению. То, что runtime держит сегодня, — ровно та часть, которая нужна этой ступени. Эта строка добавляет остальное.

0.1.6 — интерпретатор попадает в пакет

Второй способ запустить программу, на нижней ступени своей лестницы. Ступени уже построены — T0–T3 живут в репозитории, у каждой свой критерий — но ни одна из них ещё не в дистрибутиве, и choose vm по-прежнему ничего не меняет в том, что излучает компилятор. 0.1.6 закрывает этот разрыв: интерпретатор поставляется, а та страница ведёт собственную строку состояния.

0.1.7 — система объектов достраивается

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

0.1.8 — система управления памятью достраивается

Что опирается на уровни и лестницу выше: возврат памяти становится системой, а не набором механизмов.

За пределами 0.1.8 направления всё ещё в планировании, и эта страница их не выдумает. Одно, что вне этого списка, было объявлено отдельно: собственная следующая версия менеджера пакетов, о которой объявляют в его собственном репозитории.

Как узнать, случилось ли что-нибудь из этого

Дорожная карта стоит чтения, только если её можно потом проверить, так что честнее всего сказать, где происходит проверка. Проект не держит свои планы в публичном трекере задач. Он записывает их как пронумерованные документы о проектировании в репозитории, и эти документы написаны по-китайски — о чём стоит знать прежде, чем пойдёте искать, потому что дорожная карта не там, где вы ожидали бы её найти.

Приход каждой версии — тогда дело записи, а не объявления: история релизов говорит, что вышло и когда, и каждая из страниц ниже несёт собственную строку состояния, а не описывает себя как законченную.

История релизов Что действительно вышло, от первой версии до той, что строится сейчас. Дорожная карта в вики Тот же план подробнее, рядом с остальной частью языка. docs/ Пронумерованные записи о проектировании, где каждая из этих строк аргументируется, а не пересказывается. По-китайски. Назад на главную Что такое Loment и два вида артефактов, которые он собирает.