Loment
EN

Standard

The Loment Language Standard

The language has a named, citable standard — LLS, the Loment Language Standard — and it lives in the repository beside the code it describes rather than on this page.

What it is for, and what it refuses to be

A standard exists so that "is this implementation correct?" has an answer that does not depend on who is asked. Most standards answer that by stating the rules themselves. This one does not: the project's rule is that the authoritative copy of anything exists in exactly one place, so the standard states no language rules of its own. It is a frame around the rules, and everything in it is either a pointer to a single source or a statement about what conformance means.

It does two things with that frame. It fixes the surface — which parts of the language may change only by a defined procedure, and what that procedure is. And it decides conformance, by naming the suite that decides it.

What decides conformance

Not the document, and not any implementation. The standard says so in as many words: where the prose, an implementation and the criteria disagree, the criteria are right. A failing criterion may not be made to pass by relaxing the criterion — only by changing the implementation, or by changing the surface under the procedure.

And what the suite cannot see. Some criteria need a tool a given machine may not have, and they report skipped rather than passed — so "green" means the criteria that ran were green. The standard names each one, and it also writes down the least comfortable sentence in the whole document: the suite is written by the same author as the implementations, so two implementations agreeing is evidence that they agree.

The switches

The standard describes Loment by its switches rather than by what it lacks. Every subsystem the language can have — which layer the program may use, who reclaims memory, whether the binary carries a runtime, whether it has ports to the world, and which execution model it is for — is a setting the program states once, in its root unit, and the build records it. The defaults are the positions that keep existing programs behaving as they did. That is a property of the defaults, not a claim about the language.

The standard also draws a line that is easy to miss. Some combinations of switches are refused because the two values mean opposite things; others are refused only because nobody has built them yet. A switch that is off is not a switch that is forbidden, and the standard keeps the two apart on purpose.