Seed7
An extensible general-purpose programming language by Thomas Mertes in which the entire syntax and semantics — statements, operators, and even control structures — are defined in user-readable library files rather than hard-coded into the compiler
Created by Thomas Mertes
Seed7 is an extensible general-purpose programming language designed by Thomas Mertes. Its defining idea is radical: rather than fixing the language’s grammar inside a compiler, Seed7 lets programmers define new statements, operators, and abstractions themselves — and, in fact, almost the entire language is built that way. Constructs that other languages treat as untouchable keywords (such as if, while, and for) are defined in ordinary Seed7 source within the standard library include file seed7_05.s7i. Syntactically the language resembles Pascal and Ada, giving it a familiar, readable surface over an unusually flexible foundation.
History & Origins
Seed7’s roots reach back well before its public debut. In the mid-1980s, Thomas Mertes explored the idea of an extensible higher-level language at the Vienna University of Technology, first in his 1984 diploma thesis, “Design of an extensible higher programming language,” and then in his 1986 doctoral thesis, “Definition of an extensible higher programming language.” The language described in this work was called MASTER, and many of its core ideas — particularly user-defined statements and operators — survive directly in Seed7 today.
In 1989, work began on an interpreter for MASTER named HAL, which became the technical ancestor of the modern Seed7 interpreter. After years of private development, the accumulated MASTER and HAL work was released as open source in 2005 under the new name Seed7. Mertes has explained that the name reflects the hope that the language’s ideas would spread “as seeds” and grow as others adopted them; the digit 7 was appended simply because it is a prime number.
Design Philosophy
The central conviction behind Seed7 is that a programming language should be extensible by its users, not just its implementers. Most languages draw a hard line between built-in constructs and user code: you can write functions, but you cannot add a new kind of loop or a new operator with its own precedence. Seed7 erases that line.
The language distinguishes between two kinds of extension:
- Syntactic extension — introducing new syntax elements, such as a novel statement form or a custom operator symbol, described with a structured syntax-definition mechanism.
- Semantic extension — giving those new constructs meaning by declaring them as functions (statements and operators are, under the hood, function declarations).
Because of this, the bulk of what looks like “the language” is actually a library. The file seed7_05.s7i defines the standard statements, operators, and declaration constructs in Seed7 itself. This makes the boundary between language and program unusually thin and gives Seed7 a strong metaprogramming character while keeping everyday code clean and Pascal-like.
Key Features
| Feature | What it provides |
|---|---|
| Extensible syntax | User-defined statements and operators, including custom symbols and precedence |
| Library-defined language | Core constructs live in seed7_05.s7i, written in Seed7 rather than hard-coded |
| Multiple paradigms | Imperative, object-oriented, and generic programming in one language |
| Static, strong typing | Manifest, nominative type system designed to catch errors at compile time |
| Abstract data types & templates | Generic programming with parameterized, reusable type definitions |
| Multiple dispatch | Method selection based on the types of more than one argument |
| Function & operator overloading | Multiple definitions distinguished by parameter types |
| Call-by-name parameters | A parameter-passing mode that supports building control abstractions |
| Exception handling | Structured handling of runtime error conditions |
| Arbitrary-precision arithmetic | Built-in big-integer support |
| Unicode | Strings based on UTF-32 characters |
A notable practical consequence of the design is that Seed7 has two execution paths. The interpreter, s7, starts quickly and is well suited to development and scripting. For production, the compiler, s7c, translates Seed7 programs to C source code, which is then compiled to native machine code by a standard C toolchain — letting Seed7 lean on mature C compilers for optimization and portability.
Evolution
Since its 2005 open-source release, Seed7 has been developed continuously by Thomas Mertes with a distinctive date-based versioning scheme: releases are identified by their date in YYYY-MM-DD form (for example, the 2025-07-29 release), issued on a frequent cadence of roughly every few weeks rather than through large, infrequently numbered milestones. Over that time the project has grown substantially, reportedly comprising over 500,000 source lines of code across its C implementation and the Seed7 libraries and tools.
The distribution has expanded well beyond the core language to include a broad standard library: collections and containers, file and network I/O, a uniform database interface with drivers for several relational systems, graphics, and more. Demonstration programs bundled with the source — such as a BASIC interpreter (bas7), a make-like build tool (make7), and a small web server (comanche) — double as both tests and showcases of what the language can do.
Platform Support
According to its official documentation, Seed7 is cross-platform, with support reported for Linux, the BSDs, macOS, other Unix systems, and Windows, and it can be built with a range of C compilers (such as GCC and Clang on Unix-like systems, and toolchains including MinGW, Cygwin, and MSVC on Windows). The interpreter and example programs are distributed under the GPL, while the runtime library and include files are under the LGPL, so programs written in Seed7 are not constrained to any particular license.
Platform and licensing details above follow the project’s own documentation. Because the language sees frequent releases, specific supported toolchains and the newest available version may have changed since this page was written.
Current Relevance
Seed7 remains a niche but actively maintained language, developed primarily by its creator and a small community. It does not appear in mainstream popularity rankings the way languages such as Python or Java do, and it has not seen wide industrial adoption. Its visibility comes instead from its ideas: it is frequently cited in discussions of extensible languages and metaprogramming, and it maintains a large body of example solutions on Rosetta Code, where its concise, readable code is on public display.
For learners and language enthusiasts, Seed7’s appeal is conceptual. It offers a rare, working demonstration of a language whose grammar is open for editing — a place to study how user-defined statements, operators, and control structures can be made to coexist with strong static typing and a clean, Pascal-like syntax.
Why It Matters
Seed7 matters less for where it is deployed than for what it demonstrates. It is a sustained, practical attempt to answer a deceptively simple question: what if the programmer could extend the language itself, not merely write programs in it? By pushing nearly the entire definition of the language into editable libraries while preserving static type safety and a readable syntax, Seed7 stakes out a distinctive position in the design space of programming languages — a reminder that the line between “language” and “program” is a choice, not a law.
Timeline
Notable Uses & Legacy
Seed7 standard library (seed7_05.s7i)
Almost the entire language — statements, operators, loops, and declaration constructs — is itself written in Seed7 within the standard include files, making the library the canonical demonstration of the language's extensibility
Bundled demonstration tools
The distribution ships working utilities written in Seed7, including bas7 (a BASIC interpreter), make7 (a make-like build tool), and comanche (a small web server), used to exercise and showcase the language
Database-backed applications
Seed7 provides a uniform database interface (sql7 and related libraries) with drivers for systems such as MySQL/MariaDB, PostgreSQL, SQLite, Oracle, Db2, and others, enabling portable database client programs
Rosetta Code
Seed7 has an extensive presence on Rosetta Code, where contributors have implemented hundreds of programming tasks, serving as a public catalog of idiomatic Seed7 solutions
Teaching and language-design study
Because its grammar and semantics live in readable library files rather than the compiler, Seed7 is used as a study subject for extensible-language and metaprogramming concepts such as user-defined syntax