PLplot Release 5.8.0
~~~~~~~~~~~~~~~~~~~~

This is a stable release of PLplot. It represents the ongoing efforts of the
community to improve the PLplot plotting package. Development releases in the
5.9.x series will be available every few months. The next stable release will
be 5.10.0.

     If you encounter a problem that is not already documented in the
PROBLEMS file, then please send bug reports to PLplot developers via the
mailing lists at http://sourceforge.net/mail/?group_id=2915 .

     Please see the license under which this software is distributed
(LGPL), and the disclaimer of all warranties, given in the COPYING.LIB
file.

N.B. This is the official notice that our deprecated autotools-based build
system is scheduled for removal starting with the 5.9.0 release.  The reason
for this decision is the PLplot developers and users are happy with our
CMake-based build system (see below), and nobody has been willing to spend
time maintaining our old autotools-based build system.

Note for Windows users:
The same holds for the old Windows build system in sys/win32/msdev. This
build system is much less flexible than the CMake-based system. It also
lacks a larger number of important features - freetype text, language
bindings and so on. With the 5.9.0 release the source distribution will
no longer contain this directory. Hence you should switch to the new
build system described below.

Note for gfortran users of our f95 bindings: gfortran version 4.2.1 or later
is a requirement, see fortran 95 bindings remarks below.

Note for OS-X users:
The Octave bindings no longer work for Octave 2.1.73. Work is ongoing to
try and solve this problem.


INDEX

1. Changes relative to PLplot 5.7.4
  1.1 Drivers
    1.1.1 cairo devices
    1.1.2 plmeta/plrender
  1.2 Fortran 95 bindings
  1.3 plmtex3/plptex3
  1.4 Octave 2.9
  
2. Changes relative to PLplot 5.6.1
  2.1 CVS to Subversion conversion
  2.2 CMake build system
  2.3 Plot Buffering
  2.4 Updated INSTALL/README
  2.5 malloc/calloc clean up
  2.6 Documentation
  2.7 Additions to the PLplot API
  2.8 Language bindings
    2.8.1 ADA language binding
    2.8.2 wxwidgets applications bindings
    2.8.3 Python bindings
    2.8.4 Fortran 95 bindings
    2.8.5 Octave 2.9
  2.9 Updated examples
  2.10 Drivers
    2.10.1 psttf
    2.10.2 svg
    2.10.3 wxwidgets
    2.10.4 pdf
    2.10.5 gd, wingcc (freetype)
    2.10.6 cairo
    2.10.7 pstex
    2.10.8 plmeta (and plrender application to render plmeta results).


1. Changes relative to PLplot 5.7.4 (the previous development release)

1.1 Drivers
   1.1.1 cairo devices
     The xwinttf driver has been renamed xcairo. In addition most of the
     other devices that are theoretically possible with Cairo have been
     implemented. These are a PostScript device (pscairo), a PNG device
     (pngcairo), a PDF device (pdfcairo), an SVG device (svgcairo), and a
     memory device (memcairo). The cairo device driver is still considered
     experimental as a whole. Known issues include improper text rendering
     with svgcairo and memcairo not working at all so those two devices are
     disabled by default.  The pngcairo, pscairo, and xcairo devices appear
     to work without problems and also give outstanding-looking antialiased
     and hinted results so are enabled by default. The pdfcairo device
     appears to work reasonably well so is enabled by default although it is
     not as mature as the other Cairo devices that are enabled.

   1.1.2 plmeta/plrender
     The combination of the plmeta device and the plrender application
     that renders plmeta results is unmaintained and has some known issues
     with strings, aspect ratio changes, and fonts.  Therefore, the plmeta
     device is now not enabled by default, and must be specifically enabled
     by the user using the -DPLD_plmeta=ON cmake option.  Furthermore,
     plrender is not built or installed and the plrender man page is not
     installed unless the plmeta device is specifically enabled.

1.2 Fortran 95 bindings

    Equivalance statements in our F95 bindings were causing problems for
    one fortran 95 compiler so we have dropped those equivalence statements
    and use the transfer intrinsic instead.  However, for gfortran that
    intrinsic was only implemented for version 4.2.1 so that is the
    minimum version requirement for gfortran now if you attempt to build
    the f95 bindings.  Note, earlier versions of gfortran build the f77
    bindings with no problems.

