Release Notes for Version 3.14

String bracket indexing via operator[] was added.
A high-performance sphere approximation based on Bezier triangles
was implemented for the native renderer and ported to AsyGL.
A bitmap preview is generated for V3D PDF output so it displays
correctly in non-interactive viewers.
IBL environment names are now output in the V3D header and
IBL fixes were made for Vulkan and AsyGL.
A stack overflow with -render=0 was fixed.
The Vulkan export now uses tiling with a dynamic viewport and scissor.
Rendering issues with pixel() were fixed.
Triangle group rendering and a vertex shader bug in the no-lighting
path were fixed in the AsyGL library.
Threaded renderer crashes on empty scenes and a division by zero
were fixed.
Surfaces are no longer interpolated as periodic unless they really
repeat, and the parametric surface() constructor in graph3 enforces
exact endpoint periodicity for periodic splinetypes.
A bug in the monotonic splinetype was fixed.
The asyinclude function in the slide module now restores
currentlight, currentpen, and currentprojection.
Documentation and build issues were addressed.

Release Notes for Version 3.13

Memory usage for complex 3D scenes was greatly reduced.
The default render setting was changed to 2 for all output formats.
Meshpens for triangular patches are now handled.
A Vulkan offscreen resolution mismatch with OpenGL was fixed.
An OpenGL export bug was fixed.
VMA C++ wrappers were fixed to use nullptr instead of VK_NULL_HANDLE.
SSBO reads in the vertex stage now support vertexPipelineStoresAndAtomics.
The v3d.asy EOF check was fixed.
Readline history deallocation was fixed.
The PERL interpreter was removed from the build system.
The FAQ documentation was migrated from bfnn to texinfo.
A devcontainer was set up for sandboxed development, including support
for lavapipe software rendering.
Build issues were addressed.

Release Notes for Version 3.12

A Vulkan renderer was implemented, with a dynamically loaded OpenGL fallback.
SRGB color space rendering is supported via settings.srgb.
HiDPI displays are handled for both renderers via settings.devicepixelratio.
A -vsync option was added.
The fitscreen modes were fixed.
PBR material lookup was moved from the fragment shader to the vertex shader,
eliminating per-fragment SSBO reads and branching.
Emissive PBR lighting now supports nolight.
The V3D serialization reads version 1-2 and writes 2,
which includes a lightOn parameter to support unlit emissive per-vertex colors.
The contour module is now scale invariant and avoids duplicate segments.
The fuzz normalization in lineintersections was fixed.
Intersection and symmetric difference operators were added to the geometry
module.
The bundled GLEW library was updated to version 2.2.0.
Obsolete OSMesa support was removed.
Third-party licenses can be displayed with --licenses=full.
The CMake build was optimized.
The OpenGL export flash was fixed.
The imageURL option was added to the asy man page.
Fast Approximate Anti-Aliasing (FXAA) is available as a post-processing
option for Vulkan.
Software Vulkan fallbacks are implemented for macOS Intel systems when
Metal is unavailable and for Windows systems without a hardware GPU;
this requires downloading the corresponding dynamic library.
Various compilation issues under macOS and MSWindows were addressed.
A security measure disables libcurl after input() reads any local file;
this can be overridden with -curlAfterRead.

Release Notes for Version 3.11

A collections library introduces hash maps, hash sets, sorted sets, queues,
and B-tree maps (which maintain sorted order) as templated modules,
along with iterator utilities such as zip and enumerate.
User-defined structs can now be iterated with range-based for loops
via operator iter, support bracket indexing through operator[] and
operator[=], and benefit from native hashing of ints, strings, reals,
and int arrays.
The legacy getopt fallback was removed.
Rendering issues were addressed.
The documentation was reorganized.

Release Notes for Version 3.10

The 3D camera diagnostic was fixed.
Support for the ncursesw library was added.
Division by zero errors with empty 3D scenes were fixed.
The options argument in the animation module was fixed.
Integer multiplication was optimized.

Release Notes for Version 3.09

A 3D rendering bug exposed by the new default setting autoplay=true was fixed.
The experimental and buggy support for OpenGL animations was removed in favour of WebGL animations.

Release Notes for Version 3.08

Include generated GUI/xasy* files in releases.
Fix and standardize make clean, distclean, and maintainer-clean.

Release Notes for Version 3.07

A busy loop and race conditions in WebGL animations were addressed.
WebGL animations are fully reversible and controlled by the autoplay setting.
Build issues on legacy platforms were addressed; unused files were removed.

Release Notes for Version 3.06

The Xasy front end was updated to Qt6.
V3D and gzipped XDR files are now supported up to size 2^64-1.
Typescript was added to the AsyGL library source.
Various build issues were addressed.
The dependence on the boost library was removed.
Preliminary support for WebGL animations was added
(see the example teapotAnimation.asy).

Release Notes for Version 3.05

A bug in handling Xasy-generated transforms was fixed.
The asymptote.ualberta.ca server was updated to use the https protocal.
Double precision integer XDR reads and writes were fixed under UNIX;
XDR and binary string reads and writes were implemented.
These overloaded virtual file fields were exposed again:
singlereal, singleint, signedint, line, word, csv, and dimension.
To support MacOS X, the explicit 'gif:' format was removed from the
animate call; warning messages were addressed.
Reading V3D files with the native Windows build was fixed.

Release Notes for Version 3.04

To support transparent backgrounds, the png16malpha driver of Ghostscript 10
is now used as the default pngdriver; use settings.pngdriver="png16m" or
settings.pngdriver="pngalpha" for older versions of Ghostscript. 
The projection-dependence of WebGL shaders was removed for correct rendering
of multiple embedded images.
A new setting keys outputs WebGL comments to identify each generated object.
Unlink issues under MSWindows and compilation issues were addressed.

Release Notes for Version 3.03

The xasy setting was fixed.
The rename function and --outname setting are supported again under MSWindows.

Release Notes for Version 3.02

The documentation was updated. The MSWindows search path was fixed.
Random number generators are now initially seeded with std::random_device.
The rendering of 3D pixels was fixed.

Release Notes for Version 3.01

A workaround was implemented to fix a segmentation fault under MacOS Monterey.
Specifying make SILENT_MAKE= yields more verbose build diagnostics.
A floating point exception was fixed.
Configuration and compilation issues were addressed.

Release Notes for Version 3.00

Configuration issues were addressed.

Release Notes for Version 2.99

The libtool dependence of configure was removed.
Dependencies of gc builds are no longer tracked.
The latest boost library is supported.
Further build issues were fixed.

Release Notes for Version 2.98

Prebuilt Xasy support files are distributed again.

Release Notes for Version 2.97

Build issues were fixed.

Release Notes for Version 2.96

New keywords autounravel and using were added.
Issues with templated imports were fixed.
Asymptote now ships with the Boehm garbage collector.
Portability fixes were implemented.

Release Notes for Version 2.95

Portability fixes were implemented.

Release Notes for Version 2.94

Portability fixes were implemented for compiling under MacOS.

Release Notes for Version 2.93

A portability issue with a recent version of Ubuntu was addressed.
The windows binary is now built natively using CMake.

Release Notes for Version 2.92

A bug in unravelling static fields was fixed.
ImageMagick arguments were reordered. 
An Xasy regex bug was fixed. The bytecode interpreter was optimized.
The code to ignore duplicate implicit shipouts now accounts for the format.
The slide paperwidth and paperheight are now properly updated.

Release Notes for Version 2.91

By default, orthographic projections now use center=true;
the camera and target are automatically centered within the scene.
The surface constructor for triangles was fixed.
A bug in the WebGL flatness test was fixed.
Triangle group bugs were fixed and now produce compact HTML output.
Triangle groups are used for indexed surfaces drawn with the render option
tessellate=true.  
GLSL error reporting was restored.
The reported camera up vector was fixed.
The map module was fixed.
A syntax warning in Xasy was fixed.
Improvements were made to the slide module.
A bug was fixed in the experimental settings.render=0 mode.
The debug option now outputs a traceback.

Release Notes for Version 2.90

