Loment
RU

Стандарт

Стандарт языка Loment

У языка есть именованный стандарт, на который можно ссылаться — LLS, Loment Language Standard, — и он живёт в репозитории, рядом с кодом, который описывает, а не на этой странице.

Для чего он нужен — и чем отказывается быть

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

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

Что решает вопрос соответствия

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

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

Переключатели

Стандарт описывает Loment его переключателями, а не тем, чего в нём нет. Каждая подсистема, какая у языка может быть, — какой слой программе можно использовать, кто возвращает память, несёт ли бинарник runtime, есть ли у него порты во внешний мир и для какой модели выполнения он, — это настройка, которую программа объявляет один раз, в своём корневом модуле, и сборка её записывает. Значения по умолчанию — это положения, при которых существующие программы ведут себя как раньше. Это свойство значений по умолчанию, а не утверждение о языке.

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

Где он живёт

Рядом с кодом, который он описывает, и версионируется вместе с ним: версия стандарта и есть версия поверхности, которую он определяет. Одно число, а не два, — потому что отдельная ось изданий потребовала бы таблицы соответствия изданий версиям языка, а такая таблица была бы вторым источником истины.

standard/LLS.md Сам стандарт. Написан по-английски, и в нём прямо сказано, что большая часть того, на что он нормативно ссылается, написана по-китайски. docs/158 Замороженная поверхность и процедура её изменения — запись, на которую стандарт указывает в обоих случаях. На китайском. История версий Что на самом деле было выпущено — чем стандарт не является и чем никогда себя не называл. Назад на главную Что такое Loment и два вида программ, которые он собирает.