1.3  plmtex3/plptex3

    These two functions, which were added in release 5.7.3, had a number
    of bugs. These have hopefully been cleaned up. Example 28 demonstrates
    how to use these functions. The functions and the example have now been
    implemented for most language bindings.

1.4 Octave 2.9
  
    Octave 2.9 has a number of significant differences from version 2.1. 
    The octave language bindings have been updated to work with this new 
    version since the latest 2.9.x release is now the "recommended" choice 
    by the octave developers. Note that all the low-level plplot functions 
    work as expected. The higher level functions which replace the default
    octave / gnuplot plotting commands mostly work as for version 2.1. They 
    do not (yet) replicate the new and more Matlab-like functionality in 
    the latest 2.9.x releases of Octave.

    Note: As a result of the compatibilty code for octave 2.1 and lower the
    octave bindings will generate spurious warnings about obsolete built-in 
    variables when using octave 2.9. These can be silenced using the command
        warning("off","Octave:built-in-variable-assignment");
    before using the plplot bindings. This is not enabled by default as it 
    would also turn off genuine warnings in your own code which you might 
    want to fix. 


2. Changes relative to PLplot 5.6.1 (the previous stable release)

2.1 CVS to Subversion conversion

   PLplot now uses the Subversion (svn) version control system. Records of
all the changes and release tags have been preserved from the CVS repository.

2.2 CMake build system

   PLplot now uses the CMake build system (www.cmake.org) and the older
autotools build system has been deprecated and is scheduled for removal as
of the 5.9.0 release. The switch to CMake was made due its superior support
for Windows platforms and its relative simplicity compared to autotools on
Unix. To use CMake to configure and build PLplot follow the directions at
http://www.miscdebris.net/plplot_wiki/.

2.3 Plot Buffering

   PLplot core has been modified to buffer plot commands in memory rather than
via a unix pipe or temporary file. Testing has shown that there is 20-30%
improvement in plotting performance (i.e. speed). This is likely to be system
dependent and some may see a much larger benefit. This also resolves a problem
with some windows platforms where the temporary files were not getting deleted.

2.4 Updated INSTALL/README

   The INSTALL and README files have been updated. They now include detailed
instructions for building plplot using the new CMake build system on Linux
and Windows.

2.5 malloc/calloc clean up

   Checks have been added to many (all?) of the calls to calloc and malloc in
the PLplot core. The purpose of the check is to verify that the memory
requested was actually allocated prior to attempting to use it.

2.6 Documentation

   The API section has been expanded to include information about how to call
the functions from Fortran95, Java, Perl/PDL and Python. Since array dimension
information is typically redundant in these languages it is dropped in many
of the relevant function. Additionally, some of the Perl/PDL function calls
have a different argument order than their C equivalent. This section has also
been expanded to include a list of which examples each function is used in
(if any).

   The Fortran95 documentation has been updated.

2.7 Additions to the PLplot API

   The functions plptex3 and plmtex3 have been added to the PLplot API. These
allow the user to draw text in "3D" on the 3D plots. plptex3 is the 3D
equivalent of plptex and plmtex3 is the 3D equivalent of plmtex. Their
use is demonstrated by example 28.

