Introduction to gSlip
Gnu gSlip is a C++ API extension of Dr. Weizenbaum's Symmetric List Processor (SLIP). It supports the construction, modification, and deletion of acyclic graphs, trees, and lists. The mechanics of graph manipulation are handled by the API subsystem and are hidden from the application, allowing the application to focus on the problem at hand rather the mechanics of cell manipulation.
Standard gSlip cells are treated as atomic operations in expressions and can be used in the same fashion as other atomic objects (byte, int, float, strings). Standard gSlip cells have built-in type casting and support implicit and explicit type conversion. Given an expression x = (b2 + √ b2 - 4*a*c )/2*a, any of a, b, c or x can be a gSlip cell.
Graph iterators allow recursive or non-recursive graph traversal. Recursive entry provides traversal and return from nested lists (graphs), and serves to provide an iterative alternative to recursive functions. The traversal and returns are time and space bounded as O(1).
End-around I/O is supported using ASCII files. Output of a graph is to an ASCII file. Floating point values are output in a format such that input will exactly duplicate the output values, depending on the resolution and bitwidth of floating point numbers in the input computer. The I/O format allows archiving of intermediate results for later retrieval, modification of intermediate results and creation of graphs using a text editor.
Portability and operations between 32 and 64-bit systems is supported. Operations and expressions using the gSlip primitive types allow computations done on one computer to yield the same result when performed in another architecture, providing the architecture/compiler supports the C++ standard data types and data type precison.
Memory management is done without a garbage collector. gSlip cell memory is expandible depending on usage and need, or it can be restricted and non-expandable. When usage is restricted, the API is available and may be usable by embedded systems. gSlip is a suitable replacement for the Standard Template Library (STL) list and queue operations in those environments where their use is restricted.
gSlip can be found on the main GNU ftp server: http://ftp.gnu.org/gnu/gslip/ (via HTTP) and ftp://ftp.gnu.org/gnu/gslip/ (via FTP). It can also be found on the GNU mirrors; please use a mirror if possible.
gSlip has the following mailing lists:
- bug-gSlip is used to discuss most aspects of gSlip, including development and enhancement requests, as well as bug reports.
- help-gSlip is for general user help and discussion.
Security reports that should not be made immediately public can be sent directly to the maintainer. If there is no response to an urgent issue, you can escalate to the general security mailing list for advice.
Development of gSlip, and GNU in general, is a volunteer effort, and you can contribute. For information, please read How to help GNU. If you'd like to get involved, it's a good idea to join the discussion mailing list (see above).
- Test releases
- Trying the latest test release (when available) is always appreciated. Test releases of gSlip can be found at http://alpha.gnu.org/gnu/gSlip/ (via HTTP) and ftp://alpha.gnu.org/gnu/gSlip/ (via FTP).
- For development sources, issue trackers, and other information, please see the gSlip project page at savannah.gnu.org.
- Translating gSlip
- To translate gSlip's messages into other languages, please see the Translation Project page for gSlip. If you have a new translation of the message strings, or updates to the existing strings, please have the changes made in this repository. Only translations from this site will be incorporated into gSlip. For more information, see the Translation Project.
- gSlip is currently being maintained by A. Schwarz. Please use the mailing lists for contact.
gSlip is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.