diff --git a/CHANGES b/CHANGES deleted file mode 100644 index 05faf13051a7982169ab71e0ba03b53d6c4de2e1..0000000000000000000000000000000000000000 --- a/CHANGES +++ /dev/null @@ -1,1621 +0,0 @@ - -This file is public domain. - - ----------------------------------------------------------------------- -What is new in MetaPost version 2.01: ----------------------------------------------------------------------- -* It's a version needed to mark the patch mpx_copy_mpto. - - ----------------------------------------------------------------------- -What is new in MetaPost version 2.0rc2: ----------------------------------------------------------------------- - -* Small cleanup of the code -* Bump to version 2.0rc2: the current version is 2.00 -* Added the envelope primitives to mpman - - ----------------------------------------------------------------------- -What is new in MetaPost version 2.0rc1: ----------------------------------------------------------------------- - -* Mainly fixes for wrong path directions, minor issues on tfm and png - backend. The version says "2.000" to keep the version as a valid - number. - - ----------------------------------------------------------------------- -What is new in MetaPost version 1.9991: ----------------------------------------------------------------------- - -* Some issues fixed, but really this is in preparation of metapost 2.0. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.999: ----------------------------------------------------------------------- - -* The numbersystem 'binary' is now operational. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.902: ----------------------------------------------------------------------- - -* Fixed a crash in 'decimal' mode during choose_scale calculations. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.901: ----------------------------------------------------------------------- - -* Fixed a bug in 'decimal' mode that affected (among other things) - the directionpoint and bbox calculations. - -* Fixed a bug in 'decimal' mode calculation of sine / cosine that - affected the precision of the answer in situations where - 'numberprecision' was less than 34. - -* Updated the number parsing in 'decimal' mode to detect 'too precise' - input and optionally generate an error in that case (depends on - 'warningcheck') - -* Fixed a bug in the svg output where it could crash in 'decimal' mode. - -* Fixed a bug in the png output where it could get confused if there - was more than one text label - -* Fixed a bug in the png output for stroked paths - ----------------------------------------------------------------------- -What is new in MetaPost version 1.900: ----------------------------------------------------------------------- - -* Updated the embedded libraries, and a few build system fixes. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.890: ----------------------------------------------------------------------- - -* The numbersystem 'decimal' is now operational. - -* New internal: 'numberprecision', for use with 'the 'decimal' number - system. The (numeric) value expresses the desired calculation precision, - in decimal places. - - system default min max - ============================ - scaled 10 10 10 (assignment effectively ignored) - double 16 16 16 (assignment effectively ignored) - decimal 34 1 1000 - -* Bug fix: in the 'double' numbersystem, - - if X = scantokens decimal X: - - will now always be true, because the 'decimal' operator now has - the same resolution as the scanning routine (which is two decimal - places more than in the previous release). - -* Fixed a bug in the handling of the / operator (wrong precendence). - -* Fixed a bug in arctime (did not handle negative values currectly). - -* Fixed TFM generation issues (various scale-related errors). - -* Fixed application crashes when there was no TEXMF tree to be found - anywhere. - -* It is no longer possible to assign to the 'numbersystem' internal. - -* There is a new definition of 'drawdot' in plain.mp. - -* PNG output did not output anything for draws of a single point. - -* Metapost now prints the full name of any preloaded files. - -* Fixed a bug in the handling of labels with embedded ascii zero(es). - -* Fixed handling of unknown command-line options, the reporting - on used libraries in the --version output, and the banner line. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.803: ----------------------------------------------------------------------- - -* Fixed a bug in the path tension handling that sometimes caused - distorted output. - -* A number of small alterations to the build system making it easier - to integrate metapost with W32TEX. - -* Fix the internal rounding functions in --numbersystem=double so that - they round exactly like in --numbersystem=scaled mode. - -* From Elie Roux: a fix to graph.mp to prevent log-scaled graphs with - large ranges from causing the "Value is too large" error. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.802: ----------------------------------------------------------------------- - -* Fixed a bug causing overly large characters in SVG output mode when - prologues != 3. - -* Removed a crash during free-ing of TFM metric data at the end of the - run. - -* Fixed a problem with colors in SVG output mode. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.801: ----------------------------------------------------------------------- - -* fixed an off-by-one error in the SVG output that prevented the last - font's glyphs from actually being output to the svg file under - prologues:=3; - -* fixed a bug in bbox calculations in that caused the max y to be set - based on the maximum x coordinate internal value instead of the - maximum y coordinate. - -* fixed a bug where metapost incorrectly produced a 'degenerate spec' - error. - -* build fixes for various platforms imported from TeXLive 2013, as - well as the latest kpathsea development etc. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.800: ----------------------------------------------------------------------- - -* A new string valued internal "outputformatoptions" is used by PNG - output mode to control the png file format. In the future, this - internal may also be used for options to the other output formats. - - The syntax for "outputformatoptions" is a space-separated list of - settings. Individual settings are keyword+'='+value. The only - currently allowed ones are: - format=[rgba|rgb|graya|gray] - antialias=[none|fast|good|best] - No spaces are allowed on the left, nor on the right, of the equals - sign inside a setting. - - The assignment that would match the compiled-in default setup is: - outputformatoptions := "format=rgba antialias=fast"; - however, "outputformatoptions" is initially the empty string. - - Some notes on the (new) PNG output formats: - - The 'rgb' and 'gray' subformats have a white background. The - 'rgba' and 'graya' subformats have a transparent background. - - Bitdepth is always 8. - - In all cases, the image is initially created in 8-bit RGB - mode. For 'gray' and 'graya', the RGB colors are reduced just - before the actual PNG file is written, using a standard rule: - g = 0.2126*r + 0.7152*g + 0.0722*b - - CMYK colors are always converted to RGB during generation of - the output image using: - r = 1 - (c+k>1 ? 1 : c+k); - g = 1 - (m+k>1 ? 1 : m+k); - b = 1 - (y+k>1 ? 1 : y+k); - - If you care about color conversions, you should be doing a - "within <pic>" loop inside "extra_endfig". The built-in - conversions are more of a fallback. - -* A new string-valued internal "outputfilename", which is set by - "shipout" to the value of the just created file name. Until the - first shipout has occurred, it is the empty string. - - -* Fixed a number of bugs where Metapost loaded the default font map - file multiple times, resulting in lots of "fontmap entry for - `<fontname>' already exists, duplicates ignored" warnings. - -* The "glyph <> of <>" operation could crash on fonts with empty - subpaths in the charstrings. - -* Fixed a bug in the postscript encoding reader that caused a buffer - overflow (fatal error) for encoding files that do not end with a - newline. - -* Sped up png creation a bit by using smarter libpng options. - -* In the 'double' numbersystem, lots of precision was lost due to a bad - internal conversion of fractions to scaled values. This affected the - "rotated by", "directiontime", "sind" and "cosd" primitives, as well - as internal dependency calculations. - -* In the 'double' numbersystem, an internal rounding error caused - "directiontime" to return bad results for requests near zero. - -* There was a big scaling miscalculation while outputting glyphs in SVG - mode with "prologues:=3". The output labels were so big that they - fell completely outside of the generated image. - -* A problem resulting in 'This can't happen (endinput)' caused by a - missing "end" at the end of the run was fixed. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.790: ----------------------------------------------------------------------- - -* Lots of speedups. - -* Fixed bug in division expressions that started with a literal number. - -* A few problems with bad deallocations were solved. - -* A bug where after saving and redefinition of primitives, they later - were restored to 'undefined' instead of to their primitive meaning. - -* The "double" literal number parser now only accepts scientific - notation if the character following 'E' or 'e' is '+', '-', or - a digit. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.780: ----------------------------------------------------------------------- - -* The turningnumber calculation in 1.770 was bugged. - -* The picture export in 1.770 forgot to add trailing zeroes to the - log and term output channel resulting in rubbish output. - -* The arguments of the PS "dtransform" operator have been fixed - (was wrong since 1.750). - -* The warning limit in numbersystem=double mode is now exactly 2**52. - -* A bunch of obvious memory leaks fixed. Not all yet, but now the - MPlib seems to be usable even with many graphics. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.770: ----------------------------------------------------------------------- - -This is an alpha release for testing & debugging only! - -* The command line switch --numbersystem replaces --math. - -* Two new internals: numbersystem (string, read-only, either "scaled" - or "double" at the moment) and numberprecision (numeric, currently - a no-op). - -* There is a new bitmap backend: - - outputformat:="png"; - - This backend uses cairo and libpng to generate PNG bitmap data. - The created PNG used RGB + Alpha, with anti-aliasing, at 72dpi, - and with a transparent background. - -* Associated with this, there are new internals "hppp" and "vppp", - that are used by the bitmap backend to decide on the scale of - the generated bitmap. Default value for both new internals is - "1.0", i.e. one pixel per Metapost point. - - The internal names come from metafont. - -* There are two new primitives for use with picture item objects: - - prescriptpart - postscriptpart - -* The C API has been extended to allow path control point resolution - without going through the Metapost input language, see - manual/mplibapi.tex for details. - -* The C API has been extended with a "math_mode" switch in the options - structure, and the memory size options as well as "ini_mode" have - been removed (the MPlib instance now always starts up in inimp mode) - -* The code for picture shipout now uses "double" for all floating point - values. This can give small differences in the actual output files in - traditional mode due to the required scaled -> double conversion, but - was necessary to support the new numerical backend code. - -* The Lua API internals have been updated to reflect the C API changes. - -* All known crashes in earlier versions of Metapost have been fixed. - -Known issues: - -* The manual is not up-to-date yet on the metapost input language - changes. - -* There are various memory leaks. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.750: ----------------------------------------------------------------------- - -This is an alpha release for testing & debugging only! - -* mpost now accepts --math=double as an argument. This switches the - internal arithmetic functions from using a scaled 32-bit data type - to 64-bit floating point. - -* With --math=double, the input scanner has been changed to allow - a := 1.0E20 - as valid input format for a numerical value - ----------------------------------------------------------------------- -What is new in MetaPost version 1.504: ----------------------------------------------------------------------- - -* Small build system tweaks from TeXLive 2012. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.503: ----------------------------------------------------------------------- - -* String comparisons have been fixed, these were broken in previous - 1.50x versions. - -* verbatimtex ... etex processing had a horrible bug that is now - fixed. - -* A fix has been applied for a bug that made redeclared variable - subscript tags disappear. - -* The behavior of the %{<internal>} escape sequence in 'outputtemplate' - changed (but not that of the single-letter shortcuts). Internal - variables within %{...} are neither rounded nor zero-padded. - -* A very long list of improvements to the manual. - -* MetaPost now adheres to the openin_any / openout_any settings in - texmf.cnf - -* The 'prologues:=3 output' with embedded labels was unreliable, - especially when the resulting eps was included into a TeX document - via dvips. - -* 'newinternal numeric' has been fixed, it generated an error in - metapost 1.211 and earlier 1.50x versions. - -* Label regeneration sometimes failed to run when the file time stamps - were close together. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.502: ----------------------------------------------------------------------- - -* New build system and kpathsea imported from TeX Live. - -* Various bugfixes. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.501: ----------------------------------------------------------------------- - -* The maximum number of variable instances has increased from approx. - 33 million (2^25-1) to 2 billion (2^31-1). - -* New build system and kpathsea imported from TeX Live. - -* Many small bugfixes to 1.500. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.500: ----------------------------------------------------------------------- - -* Actual memory dump files do not exist any more. --mem=<MEM> and - all other methods of supplying a MEM file are now interpreted - somewhat like this pseudo-metapost-code: - - begingroup; - let dump = end; - input MEM[.mp]; - endgroup; - - this process is supposed to be transparent besides the facto that - there is some extra terminal output and logging. - -* All memory is now allocated and freed dynamically. There are only - two remaining overflow errors(1): - - "expansion depth" : this is a guard against infinite recursion, - the value is 10000. - "sizes per font" : this is maxed out for data-structure reasons, - the value is 32767. - - from texmf.cnf, now only the "error_line", "half_error_line" and - "print_line settings" are used. - - (1) but now you can reach the operating system limits, of course. - -* As this is an alpha release containing lots and lots of new code, - MetaPost starts up with the internal equivalent of 'loggingall;' - in effect. This results in log files that can help in debugging. - -* Expect bugs and (minor) memory leaks. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.212: ----------------------------------------------------------------------- - -* Small build system tweaks from TeXLive 2011. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.211: ----------------------------------------------------------------------- - -* In previous 1.20X versions, the 'glyph infont' operator did not handle - fonts with seac (old-style composite characters) properly. - -* Incorporated the latest versions of kpathsea and the build system - from TeXLive. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.210: ----------------------------------------------------------------------- - -* In previous 1.20X versions, btex ... etex handling forgot to take - the passed directory location of input-ed files into account. - -* verbatimtex ... etex is now copied as is. Whitespace stripping - and appending of % no longer happen. - -* The mpost executable now always strips exactly one extension from - the jobname (unless explicit --jobname was given) - ----------------------------------------------------------------------- -What is new in MetaPost version 1.209: ----------------------------------------------------------------------- - -* Previous 1.20X mem files were architecture-dependent. - -* Metapost now uses getopt once again, which makes the commandline - handling compatible with pre-1.20X versions. However, the syntax - -sprologues=1 is now no longer supported (the space between -s - prologues is now mandatory). - -* On some systems, metapost would crash inside the function that prints - the 'fatal error' message. - -* The 'glyph infont' operator would sometimes cause crashes, and in - other cases it generated bad output. - -* There was a space missing in the generated output when mpprocset - was set. This was still legal PostScript, but it confused mptopdf. - -* In previous 1.20X versions, the font map file was read for each - figure that contained a label, resulting in lots of harmless - but scary warnings being reported. - -* The --debug switch is now documented in the command-line help. - -* The help text now mentions the metapost version. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.208: ----------------------------------------------------------------------- - -* Previous versions of MetaPost 1.20x were overeager to remove file - extensions from the end of the jobname. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.207: ----------------------------------------------------------------------- - -* With the -file-line-error commandline option, MetaPost 1.20x always - reported the name of the most recently 'input' file instead of the - name of the actual current file. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.206: ----------------------------------------------------------------------- - -Bug fixes: - -* Many of the commands in the MP language cause strings in the string - pool to be printed to new strings that are also built up in the - string pool. This could cause crashes when the new string wouldn't - fit in the memory allocated. - -* Failure to initialize the jobname in the MP_options struct could - cause crashes in library mode. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.205: ----------------------------------------------------------------------- - -Bug fixes: - -* Metapost did not handle well files with extensions other than .mp. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.204: ----------------------------------------------------------------------- - -Bug fixes: - -* Metapost could go into an endless output loop when characters in - bitmap fonts where used, because it tried to limit the %*Font output - line to a specific number of bytes. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.203: ----------------------------------------------------------------------- - -Bug fixes: - -* Building version 1.202 for source required X11 headers to be installed. - -* Another infinite recursion trap added, now for erroneous vardefs - with suffixes (reported by Nicola Vitacolonna). - -* Fix infinite loop recursion on integer overflow (reported by Nicola - Vitacolonna, fix based on a hint from Dan Luecking). - -* In version 1.202, setting "job_name" from lua code caused a crash. - -* The "filename" field on the lua figure object in 1.202 was just the - extension, instead of the whole file name. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.202: ----------------------------------------------------------------------- - -Bug fixes: - -* Fix greypart <numeric> (always returned 0). - -* Make 'withcolor true' explicitly reset the color model to uninitialized. - -* Report which mem file can't be found, and use 'plain' instead of PLAIN - in the mem search warning messages. - -* Fix a crash on subsetting of some Type1 fonts because of a temporary - buffer overrun. - -* Correct a crash on SVG text output when the 8th bit is set. - -* Fix the use (reference) of 8-bit glyphs in SVG mode when prologues:=3. - -* Fix the output of text strings that reference the character at index 0. - -* Use ".ps" as file extension for negative charcodes (backward compatility). - -* Metapost sometimes printed "mp_vacuous" instead of "vacuous". - -* Fix rounding of negative scaled and fraction values. - -* Restore the error for 'arctime' out-of-bounds. - -* Moved the "turningnumber algorithms do not agree" message out of reach - (now only printed if tracingchoices>2 ) - -* Fix a problem with dash scaling during picture copying. - -* TFM header bytes were written out with an offset of one. - -* Updated the mptrap files. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.201: ----------------------------------------------------------------------- - -Bug fixes: - -* There was a bug where sometimes the outer contour of a glyph that was - asked for via 'glyph X of' was missing from te output, depending on - the path drawing order inside the Type1 font. - -* Handling of MPTEXPRE label prefix files was broken. - -* Font subsetting for 8-bit characters in Type1 fonts was broken. - -* The use of "%{outputtemplate}" inside "outputtemplate" now generates - an error. - -* The first letter of the input file name was swallowed in the log file. - -* There is some rudimentary support for infinite recursion trapping now, - to help prevent segfaults&crashes due to C call stack exhaustion. - -* An unlucky change in glibc made compilation fail on new GNU/Linux - systems due to multiple incompatible definitions of 'getline()'. - -* There was a bug in the handling of quoted external commands for - MPXCOMMAND | MPXMAINCMD | TEX. - -* The main input file's opening brace and filename were not shown in - the log file output. - -* Non-colored picture objects (clipping and setbounds paths) are now - ignored when the color part is asked from within "within", for - backward compatibility reasons. - -* The trip and trap files are now part of the distribution and the - mptrap files have been updated. - -* The standard web2c argv[0] mem file mimicri was broken: 1.200 was - always looking for "mpost.mem" even when called under another name. - -* The manual pages for "mpost" and "dvitomp" have been updated, and the - old "mp" manual page has been removed. - -* The first letter of any missing input file name was not shown in the - terminal error message. - -* Output files are now once again written in the current directory even - if an explicit source directory is given. This includes the creation - of mpx files, but some trickery is used so that up-to-date existing - mpx files from the source directory take precedence. - - ----------------------------------------------------------------------- -What is new in MetaPost version 1.200: ----------------------------------------------------------------------- - -New features: - -* It is now possible to get the actual path drawing routines from a - font glyph. The syntax is : - - q := glyph 113 of "cmr10"; - q := glyph "one.oldstyle" of "lmr10"; - - "glyph" is a primary binary operator (like "subpath") that accepts - a string or number and a string, and the result is a picture. - - The second argument is a tfm name. This will be combined with - a fontmap entry to find the font's PostScript source file. - - If the first argument is a string, then it should be a Charstring - name in the postscript font source. If the first argument is - an integer, it is an index into the encoding of the font, and - the Charstring that is mapped to that index is taken (it follows - that numeric values have to be integers between 0 and 255). - - The returned picture can be empty (if the tfm or the pfb or the - encoding or the Charstring was not found), otherwise it consists - of a list of 'fill' objects that use the the 'grey' color model. - Counterclockwise paths receive the grey value matching 'white', - clockwise paths 'black'. - -* MetaPost now supports string valued internal variables. Three of - these are predefined ("jobname", "outputformat", "outputtemplate"), - you can add more of them via "newinternal". - - newinternal string s; - s := "hello"; - - The type of a new internal is either 'string' or 'numeric', - and defaults to numeric (this is for backward compatibility with - older versions of MetaPost). String internals are initialized to - the empty string, numeric internals are initialized to zero. - -* MetaPost now has a second backend that generates Scalable Vector - Graphics output. This new backend was requested by Dave Crossland, who - also provided the funding to make it possible. Dave, thank you again! - - The default value of "outputformat" is "eps"; when you assign "svg" - you will get SVG output. - - If you use text labels with SVG, you will probably also want to set - - prologues:=3; - - With this setting, MetaPost will convert the font into curves - (of course you also need a correct font map line, just as for - PostScript output). - - With any other value of "prologues" you will simply get the SVG - default text font in a system-dependant encoding. This is unlikely - to be what you want! - - A simple example: - - outputformat := "svg"; - outputtemplate := "%j-%c.svg"; - beginfig(1); - fill fullcircle scaled 100 withcolor .4red; - endfig; - end. - - In the lua bindings, there is the new figure method "svg()", that - gives back the SVG output string. This is subtly different from the - direct file output: the lua method does not prepend an XML declaration - (this makes embedded use of the generated XML easier). - -* The new internal string variable "outputtemplate" replaces - "filenametemplate". The big difference is that "outputtemplate" - is a true 'internal', so that you need a proper assignment. - On the positive side, this means that you can use its current - value with e.g. show and message. - -* "outputtemplate" has a new type of replacement: internal variable - names. Instead of the short "%j.%c", you could write: - - outputtemplate := "%{jobname}.%{charcode}" ; - - this type of replacement works for all internal variables, - including those defined via "newinternal". - -* There are two new numeric internals: "hour" and "minute". - (these are a consequence of the outputtemplate change) - -* The primitive "jobname" is now a string internal instead of a - special case. This implies you can assign to "jobname", but - such an assignment will only affect the picture output. The - job name for the purposes of log and mem file names is fixed - permanently at startup time and cannot be altered. - -* "mpost" can now pretend to be dvitomp. Either copy the executable - to the name "dvitomp", or pass the switch --dvitomp on the command - line. - -* The command line option --halt-on-error has been reinstated. - -* There is a new -s<internal>=<value> command line switch that can - be used to setup run time values. Such assignment will be executed - after initialization is complete (i.e. after mem file loading) but - before any other code is executed. - - This works for all internal variables, including one defined - that may have been defined in the mem file via "newinternal". - -* "tracingstats:=1;" now prints the highest and total input levels. - -Bug fixes: - -* The turningnumber calculation had a rounding error in the internal - arithmetic that could cause incorrect numbers to be calculated - (typically resulting in a 'turning numbers do not match' error). - -* The parsing of command line arguments with options was broken. - -* Reading of files with 8-bit names has been fixed. - -* A patch by Melissa O'Neill fixes inclusion of some special Type1 - formats. - -* There was a bug where, when "prologues:=3;", the lists of the - DocumentResources/DocumentSuppliedResources could appear in the eps - output partially uncommented. - -* Troff labels were completely broken in all MPlib-based versions. - -Other changes: - -* Many, many improvements to the manual and the tutorial. Sorry - Stephan, I don't know enough to list them all! - -* The old executable build system has been replaced by the new build - system from the TeXLive 2009 repository. - -* The MetaPost (and mplib) source code is now released under LGPL - instead of GPL, and uses a derivative of PyAvl instead of GNU libavl. - -* The web2c 'mktexfmt' feature is enabled for the program "mpost" once - again. - - ----------------------------------------------------------------------- -What is new in MetaPost version 1.102: ----------------------------------------------------------------------- - -* Printing of 8-bit string characters has been fixed. - -* In previous versions, TFM files and PFB fonts would not be read - properly on big-endian machines (e.g. powerpc) - -* The MetaPost distribution now contains "A Beginner's Guide to - MetaPost for Creating High-Quality Graphics" by Troy Henderson - and Stephan Hennig. This tutorial replaces Hobby's mpintro.tex. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.101: ----------------------------------------------------------------------- - -This is just a bugfix release. The following bugs / problem areas in -MetaPost 1.100 have been fixed / improved: - -* TFM file generation was completely broken. - -* The job name discovery on the commandline has been improved. - -* Under some (rare) conditions MetaPost forgot to create a log file. - -* Labels containing char0 were exported to PostScript incorrectly. - -* On Windows, the DVI file that is the result from the internal call - to TeX for btex .. etex lables was not deleted automatically. - ----------------------------------------------------------------------- -What is new in MetaPost version 1.100: ----------------------------------------------------------------------- - -CHANGES compared to the previous release, 1.005: - -* This version is based on MPlib, the C conversion of MetaPost. - - The one user-visible change is that the btex ... etex - label conversion is now handled internally instead of via - the external "mpware" programs. These programs are therefore - no longer distributed. - -* There is a new manual, mplibapi.pdf, that describes the internal - interface to MPlib. - -* The file 'mpintro' is no longer distributed because it is - obsolete (it has been that way for some time). - -* The distribution now includes Dan Luecking's mpsproof.tex. - - -CHANGES compared to the previous beta, 1.091: - -* The DVI -> mpx converter was bugged when virtual fonts were used. - -* MP could crash when a string was added to the string pool that - was too large to fit. - -* The string pool compaction routine was called much too often, thus - preventing unnecessary slowdowns. - -* Various problems with uninitialized option settings and missing mem - files or pfb files have been fixed. - -* There was a line buffer overrun possible in the file reader. - -* mpost now honours --recorder and --file-line-error. - -* MP now accepts file names with paths (separator is /) and with - embedded spaces (using " for quoting) - -* There could be empty lines in the PS output. - -* Full 8-bit fonts (i.e. font using character slot 255) could create - an eternal loop. - -* The handling of equations with addition or substractions between two - unknowns in the right hand side was wrong. - -* The first line of the PS font encoding output could be broken - inbetween a glyph name and its preceding slash. - -* Font inclusion in the PS backend would fail for all fonts that had - glyph ids using the 8th bit. - - ----------------------------------------------------------------------- -What is new in MetaPost beta version 1.091: ----------------------------------------------------------------------- - -* Dash lists were interfaced incorrectly by the lua bindings. - -* The Type 1 Font inclusion in the previous version produced invalid - subsets. - -* The configure script now also checks for sys/time.h - -* The error message you get for invalid mem files now mentions the - name of the file as well as the nature of the problem. - ----------------------------------------------------------------------- -What is new in MetaPost beta version 1.090: ----------------------------------------------------------------------- - -This MetaPost release is based on MPlib. For those of you who are not -aware of the MPlib project yet: - -MPlib is the name of the new, revamped version of the MetaPost -interpreter. It is implemented in Cweb, and internally consists -of a core library, an mpx generation library, and a frontend -driver program (mpost). - -There are no changes to the MetaPost language, but nevertheless there -are some minor differences with the last pascal-web based version of -MetaPost (1.005): - -* The MPlib distribution is released under the GPL version 2 or, - at your option, any later version. - -* The commandline is slightly different, run mpost --help for details. - -* The mem file format is changed, you have to regenerate any - existing ones. - -* The new mpx generation library includes the label generation - functionality that was previously provided by 'makempx', and - this internal code will be used instead of an external program. - That is, unless the MPXCOMMAND variable is set in the environment - or texmf.cnf. The 'mpware' programs became obsolete and are no - longer included in the distribution. - -* Most of the memory configuration variables from texmf.cnf - have become obsolete due to dynamic reallocation. The four remaining - ones are 'main_memory', 'hash_size', 'max_in_open', 'param_size'. - These are only taken into account at mem generation time, the - values are stored in and reloaded from the mem file. - -* The core MPlib library does not interpret an initial '&' as anything - special and it does not support re-initialization using a different - mem file either. The command line program mpost _does_ interpret '&' - as an alias for the -mem switch to preserve (some) compatility. - -* The MPlib distribution includes lua script language bindings. - -Following are the NEWS items for the previous beta releases of MPlib. - ----------------------------------------------------------------------- -What is new in the beta release of MPlib 1.090: ----------------------------------------------------------------------- - -* The lua bindings to MPlib are added to the distribution, and - build.sh can now build an mplib.so loadable module for lua - (this needs an installed lua 5.1 distribution) - -* Some internal macros are renamed so that the exported C structure - fields could have better names, and a new document (mplibapi.tex) - provides the documentation of the C api and Lua bindings. - -* The texmf and manual trees are now included again. - -* (un)dumping mem files is delegated to a separate cweb source file. - -* All gcc-isms in the build and configure scripts have been removed. - -* The kpathsea library is updated. - ----------------------------------------------------------------------- -What is new in the beta release of MPlib 1.085: ----------------------------------------------------------------------- - -* Determination of the mem name to use in non-ini mode is now much - closer to the web2c approach. - -* There is now a magic word in the beginning of the mem file to make - sure it is written by the correct version of MPlib. - -* Fixed the disappearing comment sign in the to-be-typeset document - created by the mpx generation subsystem. - -* Various identifiers have been renamed to avoid clashes (that prevented - the source from building correctly on many platforms) - -* A great many small changes and fixes have been added after running - splint on the generated C source. - - ----------------------------------------------------------------------- -What is new in the beta release of MPlib 1.080: ----------------------------------------------------------------------- - -* The MPlib distribution is released under the GPL version 2 or, at - your option, any later version. The copyright statements in the source - files have been updated to reflect this. - -* The mpost program banner now contains the kpathsea version, and no - longer mentions the fact that the source is now cweb at all. - -* The mpost program once again supports 'E' error responses. - -* There are some minor internal API changes, but there is still no - documentation for the API, so that is not very interesting yet. - - ----------------------------------------------------------------------- -What is new in the beta release of MPlib 1.060: ----------------------------------------------------------------------- - -* The MPlib distribution is released under the GPL version 2. - -* This release is the first that replaces the old metapost distribution - completely. The executable is now named 'mpost' with engine name - 'metapost'. - -* The release now includes a cweb implementation of the makempx - functionality that is linked into the mpost executable. - This internal code will be used unless the MPXCOMMAND variable is set. - Because of this functionality, the mpware directory is no longer - included and the standalone programs 'makempx', 'newer', 'mpto', - 'dvitomp' and 'dmp'. are no longer maintained. - -* This is the first development release of the new cycle, and contains - all of the functionality of Metapost 1.005. The mpost version is now - 1.060, and the special version number for the cweb version has been - removed from the banner. - ----------------------------------------------------------------------- -What is new in the alpha release of MPlib (0.20.0): ----------------------------------------------------------------------- - -* Two bugs in MP 1.002 were fixed by Giuseppe Bilotta, both fixes - are about polygonals pens and will be included in the upcoming - MP 1.003 release also. - -* It is now possible to ask for the envelope of a path drawn as - traced by a (non-elliptical) pen: - - path p,q; - p = fullcircle scaled 30; - q = envelope pensquare of p; - -* There is a lua interface now, and it is already used by luatex. - - To play with this, currently the best solution is to fetch the - 0.25.0 beta of luatex: http://foundry.supelec.fr/projects/luatex - This embeds MPlib 0.25.0 as well as its documentation. - -* Many bugs were fixed. - ----------------------------------------------------------------------- -What is new in the alpha release of MPlib (0.10.0): ----------------------------------------------------------------------- - -* The source is converted to cweb, and split into a library part - (mpdir/lib/*.w) and a frontend executable (mpdir/mpost.w). - -* The front end executable is named "newmpost", this takes - care of configuring the MPlib library via C code, and uses - kpathsea for file searching. There is no change file involved, - and the web2c runtime library is not used. - -* Some of the internal arrays now grow dynamically when needed: - - * the input buffer - * the string pool and number of strings - * the font memory and number of fonts - * the number of "readfrom" and "write" files - * the path segment size - * the input nesting stack - * the number of new internals - * the TFM writing arrays (but these are limited by TFM format) - - Still not doing that (so these can only be changed in --ini mode): - - * the main memory - * the hash size - * the number of simultaneous macro parameters - * the level of "input" file nesting - -* The following command-line options are ignored by the front-end - command (for now): - - -[no-]file-line-error - -halt-on-error - -output-directory= - -[no-]parse-first-line - -recorder - -translate-file= - -8bit - -T - - The other web2c command-line options should work as normal. - -* the mpware tools are not in this distribution, their functionality - will eventually be assimilated into the frontend application. - -* the build process depends on a local "ctangle" command being in the - path, for now. The confiration and building system is not yet complete. - -* API documentation is still missing, but the MetaPost input language - has not changed. - - ----------------------------------------------------------------------- -What is new in version 1.005: ----------------------------------------------------------------------- - -* In MetaPost 1.004, mpost --version still incorrectly reported 1.003 - -* C Compilation of MetaPost 1.004 was broken on MacOS X 10.5 - -* The sources package did not contain mpboxes.pdf - -* Some last-minute fixes to the manual - - ----------------------------------------------------------------------- -What is new in version 1.004: ----------------------------------------------------------------------- - -* The picture color component commands misbehaved in 1.003: - the current (default) colormodel was not taken into consideration, - so all colors had to be explicit for "redpart" etc. to work. - (this bug is the one broke the graph.mp package) - - In 1.004 for "defaulted" colors, the suitable value in the current - (default) colormodel is returned without any errors. This change - also reverts to silently defaulting a 'black' color when asking - for the redpart etc. of an object that cannot be colored at all. - -* The picture color component commands misbehaved in 1.003 in - a different manner also: the defaults for uninitialized CMYK - color picture parts were still assuming 'black' was defined as - (1,1,1,1) instead of as (0,0,0,1). - -* The macro Gwithpc_ in the graph.mp package did not work properly - with non-rgb colormodel objects. - -* plain.mp has a new macro, 'colorpart', that returns the color - parts of a graphical object within a picture in a form suitable - for feeding it back to 'withcolor'. - -* The latest kpathsea library from TeXLive is included. - -* There is now a separate manual for the boxes package (mpboxes.pdf). - - ----------------------------------------------------------------------- -What is new in version 1.003: ----------------------------------------------------------------------- - -* Polygonal pens now work better (bug #3 and #7 at supelec.fr). - -* When asking for a color part in a picture object, the color models - now have to match each other, otherwise an error will be reported - and the return value will be set to a 'black' part. - -* The Makefile fragment (metapost.mk) now defines a separate mpost - target for better integration in TeXLive. - -* There was a bug in the internal handling of withprescript and - withpostscript, resulting in incorrect output when paths using - such scripts were stored in picture variables. - -* A newline was missing from the PostScript output when the - procset internal variable was set, so the first line of that - accidentally became a PostScript comment. - -* Applicable changes from Knuth's updates for MetaFont 2.718281 - are incorporated. - -* Mpto did not play nice with %&<format> verbatimtex lines, it now - automatically tries to detect comment-lines. - -* Dvitomp 1.003 has higher limits for some internal constants like - the number of allowed fonts in DVI files. - -* The manual is improved. - - - ----------------------------------------------------------------------- -What is new in version 1.002: ----------------------------------------------------------------------- - -* Version 1.001 introduced a memory allocation error in mpto that could - result in the program looping endlessly - ----------------------------------------------------------------------- -What is new in version 1.001: ----------------------------------------------------------------------- - -* The default cmyk 'black' color now uses only black, not all four - ink colors (after a discussion on the mailing list). - -* Some issues were reported with the new turningnumber algorithm, - all known problems are now fixed. - -* Gábor Braun discovered that mpost did not always download the font - encodings into all the created output files. - -* Akira Kakuto and Hartmut Henkel found some small issues in mpto - regarding trailing and leading whitespace. - -* A fix for the 'Helvetica' entries in trfonts.map was provided by - Werner Lemberg, and Michail Vidiassov supplied two extra font - entries for troff.map (Symbol and ZapfDingbats). Karl Berry - provided the new file troff-updmap.map, to be used by the updmap - tool in texlive. - -* Mpost now supports web2c's --output-directory option. - -* Any warnings about missing fonts and characters are now always - written to the terminal as well as to the log. - -* Now that makempx is a C program, it needed a different install line - in build.sh. Also, Olaf Mersmann contributed a patch to recognize - 'gmake' in build.sh - -* Luigi Scarso found some typing errors in the web source that prevented - clean weaving of the source. - -* Stephan Hennig fixed a number of problems in the manual (mpman.tex) - and the introduction paper (mpintro.tex). He also wrote new sections on - how to preview metapost graphics and on how to use metapost graphics - inside other documents. On top of that, the manual is now hypertext-aware, - and fixes for a whole series of small problems have been applied. - ----------------------------------------------------------------------- -What is new in version 1.000: ----------------------------------------------------------------------- - -* The use of DSC (document structuring) comments has been - been cleaned up, thanks to comments by Michail Vidiassov. - -* By setting prologues to 2 or 3, you can ask MetaPost to - reencode and include the used labels fonts in the output, - thus creating proper Encapsulated PostScript files even - if labels are present. - -* Support for greyscale and cmykcolor models is added. - -* The new drawing options "withprescript" and withpostscript" - allow the user to attach PostSCript special text to a specific - drawing object. - -* Setting the new internal "mpprocset" to 1 will make MetaPost - create a somewhat extended preamble that defines shortcuts - for the postscript commands (e..g "l" instead of "lineto"). - For big images, this can help shrink the output a bit. - -* The pool file is now integrated in the executable, so there - is not separate 'mp.pool' anymore, except at build time. - -* Groff support is redone, and dmp now uses kpathsea searching. - Groff related changes are thanks to the efforts of Werner - Lemberg and Michail Vidiassov - -* makempx is now a compiled executable on all systems, - thank you Akira Kakuto - -* The error for 'special's longer then 255 characters - is removed, so specials can now be of any length. - -* There is new turningnumber implementation that attempts - to find the mathematically correct "turningnumber" of a - path. The formulae are derived from a mailinglist discussion - between (especially) Dan Luecking and Giuseppe Bilotta. - -* The manual is updated and modernized. It is currently - maintained by Stephan Hennig and Troy Henderson. - ------------------------------------------------------------------- -Changes in version 0.920: ----------------------------------------------------------------------- - -* Fixed a long-standing bug in web2c where changing values of the - memory_size setting in web2c could cause crashes and other random - problems. The memory array size is now written to the dump file - and loading is aborted if the values do not match. -* Implement configurable figure output filename templates. -* Implement cmyk, greyscale, and marking only color models. -* The mpost executable is now version 0.920 -* mpost no longer autoconverts r==g==b colors to grayscale in the - postscript output. - ----------------------------------------------------------------------- -Changes in version 0.902: ----------------------------------------------------------------------- -* Fix a bug in mpto resulting in correctly placed labels (with - thanks to Dan Luecking) -* Fix a bug blocking compilation of dmp on MacOSX -* The mpost,dmp,mpto executables are now version 0.902 - - ----------------------------------------------------------------------- -Changes in version 0.901: ----------------------------------------------------------------------- -* A corrected bugfix for bug item 3 from version 0.9 (the old fix - made metapost fail the trap test) -* Included mpost.mp for mem generation -* Updated the trap test output. -* The mpost executable is now version 0.901 - ----------------------------------------------------------------------- -What is new in version 0.9: ----------------------------------------------------------------------- -1. There is a new internal quantity called mpversion that reports the - current metapost version, and the version information is also written - to the PostScript file. -2. The LaTeX sources of the mpman, mpintro, and mpgraph manuals have - become part of the distribution package. -3. TEX.mp now has TeX format support through a pair of macros called - TEXPRE() and TEXPOST(). This llows you to process the contents of - the TEX() macro with, for example, LaTeX (instead of plain TeX). - An example is given in the manual. -4. metapost now writes a %%HiReSBoundingBox comment -5. The EPS output no longer contains actual spaces within PostScript - strings as for example output by label("a space"), but their - octal escape (\040) instead. -6. The EPS output now also has a %%BeginProlog DSC comment - as well as %%EndProlog -7. The comments in the Web source have been changed to point out - that on modern machines, acquiring the random seed has actually - become a system-dependant operation (a granularity of whole seconds - is not small enough on new machines). -8. The 'newer' command now accepts more than 2 arguments, testing - each of the files in turn. - ----------------------------------------------------------------------- -Bugfixes in version 0.9: ----------------------------------------------------------------------- -1. Documentation improvements: all known errata and typos have been - removed, better explanations of e.g. dash patterns and dotlabel have - been provided, and a number of omissions has been rectified. -2. The BoundingBox was not computed correctly when a filldraw command - with a noticeable pen size was used at the edge of the picture. -3. Paths starting with degenerate constructions like (0,0)--(0,0)--(0,0) - could overflow memory. -4. The PostScript output could accidentally contain 8-bit characters - within PostScript strings in previous versions because a test was - shared between terminal printing and PostScript printing. -5. A bug has been found in the assignment of serial numbers to independant - variables in metafont 2.71828. This bug affected MP as well, and the - same patch has been applied. -6. The turningnumber was sometimes wrong in unexpected ways. The new - implementation is still sometimes wrong (when there are strange path - segments involved), but in a much more predictable way: the new code - always draws straight lines between the actual points, and calculates - the turningnumber based on that path instead of the actual path. The - effect is that cusps and loops within segments are now completely - ignored. A more thorough fix of turningnumber is planned for the - next release. -7. There was an 'off by one' error in dvitomp wrt. the interpretation - of virtual fonts. -8. mpto uses a new TeX macro for the generation of labels, making it - more robust wrt. strange user code within the actual label text. -9. A missing colon in boxes.mp has been added -10. A missing save in mfplain.mp has been added -11. The generisize in boxes.mp has been fixed so that it now accepts [[ as - a valid variable name - ----------------------------------------------------------------------- -Version 0.641: ----------------------------------------------------------------------- -The only change was to fix the code for transforming a picture that -contains a filldraw. Version 0.64 introduced a bug that caused an -inappropriate memory reference in that case. - ----------------------------------------------------------------------- -What is new in Version 0.64: ----------------------------------------------------------------------- -1. A new primitive command closefrom filename closes a readfrom file - so that subsequent calls to readfrom with that file name will go back - to the beginning of the file. -2. The ^^ notation for unprintable characters is now used only when printing - on the terminal or the log file. Internal computations and the write - command are all 8-bit clean. (This is partly due to material in mp.ch - that changes the initialization of the xchr array. Without these - system-dependent changes, the write command would map all non-ascii - characters to spaces.) -3. Arithmetic overflow during a comparison such as 20000>-20000 is now - ignored. This avoids extraneous error message when using the graph.mp - macro package. -4. Transformations with negative determinants now work properly on pictures - drawn with polygonal pens. -5. When the readfrom operator is applied to a file that does not exist, - an attempt to close a non-open file could cause problems in some - implementations. This has now been fixed. -6. Using draw picture_expression withpen where the picture_expression - was a scaled picture containing dashed lines, the dash lengths would - change. This bug has been fixed. -7. The dashpart operator could return an invalid picture or a picture that - is not properly scaled. This has also been fixed. -8. The |char_base| variable could become negative when using fonts that - do not start at character 0. There was also bad Pascal code in function - b_open_in. This has all been fixed. -9. Dvitomp has been fixed to avoid a font data structure problem that - could cause some characters to come out in the wrong font when you - mix virtual and non-virtual fonts. -10. Dvitomp now correctly prints font names when there is a checksum - mismatch, and it aborts instead of just printing an error if a tfm - or vf file is bad. -11. In plain.mp, the drawdblarrow macro now uses filldraw so that it works - better with large pen sizes. - ----------------------------------------------------------------------- -Version 0.632: ----------------------------------------------------------------------- -When prologues is negative, the output files use full precision for -coordinates in "%%BoundingBox" comments. In btex..etex blocks, -"number too large" and "invalid character" errors are suppressed. -The result of btex..etex is now guaranteed to be in a setbounds path -so that a for...within iteration will always treat it as a unit. - -There are also some obscure bug fixes involving string compaction when -scanning a file name or when mp is compiled in debug mode. Some possible -identifier name conflicts and range check errors have also been fixed. - - ----------------------------------------------------------------------- -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 <filename>' and new command - `write <string expression> to <filename>' 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 <picture expression>: <loop text> 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 <unistd.h> 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. diff --git a/CHANGES b/CHANGES new file mode 120000 index 0000000000000000000000000000000000000000..9897c032f0ea599935434c379bf7bae803884b2f --- /dev/null +++ b/CHANGES @@ -0,0 +1 @@ +./source/texk/web2c/mplibdir/NEWS \ No newline at end of file diff --git a/manual/mpman-app-numbersystems.tex b/manual/mpman-app-numbersystems.tex index 0e9dfaf09e86de8b59e86a6e1c02eb05b25ca20d..7e82e29c8734f16b7b312ce763fe74ebe71aa848 100644 --- a/manual/mpman-app-numbersystems.tex +++ b/manual/mpman-app-numbersystems.tex @@ -1,10 +1,10 @@ \svnInfo $Id$ -\section{High-precision arithmetic with MetaPost} +\section{High-precision and interval arithmetic with MetaPost} \label{hparith} In addition to the fixed-point arithmetics inherited from \MF, MetaPost can also do higher-precision arithmetics. In total, MetaPost can handle -numeric quantities in four internal representation formats or number +numeric quantities in five internal representation formats or number systems. Number systems differ in rounding errors\index{rounding error} introduced by and the speed of arithmetic operations. Simply storing a numeric value in a variable may already introduce a rounding error, so @@ -14,7 +14,7 @@ The internal representation format used for numeric quantities can be determined by a command-line switch \texttt{-numbersystem}\index{command-line!mpost?\texttt{mpost}!-numbersystem?\texttt{-numbersystem}} when invoking the MetaPost executable. Argument is a string and can be -one of \texttt{scaled}, \texttt{double}, \texttt{binary}, or +one of \texttt{scaled}, \texttt{double}, \texttt{binary}, \texttt{interval} or \texttt{decimal}. The argument is stored in an internal string variable \texttt{numbersystem}\index{numbersystem?\texttt{numbersystem}}\label{Dnumbersystem}. Assigning a value to this variable at run-time triggers an error. @@ -58,6 +58,26 @@ is an integer in the range $[-9,999,999; +9,999,999]$. All arithmetic operations are done in software using the MPFR library~\cite{lib:mpfr} and are usually orders of magnitude slower than in \texttt{double} mode. +The \index{interval?interval number system}\texttt{interval} number +system MPFI~\cite{lib:mpfi}, introduced in version \texttt{2.10}, is built on the top of the MPFR library +and an interval quantity \texttt{[}\textit{number}\texttt{,}\textit{number}\texttt{]} is entered as +\begin{center}\index{interval\_set?\texttt{interval\_set}}\label{Dintervalset}\texttt{w := interval\_set(}\textit{number}\texttt{,}\textit{number}\texttt{);}\end{center} +An interval is a set, the left extrema being +\begin{center}\index{interval\_get\_left\_endpoint?\texttt{interval\_get\_left\_endpoint}}\label{Dintervalleft}\texttt{l := interval\_get\_left\_endpoint(}\textit{interval}\texttt{);}\end{center} +and the right extrema +\begin{center}\index{interval\_get\_right\_endpoint?\texttt{interval\_get\_right\_endpoint}}\label{Dintervalright}\texttt{r := interval\_get\_right\_endpoint(}\textit{interval}\texttt{);}\end{center} +and it's always $l\leq r$\,; a number \texttt{x} is always seen as the interval \texttt{[x,x]}, i.e. a set with one element. +At first glance, interval arithmetic can be confusing: if $w$ is an interval, +$w*w$ is the set $\left\{ x*x: x\in w\right\}$, but $f(w)=w^2$ is the set $\left\{f(x): x\in w\right\} = \left\{x^2: x\in w\right\}$: +if $w=[-1,1]$ then $w*w=[-1,1]$ and $w^2=[0,1]$. On the other hand, it's easy to verify that $w*w*w = w^3$ always. For this reason, +given that currently the +implementation of the MetaPost functions in MPFI mimics those of MPFR and they are not adapted to the interval arithmetic, +the main utility of interval mode is the implementation of algorithms in MetaPost language. + + + + + Number system \texttt{decimal}\index{decimal?\texttt{decimal}} provides arbitrary precision floating-point arithmetics similar to the \texttt{binary} number system. Except that it uses a base of~10 for the diff --git a/manual/mpman-app-optab.tex b/manual/mpman-app-optab.tex index 5cb62e5239078e32a4d0090f8d3cb41e8c4b877c..bd4b2a6d727be43e094330a49a35c1cb116a5086 100644 --- a/manual/mpman-app-optab.tex +++ b/manual/mpman-app-optab.tex @@ -79,6 +79,9 @@ hex\index{hex?\texttt{hex}}& --& string& numeric& --& Interpret as a hexade infont\index{infont?\texttt{infont}}& string& string& picture& \pageref{Sinfont}& Typeset string in given font\\\hline \pl intersec\-tionpoint\index{intersectionpoint?\texttt{intersectionpoint}}& path& path& pair& \pageref{Disecpt}& An intersection point\\\hline intersec\-tiontimes\index{intersectiontimes?\texttt{intersectiontimes}}& path& path& pair& \pageref{Disectt}& Times ($t_l,t_r)$ on paths $l$ and $r$ when the paths intersect\\\hline +interval\-\_get\-\_left\-\_endpoint\index{interval\_get\_left\_endpoint?\texttt{interval\_get\_left\_endpoint}} & --& numeric & numeric& \pageref{Dintervalleft}& The left endpoint of an interval quantity\\\hline +interval\-\_get\-\_right\-\_endpoint\index{interval\_get\_right\_endpoint?\texttt{interval\_get\_right\_endpoint}}& --& numeric & numeric& \pageref{Dintervalright}& The right endpoint of an interval quantity\\\hline +interval\-\_set\index{interval\_set?\texttt{interval\_set}}& --& pair & numeric& \pageref{Dintervalset}& Create an interval quantity\\\hline \pl inverse\index{inverse?\texttt{inverse}}& --& transform& transform& \pageref{Dinv}& Invert a transformation\\\hline known\index{known?\texttt{known}}& --& any& boolean& \pageref{Dknown}& Does argument have a known value?\\\hline length\index{length?\texttt{length}}& --& path\par string\par picture& numeric& \pageref{Dlength}\par \pageref{DlengthString}\par \pageref{DlengthPicture}& Number of components (arcs, characters, strokes, \ldots) in the argument\\\hline diff --git a/manual/mpman-app-refman.tex b/manual/mpman-app-refman.tex index ad8b84bfb0ee05bf2ba11ced0313f7d8331bc14b..266bc9d7226de35bc3940582d1dd2a463bd95135 100644 --- a/manual/mpman-app-refman.tex +++ b/manual/mpman-app-refman.tex @@ -558,7 +558,8 @@ $\tt \descr{unary op} \rightarrow \descr{type}$\\ $\tt \qquad \;|\; abs \;|\; angle \;|\; arclength \;|\; ASCII \;|\; bbox \;|\; blackpart \;|\; bluepart \;|\; bot \;|\; bounded$\\ $\tt \qquad \;|\; ceiling \;|\; center \;|\; char \;|\; clipped \;|\; colormodel \;|\; cosd \;|\; cyanpart \;|\; cycle$\\ $\tt \qquad \;|\; dashpart \;|\; decimal \;|\; dir \;|\; floor \;|\; filled \;|\; fontpart \;|\; fontsize$\\ -$\tt \qquad \;|\; greenpart \;|\; greypart \;|\; hex \;|\; inverse \;|\; known \;|\; length \;|\; lft \;|\; llcorner$\\ +$\tt \qquad \;|\; greenpart \;|\; greypart \;|\; hex \;|\; interval\_get\_left\_endpoint \;|\; interval\_get\_right\_endpoint$\\ +$\tt \qquad \;|\; interval\_set \;|\; inverse \;|\; known \;|\; length \;|\; lft \;|\; llcorner$\\ $\tt \qquad \;|\; lrcorner\;|\; magentapart \;|\; makepath \;|\; makepen \;|\; mexp \;|\; mlog \;|\; not \;|\; oct \;|\; odd$\\ $\tt \qquad \;|\; pathpart \;|\; penpart \;|\; readfrom \;|\; redpart \;|\; reverse \;|\; round \;|\; rt \;|\; sind \;|\; sqrt$\\ $\tt \qquad \;|\; stroked \;|\; textpart \;|\; textual \;|\; top \;|\; ulcorner$\\ @@ -939,7 +940,7 @@ Here's a summary of the command-line switches provided by mpost: in the current directory or specified via a full path.\\ \cmdindex{-numbersystem}=\tdescr{string} & Set arithmetic mode to one of \texttt{scaled}, \texttt{double}, - \texttt{binary}, \texttt{decimal}\\ + \texttt{binary}, \texttt{decimal}, \texttt{interval}\\ \cmdindex{-progname}=\tdescr{string} & Pretend to be the \tdescr{string} executable.\\ \cmdindex{-recorder} diff --git a/manual/mpman.bib b/manual/mpman.bib index 7f089f8ba71691916764ee606e3fb248a5a1388a..378085678ca811965354712e3f9a8e3229829e2e 100644 --- a/manual/mpman.bib +++ b/manual/mpman.bib @@ -128,6 +128,23 @@ significant slowdown with respect to other arbitrary-precision tools --- and discuss a few applications where such a library can be useful.", } +@article{lib:mpfi, + author = {Nathalie Revol and + Fabrice Rouillier}, + title = {Motivations for an Arbitrary Precision Interval Arithmetic and the + {MPFI} Library}, + journal = {Reliab. Comput.}, + volume = {11}, + number = {4}, + pages = {275--290}, + year = {2005}, + url = {https://doi.org/10.1007/s11155-005-6891-y}, + doi = {10.1007/S11155-005-6891-Y}, + timestamp = {Thu, 16 Apr 2020 11:28:20 +0200}, + biburl = {https://dblp.org/rec/journals/rc/RevolR05.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} + @misc{lib:decnumber, key = "decnumber", title = "dec{N}umber {ANSI} {C} implementation of General Decimal Arithmetic", diff --git a/manual/mpman.tex b/manual/mpman.tex index 80c7ce8d0c90ad5484335935132a587f86b55674..990ccd75e290ffcff728f35285a3f6109ef4f583 100644 --- a/manual/mpman.tex +++ b/manual/mpman.tex @@ -14,7 +14,7 @@ \usepackage[nofancy]{svninfo}% Access VCS information. \svnInfo $Id$ %\svnInfo $Id$ -\newcommand*{\mpversion}{2.00} +\newcommand*{\mpversion}{2.10} \usepackage[T1]{fontenc} \usepackage{lmodern} @@ -63,8 +63,9 @@ \usepackage{multicol} \usepackage[rgb,x11names]{xcolor}% Optimize for screen reading. -\usepackage{hyperxmp} \usepackage{hyperref} +\usepackage{hyperxmp} +%%\usepackage{hyperref} \hypersetup{ pdftitle={MetaPost: A User's Manual}, pdfauthor={John D. Hobby and the MetaPost development team}, diff --git a/source/texk/web2c/mplibdir/ChangeLog b/source/texk/web2c/mplibdir/ChangeLog index edd54eadc2457317ce38809b48dd8f979c244b0e..1bce2fdae0d1913d60c2d07ee8f5450259ed3143 100644 --- a/source/texk/web2c/mplibdir/ChangeLog +++ b/source/texk/web2c/mplibdir/ChangeLog @@ -1,22 +1,43 @@ +2024-02-16 Luigi Scarso <luigi.scarso@gmail.com> + * Updated manual. MetaPost 2.1 + +2024-02-12 Luigi Scarso <luigi.scarso@gmail.com> + * Fixed "warning: strncat specified bound 1 equals source length [-Wstringop-overflow=]" in mpxout.w + +2024-01-28 Luigi Scarso <luigi.scarso@gmail.com> + * Merge branch mpfi. + 2024-01-26 Luigi Scarso <luigi.scarso@gmail.com> - * Added source/libs/mpfi/TLpatches and source/libs/mpfi/m4 + * Interval arithmetic: Added source/libs/mpfi/TLpatches and source/libs/mpfi/m4 2024-01-03 Luigi Scarso <luigi.scarso@gmail.com> - * Fixed "++" and "+-+" by replacing a*a with sqr(a). Better error message for square root of negative numbers. + * Interval arithmetic: Fixed "++" and "+-+" by replacing a*a with sqr(a). Better error message for square root of negative numbers. 2024-01-02 Luigi Scarso <luigi.scarso@gmail.com> - * fixed negate for mpfi. + * Interval arithmetic: fixed negate for mpfi. 2023-12-31 Luigi Scarso <luigi.scarso@gmail.com> - * fixed check interval for square root + * Interval arithmetic: fixed check interval for square root 2023-12-30 Luigi Scarso <luigi.scarso@gmail.com> - * Fixed allocation of the buffer for the file extension. - * Fixed position of verbatim_written in mpxout.w + * Interval arithmetic: Fixed allocation of the buffer for the file extension. + * Interval arithmetic: Fixed position of verbatim_written in mpxout.w + +2023-09-17 Luigi Scarso <luigi.scarso@gmail.com> + * Interval arithmetic: mp.w: Fixed a buffer overflow. + * Interval arithmetic: decContext.{c,h}, decNumber.{c,h}, decNumberLocal.h: Convert newline from CRLF to LF (thanks to TANAKA Takuji). 2023-01-19 Luigi Scarso <luigi.scarso@gmail.com> * MetaPost: svg->dx, svg->dy are now double (better precision) . +2022-11-06 Luigi Scarso <luigi.scarso@gmail.com> + * Fixed the value of the clip-path attribute for the svg output. + + +2022-09-20 Luigi Scarso <luigi.scarso@gmail.com> + * Interval arithmetic: code for remainder (work in progress). + + 2022-09-13 Luigi Scarso <luigi.scarso@gmail.com> * Interval arithmetic: new primitives interval_get_left_endpoint, interval_get_right_endpoint, interval_set. @@ -24,6 +45,8 @@ 2022-09-01 Luigi Scarso <luigi.scarso@gmail.com> * Interval arithmetic: mpost compiles without errors. +2022-08-25 Luigi Scarso <luigi.scarso@gmail.com> + * Interval arithmetic: support for interval arithmetic. Initial commit 2022-07-31 Luigi Scarso <luigi.scarso@gmail.com> * MetaPost: Working on the file extension (work in progress). @@ -44,7 +67,6 @@ * mp.w: MetaPost 2.02 (twice). 2022-01-10 Karl Berry <karl@freefriends.org> - * am/libmplib.am, * am/mplib.am: do not silence tangle-sh. diff --git a/source/texk/web2c/mplibdir/NEWS b/source/texk/web2c/mplibdir/NEWS new file mode 100644 index 0000000000000000000000000000000000000000..32606d23b09f26a7a4dae83bafa07a35b2821956 --- /dev/null +++ b/source/texk/web2c/mplibdir/NEWS @@ -0,0 +1,1630 @@ + +This file is public domain. + +---------------------------------------------------------------------- +What is new in MetaPost version 2.10: +---------------------------------------------------------------------- +* New interval number system based on MPFI. The implementation is somewhat experimental, + given the "unusual" nature of interval arithmetic. + The internal functions are almost verbatim copies of the MPFR-based binary system + (on which MPFI is based). +* Several bugs fixes. + + +---------------------------------------------------------------------- +What is new in MetaPost version 2.01: +---------------------------------------------------------------------- +* It's a version needed to mark the patch mpx_copy_mpto. + + +---------------------------------------------------------------------- +What is new in MetaPost version 2.0rc2: +---------------------------------------------------------------------- + +* Small cleanup of the code +* Bump to version 2.0rc2: the current version is 2.00 +* Added the envelope primitives to mpman + + +---------------------------------------------------------------------- +What is new in MetaPost version 2.0rc1: +---------------------------------------------------------------------- + +* Mainly fixes for wrong path directions, minor issues on tfm and png + backend. The version says "2.000" to keep the version as a valid + number. + + +---------------------------------------------------------------------- +What is new in MetaPost version 1.9991: +---------------------------------------------------------------------- + +* Some issues fixed, but really this is in preparation of metapost 2.0. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.999: +---------------------------------------------------------------------- + +* The numbersystem 'binary' is now operational. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.902: +---------------------------------------------------------------------- + +* Fixed a crash in 'decimal' mode during choose_scale calculations. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.901: +---------------------------------------------------------------------- + +* Fixed a bug in 'decimal' mode that affected (among other things) + the directionpoint and bbox calculations. + +* Fixed a bug in 'decimal' mode calculation of sine / cosine that + affected the precision of the answer in situations where + 'numberprecision' was less than 34. + +* Updated the number parsing in 'decimal' mode to detect 'too precise' + input and optionally generate an error in that case (depends on + 'warningcheck') + +* Fixed a bug in the svg output where it could crash in 'decimal' mode. + +* Fixed a bug in the png output where it could get confused if there + was more than one text label + +* Fixed a bug in the png output for stroked paths + +---------------------------------------------------------------------- +What is new in MetaPost version 1.900: +---------------------------------------------------------------------- + +* Updated the embedded libraries, and a few build system fixes. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.890: +---------------------------------------------------------------------- + +* The numbersystem 'decimal' is now operational. + +* New internal: 'numberprecision', for use with 'the 'decimal' number + system. The (numeric) value expresses the desired calculation precision, + in decimal places. + + system default min max + ============================ + scaled 10 10 10 (assignment effectively ignored) + double 16 16 16 (assignment effectively ignored) + decimal 34 1 1000 + +* Bug fix: in the 'double' numbersystem, + + if X = scantokens decimal X: + + will now always be true, because the 'decimal' operator now has + the same resolution as the scanning routine (which is two decimal + places more than in the previous release). + +* Fixed a bug in the handling of the / operator (wrong precendence). + +* Fixed a bug in arctime (did not handle negative values currectly). + +* Fixed TFM generation issues (various scale-related errors). + +* Fixed application crashes when there was no TEXMF tree to be found + anywhere. + +* It is no longer possible to assign to the 'numbersystem' internal. + +* There is a new definition of 'drawdot' in plain.mp. + +* PNG output did not output anything for draws of a single point. + +* Metapost now prints the full name of any preloaded files. + +* Fixed a bug in the handling of labels with embedded ascii zero(es). + +* Fixed handling of unknown command-line options, the reporting + on used libraries in the --version output, and the banner line. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.803: +---------------------------------------------------------------------- + +* Fixed a bug in the path tension handling that sometimes caused + distorted output. + +* A number of small alterations to the build system making it easier + to integrate metapost with W32TEX. + +* Fix the internal rounding functions in --numbersystem=double so that + they round exactly like in --numbersystem=scaled mode. + +* From Elie Roux: a fix to graph.mp to prevent log-scaled graphs with + large ranges from causing the "Value is too large" error. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.802: +---------------------------------------------------------------------- + +* Fixed a bug causing overly large characters in SVG output mode when + prologues != 3. + +* Removed a crash during free-ing of TFM metric data at the end of the + run. + +* Fixed a problem with colors in SVG output mode. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.801: +---------------------------------------------------------------------- + +* fixed an off-by-one error in the SVG output that prevented the last + font's glyphs from actually being output to the svg file under + prologues:=3; + +* fixed a bug in bbox calculations in that caused the max y to be set + based on the maximum x coordinate internal value instead of the + maximum y coordinate. + +* fixed a bug where metapost incorrectly produced a 'degenerate spec' + error. + +* build fixes for various platforms imported from TeXLive 2013, as + well as the latest kpathsea development etc. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.800: +---------------------------------------------------------------------- + +* A new string valued internal "outputformatoptions" is used by PNG + output mode to control the png file format. In the future, this + internal may also be used for options to the other output formats. + + The syntax for "outputformatoptions" is a space-separated list of + settings. Individual settings are keyword+'='+value. The only + currently allowed ones are: + format=[rgba|rgb|graya|gray] + antialias=[none|fast|good|best] + No spaces are allowed on the left, nor on the right, of the equals + sign inside a setting. + + The assignment that would match the compiled-in default setup is: + outputformatoptions := "format=rgba antialias=fast"; + however, "outputformatoptions" is initially the empty string. + + Some notes on the (new) PNG output formats: + - The 'rgb' and 'gray' subformats have a white background. The + 'rgba' and 'graya' subformats have a transparent background. + - Bitdepth is always 8. + - In all cases, the image is initially created in 8-bit RGB + mode. For 'gray' and 'graya', the RGB colors are reduced just + before the actual PNG file is written, using a standard rule: + g = 0.2126*r + 0.7152*g + 0.0722*b + - CMYK colors are always converted to RGB during generation of + the output image using: + r = 1 - (c+k>1 ? 1 : c+k); + g = 1 - (m+k>1 ? 1 : m+k); + b = 1 - (y+k>1 ? 1 : y+k); + - If you care about color conversions, you should be doing a + "within <pic>" loop inside "extra_endfig". The built-in + conversions are more of a fallback. + +* A new string-valued internal "outputfilename", which is set by + "shipout" to the value of the just created file name. Until the + first shipout has occurred, it is the empty string. + + +* Fixed a number of bugs where Metapost loaded the default font map + file multiple times, resulting in lots of "fontmap entry for + `<fontname>' already exists, duplicates ignored" warnings. + +* The "glyph <> of <>" operation could crash on fonts with empty + subpaths in the charstrings. + +* Fixed a bug in the postscript encoding reader that caused a buffer + overflow (fatal error) for encoding files that do not end with a + newline. + +* Sped up png creation a bit by using smarter libpng options. + +* In the 'double' numbersystem, lots of precision was lost due to a bad + internal conversion of fractions to scaled values. This affected the + "rotated by", "directiontime", "sind" and "cosd" primitives, as well + as internal dependency calculations. + +* In the 'double' numbersystem, an internal rounding error caused + "directiontime" to return bad results for requests near zero. + +* There was a big scaling miscalculation while outputting glyphs in SVG + mode with "prologues:=3". The output labels were so big that they + fell completely outside of the generated image. + +* A problem resulting in 'This can't happen (endinput)' caused by a + missing "end" at the end of the run was fixed. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.790: +---------------------------------------------------------------------- + +* Lots of speedups. + +* Fixed bug in division expressions that started with a literal number. + +* A few problems with bad deallocations were solved. + +* A bug where after saving and redefinition of primitives, they later + were restored to 'undefined' instead of to their primitive meaning. + +* The "double" literal number parser now only accepts scientific + notation if the character following 'E' or 'e' is '+', '-', or + a digit. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.780: +---------------------------------------------------------------------- + +* The turningnumber calculation in 1.770 was bugged. + +* The picture export in 1.770 forgot to add trailing zeroes to the + log and term output channel resulting in rubbish output. + +* The arguments of the PS "dtransform" operator have been fixed + (was wrong since 1.750). + +* The warning limit in numbersystem=double mode is now exactly 2**52. + +* A bunch of obvious memory leaks fixed. Not all yet, but now the + MPlib seems to be usable even with many graphics. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.770: +---------------------------------------------------------------------- + +This is an alpha release for testing & debugging only! + +* The command line switch --numbersystem replaces --math. + +* Two new internals: numbersystem (string, read-only, either "scaled" + or "double" at the moment) and numberprecision (numeric, currently + a no-op). + +* There is a new bitmap backend: + + outputformat:="png"; + + This backend uses cairo and libpng to generate PNG bitmap data. + The created PNG used RGB + Alpha, with anti-aliasing, at 72dpi, + and with a transparent background. + +* Associated with this, there are new internals "hppp" and "vppp", + that are used by the bitmap backend to decide on the scale of + the generated bitmap. Default value for both new internals is + "1.0", i.e. one pixel per Metapost point. + + The internal names come from metafont. + +* There are two new primitives for use with picture item objects: + + prescriptpart + postscriptpart + +* The C API has been extended to allow path control point resolution + without going through the Metapost input language, see + manual/mplibapi.tex for details. + +* The C API has been extended with a "math_mode" switch in the options + structure, and the memory size options as well as "ini_mode" have + been removed (the MPlib instance now always starts up in inimp mode) + +* The code for picture shipout now uses "double" for all floating point + values. This can give small differences in the actual output files in + traditional mode due to the required scaled -> double conversion, but + was necessary to support the new numerical backend code. + +* The Lua API internals have been updated to reflect the C API changes. + +* All known crashes in earlier versions of Metapost have been fixed. + +Known issues: + +* The manual is not up-to-date yet on the metapost input language + changes. + +* There are various memory leaks. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.750: +---------------------------------------------------------------------- + +This is an alpha release for testing & debugging only! + +* mpost now accepts --math=double as an argument. This switches the + internal arithmetic functions from using a scaled 32-bit data type + to 64-bit floating point. + +* With --math=double, the input scanner has been changed to allow + a := 1.0E20 + as valid input format for a numerical value + +---------------------------------------------------------------------- +What is new in MetaPost version 1.504: +---------------------------------------------------------------------- + +* Small build system tweaks from TeXLive 2012. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.503: +---------------------------------------------------------------------- + +* String comparisons have been fixed, these were broken in previous + 1.50x versions. + +* verbatimtex ... etex processing had a horrible bug that is now + fixed. + +* A fix has been applied for a bug that made redeclared variable + subscript tags disappear. + +* The behavior of the %{<internal>} escape sequence in 'outputtemplate' + changed (but not that of the single-letter shortcuts). Internal + variables within %{...} are neither rounded nor zero-padded. + +* A very long list of improvements to the manual. + +* MetaPost now adheres to the openin_any / openout_any settings in + texmf.cnf + +* The 'prologues:=3 output' with embedded labels was unreliable, + especially when the resulting eps was included into a TeX document + via dvips. + +* 'newinternal numeric' has been fixed, it generated an error in + metapost 1.211 and earlier 1.50x versions. + +* Label regeneration sometimes failed to run when the file time stamps + were close together. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.502: +---------------------------------------------------------------------- + +* New build system and kpathsea imported from TeX Live. + +* Various bugfixes. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.501: +---------------------------------------------------------------------- + +* The maximum number of variable instances has increased from approx. + 33 million (2^25-1) to 2 billion (2^31-1). + +* New build system and kpathsea imported from TeX Live. + +* Many small bugfixes to 1.500. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.500: +---------------------------------------------------------------------- + +* Actual memory dump files do not exist any more. --mem=<MEM> and + all other methods of supplying a MEM file are now interpreted + somewhat like this pseudo-metapost-code: + + begingroup; + let dump = end; + input MEM[.mp]; + endgroup; + + this process is supposed to be transparent besides the facto that + there is some extra terminal output and logging. + +* All memory is now allocated and freed dynamically. There are only + two remaining overflow errors(1): + + "expansion depth" : this is a guard against infinite recursion, + the value is 10000. + "sizes per font" : this is maxed out for data-structure reasons, + the value is 32767. + + from texmf.cnf, now only the "error_line", "half_error_line" and + "print_line settings" are used. + + (1) but now you can reach the operating system limits, of course. + +* As this is an alpha release containing lots and lots of new code, + MetaPost starts up with the internal equivalent of 'loggingall;' + in effect. This results in log files that can help in debugging. + +* Expect bugs and (minor) memory leaks. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.212: +---------------------------------------------------------------------- + +* Small build system tweaks from TeXLive 2011. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.211: +---------------------------------------------------------------------- + +* In previous 1.20X versions, the 'glyph infont' operator did not handle + fonts with seac (old-style composite characters) properly. + +* Incorporated the latest versions of kpathsea and the build system + from TeXLive. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.210: +---------------------------------------------------------------------- + +* In previous 1.20X versions, btex ... etex handling forgot to take + the passed directory location of input-ed files into account. + +* verbatimtex ... etex is now copied as is. Whitespace stripping + and appending of % no longer happen. + +* The mpost executable now always strips exactly one extension from + the jobname (unless explicit --jobname was given) + +---------------------------------------------------------------------- +What is new in MetaPost version 1.209: +---------------------------------------------------------------------- + +* Previous 1.20X mem files were architecture-dependent. + +* Metapost now uses getopt once again, which makes the commandline + handling compatible with pre-1.20X versions. However, the syntax + -sprologues=1 is now no longer supported (the space between -s + prologues is now mandatory). + +* On some systems, metapost would crash inside the function that prints + the 'fatal error' message. + +* The 'glyph infont' operator would sometimes cause crashes, and in + other cases it generated bad output. + +* There was a space missing in the generated output when mpprocset + was set. This was still legal PostScript, but it confused mptopdf. + +* In previous 1.20X versions, the font map file was read for each + figure that contained a label, resulting in lots of harmless + but scary warnings being reported. + +* The --debug switch is now documented in the command-line help. + +* The help text now mentions the metapost version. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.208: +---------------------------------------------------------------------- + +* Previous versions of MetaPost 1.20x were overeager to remove file + extensions from the end of the jobname. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.207: +---------------------------------------------------------------------- + +* With the -file-line-error commandline option, MetaPost 1.20x always + reported the name of the most recently 'input' file instead of the + name of the actual current file. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.206: +---------------------------------------------------------------------- + +Bug fixes: + +* Many of the commands in the MP language cause strings in the string + pool to be printed to new strings that are also built up in the + string pool. This could cause crashes when the new string wouldn't + fit in the memory allocated. + +* Failure to initialize the jobname in the MP_options struct could + cause crashes in library mode. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.205: +---------------------------------------------------------------------- + +Bug fixes: + +* Metapost did not handle well files with extensions other than .mp. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.204: +---------------------------------------------------------------------- + +Bug fixes: + +* Metapost could go into an endless output loop when characters in + bitmap fonts where used, because it tried to limit the %*Font output + line to a specific number of bytes. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.203: +---------------------------------------------------------------------- + +Bug fixes: + +* Building version 1.202 for source required X11 headers to be installed. + +* Another infinite recursion trap added, now for erroneous vardefs + with suffixes (reported by Nicola Vitacolonna). + +* Fix infinite loop recursion on integer overflow (reported by Nicola + Vitacolonna, fix based on a hint from Dan Luecking). + +* In version 1.202, setting "job_name" from lua code caused a crash. + +* The "filename" field on the lua figure object in 1.202 was just the + extension, instead of the whole file name. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.202: +---------------------------------------------------------------------- + +Bug fixes: + +* Fix greypart <numeric> (always returned 0). + +* Make 'withcolor true' explicitly reset the color model to uninitialized. + +* Report which mem file can't be found, and use 'plain' instead of PLAIN + in the mem search warning messages. + +* Fix a crash on subsetting of some Type1 fonts because of a temporary + buffer overrun. + +* Correct a crash on SVG text output when the 8th bit is set. + +* Fix the use (reference) of 8-bit glyphs in SVG mode when prologues:=3. + +* Fix the output of text strings that reference the character at index 0. + +* Use ".ps" as file extension for negative charcodes (backward compatility). + +* Metapost sometimes printed "mp_vacuous" instead of "vacuous". + +* Fix rounding of negative scaled and fraction values. + +* Restore the error for 'arctime' out-of-bounds. + +* Moved the "turningnumber algorithms do not agree" message out of reach + (now only printed if tracingchoices>2 ) + +* Fix a problem with dash scaling during picture copying. + +* TFM header bytes were written out with an offset of one. + +* Updated the mptrap files. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.201: +---------------------------------------------------------------------- + +Bug fixes: + +* There was a bug where sometimes the outer contour of a glyph that was + asked for via 'glyph X of' was missing from te output, depending on + the path drawing order inside the Type1 font. + +* Handling of MPTEXPRE label prefix files was broken. + +* Font subsetting for 8-bit characters in Type1 fonts was broken. + +* The use of "%{outputtemplate}" inside "outputtemplate" now generates + an error. + +* The first letter of the input file name was swallowed in the log file. + +* There is some rudimentary support for infinite recursion trapping now, + to help prevent segfaults&crashes due to C call stack exhaustion. + +* An unlucky change in glibc made compilation fail on new GNU/Linux + systems due to multiple incompatible definitions of 'getline()'. + +* There was a bug in the handling of quoted external commands for + MPXCOMMAND | MPXMAINCMD | TEX. + +* The main input file's opening brace and filename were not shown in + the log file output. + +* Non-colored picture objects (clipping and setbounds paths) are now + ignored when the color part is asked from within "within", for + backward compatibility reasons. + +* The trip and trap files are now part of the distribution and the + mptrap files have been updated. + +* The standard web2c argv[0] mem file mimicri was broken: 1.200 was + always looking for "mpost.mem" even when called under another name. + +* The manual pages for "mpost" and "dvitomp" have been updated, and the + old "mp" manual page has been removed. + +* The first letter of any missing input file name was not shown in the + terminal error message. + +* Output files are now once again written in the current directory even + if an explicit source directory is given. This includes the creation + of mpx files, but some trickery is used so that up-to-date existing + mpx files from the source directory take precedence. + + +---------------------------------------------------------------------- +What is new in MetaPost version 1.200: +---------------------------------------------------------------------- + +New features: + +* It is now possible to get the actual path drawing routines from a + font glyph. The syntax is : + + q := glyph 113 of "cmr10"; + q := glyph "one.oldstyle" of "lmr10"; + + "glyph" is a primary binary operator (like "subpath") that accepts + a string or number and a string, and the result is a picture. + + The second argument is a tfm name. This will be combined with + a fontmap entry to find the font's PostScript source file. + + If the first argument is a string, then it should be a Charstring + name in the postscript font source. If the first argument is + an integer, it is an index into the encoding of the font, and + the Charstring that is mapped to that index is taken (it follows + that numeric values have to be integers between 0 and 255). + + The returned picture can be empty (if the tfm or the pfb or the + encoding or the Charstring was not found), otherwise it consists + of a list of 'fill' objects that use the the 'grey' color model. + Counterclockwise paths receive the grey value matching 'white', + clockwise paths 'black'. + +* MetaPost now supports string valued internal variables. Three of + these are predefined ("jobname", "outputformat", "outputtemplate"), + you can add more of them via "newinternal". + + newinternal string s; + s := "hello"; + + The type of a new internal is either 'string' or 'numeric', + and defaults to numeric (this is for backward compatibility with + older versions of MetaPost). String internals are initialized to + the empty string, numeric internals are initialized to zero. + +* MetaPost now has a second backend that generates Scalable Vector + Graphics output. This new backend was requested by Dave Crossland, who + also provided the funding to make it possible. Dave, thank you again! + + The default value of "outputformat" is "eps"; when you assign "svg" + you will get SVG output. + + If you use text labels with SVG, you will probably also want to set + + prologues:=3; + + With this setting, MetaPost will convert the font into curves + (of course you also need a correct font map line, just as for + PostScript output). + + With any other value of "prologues" you will simply get the SVG + default text font in a system-dependant encoding. This is unlikely + to be what you want! + + A simple example: + + outputformat := "svg"; + outputtemplate := "%j-%c.svg"; + beginfig(1); + fill fullcircle scaled 100 withcolor .4red; + endfig; + end. + + In the lua bindings, there is the new figure method "svg()", that + gives back the SVG output string. This is subtly different from the + direct file output: the lua method does not prepend an XML declaration + (this makes embedded use of the generated XML easier). + +* The new internal string variable "outputtemplate" replaces + "filenametemplate". The big difference is that "outputtemplate" + is a true 'internal', so that you need a proper assignment. + On the positive side, this means that you can use its current + value with e.g. show and message. + +* "outputtemplate" has a new type of replacement: internal variable + names. Instead of the short "%j.%c", you could write: + + outputtemplate := "%{jobname}.%{charcode}" ; + + this type of replacement works for all internal variables, + including those defined via "newinternal". + +* There are two new numeric internals: "hour" and "minute". + (these are a consequence of the outputtemplate change) + +* The primitive "jobname" is now a string internal instead of a + special case. This implies you can assign to "jobname", but + such an assignment will only affect the picture output. The + job name for the purposes of log and mem file names is fixed + permanently at startup time and cannot be altered. + +* "mpost" can now pretend to be dvitomp. Either copy the executable + to the name "dvitomp", or pass the switch --dvitomp on the command + line. + +* The command line option --halt-on-error has been reinstated. + +* There is a new -s<internal>=<value> command line switch that can + be used to setup run time values. Such assignment will be executed + after initialization is complete (i.e. after mem file loading) but + before any other code is executed. + + This works for all internal variables, including one defined + that may have been defined in the mem file via "newinternal". + +* "tracingstats:=1;" now prints the highest and total input levels. + +Bug fixes: + +* The turningnumber calculation had a rounding error in the internal + arithmetic that could cause incorrect numbers to be calculated + (typically resulting in a 'turning numbers do not match' error). + +* The parsing of command line arguments with options was broken. + +* Reading of files with 8-bit names has been fixed. + +* A patch by Melissa O'Neill fixes inclusion of some special Type1 + formats. + +* There was a bug where, when "prologues:=3;", the lists of the + DocumentResources/DocumentSuppliedResources could appear in the eps + output partially uncommented. + +* Troff labels were completely broken in all MPlib-based versions. + +Other changes: + +* Many, many improvements to the manual and the tutorial. Sorry + Stephan, I don't know enough to list them all! + +* The old executable build system has been replaced by the new build + system from the TeXLive 2009 repository. + +* The MetaPost (and mplib) source code is now released under LGPL + instead of GPL, and uses a derivative of PyAvl instead of GNU libavl. + +* The web2c 'mktexfmt' feature is enabled for the program "mpost" once + again. + + +---------------------------------------------------------------------- +What is new in MetaPost version 1.102: +---------------------------------------------------------------------- + +* Printing of 8-bit string characters has been fixed. + +* In previous versions, TFM files and PFB fonts would not be read + properly on big-endian machines (e.g. powerpc) + +* The MetaPost distribution now contains "A Beginner's Guide to + MetaPost for Creating High-Quality Graphics" by Troy Henderson + and Stephan Hennig. This tutorial replaces Hobby's mpintro.tex. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.101: +---------------------------------------------------------------------- + +This is just a bugfix release. The following bugs / problem areas in +MetaPost 1.100 have been fixed / improved: + +* TFM file generation was completely broken. + +* The job name discovery on the commandline has been improved. + +* Under some (rare) conditions MetaPost forgot to create a log file. + +* Labels containing char0 were exported to PostScript incorrectly. + +* On Windows, the DVI file that is the result from the internal call + to TeX for btex .. etex lables was not deleted automatically. + +---------------------------------------------------------------------- +What is new in MetaPost version 1.100: +---------------------------------------------------------------------- + +CHANGES compared to the previous release, 1.005: + +* This version is based on MPlib, the C conversion of MetaPost. + + The one user-visible change is that the btex ... etex + label conversion is now handled internally instead of via + the external "mpware" programs. These programs are therefore + no longer distributed. + +* There is a new manual, mplibapi.pdf, that describes the internal + interface to MPlib. + +* The file 'mpintro' is no longer distributed because it is + obsolete (it has been that way for some time). + +* The distribution now includes Dan Luecking's mpsproof.tex. + + +CHANGES compared to the previous beta, 1.091: + +* The DVI -> mpx converter was bugged when virtual fonts were used. + +* MP could crash when a string was added to the string pool that + was too large to fit. + +* The string pool compaction routine was called much too often, thus + preventing unnecessary slowdowns. + +* Various problems with uninitialized option settings and missing mem + files or pfb files have been fixed. + +* There was a line buffer overrun possible in the file reader. + +* mpost now honours --recorder and --file-line-error. + +* MP now accepts file names with paths (separator is /) and with + embedded spaces (using " for quoting) + +* There could be empty lines in the PS output. + +* Full 8-bit fonts (i.e. font using character slot 255) could create + an eternal loop. + +* The handling of equations with addition or substractions between two + unknowns in the right hand side was wrong. + +* The first line of the PS font encoding output could be broken + inbetween a glyph name and its preceding slash. + +* Font inclusion in the PS backend would fail for all fonts that had + glyph ids using the 8th bit. + + +---------------------------------------------------------------------- +What is new in MetaPost beta version 1.091: +---------------------------------------------------------------------- + +* Dash lists were interfaced incorrectly by the lua bindings. + +* The Type 1 Font inclusion in the previous version produced invalid + subsets. + +* The configure script now also checks for sys/time.h + +* The error message you get for invalid mem files now mentions the + name of the file as well as the nature of the problem. + +---------------------------------------------------------------------- +What is new in MetaPost beta version 1.090: +---------------------------------------------------------------------- + +This MetaPost release is based on MPlib. For those of you who are not +aware of the MPlib project yet: + +MPlib is the name of the new, revamped version of the MetaPost +interpreter. It is implemented in Cweb, and internally consists +of a core library, an mpx generation library, and a frontend +driver program (mpost). + +There are no changes to the MetaPost language, but nevertheless there +are some minor differences with the last pascal-web based version of +MetaPost (1.005): + +* The MPlib distribution is released under the GPL version 2 or, + at your option, any later version. + +* The commandline is slightly different, run mpost --help for details. + +* The mem file format is changed, you have to regenerate any + existing ones. + +* The new mpx generation library includes the label generation + functionality that was previously provided by 'makempx', and + this internal code will be used instead of an external program. + That is, unless the MPXCOMMAND variable is set in the environment + or texmf.cnf. The 'mpware' programs became obsolete and are no + longer included in the distribution. + +* Most of the memory configuration variables from texmf.cnf + have become obsolete due to dynamic reallocation. The four remaining + ones are 'main_memory', 'hash_size', 'max_in_open', 'param_size'. + These are only taken into account at mem generation time, the + values are stored in and reloaded from the mem file. + +* The core MPlib library does not interpret an initial '&' as anything + special and it does not support re-initialization using a different + mem file either. The command line program mpost _does_ interpret '&' + as an alias for the -mem switch to preserve (some) compatility. + +* The MPlib distribution includes lua script language bindings. + +Following are the NEWS items for the previous beta releases of MPlib. + +---------------------------------------------------------------------- +What is new in the beta release of MPlib 1.090: +---------------------------------------------------------------------- + +* The lua bindings to MPlib are added to the distribution, and + build.sh can now build an mplib.so loadable module for lua + (this needs an installed lua 5.1 distribution) + +* Some internal macros are renamed so that the exported C structure + fields could have better names, and a new document (mplibapi.tex) + provides the documentation of the C api and Lua bindings. + +* The texmf and manual trees are now included again. + +* (un)dumping mem files is delegated to a separate cweb source file. + +* All gcc-isms in the build and configure scripts have been removed. + +* The kpathsea library is updated. + +---------------------------------------------------------------------- +What is new in the beta release of MPlib 1.085: +---------------------------------------------------------------------- + +* Determination of the mem name to use in non-ini mode is now much + closer to the web2c approach. + +* There is now a magic word in the beginning of the mem file to make + sure it is written by the correct version of MPlib. + +* Fixed the disappearing comment sign in the to-be-typeset document + created by the mpx generation subsystem. + +* Various identifiers have been renamed to avoid clashes (that prevented + the source from building correctly on many platforms) + +* A great many small changes and fixes have been added after running + splint on the generated C source. + + +---------------------------------------------------------------------- +What is new in the beta release of MPlib 1.080: +---------------------------------------------------------------------- + +* The MPlib distribution is released under the GPL version 2 or, at + your option, any later version. The copyright statements in the source + files have been updated to reflect this. + +* The mpost program banner now contains the kpathsea version, and no + longer mentions the fact that the source is now cweb at all. + +* The mpost program once again supports 'E' error responses. + +* There are some minor internal API changes, but there is still no + documentation for the API, so that is not very interesting yet. + + +---------------------------------------------------------------------- +What is new in the beta release of MPlib 1.060: +---------------------------------------------------------------------- + +* The MPlib distribution is released under the GPL version 2. + +* This release is the first that replaces the old metapost distribution + completely. The executable is now named 'mpost' with engine name + 'metapost'. + +* The release now includes a cweb implementation of the makempx + functionality that is linked into the mpost executable. + This internal code will be used unless the MPXCOMMAND variable is set. + Because of this functionality, the mpware directory is no longer + included and the standalone programs 'makempx', 'newer', 'mpto', + 'dvitomp' and 'dmp'. are no longer maintained. + +* This is the first development release of the new cycle, and contains + all of the functionality of Metapost 1.005. The mpost version is now + 1.060, and the special version number for the cweb version has been + removed from the banner. + +---------------------------------------------------------------------- +What is new in the alpha release of MPlib (0.20.0): +---------------------------------------------------------------------- + +* Two bugs in MP 1.002 were fixed by Giuseppe Bilotta, both fixes + are about polygonals pens and will be included in the upcoming + MP 1.003 release also. + +* It is now possible to ask for the envelope of a path drawn as + traced by a (non-elliptical) pen: + + path p,q; + p = fullcircle scaled 30; + q = envelope pensquare of p; + +* There is a lua interface now, and it is already used by luatex. + + To play with this, currently the best solution is to fetch the + 0.25.0 beta of luatex: http://foundry.supelec.fr/projects/luatex + This embeds MPlib 0.25.0 as well as its documentation. + +* Many bugs were fixed. + +---------------------------------------------------------------------- +What is new in the alpha release of MPlib (0.10.0): +---------------------------------------------------------------------- + +* The source is converted to cweb, and split into a library part + (mpdir/lib/*.w) and a frontend executable (mpdir/mpost.w). + +* The front end executable is named "newmpost", this takes + care of configuring the MPlib library via C code, and uses + kpathsea for file searching. There is no change file involved, + and the web2c runtime library is not used. + +* Some of the internal arrays now grow dynamically when needed: + + * the input buffer + * the string pool and number of strings + * the font memory and number of fonts + * the number of "readfrom" and "write" files + * the path segment size + * the input nesting stack + * the number of new internals + * the TFM writing arrays (but these are limited by TFM format) + + Still not doing that (so these can only be changed in --ini mode): + + * the main memory + * the hash size + * the number of simultaneous macro parameters + * the level of "input" file nesting + +* The following command-line options are ignored by the front-end + command (for now): + + -[no-]file-line-error + -halt-on-error + -output-directory= + -[no-]parse-first-line + -recorder + -translate-file= + -8bit + -T + + The other web2c command-line options should work as normal. + +* the mpware tools are not in this distribution, their functionality + will eventually be assimilated into the frontend application. + +* the build process depends on a local "ctangle" command being in the + path, for now. The confiration and building system is not yet complete. + +* API documentation is still missing, but the MetaPost input language + has not changed. + + +---------------------------------------------------------------------- +What is new in version 1.005: +---------------------------------------------------------------------- + +* In MetaPost 1.004, mpost --version still incorrectly reported 1.003 + +* C Compilation of MetaPost 1.004 was broken on MacOS X 10.5 + +* The sources package did not contain mpboxes.pdf + +* Some last-minute fixes to the manual + + +---------------------------------------------------------------------- +What is new in version 1.004: +---------------------------------------------------------------------- + +* The picture color component commands misbehaved in 1.003: + the current (default) colormodel was not taken into consideration, + so all colors had to be explicit for "redpart" etc. to work. + (this bug is the one broke the graph.mp package) + + In 1.004 for "defaulted" colors, the suitable value in the current + (default) colormodel is returned without any errors. This change + also reverts to silently defaulting a 'black' color when asking + for the redpart etc. of an object that cannot be colored at all. + +* The picture color component commands misbehaved in 1.003 in + a different manner also: the defaults for uninitialized CMYK + color picture parts were still assuming 'black' was defined as + (1,1,1,1) instead of as (0,0,0,1). + +* The macro Gwithpc_ in the graph.mp package did not work properly + with non-rgb colormodel objects. + +* plain.mp has a new macro, 'colorpart', that returns the color + parts of a graphical object within a picture in a form suitable + for feeding it back to 'withcolor'. + +* The latest kpathsea library from TeXLive is included. + +* There is now a separate manual for the boxes package (mpboxes.pdf). + + +---------------------------------------------------------------------- +What is new in version 1.003: +---------------------------------------------------------------------- + +* Polygonal pens now work better (bug #3 and #7 at supelec.fr). + +* When asking for a color part in a picture object, the color models + now have to match each other, otherwise an error will be reported + and the return value will be set to a 'black' part. + +* The Makefile fragment (metapost.mk) now defines a separate mpost + target for better integration in TeXLive. + +* There was a bug in the internal handling of withprescript and + withpostscript, resulting in incorrect output when paths using + such scripts were stored in picture variables. + +* A newline was missing from the PostScript output when the + procset internal variable was set, so the first line of that + accidentally became a PostScript comment. + +* Applicable changes from Knuth's updates for MetaFont 2.718281 + are incorporated. + +* Mpto did not play nice with %&<format> verbatimtex lines, it now + automatically tries to detect comment-lines. + +* Dvitomp 1.003 has higher limits for some internal constants like + the number of allowed fonts in DVI files. + +* The manual is improved. + + + +---------------------------------------------------------------------- +What is new in version 1.002: +---------------------------------------------------------------------- + +* Version 1.001 introduced a memory allocation error in mpto that could + result in the program looping endlessly + +---------------------------------------------------------------------- +What is new in version 1.001: +---------------------------------------------------------------------- + +* The default cmyk 'black' color now uses only black, not all four + ink colors (after a discussion on the mailing list). + +* Some issues were reported with the new turningnumber algorithm, + all known problems are now fixed. + +* Gábor Braun discovered that mpost did not always download the font + encodings into all the created output files. + +* Akira Kakuto and Hartmut Henkel found some small issues in mpto + regarding trailing and leading whitespace. + +* A fix for the 'Helvetica' entries in trfonts.map was provided by + Werner Lemberg, and Michail Vidiassov supplied two extra font + entries for troff.map (Symbol and ZapfDingbats). Karl Berry + provided the new file troff-updmap.map, to be used by the updmap + tool in texlive. + +* Mpost now supports web2c's --output-directory option. + +* Any warnings about missing fonts and characters are now always + written to the terminal as well as to the log. + +* Now that makempx is a C program, it needed a different install line + in build.sh. Also, Olaf Mersmann contributed a patch to recognize + 'gmake' in build.sh + +* Luigi Scarso found some typing errors in the web source that prevented + clean weaving of the source. + +* Stephan Hennig fixed a number of problems in the manual (mpman.tex) + and the introduction paper (mpintro.tex). He also wrote new sections on + how to preview metapost graphics and on how to use metapost graphics + inside other documents. On top of that, the manual is now hypertext-aware, + and fixes for a whole series of small problems have been applied. + +---------------------------------------------------------------------- +What is new in version 1.000: +---------------------------------------------------------------------- + +* The use of DSC (document structuring) comments has been + been cleaned up, thanks to comments by Michail Vidiassov. + +* By setting prologues to 2 or 3, you can ask MetaPost to + reencode and include the used labels fonts in the output, + thus creating proper Encapsulated PostScript files even + if labels are present. + +* Support for greyscale and cmykcolor models is added. + +* The new drawing options "withprescript" and withpostscript" + allow the user to attach PostSCript special text to a specific + drawing object. + +* Setting the new internal "mpprocset" to 1 will make MetaPost + create a somewhat extended preamble that defines shortcuts + for the postscript commands (e..g "l" instead of "lineto"). + For big images, this can help shrink the output a bit. + +* The pool file is now integrated in the executable, so there + is not separate 'mp.pool' anymore, except at build time. + +* Groff support is redone, and dmp now uses kpathsea searching. + Groff related changes are thanks to the efforts of Werner + Lemberg and Michail Vidiassov + +* makempx is now a compiled executable on all systems, + thank you Akira Kakuto + +* The error for 'special's longer then 255 characters + is removed, so specials can now be of any length. + +* There is new turningnumber implementation that attempts + to find the mathematically correct "turningnumber" of a + path. The formulae are derived from a mailinglist discussion + between (especially) Dan Luecking and Giuseppe Bilotta. + +* The manual is updated and modernized. It is currently + maintained by Stephan Hennig and Troy Henderson. + +------------------------------------------------------------------ +Changes in version 0.920: +---------------------------------------------------------------------- + +* Fixed a long-standing bug in web2c where changing values of the + memory_size setting in web2c could cause crashes and other random + problems. The memory array size is now written to the dump file + and loading is aborted if the values do not match. +* Implement configurable figure output filename templates. +* Implement cmyk, greyscale, and marking only color models. +* The mpost executable is now version 0.920 +* mpost no longer autoconverts r==g==b colors to grayscale in the + postscript output. + +---------------------------------------------------------------------- +Changes in version 0.902: +---------------------------------------------------------------------- +* Fix a bug in mpto resulting in correctly placed labels (with + thanks to Dan Luecking) +* Fix a bug blocking compilation of dmp on MacOSX +* The mpost,dmp,mpto executables are now version 0.902 + + +---------------------------------------------------------------------- +Changes in version 0.901: +---------------------------------------------------------------------- +* A corrected bugfix for bug item 3 from version 0.9 (the old fix + made metapost fail the trap test) +* Included mpost.mp for mem generation +* Updated the trap test output. +* The mpost executable is now version 0.901 + +---------------------------------------------------------------------- +What is new in version 0.9: +---------------------------------------------------------------------- +1. There is a new internal quantity called mpversion that reports the + current metapost version, and the version information is also written + to the PostScript file. +2. The LaTeX sources of the mpman, mpintro, and mpgraph manuals have + become part of the distribution package. +3. TEX.mp now has TeX format support through a pair of macros called + TEXPRE() and TEXPOST(). This llows you to process the contents of + the TEX() macro with, for example, LaTeX (instead of plain TeX). + An example is given in the manual. +4. metapost now writes a %%HiReSBoundingBox comment +5. The EPS output no longer contains actual spaces within PostScript + strings as for example output by label("a space"), but their + octal escape (\040) instead. +6. The EPS output now also has a %%BeginProlog DSC comment + as well as %%EndProlog +7. The comments in the Web source have been changed to point out + that on modern machines, acquiring the random seed has actually + become a system-dependant operation (a granularity of whole seconds + is not small enough on new machines). +8. The 'newer' command now accepts more than 2 arguments, testing + each of the files in turn. + +---------------------------------------------------------------------- +Bugfixes in version 0.9: +---------------------------------------------------------------------- +1. Documentation improvements: all known errata and typos have been + removed, better explanations of e.g. dash patterns and dotlabel have + been provided, and a number of omissions has been rectified. +2. The BoundingBox was not computed correctly when a filldraw command + with a noticeable pen size was used at the edge of the picture. +3. Paths starting with degenerate constructions like (0,0)--(0,0)--(0,0) + could overflow memory. +4. The PostScript output could accidentally contain 8-bit characters + within PostScript strings in previous versions because a test was + shared between terminal printing and PostScript printing. +5. A bug has been found in the assignment of serial numbers to independant + variables in metafont 2.71828. This bug affected MP as well, and the + same patch has been applied. +6. The turningnumber was sometimes wrong in unexpected ways. The new + implementation is still sometimes wrong (when there are strange path + segments involved), but in a much more predictable way: the new code + always draws straight lines between the actual points, and calculates + the turningnumber based on that path instead of the actual path. The + effect is that cusps and loops within segments are now completely + ignored. A more thorough fix of turningnumber is planned for the + next release. +7. There was an 'off by one' error in dvitomp wrt. the interpretation + of virtual fonts. +8. mpto uses a new TeX macro for the generation of labels, making it + more robust wrt. strange user code within the actual label text. +9. A missing colon in boxes.mp has been added +10. A missing save in mfplain.mp has been added +11. The generisize in boxes.mp has been fixed so that it now accepts [[ as + a valid variable name + +---------------------------------------------------------------------- +Version 0.641: +---------------------------------------------------------------------- +The only change was to fix the code for transforming a picture that +contains a filldraw. Version 0.64 introduced a bug that caused an +inappropriate memory reference in that case. + +---------------------------------------------------------------------- +What is new in Version 0.64: +---------------------------------------------------------------------- +1. A new primitive command closefrom filename closes a readfrom file + so that subsequent calls to readfrom with that file name will go back + to the beginning of the file. +2. The ^^ notation for unprintable characters is now used only when printing + on the terminal or the log file. Internal computations and the write + command are all 8-bit clean. (This is partly due to material in mp.ch + that changes the initialization of the xchr array. Without these + system-dependent changes, the write command would map all non-ascii + characters to spaces.) +3. Arithmetic overflow during a comparison such as 20000>-20000 is now + ignored. This avoids extraneous error message when using the graph.mp + macro package. +4. Transformations with negative determinants now work properly on pictures + drawn with polygonal pens. +5. When the readfrom operator is applied to a file that does not exist, + an attempt to close a non-open file could cause problems in some + implementations. This has now been fixed. +6. Using draw picture_expression withpen where the picture_expression + was a scaled picture containing dashed lines, the dash lengths would + change. This bug has been fixed. +7. The dashpart operator could return an invalid picture or a picture that + is not properly scaled. This has also been fixed. +8. The |char_base| variable could become negative when using fonts that + do not start at character 0. There was also bad Pascal code in function + b_open_in. This has all been fixed. +9. Dvitomp has been fixed to avoid a font data structure problem that + could cause some characters to come out in the wrong font when you + mix virtual and non-virtual fonts. +10. Dvitomp now correctly prints font names when there is a checksum + mismatch, and it aborts instead of just printing an error if a tfm + or vf file is bad. +11. In plain.mp, the drawdblarrow macro now uses filldraw so that it works + better with large pen sizes. + +---------------------------------------------------------------------- +Version 0.632: +---------------------------------------------------------------------- +When prologues is negative, the output files use full precision for +coordinates in "%%BoundingBox" comments. In btex..etex blocks, +"number too large" and "invalid character" errors are suppressed. +The result of btex..etex is now guaranteed to be in a setbounds path +so that a for...within iteration will always treat it as a unit. + +There are also some obscure bug fixes involving string compaction when +scanning a file name or when mp is compiled in debug mode. Some possible +identifier name conflicts and range check errors have also been fixed. + + +---------------------------------------------------------------------- +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 <filename>' and new command + `write <string expression> to <filename>' 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 <picture expression>: <loop text> 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 <unistd.h> 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.