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.