A bug in the approximate transparency rendering code for GPUs
without SSBO support was fixed.
Support was added for templated accesses involving imported types,
top-level structure types, and static fields.
ImageMagick magick convert is now used instead of convert. 
The add(picture dest, picture src, pair position) function now respects
size specifications (backwards incompatible; the previous behaviour can
be obtained with add(dest,src.fit(identity),position).
The terminal is now reset upon exit. The erase command was fixed.
Picture scalings in different dimensions are decoupled again.
Flycheck syntax checking support for Emacs was added.
Portability issues were addressed.
Improvements were made to the documentation, including an introduction
to deferred drawing.

Release Notes for Version 2.89

Portability fixes were made to allow static builds with or without pkg-config.
Static linking of the GSL library is now supported.
Redundant templated imports are avoided.

Release Notes for Version 2.88

Building against specific static libraries is supported again.
An ambiguity in statistics.h was resolved.
The output of dvisvgm is optimized by default.
PDF 1.5 output is now generated.

Release Notes for Version 2.87

Templated imports were implemented.
An incorrect dvisvgm optimization is avoided.
SVG gradient shading offsets were fixed.
Integer are now implicitly formatted with full precision.
Inferred assignment of void type is prohibited.
An LSP segmentation fault was fixed.
Repeated stripping of file extensions is avoided.
The --output-directory option of latexmk is supported.
The OSMesa compatibility profile is used for offscreen rendering.
The fitscreen toggle is fixed. 
The context menu in Xasy is now only opened for GUI-drawn items.
A -v3d option allows embedding V3D content within a PDF file.
A workaround was implemented for a MacOS libc++ parsing bug.
The documentation was updated.

Release Notes for Version 2.86

PDF transfer functions are automatically applied;
EPS output suppresses .setblendmode.
NaN and inf values can be read in cvs mode.
The OpenGL index buffer is properly initialized.
WebGL and V3D primitives are used only when unscaled.
Bugs in the inversion section of the geometry module were fixed.
Portability issues were addressed.

Release Notes for Version 2.85

Intersections of 3D paths with Bezier triangles were implemented.
A workaround for broken offscreen graphics drivers was implemented.
The icon resource file is now pregenerated. Uninitialized variables and
a division by zero were fixed. The 3D animation timer and keyboard controls
were fixed. A workaround for a linetype bug in the QtSvg library was fixed. 
Xasy now centers images upon loading. Compilation issues were fixed.
The resolution of cputime().change.user was improved.

Release Notes for Version 2.84

PDF image compression is now disabled by default for alternative output
formats. The default UNIX postscript and PDF viewers were changed to evince.
Makefile dependencies were fixed. A Qt compatibility bug was fixed in Xasy.
A bug in XDR reads was fixed. A runtime error in the TexHead arrow was fixed.
An inversion bug was fixed in the geometry module. A division by zero error
in the vectorfield function was fixed. An option to display environment
settings was added. The default labelmargin function now accounts for
the pen linewidth. The resolution of the wall clock timer was improved.

Release Notes for Version 2.83

WebGL triangle groups were fixed. Context menus were added to Xasy objects
to allow one to edit the fill type, line type, color, line cap, and
optionally add arrowheads. Support for begingroup() and endgroup() was
added to Xasy. Scaling in the vectorfield function was fixed.
A quotient(x,y) bug when -1 < x/y < 0, introduced in version 2.42, was fixed.

Release Notes for Version 2.82

Support for Ghostscript 9.56 was added.
Ambiguous functions are listed.
The dvisvgmMultipleFiles option is now enabled by default. 
A bug in generating PDF labels was fixed.
The mean color of multicoloured patches is output only for PRC code.
Subdivision crack adjustments were disabled for transparent patches.
The OpenGL transparency shader was further accelerated.
WebGL bounding boxes are now computed by the client upon loading.
Version 1.02 of the AsyGL library was released.

Release Notes for Version 2.81

Schur decompositions were implemented. A bug in uniform() was fixed.
The Xasy bounding box and a crash when opening Xasy files were fixed.
The transparency offset buffer is zeroed when GPU compression is unavailable.
The surface constructor for solids of revolution was documented.
Support for pkg-config was added. Opaque rendering on platforms lacking
GL_ARB_fragment_shader_interlock was fixed.

Release Notes for Version 2.80

Compression of empty transparent pixel counts and other optimizations were
implemented in the transparency shader. A weighted least-squares fit was added.

Release Notes for Version 2.79

The transparency shader was further optimized. The tensorshade fillrule was
fixed. A compatibility fix was made to xasyBezierInterface.py.
A real operator ecast(rational r) was implemented up to maxDenominator=100000. 
The dvisvgmMultipleFiles option, which speeds up xasy deconstruction with
PDF TeX engines, was documented.   

Release Notes for Version 2.78

The transparency shader was further optimized; an incorrect buffer size and
export issues were fixed. A substitute was implemented for a missing strnlen
function.

Release Notes for Version 2.77

A buffer overflow in the partialsum transparency shader was fixed;
the workload distribution over the GPU processors was improved.

Release Notes for Version 2.76

WebGL and V3D bounds were fixed, along with the WebGL zoom and viewportshift.
Under the Asymptote Web Application, the currentprojection is now persistent;
for other WebGL instances, the 'c' keyboard binding can be used to display
the currentprojection. The correct defaultfilename is set on reading V3D
files from the command line. Portability issues were addressed.

Release Notes for Version 2.75

A 2D transparency bug was fixed. Vim support was improved.
To support PNG transparency, the default driver was changed from pngalpha
to png16m and the pdflatex TeX engine is used instead of latex.
A pngdriver option was added. To support WebGL, billboard labels are enabled
when configured for offscreen rendering. The subdivision crack work around for
PRC output was removed. Compilation without the tirpc library is supported
again (but not recommended since the V3D format requires XDR support).

Release Notes for Version 2.74

Order-independent transparency is disabled if SSBO support is unavailable.
Embedded 3D renderings now work in inline TeX mode. The tiling pen was fixed. 
Support was added for filling contour plots by quantizing color density images.
Unwanted shifting in PDF output when using non-letter size paper was fixed.
Due to its limitations, the color.sty package was abandoned in favour of
low-level specials. The bounding box contributions of the linejoin and
linecap qualifiers are now correctly taken into account. The erase command
is inhibited for svg and html output. A crash on save in the lsp server
was fixed. Links to the gallery were fixed in the documentation.

Release Notes for Version 2.73

The asygl library was updated to support embedding of WebGL and WebGL2 scenes
on the same page.

Release Notes for Version 2.72

WebGL2 is enabled by default only for examples that use image-based lighting.
Multiple output formats in threaded interactive mode are now handled correctly.
CPU partial sum indexing is used in the 3D transparency shader if the compute
shader fails to compile.  

Release Notes for Version 2.71

Support for the portable compressed 3D vector file format V3D was added.
The default value of settings.prc was changed to false. 
Efficient order-independent transparency was implemented for modern OpenGL
platforms and the OSMesa offscreen rendering engine (with no interactive
transparency support for Mac OS X and WebGL). The WebGL library now uses
WebGL2 if available. Image-based lighting was implemented.
Many bug fixes and improvements were made to Xasy, allowing objects drawn
with the graphical editor to be saved to and restored from a .xasy file, as
well as being exportable to an .asy file. A function was added to graph a
parametric function with control points determined by the specified
derivative. The recommended PostScript viewer for MSWindows is now Sumatra PDF.
The workflow for generating transparent PDFs and PNGs was fixed.
Emacs lasy-mode was patched to work with Emacs >= 23. Support for the Language
Server Protocol was added. Compilation with COMPACT=0 is supported again. 
All threads now return the same error code. A remote command-line interface to
http://asymptote.ualberta.ca is now available.

Release Notes for Version 2.70

A stack overflow was fixed. Under MSWindows, problems with SVG generation and
Xasy installation were fixed. Compiler warning messages were addressed.

Release Notes for Version 2.69

A segmentation fault in subpath3 was fixed. The fuzz parameter in bezulate
was increased to handle font precision issues. A missing above argument was
added in plain_boxes.asy. Scaling bugs in the palette module were fixed.
The contour module now respects picture scaling. Bugs in reading null
fields were fixed. Orthographic scaling is now consistent with perspective
scaling when keepAspect=false. The obsolete everypage package was removed.
A compilation issue with LIBCURL and compilation warnings were fixed. 

Release Notes for Version 2.68

Floating point exceptions in OpenGL libraries are now masked.
A normalization used to render tubes was fixed.  A Label align(Label,dir)
function was added for aligning label normals.  A new settings.compress=true
option controls PDF image compression.  A bool isometry(transform) function
was added.  Various bugs in the geometry module were fixed.
The transpose function ignores uninitialized elements.
Null fields are treated as undefined values in cvs mode and in line mode.
Uninitialized rendering variables were fixed. A RELEASE variable was added.
Logarithmic graphs of surfaces are supported. Files are opened
without assuming an asy suffix.  Support for Ghostscript 9.53 was implemented.
The end argument of Margin functions is now optional. A function
cputime().change.clock that returns the high-resolution elapsed wall clock
time was added.  A --disable-curl option was added.
The centering of slides was fixed.  Null characters and null strings are
supported in the replace function.  Configuration without readline support
was fixed.  In binary mode, an entire file can be read into a string.
The getc function now works properly when reading the NUL character.
Reproducible builds are supported.

Release Notes for Version 2.67

Support was added for importing and inputting URLs. Compilation and 2D SVG
to HTML conversion no longer requires the GLM library; 2D html output is
fit to the canvas unless settings.absolute=true. Diagnostics for dvisvgm
were enabled; SVG clipping was fixed.  A -globalread setting (default true)
was implemented.  Files are opened using the search path, which now
includes the examples directory.  An invalid array dimensions error was fixed.
A WebGL resize event listener was added; the + and - keys now zoom in and out,
rather than expanding and shrinking the viewport. Remeshing on export is
forced; unnecessary remeshing on zoom in AsyGL is avoided. 
The triple dir(path3, path3) function was normalized.  The repositioning of
OpenGL windows was fixed. The copy constructors for path and path3 were fixed.
Asymptote errors no longer cause Xasy to hang. A numerical precision issue
was fixed.  A portable way of skipping whitespace was implemented; casts
from empty strings now yield uninitialized values. Interrupt handling under
MacOS X was fixed. A devicepixelratio setting was implemented. The error
location is displayed in the console. Segmentation faults were fixed.
The documentation was updated and the code was reformatted. A hang on exit
under MSWindows was fixed. Obsolete encoding modules were removed.  

Release Notes for Version 2.66

A bug in the Bezier patch bounds was fixed. Vertex and material data are
copied from the CPU to GPU only when necessary. The default Headlamp light
was brightened. WebGL output is centered in the viewport, extending to the
canvas boundary; the precision of planar Bezier surfaces was increased  
to avoid artifacts. Fullscreen mode has been fixed; the new default
maxviewport=(0,0) specifies the screen dimensions. Camera adjustment was fixed.
Problems with Xasy and interactive signals under MSWindows were fixed.
A background color for both 2D and 3D images can be specified with
currentlight.background. Offscreen rendering on headless machines has been
reinstated; while the setting offscreen has been removed, one can again
configure asy for either onscreen or offscreen rendering. Clipping was removed
from the slopefield module. Functions mapArray, mapTemplate, real abs2(pair),
and real abs2(triple) were implemented. The new Ghostscript transparency model
requires Ghostscript 9.52 or later. The detection of TeX errors was improved.
An array segmentation fault was fixed; array dimensions are checked.
Flattened monochrome tensor patches with interior internal control points are
now drawn as filled cyclic paths. PDF offsets were fixed, along with the
auto-reload feature for Acroread. SVG support was improved; 2D images can now
be output in HTML format using inline SVG code, to support the
Asymptote Web Application, a new cloud service at http://asymptote.ualberta.ca.

Release Notes for Version 2.65

A bug in rendering 2D preview images of a 3D scene was fixed.
The 100-error TeX limit is gracefully detected, rather than hanging.
A more accurate Bezier approximation to the sphere was implemented.
An initial perpendicular direction can now be specified for the
rotation minimizing frame for a path3; the previous direction is
no longer cached between calls.

Release Notes for Version 2.64

Discontinuities were removed from the rotation minimizing frame used for
constructing tubes. A work around was implemented for an incorrect
declaration in obsolete versions of the NetBSD readline header file.

Release Notes for Version 2.63

A race condition in the AsyGL library was fixed. Emissive and
shininess values can be overridden for vertex colors. Thin Bezier
curves can be drawn with lighting enabled. Outline mode for 3D surfaces
was fixed; outline and mesh mode were ported to WebGL. Degenerate
surface normals were fixed. The octant1, hemisphere, and sphere
surfaces were replaced by nondegenerate versions that render faster.
The unitcone, unitfrustum, and DefaultHead3 arrowhead were simplified.
A robust and more efficient tube routine was implemented;
the PRC tube primitive was removed. WebGL compression was achieved by
implementing sphere, disk, cylinder, and tube primitives in the AsyGL library. 
Patches are now split in both directions only when required.
If the GNU Readline library is unavailable, the Editline library
is used to at least support command-line editing, without history features.
An MSDOS configuration issue was fixed.

Release Notes for Version 2.62

A hyperbola(point F1, point F2, point M) function was added to the
geometry module. Duplicate intersections are avoided. Errors in the
texpreamble are handled gracefully, without hanging. Unwanted
indentation under LuaLaTex was removed. The WebGL canvas is populated
with the design width and height. The WebGL context is stored in the top
rather than parent window. To avoid polling, WebGL images now draw directly.
Zooming of embedded WebGL images is disabled until activated with a
click or touch event, using ESC to cancel activation. WebGL usage
comments now suggest embedding as an iframe rather than an object.
The obsolete grffile package is no longer used. Typos in the documentation
were fixed.

Release Notes for Version 2.61

Bugs in the OpenGL driver were fixed. A work around for the WebGL singleton
array optimization bug on the Intel GPU was fixed. OpenGL and WebGL attributes
are now bound before linking the shaders. Bland's rule is implemented correctly
in the simplex solvers. A missing data file was added.  

Release Notes for Version 2.60

Transparent WebGL backgrounds were fixed. A build issue involving the revision
number was fixed. The locatefile function now returns the fully qualified
file name. The htmlviewer uses the absolute path for all platforms;
it is also used for displaying svg files. SVG output for embedded PNG, JPEG,
and external vector EPS and PDF images is supported with the latex TeX
engine and dvisvgm 2.8. The simplex solver was optimized. A pad function that
pads a picture to a precise size in both directions was introduced.
The xasy front end was ported to high-resolutions screens and handles Ctrl-C
interrupts correctly. Objects can be positioned finely with the arrow keys
while holding down the mouse button. The origin/center order and anchor names
were fixed. A front/back detection bug in the solids module was fixed.
The grffile package fixes issues with included file names.
This release requires Version 1.34 of asymptote.sty (auto-generated).


Release Notes for Version 2.59

OpenGL memory allocation and transparency bugs introduced in version 2.54 were
fixed. Rendering efficiency was improved. In view of limited GPU resources,
only the required material uniforms are passed to each shader.
The WebGL vertex and fragment shaders have been moved to the asygl library.
Multiple embedded images now share a single WebGL context and shaders,
to work around browser limitations. A bug in 3D arrows was fixed.
Unavailable material attributes are now ignored. Miscellaneous Python support
files were ported to Python3. The obsolete maxvertices setting was removed.

Release Notes for Version 2.58

Intersection points in geometry.asy are now returned in currentcoordsys;
a numerical precision issue was also fixed. Ambiguous function signatures
in geometry.asy are resolved by requiring explicit casts when converting
general forms to special cases. The xasy editor selection is now consistent.
Building the asymptote.so shared library is supported again.
A bug in rendering indexed triangle arrays was fixed. Execution errors in
support utilities are now handled gracefully. Due to current limitations of
dvisvgm (2.7.4), graphic() can only display SVG output (used by the xasy
vector editor) for external vector EPS graphics (embedded images, PDF, PNG,
and JPG formats are not yet supported). Building under CYGWIN with X11 is
supported again. The --version option lists both enabled and disabled features.
The GLX library is explicitly linked if present.

Release Notes for Version 2.57

Scenes with lighting disabled are rendered correctly in WebGL.
Attempting to output HTML for 2D pictures produces an SVG file.
A conditional was removed from the fragment shaders. A viewportshift option
was added to the WebGL driver; the home (h) option now forces a remesh.
The version number was removed from the local offline copy of asygl. 
A numerical degeneracy in the conic sections intersection routine
was fixed. A workaround for the broken XDR headers under MacOS X was
implemented. An issue with animations was fixed. The --version option displays
a list of compiled-in features. 

Release Notes for Version 2.56

An array bounds error was fixed. WebGL output now supports background
colors, including transparent backgrounds. Preprocessor conditionals were
fixed. Scrolling of webgl images is now disabled within the viewport.

Release Notes for Version 2.55

An initialization bug in the OpenGL renderer and portability issues were
fixed. 

Release Notes for Version 2.54

Support for generating and embedding interactive 3D WebGL vector graphics
within an HTML file has been added, allowing Asymptote figures
to be displayed on modern mobile and desktop browsers. The OpenGL rendering
routines were further optimized, yielding higher frame rates and
lower memory usage. The view position for perspective projection was fixed.
The default value of file word() was fixed. Installation issues were
addressed. A new digits setting controls the default output file precision.
A hanging pipe was fixed. The popcount function was extended to
systems that lack 64-bit integers. The order of PRC quad colours was fixed.
If lighting is enabled, vertex colors are now ignored in PRC images;
when drawing a surface s, use draw(s,prc() ? nolight : currentlight);
to disable lighting manually and recover the old behaviour.

Release Notes for Version 2.53

A memory leak and antialiasing artifacts in the 3D rendering engine were fixed.
For PRC content, oblique projections are now converted to orthographic
projections. Portability issues were addressed.

Release Notes for Version 2.52

Under MacOS X, 3D rendering is supported again, the xasy menubar is
now visible, and the default PostScript previewer was changed to "open".
VISUAL, EDITOR, and OS-specific editor overrides are now supported in xasy.
Obsolete code was removed and spelling mistakes were fixed.

Release Notes for Version 2.51

Portability fixes for FreeBSD x86 and MacOS X were made.

Release Notes for Version 2.50

The Phong-Blinn lighting model was replaced by a physically based rendering
model; the ambient attribute was removed. Various portability and build issues
were addressed. OpenGL is supported again for both 32-bit and 64-bit MSWindows.

Release Notes for Version 2.49

Portability issues and numerical precision issues were fixed. 

Release Notes for Version 2.48

The OpenGL code was modernized to use GLSL shaders. Transparent
triangles of different materials are now sorted before drawing.
The viewport option from the light function was removed.
A workaround was implemented for the Ghostscript transparency extension
-dSAFER bug. Bugs in the simplex method were fixed. Experimental
offscreen rendering is now disabled by default due to NVIDIA conflicts.
The min, max, minratio, maxratio, and intersection calculations were
accelerated. A workaround was implemented for broken Intel GPU drivers
under MSWindows.

Release Notes for Version 2.47

Further shipout and scaling problems were fixed. Unused files were removed.
Multiple-page documents now produce PS instead of EPS output.

Release Notes for Version 2.46

The pen width is now accounted for in the bbox function. The relative
alignment of a label to a path now transforms correctly with picture
rotation. Various shipout issues were fixed. The ghostscript library
location from the MSWindows registry is now ignored for compatibility
with TeXLive.

Release Notes for Version 2.45

The xasy graphical front end for Asymptote has been rewritten to
support code reordering, using Qt5 and scalable vector graphics.
An uninitialized counter was fixed. A stable=true option was added to sort.
The restricted simplex method has been replaced by a complete simplex
solver that handles general size constraints. The rpc library has been
replaced by the tirpc library. The dvips utility is forced to respect
EPS requirements again. The system ghostscript library is now used by
default for dvisvgm. Make clean now removes GSL symbols. The MSWindows
system path is no longer modified by the installer. A CLZ bug was fixed.

Release Notes for Version 2.44

Floating point exceptions are masked again under CYGWIN, pending strtod bug fix
(issue #65). Various portability issues were also addressed.

Release Notes for Version 2.43

The real modulo operator was fixed. Vector SVG output is now supported for
PDF tex engines. Compilation under MacOS X was fixed. Both 32- and 64-bit
MSWindows binaries are now available.

Release Notes for Version 2.42

Bitreverse and popcount functions were added. An overflow in the modulo
operator was fixed. An asymmetry in angle(transform t) was fixed so that
angle(yscale(-1))=0. Missing 3D underline characters were fixed.
The MSWindows binary is now 64-bit.

Release Notes for Version 2.41

The rendering of Bezier patches was improved. Minor improvements were made
to perpendicular marks in the geometry package. A perl issue was addressed.
Two unwanted temporary files are now removed after TeX processing.
EPS output is now supported with all TeX engines. A workaround was
implemented for the ImageMagick jpeg black background bug.

Release Notes for Version 2.40

A partial workaround for the OpenGL transparency bug was implemented, by
presorting transparent triangles of the same material. The examples were
updated and a segmentation fault was fixed. Multisample detection, surface
rendering, and crack filling algorithms were fixed. The default compilation
flags now specify -std=c++11.

Release Notes for Version 2.39

A workaround was implemented for the backwards incompatibility in the
TeXLive 2016 graphicx package. Empty tick labels in graphs are now avoided.
A paletteticks NoTicks option was added. Support for lualatex was improved.
Renderers for Bezier patches and curves more efficient than those
in the deprecated GLU library were implemented.

Release Notes for Version 2.38

An integer division operator # was added. Control points in xasy are now
correctly parsed. Longitudinal splitting in the revolution structure of
the solids module was fixed. Portability fixes were implemented.
The ncurses library is now only required with --enable-readline.
A --disable-sigsegv configuration option was added.

Release Notes for Version 2.37

The xasy graphical user interface now runs under both Python 2.7 and Python 3.
Legacy versions (prior to 9.14) of Ghostscript can be supported by
assigning settings.epsdriver="epswrite" (or by setting the environment
variable ASYMPTOTE_EPSDRIVER to epswrite). The quiet flag suppresses
noninteractive standard output when settings.verbosity <= 1. A progress
function was added to the plain_strings module. The smoothcontour3 module
was optimized to use Bezier triangles where appropriate, along with a
built-in least-squares routine and an improved root finder based on
quadratic interpolation. If settings.sysdir is empty, preference is given
to a version of kpsewhich in the same directory as the executable for
determining the correct sysdir. The handling of degenerate normals of
Bezier triangles was fixed. Bugs in forking, integer formatting, dash
adjustment, subpaths, and guide reversion were fixed. Version 1.30 of
asymptote.sty (auto-generated) and version 0.35 (or later) of media9.sty
are now required.

Release Notes for Version 2.36

Bezier triangle patches have been implemented in place of degenerate Bezier
tensor product patches. Surface rendering was improved. The configuration
of the readline and gc libraries was fixed. The asy configuration
directory is only created if localhistory=false. Patches are now sorted by
projected distance. Animations were fixed by running LaTeX twice.
The asy-mode.el headers were updated. Intermittent segmentation faults and
floating point exceptions in the OpenGL renderer were fixed. Support for
GSL 2.0 was added. A quite nan constant was added. Straight segments are no
longer split in bezulate. Segmentation faults in tab completion were fixed.
A work around for a clang 3.7.0 compiler bug was implemented.
The smoothcontour routine was sped up. Several bugs in the file read routines
were fixed. A bug in rest argument signature equivalence was fixed.
Threads are no longer used in batch mode, except under MacOS X. A convenience
function graphicscale was added for using graphic with the ConTeXt tex
engine. The splinetype detection for Spline surfaces was fixed.

Release Notes for Version 2.35

A work around was implemented for a ghostscript eps2write bug that forces
all postscript to the first page, breaking multiple 3D XeLaTeX and ConTeXt
labels.

Release Notes for Version 2.34

The readability of named pen colors was improved in the documentation.
A surface cone(path3 base, triple vertex) routine was added for
constructing an approximate cone over an arbitrary base. A test for
Ghostscript 9.14 or later was added to the build process. The documentation
was updated. A CYGWIN warning message under Windows 8 was fixed.

Release Notes for Version 2.33

A work around was implemented for the missing epswrite driver in
ghostscript-9.15. Deconstruction is now always done in the C locale.
A work around for a unit change in dvisvgm-1.5.3 was implemented.
The path arc(pair B, pair A, pair C, real r) function was fixed.
The handling of the boolean condition in parametric surfaces was fixed.
The default meshlight was changed to nolight so that mesh lines with
positive width appear consistent with the default mesh lines.
A nonsquare image dimension error was fixed. The definition of the
SimpleHead arrowhead was fixed. The zoom/menu button and play option were
fixed. An intersect(path, surface) function was implemented.
A smoothcontour3 module written by Charles Staats and leminiscate example
were added. The inline asymptote.sty option now works with xelatex.
An obsolete workaround for an Adobe Reader transparency artifact
was removed. An asylatexdir option was added to support the pdflatex
-output-directory option. An aligndir option for aligning the picture to
an arbitrary point of the page boundary was added. The garbage collector was
updated to gc-7.4.2. The documentation was updated.

Release Notes for Version 2.32

The libc++ stringstream workaround was also enabled for FreeBSD.
The segment(bool[] b) function was fixed. The side(pair,pair,pair) function
was renamed to orient(pair,pair,pair) and an error in its documentation was
corrected. New functions orient(triple,triple,triple,triple) and
insphere(triple,triple,triple,triple,triple) were implemented. A random
number generator incompatibility on some platforms was fixed. Support was
removed for the obsolete utility texi2dvi4a2ps. Compiler warnings were
suppressed.

Release Notes for Version 2.31

Hangs in 3D font generation and also in the "none" tex engine were fixed.

Release Notes for Version 2.30

Compilation issues were addressed. A workaround for the broken stringstream
container in MacOS 10.9 libc++ was implemented. The OpenGL zoom/menu button
was fixed.

Release Notes for Version 2.29

The TeX bidirectional pipe was overhauled to support the context tex engine
again. The luatex and lualatex tex engines were enabled. The inline option
used by the asymptote.sty LaTeX package and the inlineimage option used for
generating external PRC files were fixed. Portability issues were addressed.

Release Notes for Version 2.28

A locale bug that interfered with the 3D PRC camera transformation was fixed.
Minimum OpenGL window constraints were removed in favour of the viewportsize
variable. The transform(u,v,O) function, which projects onto the plane
spanned by u and v through point O, was fixed. Numerical overflow issues in
quadraticroots and cubicroots were fixed. The documentation was updated.

Release Notes for Version 2.27

Move Adobe transparency workaround to C++ code to allow use of texpreamble
again with the pdflatex tex engine.

Release Notes for Version 2.26

The xasy graphical user interface now terminates the asy process on exit.
The xasy code editor under MSWindows was fixed; the default code editor is
now winpad. Degenerate HookHead and SimpleHead arrows were fixed.
Portability issues were addressed.

Release Notes for Version 2.25

A superfluous play button in rendered 3D images embedded by recent versions of
media9 is now suppressed. The contour.asy module was reverted to a previous
stable linearized version. A numerical precision issue in makepen was fixed.
A routine for drawing braces was added. Deep recursion is now avoided in
guide flattening. A workaround for an Adobe Reader transparency artifact
was implemented for the pdflatex and xelatex tex engines. Raw PRC output
can now be generated with the "-f prc" command-line option. Vector patches
are now sorted to work around opacity artifacts in many rendering engines.
The xasy code editor now accepts command-line options. Under MSWindows,
the ghostscript library is searched for in both the 32 bit and 64 bit
registries. The FAQ and documentation were updated.

Release Notes for Version 2.24

A segmentation fault in drawSphere was fixed. Recursive calls to simpson
are now supported. The explicit libglapi dependency was removed.
A latexmkrc example file that shows how to store figures in a subdirectory
is now included.

Release Notes for Version 2.23

Compilation without the FFTW library is now supported again.

Release Notes for Version 2.22

Self-defined unary operators are now allowed. Formatted strings instead of
real values are compared in OmitFormat. The segment(bool[]) function was
rewritten to use the more efficient segmentlimits(bool[]) call.
Unnecessary buffering of surface and path3 data was removed.
Portability tweaks were made.  References to out-of-date trembling
examples were removed. Vertex-colored triangles now work again in Adobe XI.
The transformation of normal vectors was fixed.  PostScript extend
qualifiers were added for axial and radial shading. The TEXMFMAN
environment variable is now used to find the TeXLive sysdir.

Release Notes for Version 2.21

Explicitly transformed billboard labels now work correctly again.
The alignment point of OpenGL billboard labels was fixed. An extend
parameter was added to the axes (default true) and axes3 (default false)
routines. A history recall bug was fixed. A typo was corrected in the
documentation of the Jacobi elliptic functions sncndn.

Release Notes for Version 2.20

A work around was implemented for a dvipdfmx bug that prevents the
xelatex tex engine from properly embedding PRC objects. Billboard rotation
is now disabled for explicitly transformed labels.

Release Notes for Version 2.19

Numerical resolution issues with the PRC camera orientation and viewportshift
were fixed. The lighting of NURBS surfaces was fixed. The special 8192
strlen NSIS build was now correctly reinstated, with stubs, to prevent the
installer from overwriting Windows PATH environment variables > 1023 bytes. 

Release Notes for Version 2.18

A compilation issue on MacOSX was addressed. Secondary axes pictures now
inherit the size of the primary picture, so that the markthin marker works
properly. The special 8192 strlen NSIS build was reinstated to prevent the
installer from overwriting extremely long Windows PATH environment variables.

Release Notes for Version 2.17

A bug with non-square pen function images was fixed.  Autoscaled
logarithmic axes were fixed. Offscreen and non-offscreen rendering are now
supported in a single binary (requiring OSMesa version 8), with
settings.offscreen defaulting to false. The media9 LaTeX style file is now
used to embed 3D PRC content instead of movie15. Local 3D coordinates are
now used. PRC Part names are no longer generated by default. A bug in 
bezulate was fixed. A settings.axes3 flag was added to control the
visibility of PRC axes. An efficient 3D routine for drawing many
triangles, with specified vertices and optional normals or vertex colors,
was implemented.

Release Notes for Version 2.16

Ticks are no longer autoscaled when the number of major intervals is
specified and autoscale is false. Manual tick scaling was fixed. A bug in
the palette range was fixed. A division by zero in constructing curved arrows
was fixed. A numerical underflow was fixed. A picture bound error was
fixed. The current value of currentpen is now always respected in default
arguments. A default viewportwidth is no longer imposed for attached
images. A routine for computing camera positions was added. The format
command is now more consistent with C++ printf formatting. Named arguments
can now appear in function calls after rest arguments. The wheel example
was improved to support PDF animations. The erase command no longer resets
the machine state. Pipes are now used for xasy communication. A new mode
parameter to input and output replaces xinput, xoutput, binput, and
boutput. The icon directory path for 64-bit MSWindows systems was fixed.
Compilation of native CYGWIN binaries is now supported.

Release Notes for Version 2.15

A compilation problem under MacOS X was fixed.

Release Notes for Version 2.14

Minor problems in the geometry module were fixed. Billboard interaction is
now disabled for offscreen rendering. A markthin(path) marker with opacity
thinning was implemented. A locale string was added to format(string,int).
The copy, map, and sequence functions were generalized to arbitrary depths.
Asymptote can now be compiled as a shared library. A tuple operator was
added. The draw(revolution) function now defers drawing until the final
camera position is known. Nonrendered preview images can now be generated
for fitted pictures. String reads from binary files were fixed. An int
ascii(string) function and a bool isnan(real) function were implemented.
Jacobi elliptic functions were implemented. A quick reference card was added.
Compilation and static initialization issues under MacOS X Lion were addressed.

Release Notes for Version 2.13

Compilation and installation issues were addressed.

Release Notes for Version 2.12

Minor compilation issues were addressed.

Release Notes for Version 2.11

A new offscreen (software) 3D rendering option supports rendering on
machines that are remote or lack a working video graphics card.
Shifted pens now work correctly. The handling of whitespace in word mode
file reads was fixed. A transpose argument was added to the pen function image
facility, for consistency with the other image functions. The limit
calculation of parabola and hyperbola was fixed in the geometry module.

Release Notes for Version 2.10

PRC vertex-shading for straight patches was implemented. A general image
routine that uses a pen function of two integer parameters was implemented.
A 3D pixel routine was added. A temporary expression is now used to avoid
side effects in self operators. Keyword-only function arguments were
implemented. The sizing routines were recoded. Bugs in drawline and
geometry were fixed. The geometry module no longer overloads the built-in
circle and ellipse functions. PDF TeX engines are now supported in xasy.
Directory prefixes are no longer stripped from .js and .prc file names.
The TeXShop instructions were updated. The asymptote.sty LaTeX style file
was updated to allow leading spaces  before \end{asy} and to introduce a
keepAspect keyval option. Segmentation faults were fixed.
Unwanted state-dependency was removed from the startTrembling function of
the contributed trembling module by introducing a tremble structure
(backwards incompatible change); see the example floatingdisk.asy.

Release Notes for Version 2.08

Legend markers now work again.

Release Notes for Version 2.07

The -P option required by ghostscript 9.00 was added. The limits command
now works correctly with reversed axes. The asyinclude command of
asymptote.sty was improved so that asy source files do not need to be sent
to publishers; the asy extension is now optional. A mktemp function was
implemented. Further MSWindows installer problems were addressed.

Release Notes for Version 2.06

Compilation problems and build issues were fixed.

Release Notes for Version 2.05

Arbitrary depth array constructors were re-instated. Profiling code was
added. Spaces within file names and eps file attachments are now supported
in inlinetex mode, and interference from any pre-existing aux file is
avoided. A new auto-generated version (1.21) of asymptote.sty contributed
by Will Robertson features a latexmk-compatible asyinclude command.
Path-overwriting bugs in the NSIS MSWindows installer were circumvented.

Release Notes for Version 2.04

Subdivision cracks in transparent labels are no longer filled.
Warning messages from the FP package are suppressed. MSDOS line terminators
are now handled; DOSendl and DOSnewl line terminators were added.
Files generated in inlinetex mode can now be renamed without editing their
contents (using asymptote.sty version 1.19). The man page was fixed.
The documentation of render.merge was fixed. 

Release Notes for Version 2.03

An optional asydir parameter that allows asy files to be generated in a
subdirectory was added to version 1.18 of asymptote.sty; XeLaTeX support was
fixed. Nonrendered preview images via render=0 are now implemented.
Blank 3D labels were fixed. Problems with arc directions and ellipses in
the geometry module were fixed. The definition of the Dotted linetype was
improved. Missing pen and margin parameters were added to the blockconnector
function calls. Virtual methods were optimized. Makefile dependencies were
fixed and autogenerated files are cleaned up. The dependence of the source
tarball on perl was removed. Minor improvements were made to the
documentation and man page. The Asymptote installation directory is now
automatically added to the MSWindows path.

Release Notes for Version 2.02

A global latexusage.asy file is no longer generated, in favour of
individual latexusage-*.asy files (this is a backwards incompatible
change). Global and local values can now be given for both the inline and
attach asymptote.sty (version 1.15) options. Underscores were removed from
the .pre and .tex file names in inlinetex mode. Latexmk support was added
for compiling individually only those figures that have changed; this
requires that the inline option be used for 3D figures.
The asy() function was fixed. A multiple fraction bar bug in texpath was
fixed. Warning messages and portability issues were addressed. A frame
label alignment problem was fixed. PDF animations are now supported with
the XeLaTeX TeX engine.

Release Notes for Version 2.01

The normal vector for perspective projections was fixed. Individual
processing of each figure within a LaTeX document is now supported.
The fontsize package uses type1cm.sty again since fix-cm.sty does not
appear to work as advertised. Uninitialized item bits are cleared.
Extended for statements now support the var type. PenMargin is used in
drawing a binarytree. Minor optimizations were made.

Release Notes for Version 2.00

The construction of 3D TeX labels was sped up greatly. Plain TeX page
numbers were suppressed. Dotted 3D lines and 3D sizing problems were fixed.
A general search function for sorted structures was implemented; the
lexorder functions in math.asy now return strict partial orders. Additional
GSL functions were added. The correct PRC units (PostScript pt units,
properly called bp) are now displayed in Adobe Reader.

Release Notes for Version 1.99

A segmentation fault was fixed. Perspective animations were fixed. A bug in
the bezulate topological sorting algorithm was fixed. A framedelay setting
was added for working around OpenGL animation rendering buffer overruns.
Further optimizations were made. A portability issue was addressed.

Release Notes for Version 1.98

Memory usage and garbage collection were greatly improved, and many
optimizations were made. Labels are now aligned using the rotational instead of
the shiftless part of the transform. A portable CYGWIN memory limit fix was
implemented. Noncyclic strokepaths are discarded to work around a bug in gs 8.71.

Release Notes for Version 1.97

A new render.labelfill option (enabled by default) fills subdivision cracks in
unlighted labels. The dependence on gcc-4.3 was removed. Offscreen detection and
zoom bugs in the OpenGL renderer were fixed. Three-dimensional grouping was
improved. The symbol table was replaced with a custom hash table. Portability
updates were made. The Cygwin memory limit fix for MSWindows now works even on
systems that lack a complete Cygwin installation.  The examples were updated to
exploit the new PRC rendering options.

Release Notes for Version 1.96

The viewpoint function and some examples were updated.

Release Notes for Version 1.95

The PRC driver has been overhauled to support model tree groups, lossy
compression, efficient representations of elementary geometrical objects,
and specialized rendering options. More efficient OpenGL thick tubes were
implemented; the capping of 3D curves was improved. The SIGQUIT signal was
replaced by SIGTERM. Under MSWindows, the 384MB Cygwin memory limit is now
automatically disabled by the Asymptote installer. Inferred variable types
were added and operator symbols are now pretranslated.

Release Notes for Version 1.94

Workarounds for MSWindows registry problems and obsolete runtime libraries
were implemented. The SimpleHead arrowhead was fixed. Additional matrix
routines and casts were implemented. The pair dir(path, path) routine now
returns a unit vector. Variable conflicts coming from the contour module
were addressed. A RadialShadeDraw filltype was implemented. A guide bug was
fixed. Redundant mismatched version warnings are avoided. Support for
fitting one 3D picture within another was added. The documentation was updated.

Release Notes for Version 1.93

Portability issues were addressed. Latticeshading bounds and behaviour
under svgemulation were fixed. The initial SVG pen was fixed.
A parallelogram block was added to the flowchart module.
Temporary files are cleaned up even after TeX errors. The GUI export
function was fixed; an SVG export option was added. The XeLaTex bounding
box was fixed. Spaces in output directory names are now allowed for
supporting drivers. One can cd to other directories, preserving the output
directory. All output files are written to the directory part of
settings.outname; if this is empty, the current directory is used.

Release Notes for Version 1.92

Labels work correctly with oblique projections. Transformed Label
alignment and pt scalings were fixed. Latticeshading is now properly clipped.
The normal and true Circle calculations were fixed. The interface to the
simpson integrator and an array index in contour.asy were fixed. In the
flowchart module, the implicit cast from a pair to a virtual node was
removed in favour of a block constructor. The ode integration routines now
return a structure that includes the sampled time values; dynamic
timestepping was implemented for solveBVP. New predefined tick modifiers
were added. The CLZ and CTZ bit functions were implemented. PRC part names
were fixed. The GL library is now explicitly linked. Memory usage was
improved by configuring the garbage collector with --enable-large-config.
Null 3D paths are ignored. Non-pdf output is supported for PDF tex engines.
Portability changes for CYGWIN 1.7 were made.

Release Notes for Version 1.91

The precision of the 3D perspective sizing routines were improved.  The
offset in transformed 3D labels with render=0 was fixed. 3D planar
arrowhead gaps were fixed; a duplicate 3D arrow angle factor was removed.
Pen width contributions to the box and ellipse envelopes were fixed. A more
robust contour algorithm based on paraboloid approximation was implemented.
A polargraph routine for arrays was implemented. Default font problems were
fixed. The pdfborder={0 0 0} option was added to settings.hyperrefOptions;
the hypersetup command is now used to avoid hyperref option clashes.  The
size of pngalpha images was fixed; the pngalpha driver is used only if
antialias=2. The -alpha Off default convert option was removed in favour of
convertOptions="-alpha Off". Inlinetex support for xelatex was updated.
Picture transformations are now respected by latticeshade. The Bessel
functions J and Y were renamed to Jn and Yn. An operator --(block, block)
was implemented to simplify the flowchart syntax. The expression % expands
to the last result returned at the interactive prompt. The GLU-1.3 library
included in the MSWindows distribution was fixed.

Release Notes for Version 1.90

SVG axial, radial, and emulated tensor-patch shading were fixed; the
dependency on dvisvgm-0.8.7 was documented.

Release Notes for Version 1.89

The draw, fill, and clip commands now pass raw SVG code directly to dvisvgm
(version 0.8.6 required); zero-length paths are output as circles.
Unsupported SVG elements are converted to PNG images; unimplemented SVG
features such as Gouraud and tensor-patch shading can be (partially)
emulated as vector elements using the -svgemulation option.
The control point normalization of rational NURBS surfaces was fixed;
3D NURBS curves are now implemented. A problem with inlinemovie3 was fixed.
The linetype pattern is now a real array: for backwards compatibility, a
string is still accepted, but the return type of linetype(pen) is now
real[] instead of string (backwards incompatible). The split routine was
changed so that an empty delimiter splits on spaces, discarding duplicates.
The palette routines are now guaranteed to generate at least the
specified number of colours. PNG output produces a transparent background.
Surface and path3 garbage collection was fixed.

Release Notes for Version 1.88

Compilation without OpenGL was fixed. PRC billboard labels were
implemented; settings.billboard was renamed to settings.autobillboard
and by default enabled for all 3D labels. The surface constructor for
embedding labels on surfaces now draws both the top and bottom faces by
default. The meshpen, knot, weight, and color arrays are now properly cached.
The example fequlogo.asy illustrates how to draw an arbitrary 3D background
plane. The intermediate dvi file is now removed when producing SVG output.
Improvements were made to the tutorial.

Release Notes for Version 1.87

Support for SVG output was added (requires dvisvgm-0.8.4). Billboard
labels were implemented for the OpenGL renderer. OpenGL animations were
improved: reverse and step menu items were added, along with a framerate
setting. An addStereoViews function and example stereoscopic.asy were added.
The addViews function was generalized to handle any layout; the default
layout was changed from ThreeViewsFR to SixViewsUS. PRC node names are
now implemented for curves, surface, labels, and dots. OmitTick was
generalized to omit both major and minor ticks. A graphicx.tex workaround
was implemented to parse paths properly. A viewportsize bug was fixed.
A memory deallocation bug was fixed. The ENDIAN test was fixed. The ucyclic
and vcyclic parameters are no longer set for conditional surfaces. The
erase() function clears the PostScript canvas again. A projection()
function that returns the interactive camera parameters was implemented.
A hyperrefOptions setting was implemented. The tutorial was improved.

Release Notes for Version 1.86

PRC polygons were optimized. Surface memory usage was reduced.
The automatic sizing of NURBS surfaces was fixed. A bug in the radius of
curvature computation at nodes was fixed. The configuration test for the
GNU readline library was improved. The naming of PRC parts was implemented.

Release Notes for Version 1.85

Compilation is now supported again on platforms lacking OpenGL.
Missing pen dimensions were added to a 3D picture sizing routine.
The labelsurface routine was renamed to surface and extended to surfaces
containing a single patch.

Release Notes for Version 1.84

The perspective PRC viewportmargin was fixed. Unwanted spaces were removed
from (version 1.10 of) asymptote.sty. Support for drawing PRC and OpenGL
NURBS surfaces was added. Obsolete code, including an unwanted inline
qualifier, was removed. A split structure that can be adapted for splitting
intersecting patches was added, along with the example splitpatch.asy.

Release Notes for Version 1.83

OpenGL animations, illustrated in glmovie.asy, were implemented. 
Viewportshift flicker was fixed. An empirical translation between
OpenGL and PRC shininess was implemented. Splined parametric surfaces are
now used to implement smooth thick lines and tubes. The projected bounding box
calculation and angle calculations were fixed. A labelsurface function was
added. The Headlamp light is now the default light; a light argument was
added to shipout. Patches are now constructed with the usual orientation
for a counterclockwise external path; the convention for tensor product
shading was updated. Picture environments for TeX clipping are no longer
nested. A texpath initialization bug was fixed. An ASYMPTOTE_HOME
environment variable was added. Viewing was fixed for file names
containing spaces. A picture sizing bug was fixed. An example of an inset
graph was added. Type information for variables is now returned at the
interactive prompt. Warning message suppression was improved; warnings in
Asymptote code can now be disabled. The cyclic member of an array is now
writeable; the obsolete cyclicflag and void cyclic(bool) functions were
removed. File mode functions are now virtual members; this backwards
incompatibility requires that line(file f) be changed to f.line(), etc.

Release Notes for Version 1.82

Threaded exports were fixed. The texpath fontsize was fixed for PDF tex engines.
A default currentprojection argument was added to transform3(projection).
The -gray and -bw settings are now respected in PRC output.
A consistent approximation is now used for drawing tube centers.
Missing pt units were added to all fontsize examples.

Release Notes for Version 1.81

A boolean targetsize option can now be used to draw 3D labels with the apparent
size they would have on the target plane.  The camera adjustment algorithms
were fixed; the autoadjust flag is respected. Missing path3 functions
such as endpoint(path3) were added. The doubleclick timeout under MSWindows
was fixed. A workaround for a ConTeXT small font bug is illustrated in
contextfonts.asy. File associations are now used under MSWindows for
psviewer, pdfviewer, display, and animate. Single quotation marks are now
allowed in filenames. Deconstruction is now only supported in PNG format;
the xformat setting was removed. The example lmfit illustrates
Levenberg-Marquardt nonlinear least-squares fitting.

Release Notes for Version 1.80

The interface for changing the precision for XDR/binary files was
simplified; file parameters can now be queried as virtual members.
The zoom/menu action was improved to emulate a double-click and assigned again
to the right mouse button; a left-button binding bug was fixed.
New settings zoomfactor, zoomstep, spinstep, arcballradius, resizestep, and
doubleclick were added. The OpenGL thread is now exited gracefully; idle
state and other parameters are properly reset on quitting. Lighting is now
initialized only in home(). Animations with global=false were fixed.
An improved (and free) psview PostScript viewer is now suggested for MSDOS
users. A mechanism for disabling annoying warnings like "writeoverloaded"
was implemented. The documentation directory under TeXLive was fixed.  

Release Notes for Version 1.79

The perp vector calculation in the solids module was fixed. A bug in the
mouse motion functions was fixed.  A pan action (which differs from shift
due to perspective distortion) was added to the OpenGl renderer;
the Camera (c) menu item now outputs all camera settings. The default right
mouse button mouse binding was changed from "zoom/menu" to "zoom".
User-initiated exports no longer cause the renderer to quit.
Dynamic time stepping was fixed in the ode module; the "integrate"
routines now return the array of computed values. Operators == and != were
added for all built-in arithmetic 2D arrays; a segmentation fault was
fixed. The etc/fstab kludge for Cygwin 1.7 was removed. The configuration
directory under TeXLive is now $TEXMFCONFIG/asymptote.

Release Notes for Version 1.78

Thread locking issues were fixed. The linegranularity is now respected when
drawing thick curved lines. A bug in FSAL ODE integrators when using a
fixed time step was fixed. Missing miterlimit defaults were added.
Xasy was updated to use Python 2.6.2 and Imaging-1.1.7b1 (which requires no
alpha support patches). Obsolete patches were removed.  More TeXLive build
issues were addressed: the install-prebuilt target omits texhash and does
not attempt to install PNG files for asymptote.info. A configuration
problem with --disable-gc was fixed. The 3D mouse bindings are now
customizable. Support was added for generating syntax highlighting for the KDE
editor Kate.

Release Notes for Version 1.77

Splined parametric surfaces were implemented; a bug in the Cartesian
splined surface routines was fixed. An ode module for solving ordinary
differential equations was added. A bug in maxtimes and mintimes was fixed.
A Levenberg-Marquardt nonlinear fitting routine was added. The format
command now returns TeX compatible output only in math mode. A path3 label
alignment problem was fixed. The MSWindows support for TeXLive 2009 was fixed.

Release Notes for Version 1.76

A bezulate bug was fixed. The resolution and caching of texpath were
improved; for PDF tex engines, the basealign pen attribute is now
respected. Support for OCG layers was added. Lights Headlamp and White were
implemented; the predefined adobe light was removed. Holes are now handled
in superpath-to-surface constructor when planar=true. A degenerate
transform3 issue was fixed. The alignment of rendered and PRC images was
improved; the angle for rendering absolute projections was fixed. Inaccurate
TeX and ConTeXt font scalings were fixed. A texsize(string, pen=currentpen)
function returns the raw TeX dimensions {width,height,depth}. A new version
of asymptote.sty (1.07) fixes attach=true mode.

Release Notes for Version 1.75

Issues with 3D labels and texpath, both in inlinetex mode and with the
ConTeXt TeX engine, were resolved. A bug in bezulate was fixed. A partial
workaround was added for the unimplemented -output-directory ConTeXt
option (the current directory must still be writeable). The aspect ratio
and viewportmargin calculation in module three was improved, with tighter
3D bounds. A bug in the intersections(path3, surface) routine was fixed.

Release Notes for Version 1.74

An error in the surface bounding box routines was fixed. Path/surface
intersection routines were added. PDF tex engines are now supported for
3D labels and texpath. The new ConTeXT tex engine can be used for both 2D
and non-PRC 3D drawings. Projections LeftView, RightView, FrontView,
BackView, BottomView, and TopView, along with an addViews function, were
implemented. Portability fixes and various updates to support TeXLive
builds were made. The dependence on currentprojection in label(Label,
path3) was removed. The font command for LaTeX tex engines now requires all
four NFSS (encoding, family, series, shape) arguments.

Release Notes for Version 1.73

An alternative OpenGL background color can now be specified with the pen 
currentlight.background. A new textpath command allows 3D labels to be
drawn with settings.texengine="none". Minor bugs in the geometry package were
fixed. The interface to the vectorfield routines was improved.
The autoadjust parameter was removed from orthographic projections;
autoadjust=false is now always respected for perspective projections.
Optional warn=true arguments were added to the polar, azimuth, colatitude,
and latitude functions. A call to reportError interrupts execution again.
A segmentation fault that can occur after file mode errors was fixed. 

Release Notes for Version 1.72

PostScript calculator function shading was implemented. Interactive camera
parameters of the native OpenGL renderer can now be queried.
The effective camera positions for oblique projections was fixed.
Philippe Ivaldi's geometry_dev module was merged into geometry.asy;
trembling_pi was added as trembling.asy. The GSL module was expanded.
An extrude routine for labels was implemented. Rotated path
label alignments were fixed. The alignment of 3D axis labels was fixed.
The basealign pen now always typesets "ace" and "acg" at the same location.
Arrow endpoint detection was fixed. A sysdir setting was added, along
with an --enable-tetex-build configure option. The store argument of
saveline is respected again. Left-justified trailingzero alignment was
fixed; a signedtrailingzero specifier was added. Boolean conditions on
linearly interpolated surfaces now suppress function evaluation.
The adaptive algorithm used for rendering thick lines and tubes was
improved. An ambiguity in the flowchart module was fixed.
A patch is included to work around an MSWindows XP problem with 3Dgetview
in the 2009/03/23 version of movie15.sty. A problem with spurious menu
interaction zooming was fixed. The asy.bat MSWindows batch file now
respects all command-line arguments.

Release Notes for Version 1.70

A labelpath3 module for typesetting curved labels in 3D, contributed by Jens
Schwaiger, was added. PenMargin2 was defined for use with planar arrowhead
types like DefaultHead2. A center=false parameter was added to projections
to allow one to automatically center the target within the bounding volume.
The ambiguity in the surface function was resolved. Problems with spaces in
filenames were fixed.

Release Notes for Version 1.69

Internal patch degeneracies were removed by splitting. Bugs in the
windingnumber and the intersection routines were fixed. The inside(path)
routine was improved; a fillrule argument was added. The bezulate connect
routine was improved. Bezulate is now automatically applied to path arrays:
surfaces should be constructed directly, without first calling bezulate.
A workaround for recent changes in the hyperref package was implemented.
The divisor setting was replaced with purge(divisor=0). The calls to baseline
in graph.asy were fixed. A miterlimit attribute was added to pens.
Animation problems were fixed. Lighting problems with multiple exports and
a quit deadlock were fixed. A new version of asymptote.sty (1.06) fixes
an undefined \ASYbox.

Release Notes for Version 1.68

Support for 3D inline pdf movies was added. Camera adjustment was fixed;
the filesurface.asy example illustrates automated camera and target
computation. A deadlock in the export loop was fixed. A new version of
asymptote.sty (1.05) fixes the definition of \ASYanimategraphics.
The handling of intersection fuzz was improved. The baseline routine was
generalized. New paragraphs are now allowed in minipage labels.
Some minor errors in the documentation were fixed.

Release Notes for Version 1.67

Spurious annotation question marks in 3D PDF attachments were fixed;
attached images are now printable. The asy environment defined in the new
(1.04) version of asymptote.sty supports keyval options width, height,
viewportwidth, viewportheight, and attach; the obsolete asyattach
environment was removed. The default viewportwidth is the linewidth in
inline mode and 0 in attached mode. Planar projected arrows were fixed.
Automatic camera adjustment was improved. A minimum viewportsize can now be
specified. The control points for cyclic segments produced by texpath were
fixed. Overlap issues in planar surface patches were fixed. Surface
constructors were simplified: the routine planar has been replaced by
surface(path3) and in most cases there is no need to call bezulate directly.
An Align constant was added. The parameter limits used in buildcycle were
fixed. The intersection routines now respect the fuzz parameter.
Segmentation faults involving null cyclic guides were  fixed.
Subpath now preserves the straight flag. Pictures containing graphs
now transform correctly; unextended axes limits and tick selection were
improved. Axial and radial shading respect now respect -gray. The animation
prefix was fixed. An example of drawing a surface from irregular data was
added. A work around was implemented for an intermittent hang on exit in
the 3D native renderer. An auto3D option was added for controlling the
poster option. The 2008/10/08 version of movie15.sty is now compulsory.
The cd %USERPROFILE% command was removed from asy.bat.

Release Notes for Version 1.66

An alignment problem with the pdflatex tex engine was fixed.
Problems in the animations module were fixed, including a broken
ImageMagick layers optimization. Optional direction arguments
were added for three-dimensional bars. The appearance and alignment of the
planar arrowheads DefaultHead2, HookHead2, and TeXHead2 was improved; they
now accept an optional normal argument and respect the filltype.
A transverse/longitudinal confusion was fixed in the solids module.
The camera adjustment routine was improved and is now controlled by the
autoadjust=true option for perspective projections; the user is notified
when the camera is moved. The obsolete featpost3D.asy module was
removed. Midpoint interpolation was reinstated for drawing contours.
The Asymptote license was upgraded to the GNU Lesser General Public License.

Release Notes for Version 1.65

The xelatex tex engine was implemented. Bugs in pdflatex output and the
xelatex alignment were fixed.

Release Notes for Version 1.64

Support was added for XeLaTeX PDF specials. The target point is not forced
to be part of the control volume for absolute projections. The directory is
now stripped from the animation prefix; generated PDF animations are no longer
automatically deleted. New parameters xsize and ysize of the asyinclude
function of the slide module are illustrated in interactive 3D examples in
intro.asy. A Protein Data Bank example was added to illustrate the
generation of predefined views. The slidedemo example was fixed.
The license of the PRC code and tools was upgraded from GPL to LGPL.  

Release Notes for Version 1.63

Support was added for XeLaTeX (which requires a modified version of
movie15.sty; note however that PDF specials are not yet implemented in
dvipdfmx). The 2D contour routines were generalized to handle nonuiform
lattices; interpolation artifacts are now avoided when the midpoint
function values are unknown. The ncell parameter for 3D contours was
replaced by nmesh. The complex gamma function was implemented. Interactive
rendering of preview images is now properly synchronized. The bounding
volume is now automatically expanded to include the target position.
An interactive 3D surface of revolution example was added to slidedemo;
rendered images are now automatically included when fitting non-PRC
pictures. Duplicate beginclip/endclip functions in pstoedit.asy were
removed and the pstoedit-3.45 patch was updated to fix compilation errors.
Errors on EOF after reading 0 values are no longer reported. One-column
legends are now handled correctly. Old-style constructors were replaced
with operator init. An electromagnetic spectrum example was added.

Release Notes for Version 1.62

Outputting PDF format to other directories was fixed. An int hex(string)
function that casts a hexadecimal string to an integer and a 
pen rgb(string) routine that returns a pen corresponding to a given
6-character RGB hexadecimal string were added. In the dot routines, Label
arguments were added and minor bugs were fixed. A parametric version of
markuniform was added.

Release Notes for Version 1.61

A workaround was implemented for a dvips misconfiguration in TeXlive 2008
that introduces unwanted %%BeginPaperSize commands into the EPS output.
The -q option was reinstated; the asymptote.py Python module was fixed.
The bezulate.asy module now enforces the same zerowinding fillrule as used by
dvips. In solids.asy, a warning is issued if the silhouette routine is used
in a fully 3d context. The freeglut extensions to support user-specified
multisampling values were re-instated. A freeglut segmentation fault
triggered by spurious window creation in the export loop was fixed. An
aspect ratio problem was fixed. A string[] to int[] ecast was added. A
Pentype function was added. The asydir() function was fixed under MSDOS.

Release Notes for Version 1.60

An optional bool3 condition was added to the graph functions, allowing one
to skip points or segment a graph into distinct branches, based on a
user-supplied test (see the example gamma.asy). A gettriple routine was
added. The interp function first promotes its pen arguments to the highest
colorspace. Export exceptions are now caught gracefully. Under UNIX,
xasy can now be run from a write-protected directory again. A work around
was implemented for the inability of the movie15.sty package to handle
spaces in filenames. Stack overflow diagnostics were improved. A read from
pipe failure under MSDOS was fixed.

Release Notes for Version 1.59

A missing filltype option for projected 2D arrowheads was added.
The scaling of plain TeX fonts was fixed. Examples that mix 3D exporting and
viewing now work properly. With the -nothreads option, the main process
now waits for 3D exports to finish before proceeding. Conflicts in slide
presentations were fixed; the asy(string) function assigns defaultfilename
correctly. A bug in processing command-line options was fixed.

Release Notes for Version 1.58

Two-dimensional arrowheads are now drawn automatically for 2D projections.
ArcArrow3 routines were added. Standard pen arithmetic is now used in all
colorspaces, so that interp(pen,pen,real) and Gradient(pen[] p) now work as
expected. A Wheel palette was added and is used in the example gamma3 to
indicate the phase of the complex Gamma function. A silhouette routine for
solids of revolution is illustrated in the examples spheresilhouette.asy
and hyperboloidsilhouette.asy. Problems with 3D axis label alignments were
fixed. The example scaledgraph illustrates how to factor out an axis
scaling. Interactive mode is now exited on EOF, unless exitonEOF=false.
Support for open function signatures was added. A conflict between
asymptote.sty and the breqn package was fixed. PNG images for the manual
are now built in a separate directory so that they don't take precedence
over PDF files. A problem with xasy under MSDOS was fixed.

Release Notes for Version 1.57

The pdflatex texengine was fixed. The default MSDOS "start-in" directory is
now %USERPROFILE%, for compatibility with the MSWindows Vista operating
system. Temporary files are now generated in the directory specified by
the -outname (-o) command-line option, so that write access to the current
directory is no longer required. Various font size problems were fixed.
The axis coverage calculation was improved. An object(Label, envelope, ...)
constructor was added, along with support for object transformation and
alignment. Clipping is now allowed across page boundaries;
beginclip(picture, path[]) and endclip(picture) functions were implemented.

Release Notes for Version 1.56

A bounding box bug in the latex texengine was fixed.
The font scaling is now rounded to the nearest integer. The wait=true
argument of shipout was fixed. The documentation of grid3 was fixed;
examples of using grid3 with scale(true) were added. The handling of the
asydef environment within Emacs lasy-mode was fixed. An asyinclude function
for embedding 3D PRC graphs in slides was implemented.

Release Notes for Version 1.55

A serious bug in drawing paths of length 0 that broke the dot(pair)
routine was fixed. Problems in guide to path and path to guide conversions
were fixed. A triple invert(pair) routine was added to invert a pair z
onto the projection plane. The obsolete field of view factor was removed.

Release Notes for Version 1.54

The filltype of three-dimensional labels is now respected when render=0.
Multiple file batch mode under MSWindows was fixed. The reverse(guide) and
guide examination routines were fixed. A reverse(guide3) routine was added.
Curved cyclic paths of size 1 were fixed. Fork is now used by default under
MSWindows pending stable CYGWIN POSIX thread support; this can be overridden
with settings.threads=true. The need to remove latexusage_.pre along with
latexusage-* and latexusage.aux when switching between latex and pdflatex
usage was documented.

Release Notes for Version 1.53

Forking problems under Windows 2000 were fixed and MS-DOS style path
warnings were suppressed. Problems with PRC projection sizing and the
rendering logic were fixed. The toolbar is now enabled by default within
the asyattach environment. Two-dimensional transforms no longer prevent
three-dimensional labels from being projected onto the initial viewing
plane. Out-of-memory errors in the OpenGL renderer are caught again.
The new tube module was documented and a trefoilknot example was added.

Release Notes for Version 1.52

Support for generating PRC output on bigendian machines was added.
Multisampling was improved: by updating the freeglut library to svn version
761, one can now specify an antialiasing pixel width with the parameter
multisample, which is now an integer. The asymptote.sty and asycolors.sty
files are now installed by default in $TEXMFLOCAL/tex/latex. The OpenGL
renderer by default now uses POSIX threads instead of fork. A work around
for the nonstandardized signature of gluNurbsCallback on various MacOS
platforms was implemented. Planar vertex shading was fixed. A planar
argument to surface was added. To work around rendering problems with some
graphics cards, the window is now hidden only when iconify=true. A tube
module was added. A setlocale segmentation fault was fixed. Now that we
require a multithreaded version of the Boehm garbage collector, the
installation instructions were updated for using the system version. An
optional user=false argument was added to min(picture), max(picture), and
size(picture). The dependency of asy-mode.el on the cc-mode.el source file
was removed.

Release Notes for Version 1.51

A separate multisample setting is used to control screen antialiasing;
multisampling is now only enabled when viewing. The problem of multiple
glInit calls is fixed. A more conservative multisampling patch for freeglut
is supplied. The OpenGL process is now always forked for better
performance. The last freeglut extension was removed.

Release Notes for Version 1.50

Detection and support for the native glut library on MacOSX now allows
Asymptote's adaptive OpenGL renderer to be used on all major platforms.
The OpenGL renderer now supports antialiasing; a race condition and export
problems were fixed. The new default value of maxtile=(0,0) denotes
the screen dimensions. Lighting problems due to incorrect normal
orientations were fixed. The up vector for embedded PRC output was fixed.
A viewportmargin parameter was added to allow for a larger viewport.
An iconify setting was added for UNIX systems that support rendering in an
iconified state. An embed option (default true) was added to allow one to
suppress the embedding of a rendered preview image. A new version of
asymptote.sty (1.01) supports file attachments, which provide a better way
of embedding 3D PRC files in a LaTeX document. The latexusage file prefix
was renamed from latexusage_ to latexusage-. A numerical precision issue in
the surface of revolution constructor was fixed. Support for
three-dimensional dimension bars was added; PenMargin3 and DotMargin3 were
fixed. The argument put=Above (put=Below) should now be replaced by
above=true (above=false); this is a backwards incompatible change.

Release Notes for Version 1.49

Issues with surface normals that led to incorrect lighting were fixed.
By default, the mean(pen[]) routine now returns an interpolated pen with the
minimum opacity of all given pens. A patch reverse(patch) function was
added. The settings.keep flag is now handled correctly in texpath and
strokepath. A cornermean function for surfaces was added. Several
examples that illustrate patch and vertex shading were updated.

Release Notes for Version 1.48

High-resolution OpenGL tiled rendering was implemented. Support for
vertex-dependent colors was added. Centering of perspective projections
was improved. Rendering artifacts in planar surfaces and thick lines were
fixed. A Gradient palette that varies linearly over a specified range of
pens was added. An improved surface constructor for convex
three-dimensional paths was added; the planar constructor should now only
be used for nonconvex paths. A DefaultHead2(filltype filltype=Fill)
arrowhead was implemented, along with an optional filltype argument for
HookHead2. New maxheight, hstretch, and vstretch parameters were added to
legend(). A boolean user=true argument was added to the point(picture, pair)
function; the framepoint routine was removed in favour of
truepoint(picture, pair, user=false). A roundbox envelope routine was
added. An antialias setting (default true) was added. A bug in xasy and an
incorrect precontrol bug in write(path) was fixed. Compilation with
standard glut for systems without freeglut is now supported.

Release Notes for Version 1.47

Support for simple obj files and patch-specific surfacepens and meshpens
was added. Surface constructors for triangles were added. Three-dimensional
margins were implemented. Flat 3D arrowhead types HookHead2 and TeXHead2
were implemented. By default, 3D arrowheads are now always drawn with
currentlight. A missing angle parameter in HookHead3 was added. Functions
that construct a pen array from a given function and palette were added, as
illustrated in the example elevation.asy. A bug in the cyclic path write
functions was fixed. A strokepath(path g, pen p) function was implemented.
A missing put argument in grid3 and a missing transform for projected 3D
mesh lines were fixed. File prefix problems were fixed. Spurious "camera
too close" errors were fixed. Tighter three-dimensional bounds are generated.

Release Notes for Version 1.46

Support was added for embedding 3D PRC files within LaTeX even when 
settings.render=0. An error is now signalled if the user tries to render an
image without freeglut library support. The Klein bottle example was
updated to use lightgray instead of the new default surface color (black).
The sphere animation example was updated to work with the new skeleton
structure in the solids module.

Release Notes for Version 1.45

Bugs in the solids of revolution and graph3 modules were fixed;
longitudinal curves are split into front and back pieces. Min and max
arguments were added to axes and axes3. Rendering artifacts are now
avoided. When render=0, 2D and 3D objects are now sized consistently.
The automatic camera adjustment was improved. Bugs in thick three-dimensional
lines were fixed; thick lines are now drawn with fewer Bezier patches and
3D Linetype offsets are supported. The appearance of unitcones and arrows
was improved. New arrowhead3 types HookHead3 and TeXHead3 were added. The
default surface color is now black. New surface and path constructors were
added. Secure options can now be queried as read-only settings.

Release Notes for Version 1.44

Full interactive 3D support has been added to Asymptote, with the option of
generating and embedding 3D PRC data in PDF files or rendering scenes
directly with Asymptote's own fast OpenGL-based renderer.  The implicit
casts from 3D to 2D objects were removed (in favour of call explicit calls
to project).  A path[][] texpath(string s) routine was added to convert
string into the paths that TeX would fill. Add boolean stroke parameter was
added for shading (and clipping to) stroked paths.  The Circle and Arc
routines were fixed.  Autoscaling of graph axes limits is now disabled by
default.  A path3 path3(path p, triple plane(pair)=XYplane) constructor was
added; the path3 routines were moved to C++ code.  Optimized and robust
versions of the intersection, windingnumber, inside, and surface extrema
routines were implemented.  The lighting routines were replaced by the
OpenGL model.  Each Asymptote process once again uses a separate
currentpen.  A segmentation fault and an incorrect parameter in the
Delaunay triangulation routine were fixed.  This major overhaul of the
three-dimensional graphics has necessitated a few backwards
incompatibilities. The most significant change involves filldraw:

filldraw(polygon(5),red);

should be replaced by

draw(surface(polygon(5)),red);

Also, the solids module has been improved so that

revolution a=revolution(O--X+Z,Z);
a.filldraw(red,blue);

is now more sensibly written as

revolution a=revolution(O--X+Z,Z);
draw(surface(a),red);
draw(a,blue);

Release Notes for Version 1.43

A new array(n, value) function returns an array consisting of n copies of
value. Conditional drawing of surfaces meshes was implemented. Vector
field support was improved. Graph tick selection without autoscaling
was improved. By default, all 2D axes are drawn below existing objects.
An interface for drawing contours on arbitrary nonoverlapping
meshes was added. Optional support for Jonathan Shewchuk's more robust
triangulation routines was added. The file precision setting can now be
queried. A beep() function was added. The partialsum function now returns an
array of the same length as its argument (backwards incompatible). Dash
offset and font selection bugs were fixed. Modules to redefine LaTeX named
fontsizes for 10pt and 11pt article documentclasses were added. Problems
in asy-mode.el were fixed. A problem with label alignment was fixed.
The international inch is now used instead of the U.S. survey inch.
The code now compiles cleanly under gcc-4.3.0.

Release Notes for Version 1.42

A routine was added for projecting a Label onto a given plane;
an ambiguity in the three-dimensional scale routine was resolved. 
An inside(path p, path q, pen fillrule=currentpen) routine was added to
determine if one path is strictly within another. Optional arrows were
added to the slopefield routines. The movie function now generates
multipage PDF animations when format="pdf" and global=true; a fit argument
was added to support an optional filled bounding box for each movie frame.
Casts were added between the hsv structure and pens. Bad casts from TeX
bidirectional pipe are now caught. In inline latex mode, TeX headers are
now output only when needed. A bug in the cancellation of text addition in
xasy was fixed. The sticky bit is no longer set when creating the ~/.asy
directory. The documentation and FAQ were updated.
The dot(real[] a, real[] b) routine now returns the dot product of the
vectors a and b; this introduced a backwards incompatibility:
dot(x,y) should now be replaced with dot(pairs(x,y)).

Release Notes for Version 1.41

Python-style array slices were added. The array virtual field A.keys
returns the indices of initialized entries. The concat routine can now
take an arbitrary number of arguments. The write functions now output
nothing for uninitialized values instead of producing an error. A bounding
path is stored in the object structure to allow connections to
noncardinal boundary points. The buildcycle algorithm was improved.
The expression dir(E) is a synonym for E. The visibility of unsplit solid
slices is now properly resolved. A drawpen argument was added to FillDraw.
The uniform(real a, real b, int n) function returns a uniform partition of
[a,b] into n subintervals. Complex exp, log, sin, and cos functions were
added. An interface to the internal adaptive simpson integration routine
was added. History lines are now stored immediately after input (as well
at exit, after stifling). Support for the HSV colorspace was added.
The dependence of non-PDF animations on the animate.sty package was removed by
renaming animate.asy to animation.asy (PDF animations still need to import
animate.asy). Transparency groups are now respected by xasy.
TeX diagnostics were improved. An obsolete function for drawing boxes on
pictures was removed in favour of draw(Label,box).

Release Notes for Version 1.40

Hatch widths for PDF output were fixed by disabling dynamic line width
adjustment. A nurb-related bug in solid shading was also fixed.

Release Notes for Version 1.39

In the animate module, a constructor bug was fixed and the temporary
multipage pdf movie file is deleted by default.

Release Notes for Version 1.38

For perspective projection, nonuniform rational B-splines (NURBS) are now
approximated by adding additional control points to Bezier curves.
Inline PDF movies can be generated directly within LaTeX files (requires
animate package, version 2007/11/30 or later). SimpleHead, HookHead, and
TeXHead (Computer Modern) arrow styles were added. FillDraw is
automatically reduced to Draw for noncyclic paths. Empty clipping bounding
boxes were fixed. The xasy diagnostic Console should now work reliably on
all platforms. Graph and interpolation array length diagnostics were
improved. The axes routines now take optional xlabel, ylabel, and zlabel
arguments defaulting to empty strings. The autoformat axes tick label
routines now try to add an extra digit of precision. Pen arguments were
added to the flowchart block routines. A path&cycle operator was added.
The read1, read2, and read3 routines now affect only the current operation.
A -c (command) option and exit() command were implemented. Ambiguous
expressions are now resolved by interactiveWrite (with a warning). A patch
is included for fixing problems with the Asymptote backend for pstoedit-3.45.

Release Notes for Version 1.37

The speed and useability of the graphical user interface has been greatly
improved, including full transparency support under MSWindows.
The intersections routine was fixed, and an optional fuzz parameter was 
added. A bug in the arrow routines was fixed. The 2D graph routines were
improved when autoscaling is disabled, secondary axis bugs were fixed,
and the automatic logarithmic axis coverage routine was re-enabled.
Degenerate 3D reference vectors are now handled and the default 3D
tick directions were improved. The array returned by intersections is now
automatically sorted. A patch is applied to avoid out-of-memory
segmentation faults with gc-7.0. A history(int n=1) function can be used to
return the interactive history. Automatic semicolons are now added to the
history. Locale bugs were fixed. A string[] split function was added.
Installation, uninstallation, and diagnostics under MSWindows were
improved. A marker dot routine was added. The output(s,update=true)
function was fixed. Configure now uses a system version of Boehm GC if the
recommended local version isn't present.

Release Notes for Version 1.36

Recently introduced bugs in the tex(), postscript(), gsave(), and grestore()
commands were fixed.

Release Notes for Version 1.35

A hang in testing for the intersection of nearly identical paths in
solids.asy was fixed. The numeric formatting of setdash arguments was fixed.

Release Notes for Version 1.34

An innovative graphical front end to Asymptote (xasy) has been developed.
Clipping of labels is done within a picture environment to avoid unwanted
page breaks. The default LaTeX font is now package-dependent. The syntax
was generalized to allow expressions such as (x). Comments are now
supported when reading strings in csv mode. Nesting capacity overflows
in arctime were fixed. The autoscaling of graphs for close minimum and
maximum values was improved, the default tick format is automatically
adjusted to make tick labels unique, and a general trailingzero format
string was added. Improved, robust versions of intersect and
intersectionpoints were implemented (based on a new routine
intersections). A permissions bug was fixed. A filltype argument was added
to the dot routines. Printer stack use was optimized by pruning unneeded
gsave/grestore commands. Temporary EPS files are now removed in inline PDF
mode. A discussion of the 3D generalization of Hobby's algorithm used in
Asymptote was added (intro.asy).

Release Notes for Version 1.33

Routines to find the 3D and projected 2D bounding boxes of Bezier surfaces
were added to the surface module, along with the standard teapot example.
Extended for loops were documented. The page numbering of slide
presentations with stepping enabled was fixed. The int type is now a long
long type (typically a 64-bit integer).  Support for reading and writing
64-bit integers in binary and XDR modes and large file support were added.
Input files are now opened in input-only mode. Multiple invocations 
of labelpath now work. A projection bug in the grid3 module was fixed.
The search path order was changed: directories specified by the dir
configuration variable are now examined before the .asy subdirectory in the
user's home directory. User configuration files are ignored during
installation. Some bugs in asy-mode.el were fixed. Texput files are
removed again. A memory allocation incompatibility in the workaround for
old, broken readline libraries was fixed. The framepoint and truepoint
routines now work even when an exact picture size estimate is unavailable;
a picture scaling bug was fixed. Writing to a file specified with
-o /dir/file.eps is allowed again.  A quarticroots solver was added, the
cubicroots solver was improved, and a complex quadraticroots solver was
added.  A workaround for broken texi2dvi installations was implemented.
Memory leaks were fixed. The garbage collector was update to gc-7.0;
upgrading to gv-3.6.3 is also recommended. A segmentation fault in
complement was fixed.

Release Notes for Version 1.32

A recently introduced segmentation fault in subpath was fixed.
The current directory can now be examined with cd() even if globalwrite is
false. The cd path is now only written once in interactive mode.
Further garbage collection improvements and leak fixes were made.

Release Notes for Version 1.31

Garbage collection was dramatically improved, resulting in reduced memory
usage and increased speed. The options -compact and -divisor and the
function purge() were added to give the user more control over garbage
collection. The array virtual member function delete() with no arguments
explicitly deletes all elements of the array.
An interpolate(real[][] f, pen[] palette) function was added for
constructing the pen array needed by the latticeshade routine.
A nullpath frame and picture sizing bug was fixed.
LaTeX diagnostics were improved. A facility that does not rely on
garbage collection finalizers was implemented for closing open files
at the end of each asy process.

Release Notes for Version 1.30

Constructors were added. Routines to allow access to guide
components were added. The three-dimensional projection and contour
routines were optimized. A tickmodifier NoZero and ticklabel format
NoZeroFormat were added. A simplified gouraudshade interface was added.
A linewidth bug was fixed. The array insert and delete routines were
generalized. The new array virtual member "initialized" can be used to
detect whether an element is initialized. All fonts are now automatically
embedded in PDF files. Inline PDF animations now require version 2007/05/24
or later of the animate.sty package. General root solving routines were added.
The implicit initializer for files is null. Boolean arguments 
were added to the image and shading routines to allow one to disable
data buffering. The functionality of the readline routine was split into
the routines history, readline, and saveline. Many fixes were made to 
the Emacs asy-mode.el.

Release Notes for Version 1.29

Support for drawing surfaces described by the null space of real-valued
functions of three variables was added. The dir command now works correctly
for degenerate Bezier paths; an optional final argument can be used to
examine incoming and outgoing tangent directions. Numerical overflow and
precision issues were addressed. A piecewise monotonic spline type and
example were added. Optional fillpen and legend entries were added to
histogram. The "q" command quits in interactive mode only if there is no
top-level variable of that name. Standard input of strings was
fixed. Support for transparent PNG images in xasy was added.  Animation
support was upgraded to use the new animate.sty package rather than the
interim pdfanim_temp.sty package.

Release Notes for Version 1.28

TeX error handling was improved. A dvipsOptions configuration variable was
added. A recently introduced bug in the XDR routine xinput was fixed.
Compilation under the upcoming GCC 4.3 release is now supported. 
Nonglobal PDF animations, where each frame is separately scaled and written
to a file, were implemented. Reading from standard input now works correctly
even in the absence of a working readline library.  A build problem under
Fedora Core 5 was fixed. Parallel builds are now supported.

Release Notes for Version 1.27

A Hermite spline graph interpolate type was added for smoothly joining
sampled functions.  The cycle3, tension3, and curl3 keywords were
respectively renamed cycle, tension, and curl. Assignments no longer write
the value at the prompt.  A bug in longitudinal skeleton detection was
fixed.  The filloutside routine now works with paths that extend beyond the
current boundary. The unit n-point cross function returns a cyclic path.
The "append" argument of the output function was renamed to
"update", which now allows both reads and writes to the data file.
Negative arguments to seek mean relative to the end-of-file; a seekeof
function was added. PDF animations can now be loaded from an external file.
The TeX pipe handshaking was improved. TeXLive 2007 is now supported under
MSWindows. A work around was implemented for a MikTeX bug in handling file
names containing spaces.

Release Notes for Version 1.26

The correct surface normal is now used when calculating lighting; a Klein
bottle example was added.  The front/back detection of the transverse
skeleton of solids of revolution is fixed. A better camera-independent
reference value for resolving path3 orientation is used. A 3D midpoint
routine was added.  Tick values for broken axes can now be autogenerated;
broken logarithmic axes are also supported.  A 2D aligned axes example was
added. A patch that fixes a redisplay bug in gv-3.6.2 is included.

Release Notes for Version 1.25

A new picture size routine, which maps specified user coordinates to a
given final size, provides a convenient way of forcing the plotted
subregion of a graph to have a fixed size. The correct surface
normal is chosen when calculating lighting. The comment character can now be
escaped when reading strings from data files (but is disabled when reading
raw characters with getc). The new word file mode is useful for reading
white space-delimited strings. PostScript output files are now explicitly
designated as EPSF in the header line. The minimum width and height of
flowchart blocks may now be controlled separately. Interpolation and knot
theory modules were added. The usage of path vs. guide in the base files was
standardized.

Release Notes for Version 1.24

Structures now have implicit initializers. PDF animations are supported in
inline tex mode by communicating the texpreamble to LaTeX. The asypreamble
environment was removed in favour of corresponding Asymptote commands in
the asydef environment. Default y tick values were fixed.  The binary space
partition now works correctly for projections from infinity; an arbitrary
target point can be specified for perspective projections.  A 3D version of
the intersectionpoints routine was added.  Unconditional binary logical
operators & and | and bitwise integer functions AND, OR, XOR, and NOT were
defined; the array boolean operators && and || were renamed to & and |.
The PostScript clipping code was fixed. The angle(rotate(x)) routine now
always returns x (mod 360).  User debugging errors are now cleared.
The fontsize package was updated to use fix-cm.sty instead of type1cm.sty.
The Microsoft Windows registry is checked for both GPL and AFPL Ghostscript.
A workaround was implemented for a pdflatex vertical offset bug.
Segmentation faults in the Delaunay triangulation and image codes were fixed.

Release Notes for Version 1.23

Microsoft Windows autoconfiguration has been implemented by querying the
registry: Asymptote and the applications it depends on may now be installed in
any location. The shipout command is allowed to write to other directories
if and only if -global is true. An autoimport configuration setting was
added. Importing the Gnu Scientific Library (gsl) now works on all
platforms. A texpreamble environment to contain the LaTeX preamble for
both LaTeX and Asymptote was added to asymptote.sty. A conflict with the
French babel packages was fixed. Background picture sizing in the slide
presentation package was fixed.

Release Notes for Version 1.22

Problems with loading LaTeX packages and slide presentations were fixed.
Non-static variables in every loop iteration are now allocated anew.
Formatting under locales with nonperiod decimal separators was fixed,
along with logarithmic tick labels near the machine epsilon.  Concatenation
of nullpaths was fixed. New path markers were added and the perpendicular
symbol in the geometry module was improved. The skeleton routines in the
solids module were split to provide finer control.  Routines to facilitate
drawing 3d contours were added. Reading portable XDR binary data into
arrays works again; functions for reading and writing also in native binary
formats were added. The TeX preamble is no longer output in inline
mode. The TeX pipe is now aware of a previously generated aux file. Memory
leaks were fixed. An inline limit is now imposed on old compilers to speed
up compilation. Setlocale warnings are disabled unless debugging is on. A
colorspace command for extracting the colorspace of a pen was added. An
Asymptote introductory slide presentation was added and a user-written
Asymptote tutorial is now cited in the manual.

Release Notes for Version 1.21

Expressions entered at the interactive prompt are automatically evaluated
and written to stdout. The routine intersectionpoints returns all
intersection points of two paths.  Bounding box computations of paths drawn
with transformed pen nibs were fixed.  Transparency and automatic
colorspace promotion are supported when shading and drawing images.
A grid3 module for drawing 3D grids and a binary tree module were added.
Automatic tick computations were improved: the actual tick value is now
passed to the ticklabel formatting routine, even for logarithmic axes.
A tickmodifier routine gives users complete control over which of the
auto-generated ticks actually get drawn.  The contour drawing and filling
routines were improved.  A --where option makes --listvariables show where
global functions and variables are declared.  Emacs asy-mode was improved,
including function source code lookup.  An optional labelpath interface to
the PSTricks pstextpath macro was implemented for drawing curved labels
along paths.  In inline latex usage, picture are no longer scaled by
default (use \begin{asy}[\the\linewidth] to recover previous default of
scaling to line width).  A texcommand option was added to override the tex
engine command name. The slide presentation module no longer forces
pdflatex; bibliography support was added, figuremattpen was reimplemented,
and the spurious vertical shifting of bullets was fixed. Compilation under
AIX and IRIX systems is supported.

Release Notes for Version 1.20

Explicit yaxis label angles were fixed. Loading and including diagnostics
under the -vv option were improved. The Emacs asy-mode now respects
TeX-electric-sub-and-superscript. The texpath configuration variable and
diagnostics were fixed under MSWindows.  Low-resolution palettes now
display correctly.  A routine to fill cyclic contours was added, along with
the example fillcontour.asy. A command-line option to change the current
working directory was added. The FAQ was updated.

Release Notes for Version 1.19

Bezier surfaces were implemented, along with tensor and Coons patch
shading. The cylinder function was changed to be consistent with the cone
function. The intersect routine now returns an array of two reals.
The unitsize, xunitsize, and yunitsize arguments of shipout have been
replaced with a unitsize function. The seconds() function now works
portably. Minor bugs in inside() were fixed; a winding number routine was
added. The movie bounding box is set to the largest bounding box of all
pictures. Portable high-quality embedded PDF movies are now supported, as
well as portable external movies.  An embedded U3D example was added.
Alignment positioning transformation was fixed; a Rotate(pair) and a
string(real x) routine was added. Flowchart routines and the labelbox and
advection examples now work with pictures as well as frames.
An add(picture pic=currentpicture, drawer d) wrapper was added; a picture
rescaling bug was fixed. Tex error handling was improved. Optional bounds
arguments were added to verbatim postscript and tex commands. Writing to
only the local directory is allowed unless the -global (or -unsafe) option
is specified. A final backslash continues a line on the interactive prompt;
a new multiline option is convenient for cutting and pasting code in
interactive mode. Clipping now sets the true size coordinates to 0. Memory
usage was reduced. The documentation was updated, including a description
of how to produce Debian binaries from RPM binaries.

Release Notes for Version 1.18

A pen caching problem and clipping bugs were fixed. Bugs in interactive
mode and in linemode string reads were fixed. The picture.scale() routine
now guards against division by zero. The drawing of surface meshes was fixed.
The minbound and maxbound functions were implemented also for arrays.
The labelx, labely, xtick, and ytick routines respect the current graph
scaling. The asycolors.sty file was updated to remove the pstricks
dependency. The slide package now works with both latex and pdflatex; the
colordvi dependency was removed. A nativeformat() function returns "eps"
or "pdf", depending on the current tex engine. The pdf() and latex()
functions are now visible. The usepackage and minilatex modules check for
latex mode. Static variable allocation is now discussed in the FAQ.
An image histogram and contour example was added. The diatom example was
modified to illustrate interaction of fixed-sized and scaled coordinates.

Release Notes for Version 1.17

A workaround for a garbage collection bus error under MacOS X was implemented.
A uniform histogram routine was added to the stats module. New frequency
binning routines were added. The argument order of the nonuniform frequency
binning routines was interchanged for consistency (backwards incompatible).
The FAQ was updated. 

Release Notes for Version 1.16

Inline LaTeX mode was fixed. The legend routine was generalized to allow
multiple entries per line; an example was added.  The truepoint
function was renamed framepoint. A function truepoint that works like point
but accounts for fixed-sized objects was added.
The picture.calculateTransform function now returns the actual transform used
for fitting in the case where only an approximate picture size was
available. A 2d frequency binning routine was added to the stats module.
A memory leak was fixed.

Release Notes for Version 1.15

Graphics label bounds and incorrect path bounds in latticeshade were
fixed.  The LaTeX color package is now used for the latex and pdflatex engines,
to keep them informed of the current color.  A unitlength of 1pt is now 
enforced in inlinetex mode.  In cases like 2D graphs where only an
approximate picture size estimate is available, the transform is adjusted
so that the fitted frame meets the size specification.  The cube animation
and binary space partition were fixed.  The determinant of a singular
matrix now returns 0 instead of an error.  Temporary pdf files are removed.
The gv patches were removed since these are included in the long-awaited
gv-3.6.2 release. A workaround for a compilation problem under MacOS X
10.3.9 was implemented. A DIN 15 CAD package and new examples were added.

Release Notes for Version 1.14

General affine transforms and clipping may be applied to TeX labels;
bugs in label alignment transformation were fixed.  The TeX engines latex,
pdflatex, tex, and pdftex are supported.  Separate xunitsize and
yunitsize scalings are allowed.  Graph axis bound communication was added
to allow axes with ticks and unextended axes to be called on an empty
picture.  Path labels are drawn after the path (to support UnFill).
Filltype definitions were standardized; a Draw filltype was added (for
drawing a bounding box around a label).  New filloutside routines were
added. Images can be drawn for irregular mesh contours and two-dimensional
pen arrays. Landscape slides automatically enable PDF autorotate option.
A MetaPost buildcycle routine was added. Setlocale errors are ignored.
The "Cannot write to venn_.tex" error under Windows XP was fixed. Very old
readline libraries found on many MacOS X systems are detected. The editing
mode asy-mode.el supports Emacs version 21. The option
\usepackage[inline]{asymptote} is now supported under both latex and pdflatex.


Release Notes for Version 1.13 

Image and contour transposition conventions for matrices were standardized;
resolution arguments were removed from the matrix contour routines.
The bounding box is now correctly calculated for square pen caps.
A bug in drawline was fixed. An up argument was added to the projection
routines to specify the camera orientation. The definition and
documentation of cone was fixed; surface function signatures were
consolidated. New 3d examples were added. Legends and markers are now
allowed when drawing superpaths. Zero page alignment no longer suppresses
labels; bounding box fuzz was removed. Intelligent interactive
auto-completion was added. If scroll is negative, an entire page is
scrolled. Support for Adobe Reader annotations was added.
Write without data arguments now works like write with data arguments.
A list function displays all global functions and variables in a module.
The Emacs asy-mode.el was improved. A FAQ was added.

Release Notes for Version 1.12

PDF transparency was implemented. The documentation of Bezier curves was
improved. Bounding box calculations now account for label scaling.
A special case of the Step calculation in graph.asy was fixed.  The function
scroll(int) was changed to a setting; a quit (q) option was added to the
scroll facility. To avoid an unwanted ghostscript window, gswin32c (rather
than gswin32) is used by default for producing pdf files under MSDOS.

Release Notes for Version 1.11

The defaultformat string is used again for graph tick labelling commands
instead of an empty format string.  A workaround for the broken
libsigsegv-2.3 library that caused a premature exit(1) was implemented.
An extra blank line at the end of 3D array writes was removed; 3D array
transpose and copy functions were added. The realmult routine was moved to
runtime and documented.  The example embeddedmovie of embedding movies
within PDF files was added. Overflow diagnostic messages during mpeg merges
are now suppressed. A twice setting was added to resolve LaTeX references.
The settings module is now globally accessible.  Duplicate trace messages
were pruned. Debugger breakpoints can now be set using a matching substring
instead of a line number. Conditional breakpoints are now supported.
Runtime errors and interrupts no longer reset the interactive environment.

Release Notes for Version 1.10

Parametric surfaces were implemented and parametric graphs now respect
picture scaling. Fill and FillDraw now work for markers and superpaths.
A bug in reading strings from files was fixed. Support for MikTeX 2.5 and
Autoconf > 2.59 was added. Asymptote and output filenames can now contain
spaces. Interrupts are working again. A line-based debugger was implemented.

Release Notes for Version 1.09

The workaround for the gv-3.6.1 option handling bug now supports earlier
versions of gv, including gv-3.5.8. By default, Ghostscript version 8.54 is
used by the MSWindows version to produce PDF files.

Release Notes for Version 1.08

Resolution problems in the contour routines were fixed; null contour labels
are now suppressed. Configuration problems were fixed; the malloc
configuration checks were removed and the help command again knows the
correct location of the manual. In the slides package, some stepping bugs
were fixed, an institution field was added to the titlepage, and vbox
support (say for aligned equations) was added. A colorless(pen) function
that strips pen color attributes was added. A clean copy of the source
files is now shipped.

Release Notes for Version 1.07 

This release implements uniform and irregular mesh contour drawing
algorithms: contours can be individually labelled or filled using a
colour density palette. The flowchart interface and alignment were
improved.  A slope fields package was added. The arrow size limiting code
was fixed.  Some bugs in makepen were fixed.  Image and shading functions
now respect the -gray, -rgb, -cmyk, and -bw options.  Date arithmetic routines
were added. Several small bugs in the graph routines were fixed. Custom
three-dimensional projections can now be easily constructed.

The public keyword is now the default permission modifer.  A new keyword,
restricted, makes variables readable but not writeable outside the
structure in which they are defined (previous this was the default behaviour).
A user-transparent work around for the backwards-incompatible command-line
options of gv-3.6.1 was implemented. Various configuration problems were
addressed to better support the Asymptote rpm for the Fedora Core Extras
project. A cputime() function was added.

Release Notes for Version 1.06

General flowchart routines and an example were added. Papersizes other than
letter now work with -outformat pdf again.  Performance was improved by
avoiding unnecessary output flushing.  An asycolors.sty package was added
to make LaTeX aware of CMYK versions of predefined Asymptote colours.
The default pdf viewer for MacOS is now "open".  The -u option can now be
specified multiple times on the command line.  Optional x and y margin
arguments were added to Fill. A reverse video option was added to
slide.asy; titlepage and title by default call newslide, unless the
currentpicture is empty.  An argument was added to newslide to allow
stepping to be turned off for that slide. The slidedemo example now
generates any required eps files. A segmentation fault in eval was fixed.

Release Notes for Version 1.05

Shaded and skeletal representations of surfaces of rotation were
implemented.  New oblique projections were added and bugs in the 3D graph
routines were fixed.  An argument reversal in one of the add routines was
fixed.  A clipping margin was added to unfill.  General determinants were
added.  Sin, Cos, Tan, aSin, aCos, and aTan, which use degrees, are now
built-in functions. The dash adjustment algorithm was improved. The
cubicroots solver now works again when R=0. Internal operations are now
added for all variable declarations of new arrays and functions. Automatic
viewing can easily be turned off under MSDOS. Nonstandard paper sizes
are now correctly handled. The C locale is always used when producing
postscript patterns. Configuration problems were fixed. The editor
customization files asy.vim and asy-mode.el were moved to the Asymptote
system directory. Stepping of slide presentations can now be enabled from
the command line. Many new tests were implemented. The examples were moved
to the examples subdirectory of the documentation directory. 
RPM files are now released.

Release Notes for Version 1.04

A convenient presentation slide package was developed.  The misalignment of
TeX and PostScript layers was fixed by giving includegraphics the exact
bounding box. The overall bounding box was also fixed. The tension atleast
command and the clipping of remote labels by unfill near the frame boundary
were fixed.  Permission checking for types was added. The new point-like
truepoint function uses the actual current picture size. Locale support,
the ', I, and F format specifiers, and custom pagewidth and pageheight
settings were added.  A Ticks specifier draws ticks on both sides of the path;
format="%" also suppress tick labels for logarithmic axis.
The linetype adjustment to the arclength was improved and can now be
optionally disabled. Color names were systematized, including texcolors
and x11colors.  A general purpose user command-line option accepts arbitrary
Asymptote code as a string. All duplicate path points in three.asy are now
removed. A convenient fixedscaling picture sizing routine was added.
Selected special functions from the GNU scientific library, DESTDIR support,
and a Python module to access Asymptote commands were added.
The legend skip is now based on the actual legend entry height, not the
fontsize.  A backwards incompatibility was introduced in attach, add, and
legends (add and attach take arguments in the same order as label):

attach(point(E),legend(20E),UnFill) -> attach(legend(),point(E),20E,UnFill). 

Release Notes for Version 1.03

Support was added for compiling under gcc-4.1.0. A memory leak in
interactive mode was fixed. A procedure for using CJK fonts was documented.
The return type of the three-dimensional intersectionpoint routines was
fixed. A function for inverting 2D points projected from 3D back onto a
specified plane was added, along with a solid geometry package with
routines to draw cylinders. New xaxis(triple,real), min(guide3[]), and
max(guide3[]) convenience functions were added. A Degrees function like
degrees(pair), except that it returns 0 for a (0,0) argument rather than
generating an error, was added. Interactive mode (without command-line
editing or history) now works even in the absence of the GNU readline
library.  An upper limit (100000) on the number of calls to intersectcubics
per cubic segment was imposed on the intersection routines.  The
documentation was updated.

Release Notes for Version 1.02

Lighting was implemented for surfaces described by functions and matrices.
A bug in the positioning of axis labels was fixed.  The type of randMax was
fixed. Configuration and diagnostics were improved; the "dir" setting in
configuration files is respected. Under MSDOS, the configuration file is
now %USERPROFILE%/.asy/config.asy; configuration settings now work as
documented.  On UNIX systems, installation can optionally be performed
without root privileges. Errors thrown by the parser while reading the
configuration file are now handled gracefully.  The patches to pstoedit
were removed since they are now included in pstoedit-3.44.

Release Notes for Version 1.01

A bug in the surface plot of a matrix was fixed. A workaround was
implemented for the broken GNU readline/history library under MacOS.

Release Notes for Version 1.00

A pen bounds error was fixed. A bug in the linear equations solver was
fixed.  Images now transform properly and nonsquare images appear
correctly.  The legend argument of draw accepts a Label.  An interface to
the movie15 package for embedding movies, sounds, and 3D objects within a
PDF file was added.  A bug where nonsolid pen types were ignored was fixed.
Missing xpart, ypart, and zpart functions were re-added.  A segmentation
fault in format was fixed. An interface to the GNU readline function was
added to allow editing of input. A complement function was added.  A bug in
the 2D graph tick selection routines was fixed; xlimits and ylimits no
longer crop data by default. For consistency, the "includegraphics"
labeling function was renamed to "graphic".

Release Notes for Version 0.99

A bus error and compilation error under MacOS X were fixed. If -debug is
set, execution continues after the first error. The "make check" code was
fixed. The contributed MacOS X binary site is now mentioned in the
documentation.

Release Notes for Version 0.98

Command-line options and configuration variables were reorganized into an
Asymptote settings module, allowing default values to be set in
~/.asy/config.asy (~/.asy/options is obsolete).  Command-line options 
can be negated by prepending -no to the option name.  Type-dependent
function and record operators are now added to the parent record.
Execution stops after the first error in a runnable.  Two- and
three-dimensional array min/max functions for all ordered builtin types
were implemented. Comments are now allowed within 3d data blocks. The base
file plain.asy was split into many subfiles.  The currentpen nib is
respected.  Warning messages are suppressed when shipping out an empty
picture. The tick computation was fixed when xaxis and yaxis are called
with explicit limits. The -t option was removed as it is no longer needed
for generating inline tex files. Machine constants are now implemented as
variables rather than functions.

Release Notes for Version 0.97

An uninitialized pen transform bug was fixed. A workaround was added for a
readline incompatibility under MacOS X 10.4.3. Incorrect and missing names
for builtin function arguments were fixed. Duplicate functions were removed.

Release Notes for Version 0.96

A MetaPost-style makepen function allows the default pen nib to be changed
to any polygonal (possibly nonconvex) cyclic path.  A unitsize argument was
added to the shipout command.  Three-dimensional lighting effects were
added and illustrated with the Gouraud shading of a sphere. The MidArrow
attribute was fixed.  Builtin functions now have named arguments.  Brackets
are now part of the quote syntax. The write command was generalized
to allow writing a list of vectors as columns. Drawing to standard output
now works even when there are no labels.  The -noView command was replace
by -nView or -no View. Several segmentation faults were fixed. Custom axis
types were documented.

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. A legend problem was fixed. 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.
