Release of CWEBx3.0, another implementation of CWEB =================================================== After several versions with beta status, CWEBx is now officially released as version CWEBx3.0. The system is available at ftp://ftp.cwi.nl/pub/cweb and will hopefully also be available soon at the Literate Programming Archive (ftp://ftp.th-darmstadt.de/pub/programming/literate-programming/c.c++) and at the CTAN sites. An earlier version was released last year under the name `CWEB 3.x'. With respect to that version the main changes are improved compatibility with Levy/Knuth CWEB, and greater reliability. All extras that were added in Levy/Knuth CWEB have been incorporated, and a compatibility mode is added in which the external behaviour of Levy/Knuth CWEB is simulated exactly. The main version number `3' now indicates compatibility with the corresponding major version of Levy/Knuth CWEB, which was not the case for CWEB 3.x. (The minor version numbers of Levy/Knuth CWEB only involve bug fixes that are usually not relevant to CWEBx; all bugs that are repaired in Levy/Knuth CWEB 3.3, and many that are not, are absent in CWEBx3.0). A few new features have also been added, mainly to increase flexibility of use. As a reminder, here is a summary of the new aspects that were already present in CWEB 3.x. - The effect of typedef declarations on formatting extends over the complete source text, rather then starting at the declaration itself. - A control code for inclusion of header files, which causes any typedef declarations in the header file to be taken into account in formatting. - A mechanism for referring to section numbers using symbolic labels. - A control code to start a section without allowing a page break. - A control code to denote the bitwise-or operator `|' within `|...|'. - A control code to force a negative indentation by one unit on a line. - The size of an indentation can be controlled by a parameter. - A defaulting mechanism on command line to use change file if it is present. - CTANGLE matches parentheses and braces in macros and modules bodies. - Several layout styles may be selected from the command line. - Irreducible scrap sequences can be shown without changing the source files. - Automatic breaking of long expressions using precedence rules. - New and modular set of grammar rules, based directly on the ANSI C syntax. - Syntax category of module names can be controlled; default is statement. - A completely new manual, with a one-page table of all control codes. - CWEB programs are system independent, no change files needed. - Organisation of programs is much more C-like, using ordinary header files for communication between compilation units. - Documentation of source code is improved, programs are more literate. The following features are the main additions made since CWEB 3.x - Control codes @s, @q, @l, @h, from Levy/Knuth CWEB. - Relaxation of the rules, e.g. for module names, as in Levy/Knuth CWEB. - Compatibility mode with Levy/Knuth CWEB. - Possibility to send index and module names to separate files. - Possibility to get human-oriented output from CTANGLE, omitting #line, but retaining comments and indentation. - Possibility to specify search path for header files on command line. - Possibility to indicate that a typedef identifier is used as an ordinary one, e.g., as a field in a structure. - Possibility to treat short compound statments as simple ones in formatting. - An improved and even more complete manual (now 32 pages). Marc van Leeuwen CWI, Amsterdam