2.8 Language bindings
  2.8.1 ADA
       Jerry Bauck has donated bindings to the ADA programming language.
    These bindings have been included into the CMake build system,
    and should be generated automatically if you have an ADA compiler and
    you specify the cmake option -DENABLE_ada=ON. The ADA bindings are now
    considered complete and the current focus is on implementing all of the
    examples in ADA to help test the bindings.  Until that work is completed
    these bindings should be considered experimental.

  2.8.2 wxwidgets applications bindings
       The wxWidgets bindings provide an interface to the PLplot API and a
    simple widget to be used in a wxWidgets application. The class
    'wxPLplotstream' inherited from the PLplot class 'plstream' allows access
    to the complete PLplot API. 'wxPLplotWindow' is a simple wxWidget which
    takes care of some preparatory work for convenient use of the PLplot
    Library within a wxWidgets application.

  2.8.3 Python bindings
    The Python bindings have been updated to use numpy rather than the now
    deprecated Numeric python numeric library.

  2.8.4 Fortran 95 bindings
    Equivalance statements in our F95 bindings were causing problems for
    one fortran 95 compiler so we have dropped those equivalence statements
    and use the transfer intrinsic instead.  However, for gfortran that
    intrinsic was only implemented for version 4.1.2 so that is the
    minimum version requirement for gfortran now if you attempt to build
    the f95 bindings.  Note, earlier versions of gfortran build the f77
    bindings with no problems.
  
  2.8.5 Octave 2.9
    Octave 2.9 has a number of significant differences from version 2.1. 
    The octave language bindings have been updated to work with this new 
    version since the latest 2.9.x release is now the "recommended" choice 
    by the octave developers. Note that all the low-level plplot functions 
    work as expected. The higher level functions which replace the default
    octave / gnuplot plotting commands mostly work as for version 2.1. They 
    do not (yet) replicate the new and more Matlab-like functionality in 
    the latest 2.9.x releases of Octave.

    Note: As a result of the compatibilty code for octave 2.1 and lower the
    octave bindings will generate spurious warnings about obsolete built-in 
    variables when using octave 2.9. These can be silenced using the command
        warning("off","Octave:built-in-variable-assignment");
    before using the plplot bindings. This is not enabled by default as it 
    would also turn off genuine warnings in your own code which you might 
    want to fix. 

2.9 Updated examples

   The examples have been checked over to make sure that they all work
and to make them more consistent across different programming languages.

2.10 Drivers
  2.10.1 psttf
    This device driver now requires LASi version 1.0.6 or 1.0.5pl.  See
    http://www.unifont.org/lasi/ for instructions (depending on installed
    version of FreeType library) on which to choose.

  2.10.2 svg
    This is a new device driver that creates Scalable Vector Graphics files
    (http://www.w3.org/Graphics/SVG/). SVG is a XML language describing
    graphics that is supported directly or via plug-ins in most modern web
    browsers. The driver is off by default as its text handling has not been
    perfected.

  2.10.3 wxwidgets
    This driver has been updated a great deal. The most important improvements
    have been to the antialiasing part of the driver. It is now about 4 times
    faster than it was, and is nearly comparable in speed to the driver
    with the antialiasing turned off. In addition the antialiasing code can
    now handle filled polygons and window resizing.

  2.10.4 pdf
    A basic version of a pdf driver was added to the latest PLplot release.
    This driver is based on the libharu library
    (http://libharu.sourceforge.net/). At present only the Hershey fonts are
    used and there is no support for pdf or TrueType fonts. Compression of the 
    pdf output is not enabled and the paper size can't be chosen. All these 
    issues will be addressed in later releases.

  2.10.5 gd, wingcc (freetype)
    Improved anti-aliasing routines have been added to PLplot's freetype
    font rendering engine. The gd and wingcc drivers have been modified in
    turn to take advantage of these new routines, leading to improved text
    rendering.

  2.10.6 cairo
    This is a family of drivers that use the Cairo graphics library to
    render text and graphics. The graphics and the text are both
    anti-aliased which yields some outstanding-looking results. This driver
    is unicode enabled, and Truetype fonts are used by default. Most of the
    devices that are theoretically possible with Cairo have been
    implemented. These are an X device (xcairo), a PostScript device
    (pscairo), a PNG device (pngcairo, a PDF device (pdfcairo), an SVG
    device (svgcairo), and a memory device (memcairo). The cairo device
    driver is still considered experimental as a whole. Known issues include
    improper text rendering with svgcairo and memcairo not working at all so
    those two devices are disabled by default.  The pngcairo, pscairo, and
    xcairo devices appear to work without problems and also give
    outstanding-looking antialiased and hinted results so are enabled by
    default. The pdfcairo device appears to work reasonable well so is
    enabled by default although it is not as mature as the other three cairo
    devices that are enabled.

  2.10.7 pstex driver
       This Latex driver has now been resurrected from years of neglect and
    aside from bounding box issues seems to be working well.  Should be
    useful for Latex enthusiasts.

  2.10.8 plmeta driver
    The combination of the plmeta device and the plrender application that
    renders plmeta results is unmaintained and has some known issues with
    strings, aspect ratio changes, and fonts.  Therefore, the plmeta device
    is now not enabled by default, and must be specifically enabled by the
    user using the -DPLD_plmeta=ON cmake option. Furthermore, plrender is
    not built or installed and the plrender man page is not installed unless
    the plmeta device is specifically enabled.
