Release Notes for Version 0.95

A memory leak was fixed; garbage collection messages are now suppressed
unless the -d option is given. In interactive mode, a reset keyword was
implemented to restore the environment, except for the scroll setting.
The interactive input command now does an automatic reset.  A link was
added to the GNU readline library documentation for customizing interactive
key bindings. A hang in scroll mode on an end-of-file condition was
fixed. To reduce LaTeX memory usage, the scalebox macro is used only where
required. The documentation was updated.

Release Notes for Version 0.94

A label bug arising from a conflict between some versions of the LaTeX
pstricks and graphicx packages was fixed. Embedded LaTeX files are always
run in quiet (-noView) mode. Frame loading issues with imported types
(for example, with the triangle SAS constructor in the geometry module) was
fixed. The command import graph is now an abbreviation for access graph;
unravel graph.

Release Notes for Version 0.93

The import scheme was completely redesigned, with new keywords access,
unravel, from, and include. A true (rather than emulated) interactive mode
and runtime imports have been implemented. The default pdf browser is now
acroread; the pdf fuzz workaround for gv was removed.  The tension3 and
curl3 keywords were re-added; a surface graph routine for matrices was
implemented. Problems with csv mode were fixed. The function defaultpen()
was renamed to resetdefaultpen().  Integer division via quotient(int,int)
is now consistent with the modulo (%) operator.  Checks for integer
overflow and erf, erfc, and gamma functions were added.  More descriptive
names latticeshade, axialshade, radialshade, and gouraudshade for the
shading routines were chosen.  Horizontal and vertical label scaling was
implemented.  Default command line style-parameters can now be stored in
~/.asy/options.  The interactive history file is now ~/.asy/history by
default unless -localhistory is specified. Outputting to standard output
via "-o -" is now allowed.


Release Notes for Version 0.92

Clipping now clips labels and all layers of a picture, not just the most
recent one. A bug in precontrol and postcontrol was fixed.  A ticklabel bug
and precision errors at +/-1e-4 were fixed.  An example of a "broken" x
axis was added.  A dot product now requires explicit pair arguments.
The implicit cast from real to pen was removed. Straight flags are now
preserved when using a path as part of a guide. An UnFill filltype was
added for clipping underneath labels and legends. A struct marker was added
to support arbitrary marker locations. Directories are no longer stripped
from explicit output filenames. 

A function inside was implemented to test whether a point is inside a
cyclic path.  The routines inside, quadratic solver, and intersect in
math.asy were replaced by internal C++ routines. A robust real cubic root
solver was added. A floating point exception in complex powers when base is
zero was fixed.  Colinearity checks were added to the leastsquares routine.

The interface to plane was changed to return a representation of the plane
through point O with normal cross(u,v).  The routine intersectionpoint was
moved to plain.asy and a 3d version was added to three.asy. We now draw
over existing TeX layers when doing 3d hidden surface removal. A 3d aspect
ratio can now be specified. A gui() function and MSWindows support for xasy
was added; this will require renaming "gui(" to "GUI(" in any existing .gui
files.  The dir argument of picture.fit() was moved to add(frame,pair)
and attach(frame,pair): 

add(pic.fit(E)) -> add(pic.fit(),E).

Release Notes for Version 0.91

Fixed GUI transforms: grouping should not depend on deconstruct flag.

Release Notes for Version 0.90

Default function arguments are now evaluated in the scope where the
function is defined, not in the scope of the caller.  The depth handling
of deferred TeX labels was fixed.  The positioning of 3d axes labels was
improved; an example showing tick and axis label rotation was added.
A minimum value of fuzz in the intersect routines is enforced to prevent
infinite loops. An error in the man page regarding the -t option was
fixed. The write function was generalized to handle an arbitrary number of
data values.

Release Notes for Version 0.89

The processing of GUI files was fixed.  User-specified ticks now work also
with logarithmic axes. The arguments of LeftTicks and RightTicks were
standardized; it is now possible to include a general string(real) routine
to typeset each label.  Logarithmic axes ranges of less than a decade are no
longer upscaled when autoscaling is disabled.  All references to the
mailing list were removed from the documentation since the forum is now
used in its place.  The temporary included PostScript file suffix was
renamed from "ps" to "eps".

Release Notes for Version 0.88

