This is a major release.  It includes a much-updated version of the
Cygwin32 library.  Because the Cygwin API has changed in incompatible
ways, the dll has been renamed cygwinb19.dll to avoid invalidating
previously built executables.

Note that a B19-compiled application exec()ing a B18-compiled
application will treat the B18-compiled executable as an ordinary
Win32 executable.  This means that open file descriptors and some other
internals will not be inheritted on exec() calls.  The reason for this
is that different shared memory areas are used by the different versions
of the cygwin library.  This may or may not be of importance to you
depending on what you're doing.

The Beta 19 release of the Cygwin32 library continues to be licensed
under the GNU General Public License (GPL).

The PE format definition used by the compiler tools now matches
Microsoft's more closely.  This should allow better interoperability
with other vendors' development tools although more work probably
remains to be done in this area.  This change invalidates all previously
built object (.o) and static library (.a) files so be sure to
delete/rebuild old .o and .a files you are using!

Finally, old symlinks are invalidated by this release.  The "system"
attribute is now used to mark symlinks which significantly speeds
up fstat and other file related calls.  Either recreate old ones or
set their "system" attribute flag so they will be recognized properly.

The new installer takes care of all environment variable settings
automatically by installing a shortcut in program files that pulls
up a bash prompt with all the correct environment variables set.
As a result, the setup process should be much cleaner than in the last
release.

For those of you who end up moving the tools around, the batch file
that sets up the default environment is called cygnus.bat and is
installed in the root of the install directory.  Because the tools have
been compiled to install in /cygnus/b19, when installed in this
location, the tools should "just work" if the bin directory is in your
path (no special environment variables are needed).  The only exception
is MAKE_MODE which needs to be set if you want to get ordinary Unix-like
make behavior -- see the make notes below for more information.

@subsection Changes in specific tools:

Ian Lance Taylor has written a resource compiler called "windres".
It can be used to compile windows resources from a textual rc file
into a COFF file.  The sources are in the binutils subdirectory of
the sources.

We have upgraded many of the utilities.  Beta 19 includes bash 2.01.1,
fileutils 3.16, gawk 3.0.3, patch 2.5, shellutils 1.16, tar 1.12,
textutils 1.22, and texinfo 3.11.  Bash under Cygwin32 now includes
working job control among other improvements.

The sh executable is now ash 0.2 from the Debian Linux distribution.
Using this more minimal shell as /bin/sh.exe speeds up configures
significantly.

Bison 1.25 has been added.

Tcl/tk are upgraded to version 8.0.  Compatible versions of tix and
itcl have been added.  These all include Cygwin32-compatible configury
files so you can do a Unix-style build of the Win32 ports of tcl/tk.

Expect 5.21.3 is included and basically works.

The binaries have been compiled with i686 optimizations turned on
which may result in a speed increase on Pentium-based systems
although the tools should work on i386 and later chips.

The linker (ld) has been enhanced -- it will now add the idata3
terminator automatically when linking dlls.

kill now supports signal names in arguments.  ps now shows process
start time information.

Although the default install of the tools should hide this detail, the
make utility now defaults to a Win32 mode which uses cmd.exe/command.com
as the subshell.  This mode allows the use of backslashes in filenames.
To build Unix programs, you need to set the MAKE_MODE environment
variable to "UNIX".  This way you will get the old behavior of using
sh.exe as the subshell.

@subsection Changes in the Cygwin32 API (cygwin.dll):

The interface is now better defined.  It contains libc, libm, and
Unix compatability calls.  It no longer contains exports for libgcc.a.
This should result in a more stable interface.  See the calls.texinfo
document for interface documentation.

There is now only one environment variable called CYGWIN32 that controls
the overall behavior of the dll:

        set CYGWIN32=[no]title [no]strip_title [no]binmode [no]glob
                strace=mask:cache,file [no]tty

So if you "set CYGWIN32=title tty", then you would get tty support
(see below) and have the current running process listed in the title
bar.

B19 adds support for:

* tty and pseudo-tty devices.  For now, ttys default to off because
taking over the console causes problems with using non-Cygwin console
programs in a Cygwin console.  To turn it on, set the environment
variable CYGWIN32 to include "tty".
* Hard links (requires NT on an NTFS filesystem).  When not possible (on
non-NTFS filesystems), link() will make a copy of the file in question
as it has done in previous releases.
* The SIGWINCH signal.  If tty handling is enabled then the process will
receive a SIGWINCH signal when the screen size changes.
* Additional terminal escape sequences recognized: scroll region setting via
<ESC>[n1;n2r and setting the console title using xterm escape sequence:
<ESC>[2;new title^G .

The following calls have been added:

* ptsname, grantpt, unlockpt
* login, logout, ttyslot, ctermid
* cfgetispeed, cfgetospeed, cfsetispeed, cfsetospeed
* setitimer, getitimer, ftime, tzset
* wait3, wait4, pause, sigpause
* getpgid, killpg, setegid (stub)
* strlwr, strupr
* sexecve, sexecl, sexecle, sexeclp, sexeclpe, sexecv, sexecp, sexecvpe
* rcmd, rresvport, rexec
* strsignal, strtosigno
* dlopen, dlsym, dlclose, dlerror
* inet_netof, inet_makeaddr
* socketpair
* fpathconf, realpath, chroot (stub)
* initgroups (stub), getgroups
* random, srandom

The following calls have been removed:

* ScreenCols, ScreenGetCursor, ScreenRows, ScreenSetCursor
* getkey, kbhit
* crypt (stub)
* all libgcc.a exports

The Winsock dll (wsock32.dll) is no longer implicitly linked into
the Cygwin32 dll.  Instead, it is explicitly loaded with LoadLibrary
the first time a process calls a Cygwin32 networking function.  This
speeds up most processes significantly (configures by about 20%).

The signal-related code has been rewritten from scratch.  Ditto for
most of the path handling code.

The globbing and getopt code has been replaced with BSD-derived
code.  The regexp code has been replaced with Henry Spencer's PD
implementation.

Doug Lea's malloc is now being used as the default malloc exported by
cygwin.  This malloc balances speed and compactness very nicely but is
more unforgiving when attempts are made to free already freed memory,
i.e., a segmentation violation will occur.

The bsearch call has been rewritten.

Alt Gr-key behavior has been changed in this release.  The left alt-key
still produces ESC-key sequence.  The right alt (Alt Gr)-key now
produces characters according to national keyboard layouts.

Processes no longer write their name in the title bar unless you include
"title" in the CYGWIN32 environment variable (see above).

Multiple cygwin.dlls no longer use the same memory space unless they are
identical (built at the same time).  This allows multiple dlls with
incompatible shared memory usage to be run simultaneously.  It also
facilitates debugging a buggy cygwin.dll.  By keeping only a single copy
of the latest cygwin.dll on your system, you can be assured of having
all cygwin processes exist in the same shared memory space.

The slash mount no longer defaults to C:.  It now defaults to the
system drive letter (where the OS is installed).

The standard dl* dynamic library loader functions are now available.
Cygwin32 B19 now correctly copies data after a fork and automatically
reloads any DLLs loaded in the parent process.  In addition, dlls will
now be correctly initialized when loaded and global constructors will
be called.  Global destructors will be called when the DLL is detached.
Handles gotten from dlopen or dlsym in the parent will be accessible in a
forked child.  The LD_LIBRARY_PATH environment variable is used in the dlopen
search.

Include the file <cygwin32/cygwin_dll.h> in a cygwin32 created .dll and
use the line DECLARE_CYGWIN_DLL(dll-entry-point) to produce .dlls that
can be used with these functions.
