This file documents a list of things that ICI needs. If you feel like
doing one of them then by all means do so and if you are public minded
donate your changes.

General

	Remove reliance on C's string functions and sprintf() so
	strings with NULs can be handled properly. This is a general
	problem in many places in the interpreter. There are places
	where ICI's strings are passed directly to C functions which
	can result in incorrect behaviour if those strings contain
	NULs. For true reliabilty ICI should check for such situations
	and raise errors when the C function could perform incorrectly.
	Other sections of the interpreter should be fixed to avoid
	using C-isms where they are not appropriate to ICI.

Modules

	Native code modules need to be collectable. When a GC occurs
	unused modules should be unloaded (and unmapped from the
	address space). This requires that cfuncs and mem objects
	that point to the dynamically loaded module have references
	to a ``module'' object so it can remain mapped while it is
	still referenced.

Trivial fixes
-------------

Add esc() function.

---

Make waitfor be able to wait on a set.

---

Update all the extension modules to ici4

---

Mention the old form of smash in the documentation.

---

Document things defined in icicore.ici

---

Resurrect win stuff as an extension module and document.

---

Put in general forall

---

The docuentation doesn't seem to cover the arguments passed to
intrinsic functions properly.

---

Have some easy way of convering an array to a set and a set to an
array.

array = keys(set) should work.

setof(array) ?

---

Add optional seperator string to implode().

---

top() and pop() should work on sets.

---

copy() of a string results in a non-atomic string. I don't this
this is made clear enough in the documentation.

---

Todo before 4.1 release:
* Either update man pages, or flag them out-of-date.
* Is the Windows DLL load address right?