Articles
Articles
Long-form writing on scrml — the language, the philosophy, what
it kills, what it costs. Each article on dev.to publishes with
canonical_url pointing
back here.
The why
- Why programming for the browser needs a different kind of language JavaScript wasn't built for today's browser. scrml is. Six things a browser-language should own at the type level.
- Components are states Why the UI of a scrml app should be a fully-handled state machine — and why that's a language-level claim, not a framework convention.
- The server boundary disappears What changes when the compiler partitions client and server automatically: no API routes, no fetch wrappers, no request/response types.
The what
-
The Tier 0/1/2 promotion ladder
From
if=chains to<match>blocks to<engine>state machines — and the mechanical promotion CLI between them. - Why scrml has to deprecate function and component overloading Overloading is library-syntactic-sugar; structural exhaustiveness is a language commitment. The two are in tension. The trio that replaces overloading.
-
CSS without a build step
Native
@scopereached Baseline. A browser-language designed today should compile its scoped styles to that, not to a runtime mangler. - Mutability contracts Who can write to this value? In mainstream stacks it's folklore. In scrml it's a compile error. Five layers of write-authority, all compile-time.
- Realtime & workers Socket.io vs. Pusher vs. Liveblocks for realtime; BullMQ vs. Inngest for queues; Comlink vs. raw Worker boilerplate. scrml replaces the whole matrix with two language primitives.
The why-not (existing tools)
- What npm package do you actually need in scrml? Worked through one ecosystem tier at a time: framework, routing, styling, validation, SQL, realtime — what scrml subsumes, what's left.
-
The ORM trap
Why an ORM trades one kind of SQL noise for another.
?{ }+ compile-time schema introspection is the alternative. - What scrml's LSP can do that no other LSP can SQL column completion. Cross-file go-to-def. Code actions for tier promotion. What vertical integration unlocks at the editor layer — and why giti follows from the same principle.
Release announcements
-
scrml v0.3.0 — Approach A complete: per-route, per-role, content-addressed
The big new thing: whole-stack closure analysis. Per-(entry-point, role, tier) chunks.
<auth role>as a compile-time visibility constraint. - scrml v0.2.0 — the foundational reactive surface V5-strict state, validators, the auto-synthesized validity surface, the pattern-matching ladder.
- Roadmap from v0.3 forward What's pending, what's in flight, what's next. Honest current-state framing.
On the version-numbered articles. The
v0.2.0 and v0.3.0 announcements are period
records — they describe the language as it stood at
that cut and are deliberately not rewritten to current
semantics. scrml is at v0.7.1; read those two as history,
and the
reference
for what is true now.