EPIC5 Projects, Bugs, and other Errata:

KNOWN ERRATA (eg, bugs, or unresolved requests):
------------------------------------------------
* The changes to word list functions broke tabkey.jm, and new versions of 
  the scripts are not ready yet.

LOOK FOR IN THE FUTURE
-----------------------
* Some way to alert the user when the bind() of a dcc failed (because the
  port is in use?)
* Finish refactoring the input prompt, by showing the prompt all the time,
  eliminating one-column-per-byte assumption.
* There is confusion between "proto" "type" and "addrfamily" with server
  stuff.  Normalize and redocument.
* send_text() needs rework, to add extra /on's so you can flag those special. 
* Lastlog improvements (unified lastlog, refnums, moving between windows, etc)
* Import utf8 support from ircII OR add support for utf16 (wide chars)
* Import fg/bg color support from ircII 
* 8-bit color support (256 colors for xterm) (rb larne)
* Improvements for LOAD_PATH; directories, zip files, filename caching.
* UPnP support via http://miniupnp.free.fr/
* Some way to call an alias in a variable indirectly
* Output rules
* Support for CNOTICE
* /CTCPs over /DCCs don't match up with their queries very well. (nullie)
* $xform()s for SED and DEF
* str_to_mask() should be silent, callers should be warning.
* Support for 64 bit ints could be more widespread
* Larne wants suppression of duplicated lines (like syslog maybe?)
* Larne and nullie say that stdout can block when running under screen
* Refactor hardcoded uses of select() so select() isn't mandatory.
* Nullie wants a way to do themed sends, such that
	/ctcp ...   is themed, and /^ctcp .. is unthemed
* Shattah would like something like /window omit <regex> to remove stuff.

