vsta

Release
Login
=== Features listed by release ===
(this is included with the VSTa snapshot in "vsta/doc/features.txt")
------
=== 1.6.8 ===
     * Port CVS. Found a bug in CVS. :->
     * Convert main source repository to CVS.
     * Fix regoff_t type to be a signed quantity... fixes bug in expr(1) where it would not correctly indicate match length in its colon operator.
     * Convert kernel build to use vsta/src/makefile.all.
     * Retool boot and doc subdirs to use "make install".
     * Add support for "a" mode of fopen() (I thought I had already done this...).
     * Make sscanf() family of API's declare their input string buffer "const".
     * More performance tuning on "ls", also do alpha sort on -l format.
     * Construct font/hfont/icon directories in MGR from latest MGR distro... these contents were munged by the old DOS 8.3 filenaming lossage.
     * With long filename support, ".foo" is now a legal filename, so remove the .foo -> _foo mapping hack from the DOS filesystem. libmgr.a and libbitblit.a are moved under /vsta/mgr/lib.
     * Fix bug in KA9Q's generic ethernet driver... port_t versus file descriptor mixup.
     * vim.old removed.
     * Added some section 6 and section 3 man page entries.  
     * Fix name length bug in RCS.
     * select() support for the mouse driver.
     * fd_rstat() added to permit access to rstat() stat strings via file descriptor.
     * Pseudo-TTY support via vsta/src/srv/pty server.
     * Various bugs fixed in select(), especially with respect to reads which do not consume all available data, and how this is reflected in a subsequent select() for readability.
     * Fix day-one bug in handling of file descriptors under execv[p](). Also related bug in setup of FD's in init.
     * stat(1) has some special syntax added so you can stat raw file descriptors or ports open within the stat(1) process. Probably not generally useful, but I needed this to debug the problem with file descriptors listed right above this entry.
     * Missing file for DOS fsck code.
     * Convert to vt100 as system terminal type. Emulate quite a bit more of vt100 behavior.
     * Fix onlcr emulation (which was kinda sorta working for RS-232, but not otherwise used. Now it's pretty much fixed, and used by console as well).
     * Add "reset" wstat message to reset console state.
     * ascii(1) command because I can never remember my ASCII table.
     * Port of teco(1) to VSTa.
     * A sample RAM disk server is available in the new vsta_contrib archive.
     * vsta/etc and vsta/lib text files put under source control (duh, should have happened a long time ago).
     * Port of old rolodex(1) utility.
     * "offset" field of mmap() for MAP_PHYS now lets you specify an attached virtual address.
     * Quietly cap memory at 768 megs, to avoid limits in our 1:1 mapping area in kernel virtual address space.
     * Port of ARC 5.2.1 (old PC/DOS archive format).
     * File preallocation in FAT-32 (see wstat contig= command).   
     * Add dirname(1).
     * Fix segv in usage message of purge(1).
     * Support scanf family %n format for # chars read.
     * All /bin shell programs under source control in vsta/src/bin/cmds.
     * Added some symbol/string utilities in <symbol.h>.
     * A small stty(1) emulation.
       
=== 1.6.7 ===

     * Ported unzip
     * Fixed output corruption problem in fmt(1)
     * Fixed race condition in aborting a kernel read request which completes just as you abort it. Could leave the server hanging.
     * Fixed edge condition in signal generation from mach/cons2 which could keep future select() clients from working.
     * Fixed subtle bug where using the kernel debugger and then continuing could corrupt the first page of console server code.
     * Tweak kernel capability handling so that the default process label isn't ever changed to reflect a "root" capability (which, being zero-length, isn't a good label to use for ownership).
     * 3c509 network driver added
     * KA9Q networking generic ether driver now takes driver path as argument
     * Tightened up some TLB treatment in the page allocator and debug memory examination code.
     * Fix edge condition where large reads from /tmp would complete with a short count--many apps interpret this as EOF, instead of reading further data. tmpfs will now always return the full read request (assuming the data's there!).
     * Ported GNU chess 5.00
     * Added basic CPU profiling support--see vsta/src/lib/mcount.c.
     * Alias view->vi (for read-only viewing via vim)
     * Fix annoying behavior where some program exceptions either don't get caught by the debugger ("process exited normally") or the stack frame doesn't include the failing routine.
     * Fix environment variable inheritance between processes; in some cases, you wouldn't get variables you expected. In others, variables would hang around in places which were not expected.
     * Nice facelift to "ls" courtesy of Erik Dalen.
     * Erik also contributed some section 1 man pages.
     * A port of Tim Budd's latest/greatest "Tiny Smalltalk". Actually, this was total revamp of his design, but he stopped working on it before it was really shaken out. Check the RCS logs to get an idea of what I fixed. :-> The result is a pretty nice little language environment.
     * Have fputc() honor unbuffered flag in IOB. Fixes problem where things like fprintf to stderr or perror would misplace a trailing newline.
     * ash missing from "shells" package due to pathname mismatch... fixed.
  
=== 1.6.6 ===

     * Added FS_BLK{READ,WRITE} operations to support true sector-oriented I/O. Offsets and counts are in units of 512-byte sectors, and thus the 4 gigabyte offset limit of byte-oriented I/O is avoided. vsta/src/lib/abc.c uses this, and falls back to the old I/O primitives if it finds these not supported. For now, IDE supports it.
     * Filename completion is available in the shell. TBD... right now it's a separate plug-in from libusr.a; should it be made a part of getline()? When should it be active versus the regular tab expansion function?
     * TTY state (vsta/src/lib/tty.c) is now per-TTY.
     * Added "dev" FS_STAT parameter to the console server, also fixed a bug where interrupts didn't clear typeahead.
     * Fixed shift key rollover--if you hold one shift, then the other, then release the first, you'll still be shifted until you release the final key.
     * Converted current regexp package to use libregexp.a (note the new 'p'). This is made possible by long filenames in VFAT, and makes room for...
     * Ported POSIX libregex.a package.
     * Ported BSD's expr.
     * Added lots more details on how to implement select() in a server. See /vsta/doc/select.txt
     * RS-232 server now supports select().
     * Fix output positioning so things like "make > make.log" now give you usable output. Fixed some latent race conditions in port duplication messaging.
     * Made the shell use wait.h macros; non-zero exits don't get listed as signal terminations now.
     * Shell doesn't hang on pipe when doing some types of here documents.
     * Add some options to kill, and convert to getopt().
     * Create aliases for awk (=gawk), egrep/fgrep (=grep), [ (=test). We still have cc (=gcc).
     * hostname emulated in shell script using uname.
     * Fix long-standing latent bug in "fstab" with no arguments.
     * Ported vim-5.7... multiple edit buffers, filename completion, lotsa good stuff. The new one is more than 3x the size of the old one, though, so I'm going to keep the old one available for now as "ovim".
     * access for W_OK doesn't change the file's mtime any more.
     * Since the output positioning fix spares us needing to do clone() operations on each fork(), I've decided to live it up and have /vsta/bin mounted as /bin as a standard configuration. This means standard shell scripts which start with #!/bin/sh will now work, too.
     * Ported file utility.
     * Fixed up libgcc.a so it holds all the functions needed for floats, doubles, and long longs.
     * Port of dosfsck... native filesystem checking of DOS filesystems
     * Fix DLL loader so short filename conversion always works (missing  null termination)
     * Fix MGR's startup so it gives a clear message and exits when it can't attach to the mouse.

=== 1.6.5 ===
     * Added a little flexibility in use of MAP_FIXED.
     * Port of GNU Smalltalk.
     * Added realpath(), gettimeofday().
     * Added prototype for rename() to <stdio.h>.
     * Added rmap_grab() to the <rmap.h> library routines.
     * Fixed long-standing edge case bug when resource map is too fragmented.
     * Added alias remove() mapping to unlink().
     * Added two new partition types to disk partition support.
     * Added "xkeys" stat -w message to console server, so you can disable F<n> and arrow key escape sequence generation (if you want). Default is they still generate their escape sequences. (But I hate'em, so my personal config has them shut off!)
     * Fix memory leak in selfs server.
     * Fix "make distribution" to include new DLL's in distribution. This manifested itself as any of your -ltermcap type programs dying when you tried to run them. Sorry!
     * Implement inbuf/outbuf counts for console. fionread() now works there.
     * Always let owner (UID) to chown operations on vstafs. Otherwise you can paint yourself into a corner, where you remove all abilities of all users to touch the file!
     * Fix some more long-filename compilation errors.
     * Have DLL loader ld.shl try the truncated 8.3 filename in addition to the full DLL name. This helps when the VSTa distribution was loaded via a utility which only supports 8.3 filenames.
  
=== 1.6.4 ===

     * Added -o to MGR's "startup" command. Lets output be written to the named file.
     * Added VFAT (long filename) support to DOS filesystem.
     * Ported Plan 9's nroff/troff.
     * Generalized system shared library support; converted libm, libregex, and libtermcap.
     * Allow dumping of ranges of sectors in dumpsect.
     * Accomodate various flavors of RCS directory names for rcsdo. Save quite a few cycles in its operation.
     * Port of PDP-11 emulator; runs V7 UNIX under VSTa!
     * Avoid gcc lame inline support; -O isn't needed any more to correctly get an inline compilation of getc/putc.
     * Auto-flush stdout when read from an interactive stdin happens.
     * Conversion of man pages to nroff -man format.
     * Ported BSD's "units" command.
     * vstafs, file/dir creation inherits protection of parent dir.
     * less's help ('H' command) fixed.

=== 1.6.3 ===

     * FAT-32 support.
     * Fix race condition in parallel threads faulting same vaddr.
     * Fix bug in execvp which would sometimes hose the last argument
     * M_TIME is gone. RIP.
     * Add select() emulation. select() is supported by ka9q/networking, MGR terminals, and the console(s).
     * Fix bug in grep(1), which used the wrong value of O_RDONLY.
     * Fix crash when fork()'ing while another thread is blocked in a msg_connect attempt.
     * Fix hang when quitting MGR (had to hit a key on the terminal to actually let it exit).
     * MGR's $HOME/mgr.rc file now works... example in /vsta/guest.   
     * Port of ctags.
     * Cleaned up MGR's "resetwin" command.
     * Implemented ephemeral threads to support alarm(), SIGCHLD, ABC, etc. See sched_op().
     * Implemented ANSI C atexit().
     * Low-level VSTa event handler API, handle_event() from <event.h>  
     * Fix crash when m_to_sm() fails, but a segment cleanup is attempted anyway.
     * DOS now maps ".<file>" to "_<file>". Renamed sh.profile to _shrc, rh.rc to _rhrc, mgr.rc to _mgrrc. _exrc for vim remains the same.
     * Re-org of makefile structure; creation of global makefile.all.
     * Move a bunch of binary ports to a new vsta/src/bin/ports subdir.  
     * Create a vsta/src/include, which holds the RCS-managed versions. The "make install" phase copies header files to their place in vsta/include.
     * POSIX signal emulation. This is all the signal set handling stuff beyond the basic signal() API (which has existed for a while).
     * User and system CPU times of getrusage() are now filled in.
     * clock_t and clock() are now supported.
     * A <linux.h> has some stuff useful for porting Linux programs.
     * testsh wouldn't wait and retry to connect with the console. In some scenarios, this would put it in an endless silent tight loop.
     * Added a fionread() to <fcntl.h> to provide the ioctl FIONREAD function.
     * Ported zmodem rz/sz. Not working exactly right just yet....
     * Ported svgalib and jpeg6b. Got some of the svgalib demo apps working.
     * Ported PD m4 from FreeBSD.
     * Ported the 8-bit color driver from mgr-0.69 into the VSTa MGR port. Adapted it to use svgalib. Got high res working with MGR.
     * Added BSD's err/warn API's.
     * Added true/false/whoami commands.

=== 1.6.2 ===

     * Add rcsdo/changed, my tools for working with RCS trees.
     * Fix docs on rawrite'ing, also more spots missed in the great filesystem server command line change fiasco.
     * Update sample boot/menu.lst to reflect file server command line syntax.
     * On usage() errors, have DOS and vstafs put out a message to syslog as well as stderr (which, DOS being a boot server, isn't active).
     * Fixed memory leak in ethernet driver
     * Added memory leak instrumentation to libc malloc.c
     * Added standard filesystem switch support to all filesystems
     * KA9Q and proxyd now work for open/close/read/write/stat. So distributed kernel messaging is now working. Mount remote filesystems. Even /proc! Kill remote processes! Wheee!
     * Implement support for ISA bus limitation "bounce buffers".
     * Use bounce buffers in our two ISA DMA drivers--SCSI and floppy disk.
     * Fix a nasty race condition in vstafs.
       
=== 1.6.1 ===

     * Fix KA9Q so it doesn't lock up on "real" network interfaces.
     * Add packet buffering to srv/mach/ne. TCP/IP is now actually usable.
     * Convert srv/dos to getopt().
     * Add -B flag to dos and vstafs to set buffer cache size.
     * Fix PATH inheritance bug in /bin/sh; shell scripts could otherwise fail pathname lookup for their commands.
     * Fix bug in environ[] emulation; garbage chars at end of some strings.
     * Help for kernel debugger.
     * PID's now start at 1 so even the first process can be notify()'ed.
     * Enable SIGINTR/SIGQUIT generation from console keyboard. Fix login to mark process group to TTY, and TTY mode handling to permit updating of the TTY input signal state. Said signals are generated with the assumed identity of the client who set the process group.
     * Add -k to rs232 server so it's easy to control whether ^Z puts you into the kernel debugger.
       
=== 1.6 ===
     
     * Conversion to gcc 2.x. Now requires an FPU to use gcc, sorry!
     * Port of gdb using a.out stabs. Symbolic source debugging (both under gdb as well as dynamic attach) works.
     * Emulations of environ[], sys_errlist[], and sys_nerr.
     * Stubs for setrlimit stuff.
     * Proxy functions over KA9Q TCP/IP now working.
     * Ports of GNU awk, bison, flex, make, text utils, file utils.   
     * VSTa is Multiboot compliant; boots from GRUB loader. Boot from under DOS is no longer used.
       
=== 1.5.2 ===
     
     * vstafs fsck will now repair damage (not just find it)
     * vstafs now uses ABC (Asynchronous Buffer Cache)
     * Namer entries are cleared when the registering server exist
     * Added "purge" command to clean up old entries in vstafs versioning filesystem
     * Prototype of proxyd for doing proxy of VSTa messages over tcp/ip
     * A couple of really painful MGR bugs fixed (it's not usable)
     * Taught various commands about window resizing (ls, editors, less, termcap)
     * ar won't cause vstafs to dump (renaming on top of an active file is not safe in vstafs)
     
=== 1.5.1 ===
       
     * Bug fixes for kernel preemption
     * Performance: remove unneeded entries from default namespace
     * First implementation of ABC, Asynchronous Buffer Cache library
     * Semaphore server
     * Kernel-level thread mutexes
     * More MGR cleanup (less memory, slightly faster)
     * vFAT entries don't kill DOS server any more
     * Floating point support
     * popen/pclose
     * funopen/fropen/fwopen
     * Ports of sc, bc, Tiny Smalltalk
       
=== 1.5 ===
       
     * Fix case where "swapd -n" was still trying to push dirty pages
     * Add "core" kdb command
     * Performance: shaved a cycle off the shlib call path, deleted t_qsav and reaped a whole setjmp() of writes on each syscall 
     * Kernel preemption
     * More man pages
     * Permit I/O interruption w/o server ack for still-queued messages
     * Add setsid(), and have login move each session to its own signal group
     * Permit client disconnects w/o server ack; along with I/O interruption, this should permit a client to interrupt out and disconnect from a moribund server. It also solves an interesting deadly embrace in the exit of a server where a cache MMAP reference still exists.
     * Protect against buggy server operating against non-requesting client
     * Fix bug in explicit server port closing
     * Fix bug in fseek() from relative position
     * Revamp mouse handler
     * Add port of MGR windowing system

=== 1.4.1 ===
  
     * Speed up and bug fix event delivery code
     * Add support for "bt X" in kdb to backtrace an arbitrary thread  
     * Make FDL memory file descriptors work as a FIFO ring
     * Fix a crash where a connect request is dropped due to server death
     * Protect against a debugged process clearing its debugger port_t
     * Networking. /inet server, telnet daemon, remote console.
     * A speed/memory tweak for tmpfs; larger single I/O as a side effect
     * RCS is working (knock on wood)
     * chmod() maps onto VSTa permissions (was a no-op)
     * O_CHMOD supported for open() and friends
     * DOS server permits switching between RO and RW permissions now
     * Shadow password file
     * A couple more man pages
     * VSTa VM page stealing rework. Actually seems to work! (YMMV :->)
     * SCSI Tape & autosense support from Mike Larson

=== 1.4.0 ===
       
     * Significant work by Dave Hudson on performance. Also a new malloc() which allows fast inline allocation for most common cases.
     * Source reorganization; a src/ subdirectory now holds the source. Long promised, finally delivered.
     * New syscall convention using registers
     * Add "include" directive to make
     * Organize source and makefiles to support multiple architectures
     * Added source for 68030 Amiga port
     * Per-page TLB flushing where available
     * DOS filesystem performance tweaks
     * tfork() passes argument now
     * Lots of new C library functions
     * /dev/null server now supports an "always full" switch--useful for testing
     * Added xargs, echo, strings
     * vstafs: fix up how directories are grown
     * Cleanup of pset data structure and routines
     * Cleanup of adb, add :n to step over procedure calls

=== 1.3.3 ===

     * /proc filesystem, ps(1) uses this, as does kill(1).
     * Canonical ("line") input mode has command line editing and history.
     * Stripped a.out format uses one less block, in general.
     * Fixed ld(1) bug which broke code living in the last 32 bytes of an a.out image.
     * Add cc(1) compiler, based on lcc compiler. Fast, simple, less than optimal code generation.
     * More support of read-only files in dos filesystem.
     * Greatly improved stat(2) emulation.
     * Major fixes in permission calculations. Now works pretty much like it was originally described.
     * Fixed namer to allow logins (actually, access to fs/root entry for shlib startup) from other than sys.sys capability.
     * Performance tweaks for vstafs.
     * Removed various dead code, added more pstat(2) support for kernel config values.
     * Added $s/$S to adb to allow incremental symbol table loading (so you can "$s /vsta/lib/libc.shl" and get shlib symbols).
     * Allow VM page stealing to be active before swap space is configured. Only stealing of unmodified pages is possible, but this can still be a help on smaller systems.
     * Port of "rh" find(1)-like tool using C syntax.
     * Add ~ and ~user processing for open()
     
=== 1.3.2 ===

     * Added TCP/IP networking with KA9Q package.
     * Added ne2000 ethernet interface server.
     * Added shared libraries.
     * Enhanced RS-232 so you can set parity, data bits, and so forth.
     * Added ps(1) command, via the pstat system call interface.
     * Added CDROM filesystems.   
     * Converted all servers to use syslog.
     * Port of "vim" vi clone editor.
     * Floppy driver now works.
     * i387 FPU supported by kernel--library support still TBD.