Changes since 2002-12-21 follow.

:::::::: INIT ::::::::

03-04-22 probe.win32: CC.DIALECT += "LIBPP -I-" for all cc's fix admin write binary tarball snarf
03-04-21 package covered *.@(pkg|lic) too
03-04-15 don't generate incremental archives for lcl add incremental=[source:1 binary:0] archive control generate $INSTALLROOT/bin/cc wrapper for CC != cc admin must ditto lib/package/*.@(pkg|lic) too
	 mamake.c: ignore time of ignore prereqs
	 mamake.c: -D2 lists propagated times
03-04-11 tidy up cyg tarballs fix old shell clash between get() and $get
03-04-05 restore *.inx generation somehow lost during cyg additions add pthread_num_processors_np() last resort for cpu count use `make believe' to accept mamake generated files handle `make [make-flags] [target ...]'
	 mamake.c: ignore -e
03-03-21 fix cyg old make typo switch to `package setup' instructions
03-03-19 add registry checks for `host cpu' `results failed' now lists core dump messages
03-03-17 on cygwin verify 'ntsec binmode' in $CYGWIN or die
	 Makefile: install gcc wrapper if no cc add :DETAILS: { :README: :EXPORT: :INSTALL: :TEST: } ops
03-03-12 add :DETAILS: for style-specific details
03-03-11 add beta setup/update support add (TESTCC) prereq for .sh tests
03-03-07 add
03-03-06 fix lib win32 test cygwin vs native incompatibility change internal stdio.h guard to handle C++ inline vs. macro
03-03-03 check for curl or wget for update add setup action == update read make fix packageroot() typo that showed up in non ~user shells
	 mamake.c: treat name+=value args like name=value
	 mamake.c: add ${var?*|value?match?no-match?}
	 mamake.c: fix archive vs. dynamic bind logic
03-02-28 add the "cyg" (cygwin) package type add "cyg" stubs, :CATEGORY: for category name(s)
03-02-25 mamake.c: add -D4 system(3) debug trace
03-02-24 change --mismatch to --corrupt=accept
03-02-14 ratz.c: add _WIN32 setmode([01],O_BINARY) and fopen "rb"/"wb"
03-02-12 Makefile: handle getconf LIBPATH with host pattern
03-01-31 fix .lic search
03-01-30 handle { INIT ksh nmake } already installed elsewhere admin handles command outside of $PACKAGEROOT/bin
	 Makefile: install $(INSTALLROOT)/lib/make/
03-01-28 admin remote commands on one line to please syslog
03-01-23 probe.win32: borland and mingw32 tweaks
03-01-22 fix $CC test to ignore set -x trace -- duh
03-01-16 tw --chop on by default
03-01-14 use /bin/cp to copy previous binaries to bin/ok/ admin now initiates remote exec and copy from local host
03-01-12 handle admin "xxx:" default root
03-01-03 probe.win32: add /usr/include/borland path truncation workaround

:::::::: ksh93 ::::::::

03-03-18  --- Release ksh93o  ---
03-03-18  A -N unary operator was added to test and [[...]] which returns
	  true if the file exists and the file has been modified since it
	  was last read.
03-03-18  The TIMEFORMAT variable was added to control the format for
	  the time compound command.  The formatting description is
	  described in the man page.
03-03-06  A -N n option was added to read which causes exactly n bytes
	  to be read unlike -n n which causes at most n bytes to be read.
03-03-03  Three new shell variables were added.  The variable .sh.file
	  stores the full pathname of the file that the current command
	  was found in.  The variable names the current function
	  that is running.  The variable .sh.subshell contains the depth
	  of the current subshell or command substitution.
03-03-03  When the DEBUG trap is executed, the current command line after
	  expansions is placed in the variable .sh.command.  The trap
	  is also now triggered before each iteration of a for, select,
	  and case command and before each assignment and redirection.
03-02-28  Function definitions are no longer stored in the history file so
	  that set -o nolog no longer has any meaning.
03-02-28  All function definitions can be displayed with typeset -f not
	  just those stored in the history file.  In addition, typeset +f
	  displays the function name followed by a comment containg the
	  line number and the path name for the file that defined this function.
03-02-28  A bug in which the value of $LINENO was not correct when executing
	  command contained inside mult-line command substitutions has been
03-02-19  Since some existing ksh88 scripts use the undocumented and
	  unintended ability to insert a : in front of the % and # parameter
	  expansion operators, ksh93 was modified to accept :% as equivalent
	  to % and :# as equivalent to # with ${name op word}.