[See http://www.epicsol.org/PROJECTS for things to come in the future]
[See http://www.epicsol.org/CHANGELOG5 for things that changed in the past]

THE CHANGELOG SINCE THE LAST RELEASE:
-------------------------------------
* Make GET_INT_ARG() support 64 bit ints, for future use
* Make $fseek() support 64 bit file offsets (yay!)
* Begin converting some time_t uses over to 64 bits, Just In Case
* Make $numsort(), $strtol(), $tobase() support 64 bit ints.
* Make $stat() support 64 bit ints where possible.
* Add 'channelmonitor' script from larne.  Thanks!
* Whack /set highlight_char which is no longer being used.
* Move away from calling parse_line() and runcmds(), towards the call_* funcs
* Add provisional support for renumbering windows with channels/logs/timers
* Constify get_*_alias(), so lookups can't modify the actual alias this way.
* Rename parse_command() to parse_statement().
* Create a next_statement() to figure out how long the next stmt is.
* Stop using expand_alias() to rip apart statements. yay!
* Refactor parse_command and parse_statement to better define their roles.
* Push responsibility for expansion to parse_statement, someday, to cmds!
* Push responsibility for handling block statements to parse_statement.
* "Forget" to re-implement /set input_aliases.  I wonder if anyone will notice.
* Change the name of "hist_flag" to "interactive" to reflect its purpose.
* Change /load -std to use parse_statement() instead of parse_line()
* Add a /perl command, just for laughs. Usage: /perl {...}
* Ruby support. yay!
* Add a /tcl command, just for laughs.  Same as perl.
* Trap ruby exceptions, get everything working (sort of)
* Eliminate the third argument to expand_alias(), the statement spanner.
* Rename parse_line() to parse_block() to better reflect its duties.
* Make parse_block() static.  Everything needs to call runcmds() now.
* Eliminate the local-stack-creating feature of parse_block(), callers do this.
* Rename 'line' to 'stmt' in parse_statement().
* Sort of forget to re-implement /set cmdchars.  The / is the cmdchar.
* Try to optimize parse_statement() and next_statement() some.
* Rework configure mojo for perl, ruby, tcl to autogrok compile stuff.
* Run make depend again.
* Update the DCC "last time" value regularly.
* Fix build on freebsd-i386
* Make the ruby support work with ruby-1.6.4 api (for older freebsd)
* Add the 'nickcomp' script contributed by Blackjac. Thanks!
* Create an 'extlang.h' header file for perl/tcl/ruby stuff.
* Clean up warnings and stuff for the external lang support.
* Suspend protocol enforcement when we're processing user input.
* Lay the foundations for nonblocking ssl connection (not supported yet)
* Change SEND_LINE to do SCROLL_FORWARD if we're in scrollback mode
* Add support for maildir mailboxes. 
* Fix crash with 042 numeric.
* Fix buffer overrun with new server state.
* Don't call close_server() for gaps in server list in close_all_servers().
* Support AI_ADDRCONFIG in our builtin AI_MASK/getaddrinfo().
* Make set[_non]_blocking extern.
* Support NEWIO_SSL_CONNECT as a new_open() type.
* Add a new ssl_connect() io callback function for NEWIO_SSL_CONNECT.
* New scripts from weirdo: autojoin, autoquery, floodprot, renumber
* New version of reconnect script from weirdo.
* GC the fixed-alist support (last used by /quote and protocol handler)
* Reorg server SSL negotation stuff to be nonblocking. yay!
* Comment all sorts of stuff in ssl.c.
* Add /set mail_type (MBOX or MAILDIR) to control what we check for mail.
* Make rebuild-scrollback a toggle flag instead of an operation.
* Teach update_all_windows() how to rebuild scrollback
* Write some preliminary code for the unified lastlog
* Add /ON NUMERIC which is thrown if you don't hook the numeric specifically.
* Important changes to autojoin and floodprot scripts.
* Support cast5/blowfish encryption a la ircII.
* Fix build for non-ssl users.
* Add AES256 support.
* Add AESSHA256 support (AES256 using the SHA256 digest of your passkey)
* Rename "EXTCRYPT" to "PROGCRYPT"
* Migrate SED support from crypt.c to crypto.c
* Integrate SED and extprog support into the mainline [de]cipher_message()
* Refactor [de]cipher_message() to be less lame.
* Support "anycrypt" support (AESSHA, AES, BLOWFISH, CAST5, SED, PROG)
* Include sha256 implementation from Karll.  Thanks Karll!
* Unify the ctcp handling of all crypto ctcps
* Add $sha256() function to test sha support (digest)
* Make funcs in crypto.c static and just expose [de]crypt_msg().
* This finishes the divide between crypt.c (front end) and crypto.c (back end)
* Fix a gazillion compiler warnings and sort out const/unsigned char issues.
* Add SEDSHA cipher type, which is better than SED, and always available.
* Add my_sleep|isreadable|iswritable() funcs to phase out rogue selects()h
* Add support for multiple concurrent servers to /encrypt. yay!
* Store the length of the Crypt key within the key itself.
* This moves us closer to being able to decrypt arbitrary data.
* Test all of the cipher types, incl. compat of CAST with ircII.  All set!
* Fix Cut & Paste error.
* DO YOU THINK YOU CAN RE-ORDER AN ARRAY AND NOT CHANGE THE #DEFINES DUMMY?
* Bust do_crypt back into its callers [de]crypt_msg().
* Make lookups between /encrypt flag<->cipher flag<->ctcp table-driven.
* Fix bugs with /crypt -- I think this finishes the project!
* Fix bug that prevented you from deleting a crypto having server desc.
* Add /encrypt -clear so you can purge your crypto list (for debugging)
* Don't output the key for SEDSHA and AESSHA in binary mode (convert to hex)
* Fix external encryption support.
* Release epic5-0.3.1
* Fix compile errors for non-openssl users.
* Fix breakage for solaris found by zlonix
* Fix %{2}+ so it behaves like %+ and not like %{1}+, as per the docs.
* Add server states CREATED and DELETED for nullie.
* Add /on operwall and operwall window level for black.
* Fix $levelwindow()
* Finally whack unused /set status_truncate_rhs
* New versions of autojoin and reconnect from nullie
* Fix /xecho -l for larne. yay!
* Fix /whois so trailing spaces don't look like real words.
* Change ltoa() to my_ltoa() for hpux's sake
* Change finite() to isfinite() for hpux's sake
* Add $serverctl(GET refnum ADDRSLEFT) (see UPDATES)
* Fix finite()/isfinite() madness.
* Look for clock_gettime() in -lrt for ubuntu.
* Automatic reconnect from nullie. yay!
* Change /xecho -v to always output to current window if it's visible.
* Fix /on's with arglists, so lower serial nums don't corrupt $*. [rb nullie]
* Fix memory leak with $url(en|de)code() [rb nullie]
* Change /server - so it calls disconnect() directly
* Fix const correctness problems with sha2.c
* Fix typo: HAVE_INFINITE -> HAVE_ISFINITE [rb kev]
* Desupport dwords in a lot of builtin functions (see updates) [nullie]
* Make /window foo kill fail for want of 'foo' (see updates)
* New 'builtins' from blackjac, more modern format, /whowas improvements
* Refactor the serverinfo stuff
* Allow skipping of fields in server descs (see UPDATES)
* Make /window foo kill not fall back to /window describe, for want of 'foo'.
* Add a 'proto' field to server descs (tcp4, tcp6, 4, or 6), see UPDATES.
* Add RESET_LINE keybinding, for tabkey and history recall scripts.
* Add /on channel_lost, from nullie, who needs to write an UPDATES blurb.
* Fix bug with reset_line, found by nullie.
* Finish implementation of /stack push|pop set with symbol table, rb nullie.
* Preliminary work making @#chan public show up in #chan's window.
* Add /ON UNKNOWN_COMMAND from nullie (thanks!)
* Fix valgrind bugs that nullie found (yay!)
* Fix bug with '' in the new math parser being NULL instead of empty string
* Add support for @#chan via notices to show up in #chan's window
* MORON.  Don't replace a 'return' with something that doesn't return!
* Don't call happykey() on a plain text password (valgrind)
* Fixes for two memory leaks from nullie
* New /on, /ON WINDOW_SERVER, from nullie.
* Teach history script to use parsekey reset_line (nullie)
* Fix one bogon (still others left!) in map script
* Improvements to 'save' script (blackjac)
* Change /on unknown_command to include // prefix if that was used (nullie)
* Fix behavior of /set old_server_lastlog_level (rb larne, fixed by nullie)
* Pass double ptr to remove_bindings_recurse() to fix exit-time memory leak.
* Remove /set bad_style, input_aliases, security,  (unused)
* Remove /set ssl_certfile, ssl_keyfile, and ssl_path (unused)
* Add a (ServerInfo) object to (Server), switch to using it.
* Remove a bunch of unused thingees in (Server) while i'm here.
* Restore /set reverse_status_line to a builtin. oh well.
* Make $urlencode() rfc3986-ish, converting all non-unreserved chars
* Change ServerInfo to use const char's since we don't modify them directly.
* Reorganize how ServerInfos are used, into "temporary" and "permanent" types
* Convert Server's use of ServerInfo's into safe permanent types.
* Add /server -update <refnum> <desc> to change server descs on the fly.
* Fix typo in /invite.
* Fix 'country' script by wrapping it with xdebug dwords.
* Fix some problems with /window query (rc kreca)
* Fix cross-matching of ctcp-over-dcc with queries. YAY! (nullie)
* Fix crash when you received ssl-encrypted msgs and you don't have ssl.
* Begin a major project to normalize the behavior of "words" in function calls
* Fix compat issues with 'history' script.
* Fix problem with get_child_exit() can block SIGCHLD.
* Change $mask() so it doesn't require a full $uhc() value, compat with epic4
* Avoid crash by actually removing ssl entries when they're shut down
* Fix replace_line, it wasn't moving the cursor before writing new contents.
* Fix a double SSL_free, from yesterday's fixes.
* Add a WIP document that describes how all functions arglists work.
* Fix a few problematic word manip functions.
* Add a 'vhost' field to server descriptions, for setting per-server vhost.
* Fix $prefix( )
* Add support for "conditional dequoting" in universal_next_arg_count
* Change next_earg() and next_func_arg() to use the conditional dequoting.
* This permits me to implement $qword() which returns a $word() literally! yay!
* Fix 'loadformats' script (rb zlonix)
* Change last_arg() so it dequotes the retval according to the word type
* Change $pop() so it only takes an lvalue
* Change $revw() to use the last_arg() improvements.
* Improve /xdebug so it takes a block as an argument
* Improve $push() so it pushes the whole arguments as dwords
* Add new function $curcmd() for currently executing command (nullie)
* Rewrite $remw() so it uses standard word handling routines.
* Normalize $shift() and $unshift() in the same way as $push() and $pop().
* Fix /eval echo $func($*) at the input prompt causing "add is NULL" panic.
* Put a delay on handling 001 to avoid problem I'm seeing on epicsol.
* Release EPIC5-0.3.2 (1431) (Mitigation)
* Make the build work with socks5 again, for freebsd ports support
* Add malloc_strcat3_c().
* Optimize malloc_strcat_word_c
* Add a new /userhost -extra flag for nullie (see UPDATES)
* Add code to do stdout stuff with threads (larne)
* If you're doing threaded stdout, $info(o) includes 'o'.
* Add $mask(10 ...) from kreca.
* Fix from black for 'save' script, to save notify nicks.
* Fix from larne for configure checks for tcl for solaris (ick)
* Fix solaris ports support, inspired by patch from larne, rb zlonix
* Change startup code so it outputs the pid of the bot process for -b.
* Fix $info(o) bug.  rb zlonix
* Output the errno value ret by failed nonblocking server connects on error.
* Add auto-close boolean flag for server (see UPDATES)
* Black pointed out that $winquery() exists in builtins.
* Pass error value from getsockopt() through dgets for nonblocking connects.
* Use the error value from getsockopt() to output to the user.
* Allow you to ignore operwalls and have them tracked as floods.
* New version of altchan from black.
* Various and sundry fixes.
* Don't unconditionally set who_level to NONE in /window.
* Set and reset message_from() info around each /window operation.
* This fixes /window <refnum> echo "<string>" so the line is added to lastlog.
* Fix $ruby(puts 0.4.0) by calling rb_rescue2() to catch /all/ exceptions.
* Fix /window add/query so they auto-remove nicks from other wins first.
* Fix build on non-ipv6 systems. (bruns)
* Never allow INPUT_PROMPT_LEN to be < 0.
* This fixes the damage from resizing to 1x1 and then back again.
* Fix bugs with 'builtins' (zlonix)
* Revamp the term_init() function, document, etc.
* Unconditionally turn off IEXTEN, IXON, IXOFF, to reclaim all of the chars
  that kernels steal from us (like ^S, ^Q, ^O, ^V, etc)
* Whack the -f/-F/-o/-O command line options; per above.
* I can now bind and use ^S and ^Q and ^V.  Yay!
* Fix initialization of ruby, so it actually works for the first time! YAY!
* Refactor how lastlog is trimmed, by removing a specific item
* Start working on code to remove items from lastlog by grep.
* Fix crashes with /stack push set that kitambi told me about
* Put in a trivial sleep when checking screen size to avoid race with screen.
* Stage 1 in a major overhaul of the input line code.
* Stage 2 -- start eliminating "optimizations", use update_input() for redraw
* Fix null deref in set_input() via reset_line() via ^U (rb kitambi)
* Fix null deref with $serverctl(GET -1 005s)
* Fix warnings found by gcc4 and run make depend.
* Add check for -Wno-pointer-sign to configure; makes using gcc4 less painful.
* Fix fulldesc handling code to put []s around ipv6 p-addrs. oops!
* GC the if 0'd decls from before the switch to ServerInfos
* Add $serverctl(GET <refnum> FULLDESC) for kreca.
* Add $serverctl(ALLGROUPS) for kreca
* Add arg to panic() controlling whether panic is sent via QUIT (rb black)
* Add /xecho -t <target> which outputs to a target, for kreca
* Fix boneheaded error.
* Fix $"" and $'' because of missing else in block if.
* New tabkey.ce from fudd.
