# -*- org -*-

* Before release

*** TODO Check README

Ensure that instructions in README work as advertised.

*** TODO Clarify licensing

- List all authors an used licenses, and the respective files, at least.

- Probably relicense to BSD.

*** TODO Improve documentation

Documentation should at least be sufficient to make spells usable for
other people without poking around in the source tree.

This depends on getting stexidoc up to speed again, and clarifying how
it interacts with implementation-specific files.

*** TODO Finishing up the R6RS adaption of Riastradh's testing framework

This is nearly done.

The test suite itself needs a bit of coverage, especially the restarts
part of it (which should be reviewed, and moved into seperate
library).

*** TODO Review libraries

- Move the stuff in ~misc~ to more appropriate places.

- Likewise for ~assert~. Probably move ~tracing~ to ~debug~, and move
  ~cout~ and ~cerr~ from ~assert~ there. Maybe dump or rename the
  ~assert~ macro, as R6RS provides this (although it is not
  compatible).

- Fix ~include~ to use ~read-annotated~, where available (this will
  finally give source positions for errors in included files).

- Implement a portable pretty-printer in ~pretty-print.sls~ or ensure
  we use the implementation-provided one on all supported
  implementations.

- Probably rename ~weak-pointer~ to ~weak-cell~.

*** TODO Investigate testsuite errors

There's a bug in the streams.scm tests on Ypsilon. Probably a Ypsilon
bug.

* Things to think about

** (spells opt-args)

   Do we really need to have so many optional argument macros (except
   to support legacy code?). Actually, inside spells, I think I'll
   forbid use of anything except DEFINE/OPTIONAL-ARGS.

** (spells foreign)

Naming issues:

- =ptr= vs =pointer=
- =dlsym= and =dlopen=
- The C type names might be better off using no shortened prefixes

The =dlerror= API is kind of ugly; probably a condition should be
raised instead.
