Est. 2005 Intermediate

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

Paradigm Multi-paradigm: imperative, object-oriented, generic; extensible
Typing Static, strong, safe, manifest, nominative
First Appeared 2005
Latest Version Date-based versioning; the 2025-07-29 release was among the most recent documented at the time of writing

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

FeatureWhat it provides
Extensible syntaxUser-defined statements and operators, including custom symbols and precedence
Library-defined languageCore constructs live in seed7_05.s7i, written in Seed7 rather than hard-coded
Multiple paradigmsImperative, object-oriented, and generic programming in one language
Static, strong typingManifest, nominative type system designed to catch errors at compile time
Abstract data types & templatesGeneric programming with parameterized, reusable type definitions
Multiple dispatchMethod selection based on the types of more than one argument
Function & operator overloadingMultiple definitions distinguished by parameter types
Call-by-name parametersA parameter-passing mode that supports building control abstractions
Exception handlingStructured handling of runtime error conditions
Arbitrary-precision arithmeticBuilt-in big-integer support
UnicodeStrings 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

1984
Thomas Mertes describes MASTER, an extensible higher-level programming language, in his diploma thesis 'Design of an extensible higher programming language' at the Vienna University of Technology. Many of MASTER's ideas — user-defined statements and operators — later reappear in Seed7
1986
Mertes completes his doctoral thesis, 'Definition of an extensible higher programming language', further developing the formal basis of MASTER
1989
Development begins on an interpreter for MASTER named HAL, the direct technical ancestor of the Seed7 interpreter
2005
The MASTER and HAL work is released as open source under the name Seed7; the project begins a regular cadence of frequent releases
2005
Seed7 adopts a date-based version scheme (YYYY-MM-DD) with new releases issued roughly every few weeks, a pattern that has continued for years
2025
Releases such as the 2025-07-29 version continue active development, with the project reportedly comprising over 500,000 source lines of code across its C implementation and Seed7 libraries

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

Language Influence

Running Today

Run examples using the official Docker image:

docker pull
Last updated: