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.