---------------------------------------------------------------------- Version 0.631: ---------------------------------------------------------------------- This version fixes an obscure bug that could cause certain perfectly valid strings to be printed as "???" or " NONEXISTENT". It also includes a minor fix to the PATHEXPAND code that prevents running out of file descriptors. ---------------------------------------------------------------------- What is new in Version 0.63: ---------------------------------------------------------------------- 1. Backslashes in the PostScript output are rendered correctly. They used to come out as (\) instead of (\\). 2. Recycling an independent variable should no longer cause spurious overflows. (This bug was recently found in mf.web.) 3. Pythagorean addition should now be faster in certain trivial cases. 4. Rotating text by arbitrary angles should no longer cause bad PostScript output. The problem was that arguments to "fshow" could be inaccurate. 5. Obscure bugs inherited from mf.web are now fixed. These involve balancing parentheses showing on the terminal, reporting the correct line number in case of buffer overflow, and removing spurious reference counts that could effect end-of-job statistics. 6. Fonts with ec=255 should no longer cause mp's PostScript output routines to go into a loop. 7. When mp's string mechanism was heavily used, file names could occaisonally be printed on the terminal and log file as "(?)". This has been fixed. 8. Setting PATHEXPAND in site.h causes mp, dvitomp and dmp to understand "//" in path variables as "search multiple levels of subdirectories". This is for compatibility with recent versions of the Web2c TeX distribution. 9. A typo in mpware/makempx and mpware/troffmpx has been fixed. Previous versions of these scripts would not run on some systems. 10. Data files *.d have been added to the doc directory. These are used by doc/mpgraph.mp which generates figures for "Drawing Graphs with MetaPost". 11. Typos in mpintro.tex and mp.web's TeX material have been fixed. 12. Files examples.mp, mpintro.tex and mpintro.bib have moved from mplib to the doc directory. 13. The author's email address now appears in the README file. ---------------------------------------------------------------------- Macros added to the mplib directory between Versions 0.50 and 0.62: ---------------------------------------------------------------------- rboxes.mp is a slightly more general version of boxes.mp TEX.mp provides a way of running tex dynamically instead of as a pre-processor graph.mp, format.mp, and sarith.mp are documented in doc/mpgraph.ps (This is the same as ftp://netlib.att.com/netlib/att/cs/cstr/164.ps.Z) marith.mp, string.mp, texnum.mp, and troffnum.mp are low-level packages used by graph.mp, format.mp, and sarith.mp. ---------------------------------------------------------------------- Other minor bug fixes subsequent to Version 0.60 ---------------------------------------------------------------------- 1. plain.mp has been fixed so that the x**y works properly when x<0 and y is a negative integer. 2. Programs mptotex.c and mptotr.c which extract btex..etex material have been fixed so they work properly with input files that do not end with a newline character. 3. Program dmp.c which handles troff output from btex..etex blocks has been modified to avoid outputting any non-ASCII characters that the C function isprint() accepts. 4. Program dmp.c no longer gets troff graphics specials confused with text. This seldom matters because btex..etex blocks are unlikely to contain troff graphics. 5. Pictures containing clipped subpictures could come out with some colors in the subpicture wrong. 6. Colors in PostSript output were not being restricted to the standard 0..1 range. 7. Transforming a path or a pen should no longer generate extraneous overflow errors in certain unusual situations. 8. Drawing with a degenerate 2-vertex polygonal pen such as penrazor should no longer cause an infinite loop in certain unusual situations. 9. There were some bugs in the mfplain macros. (These macros are designed to similate plain METAFONT.) The drawing and filling macros now apply currenttransform to the path but not the pen rather than vice versa. The predefined modes now set o_correction to 1.0. 10. For security reasons, mp can no longer read or write files whose names begin with '.' ---------------------------------------------------------------------- Changes to the MetaPost language between Version 0.50 and Version 0.60 ---------------------------------------------------------------------- 1. New operator `readfrom ' and new command `write to ' do file I/O. Plain defines a special string EOF that readfrom returns to indicate end-of-file and write..to understands as well. 2. New iteration type `for p within : endfor' iterates through the interior components of the picture. An `interior component' is a single pen stroke, filled outline, or piece of typeset text. A part of the picture enclosed in a clipping or setbounds path also counts as an interior component. If the whole picture is enclosed in such a path, the for..within iteration looks inside. Note that a picture generated by btex..etex is enclosed in a setbounds path. 3. The length operator now applies to pictures. It returns the number of interior components. 4. New boolean operators stroked, filled, textual, clipped, bounded test the first component of a picture. A picture enclosed in a clipping or setbounds path counts as a single component. 5. Part extraction operators now work for pictures. Standard operators redpart, greenpart, bluepart apply to the color of the first component and xpart, ypart, xxpart, xypart, yxpart, yypart extract parts of the tranformation that has been applied to a text component. If `textual p' is false, the transform components are all zero; if `clipped p' or `bounded p' is true, the color parts are all zero. Additional operators fontpart, textpart, pathpart, penpart, dashpart extract other information from the first component of a picture. They all return null values when the first component has the wrong type: fontpart and textpart return null strings; pathpart returns the path (0,0); penpart returns nullpen; and dashpart returns nullpicture. 6. The construction `dashed nullpicture' is now a no-op. It used to be an error. 7. The clip and setbounds statements used to ignore operations on empty pictures. Now they do not. 8. Structuring comments in the PostScript output are now based on EPSF-3.0 as described in the 2nd Edition of the PostScript Reference Manual. When prologues is 0, some structuring comments are included but the output is not flagged a `conforming document'. Previous versions of MetaPost behaved similarly but used slightly different structuring comments. 9. When warningcheck is 0, numeric tokens and results from the hex and oct operators can be as large as 32767.99998. The old limit of about 4096 applies only when warningcheck is positive. 10. Various optimizations should make the output a little more compact. 11. For PostScript engines that obey the scan-conversion rules documented in the 2nd edition PostScript Language Reference Manual, hrules and vrules in btex..etex blocks should now come out to exactly the right number of pixels. The change affects all pen strokes drawn in MetaPost It is implemented via PostScripts dtransform and idtransform operators. 12. A bug involving setbounds and MetaPost's corner operators has been fixed. 13. Degenerate elliptical pens no longer cause PostScript to divide by zero. 14. Fixed a very obscure bug involving readstring and end-of-file. 15. String compaction statistics are now printed correctly when the job terminates with tracingstats positive. ---------------------------------------------------------------------- Changes to the source files between Version 0.50 and Version 0.60 ---------------------------------------------------------------------- CHANGES to ./README.MP The installation instructions should now be clearer. They also explain how to cope with verious versions of WEB2C. CHANGES to ./site.h I removed unused entries and clarified instructions in commentary material. Confusing comments about possibly merging it with the WEB2C version of site.h were removed--I think such merging is a bad idea. CHANGES TO ./Makefile, mp/Makefile, mpware/Makefile: Improved default settings, simplified the `install' recipe, fixed a few missing depencies, portability problems, etc. RENAMED FILES mp/mp.defines, mpware/mpware.defines, mpware/dvitompext.c TO mp/mp.def, mpware/mpware.def, mpware/dvimpext.c (The names also changed in the Makefiles and convert scripts) CHANGES TO mp/mp.web, mp/mp.ch, mp/mp.def, mp/mpext.c: Lots of new features were added as noted above. The only new system- dependencies are for `readfrom' and `write...to'. The change file now increases max_read_files; it doesn't bother with max_write_files, but perhaps it should. There is a new change entitled "Path selector for..readfrom file". From the web2C sources I borrowed a change "`logname' is declared in in some systems". I also added a PASCAL-like eof() routine to mpext, removed a change entitled "avoid using eof() in read_psname_table" and added a new change "[48.1199] `eof'...[in read_mem_file]". Reorganization of math routines in the mp directory: I moved the floating-point math routines from mpext.c to mpath.c. A C-language version of the standard math routines was moved from mpmath.c to a new file pmath.c for use in mathtest only. This required chages to mathtest.c and time.c (also used only for mathtest). The point of all this is that there is now just one copy of the floating-point math routines and it is used for mathtest and (optionally) for mp itself. Routines in doc and mp/trapdir: The output was updated to Version 0.60. Another test file mptrap.mp tests new features. There have also been minor updates to the manual, although the new features for Version 0.60 are not included yet. CHANGES to macros in mplib: A minor change to boxes.mp should make it more robust. Changed default setting of tracinglostchars in mfplain.mp and plain.mp. Added a string constant EOF to plain.mp for use with readfrom and write..to. Changed mproof.tex to make it more portable as suggested by Knuth. CHANGES to mpware/dvitomp.web, mpware/dvitomp.ch: The web file was changed to output rules as horizontal or vertical penstrokes with butt endcaps. This also affected dvitomp.ch. Also in dvitomp.ch, put terminal output on stdout instead of stderr and require the output file to be given on the command line. CHANGES to mpware/makempx, mpware/troffmpx: Added comments explaining what path names need fixing. Portability improvements and dvitomp's output change affect makempx only. CHANGES to mpware/mptotex.c mpware/mptotr.c mpware/testex.err mpware/testex.mp: Ignore an initial newline in the TeX (or troff) material to avoid generating a blank line in the output file. The test file now covers this case. CHANGE to mpware/newer.c Minor changes to make it compile in strict ANSI/POSIX environments.