Goals
The goal of this project is to provide as complete an interface
to the GSL as possible in as Lisp-natural a way as is reasonable. It is
written only in Common Lisp (no C), with access to the foreign library
through CFFI.
Non-goals
The following is not part of the plan for the GSLL interface:
- Anything that is defined solely in C header files and not in the .so
library will not be a part of GSLL, because of the lack of access
through the library. For example, Physical Constants
are all defined as C macros.
- Anything for which there are two near-equivalent GSL functions
and for which one is already provided. For example, all of the
special functions have two forms, one which provides the answer(s)
with an estimated error as a structure, and one which just provides
the answer as a double. This makes a
difference when C programming, but GSLL always uses the form with the
error estimate and returns the error as a later multiple value so
that it can easily be ignored.
- Anything for which there is a Common Lisp
equivalent probably won't be done, unless there is a need to have it
present for some other GSL functionality that isn't present in CL.
Status
There is a Trac page
for development information and for reporting bugs. There is a mailing
list for all aspects of this project.
Most of the interface is complete, with a few chapters missing
and some functionality missing. See the documentation for details,
particularly known failures.
It is possible that the library API will change but probably not
substantially; most of the remaining work is to fix bugs.
Contributions
Contributions to the development of GSLL are welcome; the primary
way to get started is by posting to the
mailing
list; also see
the
Trac page. A
contribution may take the form of bug reports and fixes, suggestions
for new interface design, porting the remaining unported
functions, testing on a new platform or compiler. The supplied macros
defmfun
and
defmpar
define virtually all of the interface functions and variables
respectively, which simplifies the process of porting.
The arguments and defaults provide a convenient way of defining new
functions and variables.
Regression tests
Regression tests using lisp-unit
(provided) are given for many of the functions defined. These
also serve as examples. Note that most of the result have not been verified
with an independent source; the values given are from previous
tests. To run the tests,
(lisp-unit:run-tests)
See
documentation regarding known failures.
Liam Healy
Time-stamp: <2008-08-31 20:14:05EDT development.html>