by A. Chavasse
Goose is a programming language in development that aims at being (yet another) c++ alternative.


  • to be simpler than c++ while keeping almost all of its features in a form or another.
  • to provide a meta programming solution based on compilation time execution of arbitrary code.
  • to be very extensible and support custom operators, custom statements, and custom DSLs.
  • to have statically checked contracts.
  • to provide a more powerful type system.
  • to allow features to be enabled or disabled in order to be able to use only a very safe, high level subset of the language, or a very low level, unsafe subset depending on needs. Ideally, the high level subset should feel like a typed scripting language.

Most of those goals are already implemented at least in a proof of concept form. More details can be found in the features descriptions below. Some things are not documented at all yet, such as classes, modules, or memory management. This is because no implementation work has been started on these things yet, and because their design only exists as more or less vague ideas so far.


  • Syntax - basic syntax constructs, declarations, functions

  • Type system - generalities about the type system

  • Tuples

  • Meta programming

  • Function overloading

  • Templates

  • Contracts - statically checked contracts

  • Internals

sint(32) testFunc( sint(32) a, sint(32) b )
    requires [ a != b ]
    ensures [ @ > 0 ]
    var ta, var tb = a,b

    //if ta < tb
    //    ta,tb = tb,ta

    return ta - tb
Information updated 07/18/20
View Comments