The graph routines were overhauled to support both two- and three-
dimensional axes, partitioning them uniformly in tick value space,
not with respect to arclength. An empty format string is treated as
defaultformat. A fuzz parameter was added to the intersect routines;
these routines now work for points. Data file comments were implemented.
The perpendicular routine now uses an alignment argument; scale(pair) was
removed.  An option was added to asymptote.sty to make all LaTeX symbols
visible, along with a second optional string to Label for providing a size
estimate for undefined labels.  Numerous small bugs were fixed; the
pstoedit patch was updated. The installation and instructions were
improved. An environment variable for every external command was added.

The argument order of the axes routines was standardized; a call like
xaxis(min,max,"$x$",red,Bottom,LeftTicks);
should now be written
xaxis("$x$",Bottom,min,max,red,LeftTicks);

Release Notes for Version 0.87

This release implements general hidden surface removal using a binary space
partition and adds three-dimensional versions of the standard path
functions (arclength, subpath, intersect, etc.), along with circle and arc
functions. Hidden surfaces in regular mesh surface plots now are properly
handled from any camera location.  The arclength rather than the length is
used for determining default label position on paths; Relative(real) and
Relative(pair) functions were added for labelling paths relative to the
total arclength and local path direction.  Structure constructors and
operators == and != were implemented and documented. The permissions of
static functions within structures was fixed. A pen argument to filltype
Fill to specify an interior pen distinct from the boundary pen was added.
For convenience, array push members now return the pushed element.
A missing shift in Label.out(frame) was added. The feynman module was
updated to include a new function texshipout; MidArrow was moved to
plain.asy. The optional position arguments of BeginArrow and related
functions were fixed. A numerically robust quadratic equation solver was
added.

Release Notes for Version 0.86

Fixed make man problems.

Release Notes for Version 0.85

A fully three-dimensional, rotationally invariant, generalization of the
two-dimensional MetaPost path construction algorithms has been
implemented. A tridiagonal solver was added. Adobe's automatic rotation of
PDF files was disabled. Cyclic indices are now allowed only on arrays
having the virtual cyclic flag set to true. The bug fix in simplex was
generalized. An online help option was added to interactive mode; exit is
now a synonym for quit. Microsoft Windows resource fields and an icon were
added. ASYMPTOTE_DIR can now be a list of directories. 

Since some files were moved in this release, Microsoft users may wish to
first uninstall the previous release to avoid duplicate files.

Release Notes for Version 0.84

This release ports Asymptote to the Microsoft Windows operating system; an
executable file is distributed. Label parameters are now in a structure
called Label, to which strings are implicitly cast, and which can be
rotated and shifted with a transform. Automatic sizing under picture
transformation was fixed. A bug in the simplex method was fixed. Lattice
and Gouraud shading were added. An array append method, virtual transform
components, and transform 6-tuple notation were added. A pen and filltype
were added to legend.  The 2d graph and palette code were cleaned up.
An extend option was added to draw ticks across the graph for producing a
grid. Problems with nullguide3 were fixed, the arguments of 3d rotate were
swapped, and 3d reflections were added.  A spurious papersize comment
inserted by newer versions of dvips was removed.  Pstoedit support was updated.

This release introduces a few minor backward incompatibilities. Here is a
summary of the main changes:

draw("text",(0,0)--(1,1),1.0)   ->      draw(Label("text",1.0),(0,0)--(1,1))
label("text",90,(0,0))          ->      label(rotate(90)*"text",(0,0))
labeldot("text",(0,0))          ->      dot("text",(0,0))
labeldot((0,0))                 ->      dot(Label,(0,0))
labelbox(2mm,2mm,"text",(0,0))  ->      box(Label("text",(0,0)),2mm,2mm)
xaxis("$x$",0.5)                ->      xaxis(Label("$x$",0.5))
labelxtick(1)                   ->      xtick(Label,1)

Release Notes for Version 0.83

This release extends Asymptote to three dimensions. A triple type (which
replaces the old vector type in math.asy) and a guide3 type were added,
along with the 3D projection routines in three.asy.  Three-dimensional
arrays can now be read in line mode, using blank lines as block
delimiters. An array pop function was added.  Math mode ($ delimiters) were
moved to within the "defaultformat" string, to allow use of non-math mode
fonts in tick labels (by overriding the default format). A pticklabel
option for drawing tick labels with a different pen was added. Routines
labelxtick and labelytick were added, and the tick size and shift in xtick
were fixed.  The autoscaling of unextended axes was fixed.  The xline and
yline routines were renamed to xequals and yequals, Dot was renamed to dot,
Cross was renamed to cross, the function "Angle(pair)" was renamed to
"degrees(pair)", and a "Degrees(pair)" function was added to math.asy.  The
Metapost --- operator and the replacement :: for the MetaPost ...  operator
were implemented. A segmentation fault involving controls points with
direction specifiers and a bug in "string font(pen)" were fixed. Tensions
in straight sections of paths are now handled as in MetaPost. The -l option
was reimplemented.

