Ginger Version 0.8

Platforms

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.

Toolchain

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.