Ginger Version 0.8


Version 0.8 will build, install and run tests on the following:

  • Linux (Ubuntu)
  • Mac OS X

Installation will be from

  • Source - via git clone, build and install
  • Tarball

Syntaxes Supported

There will be two front-end syntaxes supported.

  • Common - our custom syntax designed to meet the goals of the manifesto.
  • C-Style - a C/Java style syntax that Javascript programmers may find more approachable.

Basic Language Features

  • binding and assignment to single variables
  • if/unless N-way conditionals and switch expressions
  • short circuit conditionals (boolean & absent-oriented)
  • function applications and partial applications
  • higher-order functions with full lexical scoping
  • undecorated throws which are not catchable (escalated to failover)
  • garbage collection
  • autoloading and autoconversion
  • Environment variables via ${NAME} syntax.

Basic Datatypes

This release of Ginger comes with the following datatypes built-in.

  • simple primitives: absent, booleans, undefined, indeterminate.
  • small integers and small integer arithmetic, overflowing to floating point.
  • floating point arithmatic.
  • ASCII strings, symbols and characters
  • singly linked lists (Lisp-style)
  • 1D arrays (vectors)
  • maps and maplets, including weak hash tables
  • class objects
  • user-defined recordclasses

Ginger Executable

A command-line interpreter, ginger, that coordinates the toolchain components to provide an interactive shell for exploratory programming in a terminal. [design+docs+implement]

  • Simple, single-line, terminal based interpreter. - Uses readline by default to provide command line editing. - Consumes stdin. - Interactive.
  • Exceptions always escalate to failover.
  • Traps failovers, reports them, resets, continues.
  • Panics abort the system (not sure this is correct).
  • Prints welcome banner.
  • Selectable syntax via -~grammar option.
  • Starts up in ginger.interactive package.

Ginger CGI Executable

A CGI script runner, ginger-cgi (o.n.o.), that can be used to write CGI scripts. This is very much just a placeholder implementation. Future versions will extend this capability very significantly.

  • supports #!/usr/local/bin/ginger-cgi (hash-bang) scripts.
  • can be used interactively for testing.

Ginger #! Script Executable

A scripting tool, ginger-script, that can be used to write UNIX scripts.

  • Immediately exits on error.
  • Supports hash-bang scripting #!/usr/local/bin/ginger-script.


Additional tools that provide modular functionality. Over time the user will be able to add replacement or extensions to these. They are not supposed to be on the $PATH of a typical user. By default they are installed in /usr/local/libexec/ginger

  • common2gnx: a front-end for Common, converts to GingerXML.
  • cstyle2gnx: a front-end for a C-family syntax, converts to GingerXML.
  • file2gnx: a tool for parsing a file based on the file extension.
  • simplifygnx: a GingerXML simplifier and annotation tool.
  • tidymnx: a tool for pretty-printing MinXML (superset of GingerXML).
  • fetchgnx: a tool for accessing Project contents.
  • ginger-cli: a basic Ginger command-line interpreter.