packging: - manual page headers use the wrong section 000. full doc rewrite Features: - c->awk func call should be able to pass arrays 00. vio rewrite - add all vio in a linked list in MAWK for garbage collection at mawk_uninit - add a force-clenup hook for this; but also replace mawk_close_out_pipes() - hooks? wrapper? - document file_name_rewrite - document vio 0. bugs - string ref crash: for(n = 0; n < 1000000; n++) A[n] = "foo" if refcount of "foo" reaches 65535, it crashes - mpow2 should be static 1. restrictions - detect and use LDFLAGS -dynamic - split compile and run into separate libs: - implement a Single Safe number->string converter; grep for OFMT and CONVFMT and INT_FMT to find all the buggy sprintf based implementations - split da_bin to exec and comp - fix error.c: it shouldn't depend on stdio.h and it shouldn't print to stderr anyway (incompatible with the lib idea) - check whether int-compiled lmawk handles OFMT/CONVFMT properly - floating point: - try to find a platform with FPE for overflow and test - consider a -W nandebug option so that the user knows where the script went wrong; but he could also just check from the script - if isinf() is avaialable, check for inf() result and convert them to nan 1.5. - check all zmalloc() and zrealloc() calls - they may return NULL and callers should return in that case so that runtime error takes over 2. porting - test on UNIX - provide a real alternative to realpath() 3.0 extend arrays - array copy - array in array (for orig implementation only?) - length(array) as in gawk? POSIX: length() works on strings only update test_3rd funlen accordingly! 3.1 features, minor bugs - debugging (gdb scripts); location-file instruction to track src file changes - consider printf with no arg to work like in gawk; also check posix about this test_3rd: printf0 - decide whether regex "^+" (and "^*"?) should be accepted and treated as plain + and * at the beginning of the string; update test_3rd reindops (check posix regex) - decide whether regex should support binary; related tests to update: test_3rd jared, regx8bit - posix FS point 3. requires that ^ work in FS; check test_3rd uparrfs - introduce a new symtab flag for remembering builtin vars and arrays; when -W dumpsym, do not dump these unless verbose - introduce a -W dumpallsym (for verbose symdumps) - write regression test for flush() (it used to pass the wrong pointer) 4. lib fineprint - expose mawk_append_input_file 5. optimization - mawk_find_bi_ptr(): use perfect hash instead of linear search does it really matter? - peephole: - 'print "a", a, "b", b, "c", c' results in push/cat pairs; make the parser emit a lot of pushes and replace cat with catN - 'expr = 1' will add a pop; there should be another type of assignment that doesn't push anything - replace tail recursion (call+ret)