[metapost] Re: all intersections between two paths

Taco Hoekwater taco at elvenkind.com
Fri Jan 21 00:08:32 CET 2005

Hi Larry,

Larry Siebenmann wrote:
> Taco Writes
> Taco's TeX Workshop(?) (TW) is exemplary, but runs only on the
> rapidly evolving Mac OSX.  Clearly it is time that other
> implementations of TeX raise capacities to similar levels.

You are confusing me with somebdoy else. I have nothing to
do with TeXShop/gwTeX and, in fact, do not own a Mac at all.
All credit (and questions) about that distribution should
be directed at gerben wierda: iinstaller at rna.nl
The related website is at: http://www.rna.nl/tex.html

All array values I quoted are from the (Linux) executables
on TeXLive 2004, and I had nothing to do with compiling them.

When needed, I use the 'latest' MP source (in CVS at sarovar,
http://www.sarovar.org/projects/metapost ).

With that cleared up:

> Taco, what are your TW values for those 5 extra capacities
> namely write_files etc.  Did you do the compilation for TW?

All values are lifted from the Web2C change file. The web values
are lower (sometimes a lot lower). Most of the values have been
adjusted because somebody requested it, and they have been
increased as little as possible (so that runaways are still
discovered reasonably fast).

   max_write_files = 10     ("write")
   max_read_files = 30      ("readfrom")
   max_in_open = 25         ("input" levels)
   path_size = 2000         ("path" length, texmf.cnf: >=1000, <=300000)
   bistack_size = 1500      (bisection stack for "intersectionpoint" c.s)
   fonts_max = 50           (number of distinct "infont" fonts)
   font_memory_words = 1000 (words of character info for "infont")

Note that only path_size is configurable through texmf.cnf,
all other values are compile-time constants.

 > And what does a *breakpoint* in a path mean? maybe a corner?

A location where the dependancy between the left and right subpaths
is broken. Typically the result of the "&" operator.

> Taco, could you guestimate the RAM cost of 300i and 1500p?

An in_state_record is probably 18 bytes (4 halfwords and a quarterword)
in a modern installation. So 300 of them is, say, 6kb of memory.

Parameter stack entries are pointers into mem[] so, assuming 4 bytes
for each one, that allocates another 6kb.

Greetings, Taco

More information about the metapost mailing list