TODO: * Documentation - Finish the reference manual of the API. - Finish the manual describing the syntax and semantics of regexps. - Write a description of the algorithms used. There's already my Master's Thesis, but it's not TRE-specific, and it's a thesis, not an algorithm description. - Write man page for tre regexp syntax. * POSIX required features - Support for collating elements and equivalence classes. This requires some level of integration with libc. * New features - Support for GNU regex extensions. - word boundary syntax [[:<:]] and [[:>:]] - beginning and end of buffer assertions ("\`" and "\'") - is there something else missing? - Better system ABI support for non-glibc systems? - Transposition operation for the approximate matcher? * Extend API - Real-time interface? - design API - return if not finished after a certain amount of work - easy for regexec(), more work for regcomp(). * Optimizations - Make specialized versions of matcher loops for REG_NOSUB. - Find out the longest string that must occur in any match, and search for it first (with a fast Boyer-Moore search, or maybe just strstr). Then match both ways to see if it was part of match. - Some kind of a pessimistic histogram filter might speed up searching for approximate matching. - Optimize tre_tnfa_run_parallel to be faster (swap instead of copying everything? Assembler optimizations?) - Write a benchmark suite to see whan effects different optimizations have in different situations.