To do in Kokogut ---------------- Invent variants of Split and SoftSplit which allow to determine which separator was actually used. In debugging output print C snippets prettier. Allow to specify that the given type can't have subtypes. Use this for types for which we assume that currently (by not checking the type after dispatch). Make current keywords builtin macros, i.e. allow to shadow them locally. Use Planner.LocalLet in more cases in the Planner. Perhaps change its name? Implement PowerMod. Describe the implementation of GC and tail calls. Introduce an option which emits warnings for all non-optimizable forwards. Introduce an option which emits warnings for all notes. Try to detect statically when a method doesn't match a generic function. If there is a method conflict, show the location of the old definition too. Describe the design of I/O filters. Marcin did some post to langsmiths about this. Implement BoolVector, ByteVector, CharVector, FloatVector. A warning: module name mismatch. Implement FindEq which uses a value to compare instead of a predicate. Implement DoSort{,By}. The driver: derive names of temporary files from the target filename rather than the source. Make a binding to mmap. This definitely needs locking arrays against size changes, or a separate kind of array. Tell the author of bzip2 about: 1) wrong order og bzReadOpen arguments in documentation, 2) flushing files, 3) extracting a FILE* from BZFILE*, 4) an I/O error which doesn't necessarily set errno. Make a binding to clock(). Search for copied & pasted code in Expander, e.g. in handling public & private, and introduce appropriate abstractions. wcwidth, and possibly other character properties. Use the width information in string padding functions. Unicode collation algorithm. IO errors should include a filename when possible. DecodeCString makes a temporary copy of the byte array. This should be avoided. It's bad that setting DefaultReal to Ratio is necessary for 0.1 to be interpreted as 1/10, but hangs for functions like Sin. We should either consistently pretend that there is only one NaN ('NaN %Is (-NaN)' would be True), or provide full access to NaN data (sign and payload).