Subject: CVSup 13.4 is now available Date: Thu, 12 Sep 1996 16:42:18 -0700 From: John Polstra <jdp> Announcing CVSup 13.4 --------------------- Release 13.4 of CVSup, the CVS-aware network distribution system, is now available. Where to Get CVSup - ------------------ CVSup is free software. It is available from the following FTP sites: ftp://freefall.freebsd.org/pub/CVSup/ ftp://ftp.freebsd.org/pub/FreeBSD/incoming/ ftp://ftp.polstra.com/pub/FreeBSD/CVSup/ (slow; avoid if possible) Full sources as well as FreeBSD binaries are available: cvsup-bin-13.4.tar.gz FreeBSD binaries for the client cvsupd-bin-13.4.tar.gz FreeBSD binaries for the server cvsup-13.4.tar.gz Sources ** MD5 signatures for these files are: MD5 (cvsup-bin-13.4.tar.gz) = d22feb17efbfbb53fbb1da03162216d5 MD5 (cvsupd-bin-13.4.tar.gz) = 0c5b90c7534e9a1591d99a93b236aa21 MD5 (cvsup-13.4.tar.gz) = d6c5aef96a01f657e7d884f6d2185232 An updated port will appear in the FreeBSD ports and packages collections soon: ftp:://ftp.freebsd.org/pub/FreeBSD/ports-current/net/cvsup/ ftp:://ftp.freebsd.org/pub/FreeBSD/packages-current/net/cvsup-13.4.tgz ** If you wish to build CVSup from the sources, be sure to read the discussion further on in this announcement. What Has Changed Since the Previous Release? - -------------------------------------------- Detect and send changes to the RCS keyword expansion mode. Formerly, these (rare) changes were ignored. That caused checksum mismatches, which slowed down updates because the whole files had to be sent as fixups. Report 0-byte appends as what they really are, i.e., touches. Add a new statistics line for them. Make the command line option handling comply better with POSIX. Fix supconv to handle recent changes to the example "ports-supfile" in FreeBSD-current. Add a timeout to kill a server process when it has been inactive too long (15 minutes). This replaces the TCP keepalives that were added in the previous release. Add a hack to the server to make it easier to shut it down in a controlled manner. If a file "cvsupd-HALT" exists in the directory from which the server was started, and if it is newer than the time when the server was started, then the server will reject all new incoming connection requests. Make some changes to the zlib interface to eliminate the potential for an unsafe interaction with the garbage collector. FreeBSD binary releases are now built with a new version of the Modula-3 runtime that has a thread-safe version of malloc built into it. This cures some vexing core dumps that had been happening from time to time. Add work-arounds for the worst of the problems associated with malloc packages that are not thread-safe. These are not complete, however. I will probably incorporate a (hopefully portable) thread-safe malloc in the next release. Eliminate several FreeBSD-specific constructs that caused portability problems on other platforms. There is a good chance now that this software will compile and run out-of-the-box on most POSIX systems with standard SRC Modula-3 installations. What Is CVSup? - -------------- CVSup is a software package for distributing and updating collections of files across a network. CVSup is specifically tailored to distributing CVS repositories. By taking advantage of the special properties of the files contained in CVS repositories, CVSup is able to perform updates much faster than traditional systems. It is especially valuable for people with slow Internet connections. CVSup parses and understands the RCS files making up a CVS repository. When updates occur, CVSup extracts new deltas directly from the RCS files on the server and edits them into the client's RCS files. Likewise, CVSup notes the addition of new symbolic tags to the files on the server and sends only the new tags to the client. CVSup is able to merge new deltas and tags from the server with deltas and tags added locally on the client machine. This makes it possible for the client to check local modifications into his repository without their being obliterated by subsequent updates from the server. Note: Although this feature is fully implemented in CVSup, it will probably not be practical to use it until some small changes have been made to CVS. In addition to distributing the RCS files themselves, CVSup is able to distribute specific checked-out versions. The client can specify a symbolic tag, a date, or both and CVSup will extract the appropriate versions from the server's CVS repository. Checked-out versions do not need to be stored on the server since CVSup can extract any version directly from the CVS repository. If the client has an existing checked-out tree, CVSup will apply the appropriate edits to update the tree or transform it into the requested version. Only the differences between the existing version and the desired version are sent across the network. CVSup uses lightweight processes (threads) to implement a streaming protocol across the network. This completely eliminates the delays associated with the lock-step, request-reply form of communication used by many existing protocols, such as sup and NNTP. Information is transferred at the full available speed of the network in both directions at once. Network latency and server response delays are rendered practically irrelevant. CVSup uses the "zlib" compression package to optionally compress all communications. This provides an additional 65-75% compression, on top of the diff-based compression already built into CVSup. For efficiency, all processing is built into the CVSup package itself. Neither the client nor the server executes any other programs. For further information about how CVSup works, see the "Blurb" document in the CVSup distribution. Using CVSup to Maintain FreeBSD Sources - --------------------------------------- CVSup servers are currently running at the following FreeBSD mirror sites: USA: cvsup.freebsd.org cvsup2.freebsd.org The Netherlands: cvsup.nl.freebsd.org Using CVSup, you can easily receive or update any of the standard FreeBSD source releases, namely, "cvs", "current", and "stable". The manual page for cvsup(1) describes how to do that. If all goes well, additional servers will come on-line soon. Building CVSup from the Sources - ------------------------------- CVSup is written in Modula-3, a modern, compiled, object-oriented language. Modula-3 integrates threads, exceptions, and garbage collection, providing an ideal vehicle for this sort of application. Without Modula-3, CVSup would almost certainly not exist today. If you wish to build CVSup from the sources, you will first need to install the free Modula-3 compiler and runtime libraries from DEC SRC. A port is available in the FreeBSD ports collection, in "lang/modula-3". The corresponding package is, of course, available in the packages collection. You will also need version 1.0.4 or later of the "zlib" library. In recent versions of FreeBSD-2.2-current, this library has been incorporated into the system sources, in "src/sys/lib/libz". Prior to that, a FreeBSD port was available in "devel/libz" of the FreeBSD ports collection. For other sources of this library, see the "Install" file. Do not try to use versions earlier than 1.0.4. You will also need Poul-Henning Kamp's "libmd" library. It is a standard library on FreeBSD systems. Portability Issues - ------------------ I intend for CVSup to be portable to most POSIX systems. The present release has only been tested under FreeBSD versions 2.1 and later. Primarily because of packaging problems, this release of CVSup probably won't build out-of-the-box on other systems. Among other things, it relies on Poul-Henning Kamp's "libmd" encapsulation of the MD5 subroutines. The library itself appears to be quite portable, but its Makefiles are BSD-specific. There are probably some other FreeBSD-specific things in CVSup that have not been found yet. Anybody who succeeds in porting CVSup to other systems is encouraged to send his changes to <cvsup-bugs@polstra.com>. As long as the changes are reasonably palatable, they will be incorporated into future CVSup releases. CVSup uses several POSIX-specific functions which may make it more of an effort to port the package to non-POSIX systems such as Win32. These functions include mmap, fork, syslog, stat, and chmod, among others. Status of this Release - ---------------------- CVSup has been in alpha testing since mid-May. This should be considered a beta release. Please be prepared to find bugs -- without a doubt, there are some. Please report bugs to <cvsup-bugs@polstra.com>. John Polstra, <jdp@polstra.com> Copyright 1996 John D. Polstra $Id: Announce,v 1.9 1996/09/12 22:43:05 jdp Exp $ $Name: REL_13_4 $