03-02-14  A bug which could cause a core dump when reading from standard
	  error when standard error was a pty has been fixed.
03-02-14  The shell arithmetic was modified to use long double on systems
	  that provide this data type.
03-02-09  A bug in which a function located in the first directory in FPATH
	  would not be found when the last component of PATH was . and the
	  current directory was one of the directories in PATH has been fixed.
03-02-07  The trap and kill builtin commands now accept a leading SIG prefix
	  on the signal names as documented.
03-02-05  A bug in the expansion of ${var/$pattern}, when pattern contained
	  \[ has been fixed.
03-02-05  A bug in which .sh.match[n], n>0, was not being set for substring
	  matches with % and %% has been fixed.
03-01-15  A bug in which getopts did not work for numerical arguments specified
	  as n#var in the getopts string has been fixed.
03-01-09  A bug in which using ${.sh.match} multiple times could lead to
	  a memory exception has been fixed.
03-01-06  A bug in the expansion of ${var/pattern/$string} in the case that
	  $string contains \digit has been fixed. 
03-01-02  A -P option was added for systems such as Solaris 8 that support
	  profile shell.
03-01-02  For backward compatibility with ksh88, arithmetic expansion
	  with ((...)) and let has been modified so that if x is a zero-filled
	  variable, $x will not be treated as an octal constant.

:::::::: pax ::::::::

03-03-05 pax.c: tgz => ustar:gzip, tbz => ustar:bzip
03-02-28 pax.c: handle a few common -x aliases
03-01-14 misc.c: fix meter sign overflow for sizeof(off_t)==sizeof(int)

:::::::: html ::::::::

03-03-25 mm2html: table border size '' => 0
03-02-06 troff2html.c: fmtquote() FMT_ALWAYS update

:::::::: tests ::::::::

03-04-22 date.dat: add last, this, next tests
03-03-21 date.dat,datey2k.dat: add %Q/recent/distant/
	 opt.tst: add trailing '*' option and option args tests
03-02-13 base64.c: add base64encode()/base64decode() tests

:::::::: 3d ::::::::

03-03-28 dir3d.c,rmdir3d.c,syscall3d.c: add D_FILENO and D_TYPE ifdefs
03-03-25 dup3d.c: fix bug that cleared Dir_t pointer just after allocation
03-03-07 ftruncate3d.c,lseek3d.c,truncate3d.c: check _typ_off64_t

:::::::: coshell ::::::::

03-03-04 add state.remote=CS_REMOTE_SHELL

:::::::: nmake ::::::::

03-04-22 drop :PACKAGE: Xm override -- handled by uwin
03-04-15 mam.c: output P_ignore attribute fix the mam .DO.INSTALL to compare before mv to .old!!
03-04-05 expand.c: add :W=P: for ordered recursive prereqs add recurse=prereqs add openbsd.* -lc_r pthread workaround add .PACKAGE.$(P).found:=1 if package lib or header found optional :PACKAGE: rhs must now be marked :dontcare pure recursion makefiles make .RECURSE first by default .NORECURSE inhibits default .RECURSE first fix .DO.INSTALL directory prereq omission add .BELIEVE for initialization, e.g., after mamake
	 bind.c: fix rebind alias bug
	 misc.c: limit `mtime after the epoch' warnings to { S_ISREG S_ISDIR }
03-03-28 eliminate CC.STDINCLUDE before -I- too
03-03-27 add :PACKAGE: *:attributes:* fix CC.REQUIRE.Xm add :PACKAGE: Xm:attributes:static
03-03-21 command.c,object.c: always emit target name for --mam=dynamic
03-03-19 expand.c: add :W=R: for true :MAKE: recursion order
	 state.c: add test 0x00040000 to set failed event to staterule event
	 nmake.tst: add first regression tests since 1984 -- yes, I'm ashamed change :W=O: to :W=R: use CC.LD.RUNPATH for LDRUNPATH and non-std dirs drop MAKEDIRS .RECURSE.OFFSET. -- not needed with :W=R:
03-03-15 fix debug=1 to delete $(CC.OPTIMIZE) from CCFLAGS
	 expand.c: fix SORT_* comparison function selection
03-03-11 expand.c: add ~ edit op sep
	 expand.c: limit edit op [~!<>=] sep to one occurrence
	 expand.c: add :H=[FINUV]: alternative to edit sep overload
	 expand.c: add :L~: to use version comparison use :H=[FINUV]: and :L~: add pkgconfig(1) .pc file support in :PACKAGE: fix>% :T=E: misquote (ancient!)
03-03-03 .MAM.INIT handles debug=1 for CC.DEBUG vs. CC.OPTIMIZE add 'test : .DONTCARE .ONOBJECT' another prefixinclude fix -- my head hurts pass recursive $(=) by value ( $(=:V) )
	 misc.c: fix :F=[LUV]: translation
03-02-28 YACCFIX workaround for bison yytoken addition include $(LDLIBRARIES) in %.req fix .BIND.-l% comparison on CC.PREFIX.SHARED handle .o scope prereqs
	 variable.c: fix $(!) internal.val conflict
03-02-24 option.c: drop --mismatch alias for --corrupt
03-02-12 handle multiple lhs for :INSTALLDIR:
03-02-06 add
03-01-31 mark .PACKAGE.LIBRARIES. hints .DONTCARE :PACKAGE: add to .PACKAGE. first, then include pkg-*.mk
03-01-23 more prefixinclude tweaks
03-01-11 CATALOG default is $(.CATALOG.NAME.)
03-01-10 parameterize all silent => $(SILENT)
02-12-21 --- release 4.3 ---

:::::::: builtin ::::::::

03-04-05 nl.tst: generate test data file
03-02-24 nl.c,nl.tst: add
03-02-14 od.c,tr.c: no error message for EPIPE
03-02-11 dlls.c: add Dllinfo_t.env

:::::::: mailx ::::::::

03-01-17 add shquote() to quote popen pathnames; fix save to -f core dump

:::::::: pzip ::::::::

03-04-05 pop.c: add OP_VERBOSE for cut() trace
03-01-04 pin.c: list range only if more than 2 elements
02-12-25 pin: add --sort

:::::::: re ::::::::

03-03-17 ed.tst: add ! command tests for sfpopen() "" mode fix
03-02-17 testregex.dat: add bm tests
03-01-13 sed0.c: operate on all input files, even if some fail
	 testfnmatch.c,testmatch.c: ignore testmatch -o option
03-01-03 testregex.c,testregex.dat: add REG_SHELL_GROUP options and tests

:::::::: sort ::::::::

03-03-11 initialize $CC from :TEST: TESTCC state var
03-03-07 Makefile: +lsort for now

:::::::: std ::::::::

03-03-21 ls.c: add -z,--time-style
	 ls.c: if only -t is set then set FTW_SEEDOTDIR to keep configure happy
03-03-11 pss.c: pid <= 1 => ppid == 0 to avoid ancestor loop
03-03-06 ps.c: add pgid alias for pgrp
03-02-28 pss*.[ch]: add Pss_dev_t and Pss_id_t
	 ps.c: don't warn about unsupported fields for [cfjl]
03-02-21 pss-*.c: initf errors except no space now warnings for ps fallback
	 Makefile: hosttype workaround to avoid botched -lkvm
03-02-11 ps.c: flags width 2 => 3 since posix says its octal
03-02-07 ps.c: add --children and --parents, --tree == --children --parents
03-02-06 locale.c,ls.c: fmtquote() FMT_ALWAYS update
03-02-01 ps*.[ch]: convert to independent Pssmeth_t methods 
	 pss-ps.c: export _PSS_ps=1 to force for testing
03-01-31 pss.c: add darwin.ppc kvm_getprocs() -- still needs work
03-01-29 ps.c: check for obvious invalid pids
03-01-10 locale.c: don't list default after unknown category/keyword

:::::::: tksh ::::::::

03-01-02 Makefile: dynamic -lshell on CC.HOSTTYPE=*win*

:::::::: libast ::::::::

03-04-21 tm/tmdate.c: fix next hour/min logic
03-04-15 vmalloc/malloc.c: intercept __malloc() along with __libc_malloc()
	 string/strdup.c: intercept __strdup() along with __libc_strdup()
	 features/mmap: consolidate from features/(lib|sfio|vmalloc)
	 add _NO_MMAP==1 to disable all mmap()/munmap() calls
	 path/pathposix.c: add
03-04-14 comp/setlocale.c: fix debug_mbtowc() return value for *s==0 || n < 1
	 comp/iconv.c: fix error return errno values
03-04-11 misc/stk.c: fix stkgrow() realloc bug
03-04-05 string/tok.c: support readonly single token input strings
	 disc/sfdcdio.c: fix F_DIOINFO and FDIRECT #ifdef's
	 include/ast_std.h: allow _LARGEFILE64_SOURCE on __hppa
	 features/common: fix `tst _foo_' => `tst foo_' typo
	 features/float: fix `tst _foo_' => `tst foo_' typo
	 comp/omitted.c: fix pathconf => _pathconf => _ast_pathconf loop
03-04-03 features/float: add _ast_no_um2fm: no usinged intmax => floatmax cast
	 vmalloc/vmbest.c: add getenv("VMCHECK") to initialize Vmcheck
03-03-28 include/ast_dir.h: add D_TYPE; { D_FILENO D_TYPE } must be #ifdef'd
	 misc/fts.c|getcwd.c|glob.c,preroot/getpreroot.c: add D_FILENO #ifdef's
	 Makefile: make sure _BLD_ast is defined for all compiles
03-03-27 ast_vfork.h: generate from features/vfork to pick up headers/pragmas
03-03-25 comp/omitted.c: drop free() of live environ
	 path/pathshell.c: allow trailing .exe -- pox on that
	 string/strtoi.h: fix bug leading 3 digits before thousands sep bug
	 string/(fmt|str)[gu]id.c: we know root when we see it
03-03-24 misc/optget.c: handle : and ? in := default value
03-03-21 ast_std.h: drop all spawn*() but spawnveg()
	 obsolete/spawn.c: add for dropped spawn*()
	 features/lib: _use_spawnveg if spawnveg() is a win over fork()/exec()
	 features/lib: drop NutForkExecve() and _map_spawnve
	 features/lib: fix memccpy test to clean up /tmp droppings
	 comp/spawnveg.c: call posix_spawn() if implemented
	 comp/omitted.c: add spawnve() intercept
	 comp/getoptl.c: set getopt_long() optind even if no options
	 tm/tmfmt.c: add %Q<delim>recent<delim>distant<delim>
	 misc/optget.c: fix trailing '*' for option and option args
	 sfio/sfmode.c: getenv("_AST_SFIO_OPTIONS") [,]SF_LINE[,] for fd {0,1,2}
	 vmalloc/*: kpv sync for uwin build independent of libast
03-03-18 port/astconf.c: switch to dynamic string values (saves 7K data/bss)
	 string/strmatch.c: switch to dynamic regex cache (saves 3K data/bss)
	 regex/regcoll.c,ucs_names.h: initialize rw tables from smaller ro data
	 features/lib: add vfork test for passing SIG_IGN across exec
	 features/lib: add spawn test for passing SIG_IGN across spawn
03-03-17 comp/omitted.c: unlink() renames to .deleted dir in case file open
	 sfio/sfpopen.c: handle mode "" for spawn with no pipe
	 features/float,comp/frexp.c,comp/frexpl.c: add pow2() table alternative
03-03-12 features/lib: fix linux.ia64 memccpy() tests -- now its their turn
	 features/vmalloc: fix /dev/zero test
	 features/align: _ast_intmax_t and _ast_fltmax_t join the union
	 misc/stk.c: fix struct frame size to align data
	 disc/sfdcdos.c: change sfslen() => sfvalue(f)
03-03-10 misc/optget.c: handle [f<:>x:lllddd]
03-03-07 port/astconf.c: uninitialized CONFORMANCE + POSIXLY_CORRECT => standard
03-03-05 comp/omitted.c: make sure at least /bin is in PATH to find cygwin dlls
03-03-02 path/pathshell.c: write access to /bin is effectively root
03-02-28 features/float: add (FLT|DBL|LDBL)_U?(LONG|LONGLONG|INTMAX)_(MIN|MAX)
03-02-25 features/lib: change vfork() test to use _exit() instead of exit()
03-02-23 include/error.h: update ERROR_VERSION for error_info.number space
03-02-22 comp/ wrap ksh check in eval to avoid premature exit
03-02-21 misc/fts.c: verify chdir(..) to avoid malicious dir rename()
03-02-19 string/strtoip4.c: isspace() instead of ' '||'\t'
03-02-17 regex/regcomp.c: fix stats.l REX_REP logic that botched REX_BM
03-02-13 string/base64.c: handle catenated encodings
03-02-11 features/ change LIBPATH to <dir>[:<env>[:<pat>]][,...]
03-02-07 path/pathfind.c: allow "/dev/null" to be PATH_REGULAR
03-02-06 include/ast.h,fmtquote.c: add FMT_ALWAYS|FMT_ESCAPED|FMT_SHELL|FMT_WIDE
03-02-05 tm/tmdate.c,tm/tmword.c,string/strelapsed.c: '_' treated like ' '
03-02-01 string/strelapsed.c: handle ps style [day-][hour:]min:sec
03-01-31 port/astlicense.c: fix author=* match
03-01-30 include/tm.h: add tmisleapyear() macro
03-01-29 comp/getopt.h,comp/getoptl.c: add gnu getopt_long(), getopt_long_only()
	 include/ast_getopt.h: for non-gnu part of comp/getopt.h
	 include/ast_std.h: include <ast_getopt.h> instead of <getopt.h>
03-01-28 ast.h,string/base64.c: add base64encode() and base64decode()
	 path/pathfind.c: verify S_ISREG()
03-01-24 path/pathexists.c: fix abs dir bug and deal with case ignorance
03-01-23 path/pathpath.c: honor PATH_ABSOLUTE for the easy case too
03-01-22 path/pathprobe.c: fix search to find both the probe script and command
03-01-17 misc/ application/zip => appplication/(gzip|pzip|zip)
03-01-14 misc/optget.c: change href="" to href="."
03-01-10 include/ast_std.h: strtold() import hackery for static __CYGWIN__
03-01-03 include/regex.h,regex/regcomp.h: add REG_SHELL_GROUP
	 include/ast.h,string/strmatch.c: add STR_GROUP for REG_SHELL_GROUP

:::::::: libcmd ::::::::

03-03-21 date.c: add %Q/recent/distant/ docs
03-02-19 date.c: fix %+|!flag docs

:::::::: libdll ::::::::

03-03-12 dllfind.c: dlopen() with RTLD_GLOBAL|RTLD_PARENT defaults
03-02-11 dllscan.c: change LIBPATH to <dir>[:<env>[:<pat>]][,...]
03-01-08 dllscan.c: hack version logic again -- is consistency rocket science?
03-01-07 dlfcn.c: fix darwin.ppc dlopen/dlsym/dlclose

:::::::: libardir ::::::::

03-04-05 ar-port.c: fix bug that skipped initial long name entry
	 ar-port.c: handle netbsd.i386 ' <long-index>' vs. '/<long-index>'
03-02-05 ar-port.c: handle solaris TYPE_port variation
03-01-30 ar-port.c: handle member name length == 16 (no terminator)

:::::::: librecsort ::::::::

03-03-07 Makefile: generate dll for dr. ek
03-01-21 rsmerge.c: fix typo that kicked in on large (~100K) record sizes

:::::::: libuu ::::::::

03-01-07 uulib: check UU_HEADER in bx_header()

:::::::: libz ::::::::

03-03-13 gzio.c: eliminate fixed gzprintf() buffer size via sfio string stream
03-01-20 zlib.h,gzio.c: add gzreopen()

:::::::: libcs ::::::::

03-03-28 msglib.h: add D_FILENO ifdef

:::::::: libpp ::::::::

03-03-25 ppop.c: PP_RESERVED now deletes old symbol before redef with lex value
03-03-14 pp.probe: fix the #include_next probe
03-02-28 ppsearch.c: fix -MM bug that missed prefix include hosted mark
03-02-18 pplex.c: handle COMPATIBILITY 
03-01-23 probe.win32: mingw32 tweaks

:::::::: libpz ::::::::

03-04-15 pzlib.h: add PZ_MARK_PART for partial last input record
	 pzlib.h: add PZ_MARK_TAIL for tail records
	 partial input record is now a warning and handled on inflate
03-03-03 pzhead.c: PZ_FORCE disables unknown input diagnostic
03-02-10 sfdczip.c,sfdcpzip.c: handle PZ_CRC and SFGZ_NOCRC
03-02-06 pzhead.c: fmtquote() FMT_ALWAYS update
03-01-04 pzpart.c: list range only if more than 2 elements
02-12-25 pzip.h,pzpart.c,pzdeflate.c,pzwrite.c: add PZ_SORT

:::::::: libtksh ::::::::

03-04-05  src/var.c: fix off by 1 malloc() call -- for once not gsf's fault!!
	  src/var.c: hack around nv_move() double-free bug -- needs better fix
03-03-12  src/tcleval.c,src/tclIO.c: change sfslen() => sfvalue(f)

July 28, 2011