← board

Decided: FPC and Delphi. The rest is deferred, not refused.

Owner, 2026-09-05, verbatim:

"we target general fpc mode and even delphi mode, for now that is enough, our goal is not to support every pascal language on this planet, especially not if it's not in active use."

"Not in active use" is the test, and "for now" is load-bearing. This is not a refusal and it must not be written down as one. A dialect comes back the moment there is real code someone wants to compile.

What that means per folder

The four terminal folders say different things, and this decision picks exactly one of them:

The part that is NOT deferred

A dialect we do not support must be answered at the front door, and that is dialect-agnostic work. A MacPas program declares {$MODE MACPAS} several lines before its first {$ifc}, so it announces at the top that we cannot compile it. Erroring there is one check that says a true thing early; teaching six conditional directives is dialect knowledge that says it late — and says it only for the one dialect someone happened to census.

Measured 2026-09-05, before the fix: pxx accepted every {$MODE} silently. The whole handler was DelphiMode := CaseEqual(name, 'delphi') (paslexer.inc), so MACPAS, ISO, EXTENDEDPASCAL and TOTALNONSENSE all fell into one bucket with no diagnostic. That is a different axis from the 2026-09-04 unknown-directive warning: that one keys on the directive NAME, and this is a known directive with an unrecognised VALUE — measured, since {$TOTALLYUNKNOWNDIRECTIVE} warned and {$MODE TOTALNONSENSE} was silent.

Fixed the same day, and the SEVERITY IS SET BY EVIDENCE RATHER THAN BY THIS POLICY — which of the two questions applies is the thing to get right here, because they are easy to conflate: this record says which dialects we target; it does not say how badly each untargeted one goes wrong.

{$MODE …} why
objfpc fpc tp delphi delphiunicode pxx accepted the family we target; one superset dialect
macpas error measured harm: both arms of {$ifc} compile, wrong binary
iso extendedpascal warning no such measurement — see below
anything else error fpc 3.2.2 rejects it too, so it cannot be intent

A first draft errored on all three unimplemented dialects and the suite caught it: conformance row tcase50 ({ %NORUN }, {$mode ExtendedPascal}, a case … otherwise) COMPILES here and went red. Real code we build correctly, refused on a harm nobody had demonstrated — which is exactly the narrowing [[bug-p-a-spurious-unknown-directive-warning-cannot-fail-any-test-we-have]] exists to warn about. Promote iso or extendedpascal to an error the day someone measures a divergence, and cite the measurement at the check.

The accepted list is bounded by asking fpc rather than recalling it: fpc 3.2.2 has exactly eight modes and rejects everything else. A draft carried turbo as an alias for tp, which is invented — -Mturbo is Illegal parameter and {$mode turbo} is Illegal compiler switch "TURBO".

Why this record exists at all

Because a ticket sourced from a corpus census inherits that corpus's priorities, not ours. The MacPas ticket carried "31549 occurrences of {$setc}" — a careful, correct number, counting FPC's macOS bindings, which FPC ships because FPC targets macOS. Nothing anyone wanted to build hit it. The number was precise about the wrong quantity, and precision reads as authority, which is how it sat at prio 40.

The same sweep also found a real defect ({$A n} reported as a typo — ordinary Pascal, real code), so a census is a fine way to FIND things and not a way to RANK them. A census-sourced ticket needs a demand line — a program we want to compile — or a lower prio.

Without this record the next session to census directives re-files exactly that ticket at exactly that prio, and re-derives this conversation.