Hi, and welcome, compiler enthusiasts and systems folks!
Yours truly has been crafting a small but decidedly non-toy, carefully designed systems programming language called Dea.
The design is deliberately conservative: operations are either well-defined, rejected at compile time, or fail with a specified runtime error.
Dea includes deterministic resource management, ARC strings, sum types and pattern matching, explicit nullability, and checked pointer semantics, with C99 as its portable compilation target.
From the start, the plan was to write Dea's compiler in Dea itself as soon as possible, growing the language and its compiler together.
Dea evolves as one language with multiple levels, connected through an explicit compiler lineage. Dea/L0 is self-hosted through its Stage 2 compiler. Each subsequent level has one canonical compiler implemented in the preceding level: L1 is implemented in L0, and L2 in L1.
Dea/L0 is the current stable language level.
- released as L0 2.1.1
- self-hosted through its Stage 2 compiler, written in L0 itself
- verified through a triple-bootstrap fixed-point test
- supported on Linux, macOS, and Windows
Dea/L1 is under active development, with L1 0.1.0 now available as a development release.
Its canonical l1c compiler is written in L0. L1 extends Dea with wider numeric types, arrays and slices, and modules
with separate compilation, among other features. Standalone packages are available for Linux, macOS, and Windows, with
matching offline HTML and PDF documentation. Using an installed L1 toolchain needs no L0 compiler or source checkout.
L1 does not yet promise stable language, module-interface, or binary compatibility across future releases.
Dea/L2 is an independent development level. The former L1 Stage 2 became L2's canonical compiler, implemented in L1. L2 does not yet have a packaged release. L1 and L2 development does not change L0's stable status.
For the stable L0 toolchain, start with the L0 overview and quickstart.
To try the L1 development release, download L1 0.1.0 and follow the packaged-toolchain guide. If you are interested in compiler development and the evolving language design, see the L1 development guide and the L2 overview.
Source, compiler, specifications, tests, design documents, and current development:
Try Dea right in the browser:
With L0 stable and L1 and L2 under development, external technical criticism is valuable at every level.
If you are interested in programming languages, compilers, systems programming, bootstrapping, C backends, language semantics, or simply finding flaws in language design, please take a look.
Bug reports and code contributions are welcome, but so are questions and critical feedback about semantics, compiler architecture, unnecessary complexity, missing cases, or questionable design decisions.
See the contribution guide to get started.
Dea is licensed under either the MIT license or the Apache License 2.0, at your option.
- googlielmo a.k.a.
gwz| creator and lead developer | blog: googlielmo.github.io - gidad | project advisor
[your name here]| perhaps you could be part of this too!
Best,
-- gwz