Release Notes for Version 0.82

Initializers for structures and general cast operators can be specified.
Functions can be called with named (keyword) arguments, in any order.
Rest arguments are supported.  Size and aspect ratio arguments, which may
be specified with "size", were removed from "shipout".  The tick routines
were standardized; custom tick locations and arrows on axes were implemented.
The default frame initializer nullframe was renamed to newframe. A segmentation
fault in the file garbage collection code and an optimization-related bug
in fill were fixed.

Unlike in the C and C++ languages, an assignment in a function argument is
now interpreted as an assignment to a parameter of the same name in the
function signature, not within the local scope. The command-line option -d
may be used to check Asymptote code for cases where a named function
argument may be mistaken for a local assignment.

Release Notes for Version 0.81

A guide solver bug was fixed, allowing the construction of graphs with a single
data point. Compilation under g++-4.0.0 is now supported.

Release Notes for Version 0.80

A segmentation fault on the alpha (cxx) and mac platforms was fixed.
All members of the picture structure are now deep copied.
The latest Boehm garbage collector (version 6.5) is used by default.

Release Notes for Version 0.79

Types are now cached to speed up parsing. All outstanding garbage collection
issues were addressed. The autoscaling of scaled axes was fixed.
Another example of a secondary axis was added to the documentation.
A Pythagorean tree example illustrates picture transforms.

Release Notes for Version 0.78

A binary search routine was added for sorted arrays. The handling of NAN
values was fixed. The "checkaxis" test in graph.asy was improved.
A problem with implicit closing of files was fixed. Minor changes were made
to support compilation under Cygwin. A workaround for the garbage
collection warning about repeated allocation of very large
blocks was introduced, along with other miscellaneous garbage collection
updates. A configuration option was added to request use of a (slower,
multi-theaded) system version of the Boehm garbage collector.

Release Notes for Version 0.77

Integer arguments are now converted to real values before dividing and a real
quotient is returned. The "quotient(int, int)" function returns the integer
part of that result. Garbage collection has been implemented to fix memory
leaks.  A knot solving bug was fixed. Pen "plabel" vs. "p" issues were
addressed. The eval function was renamed to map and the new eval(string)
function was documented. The concat function can be used to concatenate two
arrays. Complex exponential and logarithmic functions were added. The new
function reltime can be used to compute the label position argument for draw.
A new geometry module includes a triangle structure and functions to draw
interior arcs of triangles and perpendicular symbols.


Release Notes for Version 0.76

Installation has been simplified by removing the last remaining dependency
on the boost header files. A "plabel" argument was added to "draw" to allow
labels and legends to use a different pen than the curve itself. The pen
arguments in the axes routines were rearranged to be consistent with
"draw".  TeX errors in interactive mode and the TeX preamble are now
handled properly.  New functions "getstring" and "getreal" can get and
remember user parameters.  Marker frame arrays, a "Mark(int)" function,
and "node", "value", and "slope" path computation functions were added.
Problems with implicit scaling were addressed.  The "without side-effect"
warning was removed.  An option was added to list all loaded global
functions. The documentation of structures was improved.


Release Notes for Version 0.75

This release fixes a number of bugs with the new parser controller,
including a segmentation fault with the -p option, problems with
interactive mode, and problems reading from standard input. The graph
module now uses a better default value of axislabelmargin for positioning
axis labels. The put argument of the axis routines was moved to the end of
the argument list, for consistency with draw. Convenient xline and yline
interfaces to the axis routines were added.  The definition of the
correlation coefficient in the least squares routine was fixed, and a fit
function was added to the 'linefit' structure. A linear interpolation (with
endpoint extrapolation) and a binary search routine were added to math.asy.


Release Notes for Version 0.74

This release fixes a segmentation fault in version 0.73 and also reduces
the default number of colors in image palettes to work around
PostScript/PDF limitations (that can cause the manual not to print).


Release Notes for Version 0.73

A more efficient type-safe union was used to speed up the virtual machine
by roughly a factor of 5. New routines "ellipse" and "labelellipse"
were added for drawing ovals around frames and labels. The function
"bbox(frame)" was renamed "box(frame)". These routines now prepend to
the frame for filling with a background color; they also return the boundary
as a guide. A workaround was added for a bug in gcc version 3.3 to
facilitate compilation under Darwin (MacOS). Many internal coding
improvements were made.
