========== To Do List ========== This is a fine grained list of coding and documenting tasks that need to be done. Feel free to update once you have done something :) Notes: - Any file that doesn't still need a format audit should only be edited with care (as is always the case). Be sure not to break the formatting. - Done. = Done barring bugs and porting, all functionality is implemented. - a "!!!" in the code denotes a problem or unfinished section. - Profile one file = /EXCALL /INC bignum.obj - make an .indent.pro file - no way to not strip all whitespace :( ------ CODING ------ lib/* header audit - not all system headers may be needed once coding is done. struct alignment audit - may cause MAJOR problems on 64bit compilers review all const and static usage audit for threadsafe and reentrant violations gets-like functions for file and net? can safely reinit after a free/end without memset? check all functions. push the endian into an overrideable compile time setting in cputypes.h lib/testlib Fix test ordering make sure everything not automateable is tested somewhere find some good code coverage tools make/* integrate fortran settings into all makefiles -- CPU/OS layer -- lib/cosmfile (1) v3DirGet - translateing paths make a helper function for mkdir stuff, DirOpen is a mess file lock issues error handling in FileClose verify file locks are checked even if not currently locking generic file lock system v3FileTruncate and all lock tests need to be added format and code audit (tests memory leak) lib/cosmio (1) Fix API/return values to be consistent with pass/fail Check: Does PrintStr -1 on max overrun? Win32 - CreateDirectory, any other Win32 API's? v3Input code, test in testlib tighten up error cases in v3_ParseFloatA/U v3InputU and unicode in v3_PrintChar tests v3Str* Finish test setups and loops for %u/v/w, %i/j/k, %X/Y/Z, %f/g/%F/%G, and move them to testlib.c - far too much overhead to be in the lib. Implement %c, %p, %s, %b tests test audit unicode function character code audit lib/cosmnet (1) code audit v3NetOpen(firewall) v3NetAccept( return values for socket errors in block/nonblock setting ) v3NetSendUDP v3NetRecvUDP - need finishing, testing, etc. need ways to save/load ACLs test audit ACL function tests, my_host/my_port tests UDP tests lib/cosmtask (1) create a blocking v3ProcessWait function? (vs. Spawn) fix POSIX violation with SIGCHLD ping/wait - fixable? SystemClock needs to use a divide, not a multiply for accuracy. find a place to test: CPUGet/Lock/Unlock in cosmtask v3ThreadPriority, v3ProcessPriority in testlib test audit lib/cosmmath (1) check div and mod functions agains C99 std with negative numbers v3f64Inf/NaN tests lib/cosmmem (1) Fix secure memory situation. lib/cputypes (1) Done. lib/cosm.h Expand the list of unsafe ANSI functions todo: ctypes, locale, stdio, stdlib, string, time ref: http://www.infosys.utas.edu.au/info/documentation/C/CStdLib.html -- Utility layer -- lib/bignum v3BNA Implement Montgomery Arithmetic for v3BNModExp lots of error catching needs to be done code audit test audit lib/buffer code audit test audit lib/compress get a very simple/fast RLE method code and test audit lib/config code audit lib/cosmfs coming soon lib/cosmtest Done. lib/cosmtime v3TimeSet code (cannot be done until packets are defined) v3TimeUnits/v3TimeDigest code for years before xxx? v3TimeCorrectionLoad/Save, mutex issues Leap seconds format and code tests format audit code audit lib/crypto FIX: replacy inverse function with faster binary one, current one is broken How we do the sig data squishing may have even better ways researched now? Implement CRT speedup - after above fix, inc version to 1. Use montgomery math - setup when loading keys, so batch operations are fast v3_BNBitSet is only use once for ( .. , 0 ) case, optimize out?? Use Brian Gladman's AES code? code audit way more tests for correctness and speed - pki-app/testlib lib/email This needs looking over, it's 2 years old. Done. lib/encoder code and test audit lib/http Apache folks advise restarting threads after XXX uses, various OS "issues" - however noone has seen this with Cosm yet ACL use in SetHandler - which means we need ways to save/load in cosmnet logging lib/language * lib/log fix file error checking in v3Log test audit lib/package coming soon lib/security v3PKIPassCheck() - checks that passphrase is enterable ascii only. v3Entropy, v3_SystemEntropy (in cosmtask) format audit code audit lib/speed Reform to a plugin system like compression Done. ------------- DOCUMENTATION ------------- doc/* format/code audit of examples update error codes make sure functions that dont work in all OS's are marked (like v3MemSystem) check that all the public defines are doc'd where they belong structs that users need doc/html2man.pl Done. -- CPU/OS layer -- doc/cputypes move the cputypes.html docs into cosm.h, with user and porter sections. then delete this section. doc/cosmmem Done. doc/cosmio several examples (v3PrintStrA) are wrong. examples for v3StrStrA, v3StrStrU, v3{type}A, v3{type}U checking doc/cosmfile checking doc/cosmmath Done. doc/cosmnet new error codes for all functions examples for v3NetSendUDP and v3NetRecvUDP v3NetACL* errors and examples checking doc/cosmtask v3MutexFree example checking -- Utility layer -- doc/cosm.h see doc/cputypes.html notes doc/bignum * doc/buffer checking doc/compress Done. doc/config fix configOpen docs, remove unneeded comments about format errors checking doc/cosmfs coming soon doc/cosmtime examples checking doc/email Done. doc/encoder Done. doc/http error codes and examples V3_HTTPOPEN doc fix checking doc/language * doc/log Done. doc/package coming soon doc/security v3PRNG() errors and examples checking doc/speed Done. ------- Porting ------- MacOS 9 find someone to actually do the MacOS port - consider dropping this fix all the "!!!" comments MacOS X NetMyIP() BeOS priority functions yield issues Win32 GetSystemTime() in v3SystemClock resolution is terrible, find better. All the v3File* functions NEED to get ported to win32 APIs replace mkdir() with Win32 API function v3FileEOF doesn't work over shared drives (probably not fixable) v3FileInfo access flags OS/2 v3_Priority* IRIX - Solaris/SunOS CPULock for solaris is buggy Unix echo in v3Input* for other Unix (done for Linux, FreeBSD, IRIX, OSF) ------------ OPTIMIZATION ------------ Optimizations are the _lowest_ priority tasks, and should only be done after all other code is done, tested, and audited. But below is a list of known non-optimial code. CPU/OS ------ lib/* optimize functions with a u64 loop for <2^32 with double loop memcmp, some of cosmio lib/cosmio: v3_PrintChar needs a length added for speed (and probably renamed) lib/cosmmath Div and Mul functions UTIL ---- lib/ ...