From: <ai...@us...> - 2013-12-22 22:28:49
|
Revision: 12911 http://sourceforge.net/p/plplot/code/12911 Author: airwin Date: 2013-12-22 22:28:45 +0000 (Sun, 22 Dec 2013) Log Message: ----------- Preserve the historical record of the 5.9.11 release notes by prepending into OLD-README.release. Modified Paths: -------------- trunk/OLD-README.release Modified: trunk/OLD-README.release =================================================================== --- trunk/OLD-README.release 2013-12-22 22:26:29 UTC (rev 12910) +++ trunk/OLD-README.release 2013-12-22 22:28:45 UTC (rev 12911) @@ -1,3 +1,1874 @@ +PLplot Release 5.9.11 +~~~~~~~~~~~~~~~~~~~~ +This is a development 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 or on our bug tracker, then please send bug reports to +PLplot developers via the mailing lists at +<http://sourceforge.net/p/plplot/mailman/> (preferred for initial +discussion of issues) and, if no quick resolution is possible, on our +bug tracker at <http://sourceforge.net/p/plplot/bugs/>. + +Please see the license under which this software is distributed +(LGPL), and the disclaimer of all warranties, given in the COPYING.LIB +file. + +INDEX + +1. OFFICIAL NOTICES FOR USERS SINCE 5.9.10 (the previous development release) + +2. Tests made for release 5.9.11 + +3. Changes relative to PLplot 5.9.10 (the previous development release) + +3.1 NUMERIC_INCLUDE_PATH ==> NUMPY_INCLUDE_PATH +3.2 Major overhaul of the build system and bindings for Tcl and friends +3.3 Substantial overhaul of the build system for the Qt-components of PLplot +3.4 The epa_build project has been implemented + + +4. OFFICIAL NOTICES FOR USERS SINCE 5.8.0 (the previous stable release) + +5. Changes relative to PLplot 5.8.0 (the previous stable release) + +5.1 All autotools-related files have now been removed +5.2 Build system bug fixes +5.3 Build system improvements +5.4 Implement build-system infrastructure for installed Ada bindings and +examples +5.5 Code cleanup +5.6 Date / time labels for axes +5.7 Alpha value support +5.8 New PLplot functions +5.9 External libLASi library improvements affecting our psttf device +5.10 Improvements to the cairo driver family +5.11 wxWidgets driver improvements +5.12 pdf driver improvements +5.13 svg driver improvements +5.14 Ada language support +5.15 OCaml language support +5.16 Perl/PDL language support +5.17 Update to various language bindings +5.18 Update to various examples +5.19 Extension of our test framework +5.20 Rename test subdirectory to plplot_test +5.21 Website support files updated +5.22 Internal changes to function visibility +5.23 Dynamic driver support in Windows +5.24 Documentation updates +5.25 libnistcd (a.k.a. libcd) now built internally for -dev cgm +5.26 get-drv-info now changed to test-drv-info +5.27 Text clipping now enabled by default for the cairo devices +5.28 A powerful qt device driver has been implemented +5.29 The PLplot API is now accessible from Qt GUI applications +5.30 NaN / Inf support for some PLplot functions +5.31 Various bug fixes +5.32 Cairo driver improvements +5.33 PyQt changes +5.34 Color Palettes +5.35 Re-implementation of a "soft landing" when a bad/missing compiler is +detected +5.36 Make PLplot aware of LC_NUMERIC locale +5.37 Linear gradients have been implemented +5.38 Cairo Windows driver implemented +5.39 Custom axis labelling implemented +5.40 Universal coordinate transform implemented +5.41 Support for arbitrary storage of 2D user data +5.42 Font improvements +5.42 Alpha value support for plotting in memory. +5.43 Add a Qt device for in memory plotting. +5.44 Add discrete legend capability. +5.45 Add full bindings and examples for the D language. +5.46 The plstring and plstring3 functions have been added +5.47 The pllegend API has been finalized +5.48 Octave bindings now implemented with swig +5.49 Documentation redone for our swig-generated Python and Octave bindings +5.50 Support large polygons +5.51 Complete set of PLplot parameters now available for Fortran +5.52 The plarc function has been added +5.53 The format for map data used by plmap has changed +5.54 Python support for Numeric has been dropped +5.55 Backwards-incompatible API change to non-integer line widths +5.56 Improvements to the build system for the Cygwin case +5.57 The plcolorbar API has been finalized +5.58 Documentation of the new legend and color bar capabilities of PLplot +5.59 The D bindings and examples have been converted from the +old version of D (D1) to the new version of D (D2) +5.60 The DocBook documentation for PLplot is now generated using modern +XML/XSL backend tools for DocBook +5.61 Implement experimental build_projects sub-project +5.62 Implement extremely simple "00" example +5.63 Convert to using the Allura form of SourceForge software +5.64 Use NON_TRANSITIVE linking by default for the shared libraries case for +all non-windows systems +5.65 Update f95 examples to take larger advantage of Fortran 95 capabilities +5.66 Substantial additions to the doxygen documentation +5.67 NUMERIC_INCLUDE_PATH ==> NUMPY_INCLUDE_PATH +5.68 Major overhaul of the build system and bindings for Tcl and friends +5.69 Substantial overhaul of the build system for the Qt-components of PLplot +5.70 The epa_build project has been implemented + +1. OFFICIAL NOTICES FOR USERS SINCE 5.9.10 (the previous development release) + +(5.9.11) Backwards-incompatible API change. The numerical symbolic +constants that are #defined as macros in plplot.h have been +repropagated to the Python, Java, Lua, Octave, Fortran 95, and Tcl +language bindings using scripts. Previously, this propagation was +done by hand in a piece-meal manner so use of the scripts has created +a number of changes in the PLplot symbolic constants for these +languages. These changes are the addition of 25 symbolic constants +that were previously only available for C, no deletions of symbolic +constants, no changes to numerical values, but the following +backwards-incompatible name changes: + +PLESC_PLFLTBUFFERING ==> PLESC_DOUBLEBUFFERING +PLESPLFLTBUFFERING_DISABLE ==> PLESC_DOUBLEBUFFERING_ENABLE +PLESPLFLTBUFFERING_ENABLE ==> PLESC_DOUBLEBUFFERING_ENABLE +PLESPLFLTBUFFERING_QUERY ==> PLESC_DOUBLEBUFFERING_QUERY + +So those users who were using the symbolic constants on the left for +the above languages will have to change their source code or scripts +to use the constants on the right. No changes in source code or +scripts should be required of other users. + +(5.9.11) Backwards-incompatible API change. The PLplot build system +and bindings for Tcl and friends have had a major overhaul, see below. +Part of this change was to split the former libplplottcltk into two +components. The new libplplottcltk is now a pure Tcl/Tk extension +that can be linked to the stub versions of the Tcl/Tk libraries and +dynamically loaded from a tclsh or wish environment using the +appropriate "package require" command. The new libplplottcltk_Main +library contains code (e.g., pltclMain and pltkMain) required by C +plotting applications (e.g., pltcl, plrender, and xtk0[124].c) that +link to libplplottcltk. + +(5.9.11) Backwards-incompatible change. Our Fortran 77 bindings +and examples have been completely removed because Fortran 95 is just a +much better language which we have been supporting for a long time, +and our judgement call based on user feedback we have received is +nobody is interested in plotting using strict Fortran 77 language +constructs any more. However, if there is still some Fortran 77 +source code out there that uses PLplot, typically the only change you +should have to do to port it to our Fortran 95 bindings is to place +the command "use plplot" as the first line of the source code of the +main routine. + +(5.9.11) Deprecation. The functionality of the AGG backend and +FreeType option in the wxwidgets device driver is provided (and in +some cases exceeded) by other backends and options that we have +implemented for this device driver. The AGG backend and Freetype +option are therefore deprecated with the intention to remove them in a +future release. + +2. Tests made for release 5.9.11 + +Note that "comprehensive tests" below refers to running +scripts/comprehensive_test.sh in default mode (i.e., not dropping any +tests). For each of our three major configurations (shared +libraries/dynamic devices, shared libraries/nondynamic devices, and +static libraries/nondynamic devices) this test script runs ctest in +the build tree and runs the test_noninteractive and test_interactive +targets in the build tree, the installed examples tree configured with +a CMake-based build system for the examples, and an installed examples +tree configured with our traditional (Make + pkg-config) build system +for the examples. + +Note that all tests mentioned below were successful ones unless +noted differently. + +* Alan W. Irwin ran comprehensive tests for a complete system build +environment on 64-bit Debian Wheezy Linux for AMD-64 hardware. + +* Alan W. Irwin ran comprehensive testsfor a limited (qt, cairo, wxwidgets, +and octave PLplot components were dropped) epa_build environment on +64-bit Debian Wheezy Linux for AMD-64 hardware. + +* Alan W. Irwin ran comprehensive tests for an almost complete epa_build +environment (only the wxwidgets and octave components of PLplot were +dropped) on 64-bit Debian Wheezy Linux for AMD-64 hardware. + +* Alan W. Irwin ran fairly comprehensive tests (i.e, for the shared +library/dynamic devices case run ctest and also the +test_noninteractive and test_interactive targets in the build tree) +for a quite limited (qt, cairo, wxwidgets, octave, Tcl/Tk, and Java +PLplot components were dropped) epa_build environment for 32-bit +MinGW/MSYS/Wine for AMD-64 hardware. The Wine version was a release +candidate for Wine-1.6 that was built on Debian Wheezy Linux, the +compiler was gcc-4.7.2, the CMake generator was "MSYS Makefiles", and +the build command was "make" (i.e., the MSYS version, not the MinGW +version). An attempt was made to extend this successful test result +to the installed examples built with the CMake-based build system, but +for that case the Ada examples all failed at run time with a return +code of 3 so no further attempt was made to widen the scope of these +MinGW/MSYS/Wine tests. + +* Andrew Ross ran fairly comprehensive tests (i.e., for the shared +library/dynamic devices case use the test_noninteractive and +test_interactive targets in the build tree) for a complete system +build environment on 64-bit Debian unstable Linux for AMD-64 hardware. + +* Andrew Ross ran comprehensive tests for a complete system build +environment on 64-bit Ubuntu Saucy (13.10) Linux for AMD-64 hardware. +The only issue was a segmentation fault on the c++ qt_example for +the nondynamic devices case only. This is reproducible on this +system, but not on other Linux platforms so may be specific to the +Ubuntu version of the Qt libraries. This is unlikely to affect most +users since the default is to use dynamically loaded devices. + +* Andrew Ross ran limited tests with a limited number of nondynamic +devices (mem, null, psc, svg, xfig, xwin) and limited language +bindings (C / C++ / F95) for a CentOS 5.10 system with AMD64 hardware. +The build passed "make test_diff psc". The java version was too old +and java support had to be disabled. Ada support had to be +disabled due to a bug (now fixed). Cairo support also had to be +disabled due to too old a version of the library being installed. + +* Andrew Ross ran limited tests for an epa_build environment on CentOS +5.10. The buildtools and plplot_lite targets were built (with +nondynamic devices), again after disabling java, ada and cairo support. +This build added support for tcl / tk bindings and the pdf and tk based +devices. The build passed make test_noninteractive in the install tree, +but failed make test_interactive due to missing rpath information for the +itcl and itk libraries. This bug can be worked around by setting +LD_LIBRARY_PATH to point to the libraries, in which case the interactive +test works fine. + +* Arjen Markus ran a fairly comprehensive test (i.e., for the shared +library/dynamic devices case use the test_noninteractive target) for a +incomplete system build environment (the Ada, D, itcl/itk, Lua, ocaml, +octave, Java, and wxwidgets components of PLplot were dropped) on +64-bit Cygwin with gcc-4.8.2. That platform was installed on top of +64-bit Windows 7, service pack 1 for AMD-64 hardware. Java and +wxwidgets were dropped because of build errors for those on Cygwin +that have not been resolved yet. The remaining components were +dropped due to lack of time to investigate them so far. There was +close to complete success with the qt and cairo (aside from wincairo) +device drivers which is an excellent Windows result since those +device drivers add a lot of important capability to PLplot. + +* Arjen Markus ran build tests and limited run-time tests (checking by +hand that some components of PLplot worked) for the shared +libraries/dynamic devices case for a limited build environment (the +qt, cairo, wxwidgets, pdf and the components mentioned above of PLplot +were dropped except for Java which was included in this test) on +32-bit MinGW. That platform was installed on top of 64-bit Windows 7, +service pack 1 for AMD-64 hardware. The compiler was gcc-4.7.0, the +CMake generator was "MinGW Makefiles", and the build command was +mingw32-make. + +* Arjen Markus ran build tests and limited run-time tests (checking by +hand that some components of PLplot worked) for the shared +libraries/dynamic devices case for a limited build environment (the +same limitations as for his MinGW tests above) for MSVC/C++ 2010 and Intel +Fortran 2011 compilers on 64-bit Windows 7, service pack 1 for AMD-64 +hardware. In general, the CMake generator "NMake Makefiles" and +the corresponding build command "nmake" worked well for this platform. +The attempted use of Visual Studio generators combined with the +Visual Studio 2010 IDE available on that platform was more problematic. + +* Phil Rosenberg ran build tests and limited run-time tests (checking +by hand that some components of PLplot worked) for the static +libraries/nondynamic devices case for a limited build environment +(virtually all PLplot components dropped other than C, C++ and +wxwidgets 2.8) for the Visual Studio 2008 IDE (with associated MSVC +compiler) on 32-bit Windows 7 for AMD-64 hardware. The "Visual Studio +9 2008" generator yielded good results. + +* Phil Rosenberg ran build tests and limited run-time tests (checking +by hand that some components of PLplot worked) for the static +libraries/nondynamic devices case for a limited build environment +(virtually all PLplot components dropped other than C, CXX, and +wxwidgets 3.0) for the Visual Studio 2012 IDE (with associated MSVC +compiler) on Windows 8 for AMD-64 hardware. Both x86 and x64 builds +were tested. The combination of "NMake Makefiles" generator and MSVC +compiler yielded good build results if CMake patches (available at +http://www.cmake.org/Bug/view.php?id=14587 and +http://www.cmake.org/Bug/view.php?id=14642) to allow use of +wxwidgets-3.0 were applied. With those patches some run-time problems +with the use of Plplot's wxWidgetsApp with wxWidgets 3.0 were observed +in the examples, however plots embedded in wxWidgets apps seem to work +fine. The "Visual Studio 11" and "Visual Studio 11 Win64" generators +had some additional issues which could be worked around but which +nevertheless indicated there are some CMake bugs for those generators +that need to be addressed. + +* Jerry Bauck ran build tests of PLplot for the C core library, the +Ada, C++, Java, Lua, and Python bindings, and a fairly complete list +of device drivers (including qt and cairo) for PLplot on Mac OS X +Mountain Lion for AMD64 hardware. Extremely narrow run-time tests of +the Ada examples were a success, but all the standard testing scripts +failed because for unknown reasons the lena.pgm file that is used in +conjunction with our standard example 20 was not properly copied by +our build and test system from the source tree to the correct +locations in the build tree. + +* Felipe Gonzalez ran build tests of PLplot for the C core library and +the C++, Fortran 95, and OCaml-4.01.0 bindings on Mac OS X Mountain +Lion. The report from Felipe stated the compiler suite used was +probably from MacPorts, and did not state anything about the hardware +type. + +3. Changes relative to PLplot 5.9.10 (the previous development release) + +3.1 NUMERIC_INCLUDE_PATH ==> NUMPY_INCLUDE_PATH + +We have long since dropped support for the Numeric Python module and +are now exclusively using the numpy Python modules instead. +Therefore, we have changed the CMake variable name used in our build +system that holds the location of the numpy headers from the confusing +misnomer, NUMERIC_INCLUDE_PATH, to NUMPY_INCLUDE_PATH. This change +only impacts PLplot users who in the past have used the cmake option +-DNUMERIC_INCLUDE_PATH to set the CMake variable NUMERIC_INCLUDE_PATH +to the location of the numpy header directory. Note we discourage +that method since without that user intervention, the build system +uses python and numpy to find the location which should normally be +foolproof and not subject to the inconsistencies or errors possible +with setting the variable. But if some users still insist on setting +the variable, that variable's name should now be NUMPY_INCLUDE_PATH. + +3.2 Major overhaul of the build system and bindings for Tcl and friends + +After years of neglect we have worked very hard in the release cycle +leading up to the release of 5.9.11 on our build system and code +interfacing Tcl and friends (Tk, Itcl, Itk, and Iwidgets) with PLplot. +The build system now does a much better job of finding a consistent +set of components for Tcl and friends. For example, switching from +the system version of those components to a special build of those +components is typically a matter of simply putting tclsh from the +special build first on the PATH. And after the components of Tcl and +friends are found, the build system does extensive checking to make +sure they are compatible with each other. The plplottcktk library has +now been split (see remarks in the above OFFICIAL NOTICES for more +details). Many bugs have been fixed, and all tests documented in +examples/tcl/README.tcldemos and examples/tk/README.tkdemos have now +been implemented as tests via the build system to help avoid any +regressions in the build system and bindings for Tcl and friends in +the future. + +As a consequence of these activities the ntk device has been enabled +under Windows. The xwin and tkwin devices work under Cygwin. + +3.3 Substantial overhaul of the build system for the Qt-components of PLplot + +As a result of these improvements compiling and linking of our +Qt-related components just got a lot more rational, and the +long-standing memory management issues reported by valgrind for +examples/c++/qt_example for the non-dynamic devices case have been +resolved. + +3.4 The epa_build project has been implemented + +The goal of this project is to make builds of recent versions of +PLplot dependencies (and PLplot itself) much more convenient on all +platforms. Once this goal is realized, it should make the full power +of PLplot (which depends on the existence and quality of its +dependencies) readily available on all platforms. The epa_build +project uses the power of CMake (especially the ExternalProject_Add +command which is why we chose to use the prefix "epa_" in the name of +epa_build) to organize downloading, updating, configuring, building, +testing, and installing of any kind (not just those with CMake-based +build systems) of software project with full dependency support +between all the various builds. For those users who are not +satisified with the PLplot dependencies on their systems, learn how to +use the epa_build project by consulting cmake/epa_build/README. + +The epa_build project is in pretty good shape on Linux; epa_build +configurations work properly for build tools such as Tcl/Tk8.6, Itcl, +Itk, and Iwidgets and for regular packages such as pango (needed for +the cairo device driver), qt4_lite (needed for the qt device driver), +the wxwidgets software package (needed for the wxwidgets device +driver), and many smaller, but useful PLplot dependencies such as +shapelib, libqhull, and libharu. The total build time is roughly an +hour for an ordinary PC which is not much of a price to pay to get +access to up-to-date versions of virtually all dependencies of PLplot. +In fact, the only known dependency of PLplot not currently covered by +epa_build is octave. In principle, it should be straightforward to +add an epa_build configurations for octave and its many dependencies, +but that possibility has not been explored yet. + +In principle, epa_build should work out of the box on Mac OS X +platforms, but we haven't tested on that platform yet. + +Our testing for MinGW/MSYS and Cygwin shows the epa_build project is +still in fairly rough shape on Windows. It is known that the "plplot" +case (PLplot with all its dependencies) fails in various ways on all +Windows platforms. Those issues are being actively worked on. Note, +however, that the "plplot_lite" case (PLplot with all the minor +dependencies but without Tcl etc., build tools and without the pango, +qt4_lite, and wxwidgets dependencies) has been shown to work on +MinGW/MSYS and should probably also work on Cygwin although we haven't +tested that specific case yet. + +4. OFFICIAL NOTICES FOR USERS SINCE 5.8.0 (the previous stable release) + +(5.9.11) Backwards-incompatible API change. The numerical symbolic +constants that are #defined as macros in plplot.h have been +repropagated to the Python, Java, Lua, Octave, Fortran 95, and Tcl +language bindings using scripts. Previously, this propagation was +done by hand in a piece-meal manner so use of the scripts has created +a number of changes in the PLplot symbolic constants for these +languages. These changes are the addition of 25 symbolic constants +that were previously only available for C, no deletions of symbolic +constants, no changes to numerical values, but the following +backwards-incompatible name changes: + +PLESC_PLFLTBUFFERING ==> PLESC_DOUBLEBUFFERING +PLESPLFLTBUFFERING_DISABLE ==> PLESC_DOUBLEBUFFERING_ENABLE +PLESPLFLTBUFFERING_ENABLE ==> PLESC_DOUBLEBUFFERING_ENABLE +PLESPLFLTBUFFERING_QUERY ==> PLESC_DOUBLEBUFFERING_QUERY + +So those users who were using the symbolic constants on the left for +the above languages will have to change their source code or scripts +to use the constants on the right. No changes in source code or +scripts should be required of other users. + +(5.9.11) Backwards-incompatible API change. The PLplot build system +and bindings for Tcl and friends have had a major overhaul, see below. +Part of this change was to split the former libplplottcltk into two +components. The new libplplottcltk is now a pure Tcl/Tk extension +that can be linked to the stub versions of the Tcl/Tk libraries and +dynamically loaded from a tclsh or wish environment using the +appropriate "package require" command. The new libplplottcltk_Main +library contains code (e.g., pltclMain and pltkMain) required by C +plotting applications (e.g., pltcl, plrender, and xtk0[124].c) that +link to libplplottcltk. + +(5.9.11) Backwards-incompatible change. Our Fortran 77 bindings +and examples have been completely removed because Fortran 95 is just a +much better language which we have been supporting for a long time, +and our judgement call based on user feedback we have received is +nobody is interested in plotting using strict Fortran 77 language +constructs any more. However, if there is still some Fortran 77 +source code out there that uses PLplot, typically the only change you +should have to do to port it to our Fortran 95 bindings is to place +the command "use plplot" as the first line of the source code of the +main routine. + +(5.9.11) Deprecation. The functionality of the AGG backend and +FreeType option in the wxwidgets device driver is provided (and in +some cases exceeded) by other backends and options that we have +implemented for this device driver. The AGG backend and Freetype +option are therefore deprecated with the intention to remove them in a +future release. + +(5.9.10) The minimum version of CMake has been bumped to 5.8.9. This +change allows our build system to take advantage of CMake features +introduced in later versions of CMake. Even more importantly it also +updates user's builds to the CMake policy conventions (important +backwards-incompatible changes in CMake behaviour introduced in later +versions of CMake) to the default CMake policy used for 5.8.9. + +(5.9.10) The long deprecated support for the python Numeric package has been +dropped. This is no longer supported and is superseded by numpy. Support for +numpy has been the default in PLplot for a number of years so most users +should notice no difference. + +(5.9.10) The current format for maps used by plmap has been deprecated in +favour of using shapefiles (a standard format widely used for GIS and with +suitable free data sources available). This requires the shapelib library +to be installed. If this library is not installed then by default no map +support will be available. Support for the old binary format is still +available by setting the cmake variable PL_DEPRECATED, however this +support will be removed in a future release of PLplot. + +(5.9.10) Those who use the Python version of plgriddata will have to +change their use of this function for this release as follows (see +examples/xw21.py) + +# old version (which overwrites preexisting zg in place): +zg = reshape(zeros(xp*yp),(xp,yp)) +plgriddata(x, y, z, xg, yg, zg, alg, opt[alg-1]) + +# new version (which uses a properly returned newly created NumPy array +# as per the normal Python expectations): + +zg = plgriddata(x, y, z, xg, yg, alg, opt[alg-1]) + +(5.9.10) Significant efforts have been made to ensure the PLplot code +is standards compliant and free from warnings. Compliance has been +tested using the gcc compiler suite -std, -pedantic and -W flags. The +language standards adopted are +C: ISO C99 with POSIX.1-2001 base specification (required for a number +of C library calls) +C++: ISO C++ 1998 standard plus amendments +F95: Fortran 95 standard + +Specifically, the following gcc / g++ / gfortran flags were used + +CFLAGS='-O3 -std=c99 -pedantic -D_POSIX_C_SOURCE=200112L -Wall \ +-Wextra -Wmissing-prototypes -Wstrict-prototypes -Wnested-externs \ +-Wconversion -Wshadow -Wcast-qual -Wcast-align -Wwrite-strings' + +CXXFLAGS='-O3 -fvisibility=hidden -std=c++98 -pedantic -Wall -Wextra ' + +FFLAGS='-std=f95 -O3 -fall-intrinsics -fvisibility=hidden -pedantic \ +-Wall -Wextra ' + +Note that the code is not yet quite standards compliant or warning free, +but this is our aim. We know that a number of common compilers do not +support these standards "out of the box", so we will continue to develop +and support workarounds to ensure that PLplot remains easily built on +a variety of platforms and compilers. Standards compliance should make +it easier to port to new systems in the future. Using aggressive +warnings flags will help to detect and eliminate errors or problems in +the libraries. + +The gfortran -fall-intrinsics flag is required for a couple of +non-standard intrinsics which are used in the code. In the future +adopting the fortran 2003 or 2008 standard should allow this to be +removed. + +Note: currently this code cleanup does not apply to code generated by +swig (octave, python, java, lua bindings) which gives a large number of +code warnings. + +(5.9.10) For some years now we have had both FORTRAN 77 and Fortran 95 +bindings, but to the best of our knowledge, there are no longer +any maintained FORTRAN 77 compilers left that do not also support +Fortran 95. (g77 for instance has not been maintained for several +years now. Its successor gfortran supports Fortran 95 and later standards +as well all g77's legacy features). + +An important consequence is that we can not test the implementation for +compliance to the FORTRAN 77 standard. +Furthermore, we would prefer to concentrate all our Fortran +development effort on our f95 bindings and strongly encourage all our +Fortran users to use those bindings if they haven't switched from the +f77 version already. Therefore, as of this release we are deprecating +the f77 bindings and examples and plan no further support for them. +We signal this deprecation by disabling f77 by default (although our +users can still get access to these unsupported bindings and examples +for now by specifying the -DENABLE_f77=ON cmake option). + +We plan to completely remove the f77 bindings and examples +two releases after this one. + +(5.9.10) We have found that some distributions of the Windows +MinGW/gfortran compiler (i.e., MinGW/gfortran 4.6.1 and 4.6.2 from +http://www.equation.com) may cause a link error due to duplicate +symbols like __gfortran_setarg_. These errors can be suppressed by +adding the flag -Wl,--allow-multiple-define. It is very likely that +this is a bug in these distributions. + +As building the libraries and the examples succeeds without any problem +if you use most other distributions of Windows MinGW/gfortran, +we have decided not to include this flag in our build system. + +Distributions that are known to work: +- MinGW/gfortran-4.5 from http://www.equation.com, +- MinGW/gfortran-4.5.2-1 that is installed using the latest + mingw-get-inst-20110802 automatic installer available at + http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst +- MinGW/gfortran-4.6.2 from tdm-gcc.tdragon.net + +(Therefore it is not the 4.5.x versus 4.6.x version of MinGW/gfortran +as such that causes this problem.) + +(5.9.9) This is a quick release to deal with two broken build issues +that were recently discovered for our Windows platform. Windows users should +avoid 5.9.8 because of these problems for that release, and instead use +5.9.9 which has been heavily tested on a number of platforms including +Windows, see "Tests made for release 5.9.9" below. + +(5.9.8) For unicode-aware devices we now follow what is done for the +Hershey font case for epsilon, theta, and phi. This means the #ge, +#gh, and #gf escapes now give users the Greek lunate epsilon, the +ordinary Greek lower case theta, and the Greek symbol phi for Unicode +fonts just like has occurred since the dawn of PLplot history for the +Hershey font case. Previously these legacy escapes were assigned to +ordinary Greek lower-case epsilon, the Greek symbol theta (= script +theta), and the ordinary Greek lower case phi for unicode fonts +inconsistently with what occurred for Hershey fonts. This change gets +rid of this inconsistency, that is the #g escapes should give the best +unicode approximation to the Hershey glyph result that is possible for +unicode-aware devices. + +In general we encourage users of unicode-aware devices who might +dislike the Greek glyph Hershey-lookalike choices they get with the +legacy #g escapes to use instead either PLplot unicode escapes (e.g., +"#[0x03b5]" for ordinary Greek lower-case epsilon, see page 3 of +example 23) or better yet, UTF-8 strings (e.g., "ε") to specify +exactly what unicode glyph they want. + +(5.9.8) The full set of PLplot constants have been made available to +our Fortran 95 users as part of the plplot module. This means those +users will have to remove any parameter statements where they have +previously defined the PLplot constants (whose names typically start +with "PL_" for themselves. For a complete list of the affected +constants, see the #defines in swig-support/plplotcapi.i which are +used internally to help generate the plplot module. See also Index +item 5.51 below. + +(5.9.8) There has been widespread const modifier changes in the API +for libplplotd and libplplotcxxd. Those backwards-incompatible API +changes are indicated in the usual way by a soversion bump in those +two libraries which will force all apps and libraries that depend on +those two libraries to be rebuilt. + +Specifically, we have changed the following arguments in the C library +(libplplotd) case + +type * name1 ==> const type * name1 +type * name2 ==> const type ** name2 + +and the following arguments in the C++ library (libplplotcxxd) case + +type * name1 ==> const type * name1 +type * name1 ==> const type * const * name2 + +where name1 is the name of a singly dimensioned array whose values are +not changed internally by the PLplot libraries and name2 is the name +of a doubly dimensioned array whose values are not changed internally +by the PLplot libraries. + +The general documentation and safety justification for such const +modifier changes to our API is given in +http://www.cprogramming.com/tutorial/const_correctness.html. +Essentially, the above const modifier changes constitute our guarantee +that the associated arrays are not changed internally by the PLplot +libraries. + +Although it is necessary to rebuild all apps and libraries that depend +on libplplotd and/or libplplotcxxd, that rebuild should be possible +with unchanged source code without build errors in all cases. For C +apps and libraries (depending on libplplotd) there will be additional +build warnings due to a limitation in the C standard discussed at +http://c-faq.com/ansi/constmismatch.html unless all doubly dimensioned +arrays (but not singly dimensioned) are explicitly cast to (const type +**). However, such source code changes will not be necessary to avoid +warning messages for the C++ (libplplotcxxd) change because of the +double use of const in the above "const type * const * name2" change. + +(5.9.8) The plarc API has changed in release 5.9.8. The plarc API now +has a rotation parameter which will eventually allow for rotated arcs. +PLplot does not currently support rotated arcs, but the plarc function +signature has been modified to avoid changing the API when this +functionality is added. + +(5.9.6) We have retired the pbm driver containing the pbm (actually +portable pixmap) file device. This device is quite primitive and +poorly maintained. It ignores unicode fonts (i.e., uses the Hershey +font fallback), falls back to ugly software fills, doesn't support +alpha transparency, etc. It also has a serious run-time issue with +example 2 (double free detected by glibc) which probably indicates +some fundamental issue with the 100 colors in cmap0 for that +example. For those who really need portable pixmap results, we suggest +using the ImageMagick convert programme, e.g., "convert +examples/x24c01.pngqt test.ppm" or "convert examples/x24c01.pngcairo +test.ppm" to produce good-looking portable pixmap results from our +best png device results. + +(5.9.6) We have retired the linuxvga driver containing the linuxvga +interactive device. This device is quite primitive, difficult to +test, and poorly maintained. It ignores unicode fonts (i.e., uses the +Hershey font fallback), falls back to ugly software fills, doesn't +support alpha transparency, etc. It is Linux only, can only be run as +root, and svgalib (the library used by linuxsvga) is not supported by +some mainstream (e.g., Intel) chipsets. All of these characteristics +make it difficult to even test this device much less use it for +anything serious. Finally, it has had a well-known issue for years +(incorrect colors) which has never been fixed indicating nobody is +interested in maintaining this device. + +(5.9.6) We have retired our platform support of djgpp that used to +reside in sys/dos/djgpp. The developer (Andrew Roach) who used to +maintain those support files for djgpp feels that the djgpp platform +is no longer actively developed, and he no longer uses djgpp himself. + +(5.9.6) We have changed plpoin results for ascii codes 92, 94, and 95 +from centred dot, degree symbol, and centred dot glyphs to the correct +backslash, caret, and underscore glyphs that are associated with those +ascii indices. This change is consistent with the documentation of +plpoin and solves a long-standing issue with backslash, caret, and +underscore ascii characters in character strings used for example by +pl[mp]tex. Those who need access to a centred dot with plpoin should +use index 1. The degree symbol is no longer accessible with plpoin, +but it is available in ordinary text input to PLplot as Hershey escape +"#(718)", where 718 is the Hershey index of the degree symbol, unicode +escape "#[0x00B0]" where 0x00B0 is the unicode index for the degree +symbol or direct UTF8 unicode string "°". + +(5.9.6) We have retired the gcw device driver and the related gnome2 +and pygcw bindings since these are unmaintained and there are good +replacements. These components of PLplot were deprecated as of +release 5.9.3. A good replacement for the gcw device is either the +xcairo or qtwidget device. A good replacement for the gnome2 bindings +is the externally supplied XDrawable or Cairo context associated with +the xcairo device and the extcairo device (see +examples/c/README.cairo). A good replacement for pygcw is our new +pyqt4 bindings for PLplot. + +(5.9.6) We have deprecated support for the python Numeric array +extensions. Numeric is no longer maintained and users of Numeric are +advised to migrate to numpy. Numpy has been the standard for PLplot +for some time. If numpy is not present PLplot will now disable python +by default. If you still require Numeric support in the short term +then set USE_NUMERIC to ON in cmake. The PLplot support for Numeric +will be dropped in a future release. + +(5.9.5) We have removed pyqt3 access to PLplot and replaced it by +pyqt4 access to PLplot (see details below). + +(5.9.5) The only method of specifying a non-default compiler (and +associated compiler options) that we support is the environment +variable approach, e.g., + +export CC='gcc -g -fvisibility=hidden' +export CXX='g++ -g -fvisibility=hidden' +export FC='gfortran -g -fvisibility=hidden' + +All other CMake methods of specifying a non-default compiler and +associated compiler options will not be supported until CMake bug 9220 +is fixed, see discussion below of the soft-landing re-implementation +for details. + +(5.9.5) We have retired the hpgl driver (containing the hp7470, +hp7580, and lj_hpgl devices), the impress driver (containing the imp +device), the ljii driver (containing the ljii and ljiip devices), and +the tek driver (containing the conex, mskermit, tek4107, tek4107f, +tek4010, tek4010f, versaterm, vlt, and xterm devices). Retirement +means we have removed the build options which would allow these +devices to build and install. Recent tests have shown a number of +run-time issues (hpgl, impress, and ljii) or build-time issues (tek) +with these devices, and as far as we know there is no more user +interest in them. Therefore, we have decided to retire these devices +rather than fix them. + +(5.9.4) We have deprecated the pbm device driver (containing the pbm +device) because glibc detects a catastrophic double free. + +(5.9.3) Our build system requires CMake version 5.6.0 or higher. + +(5.9.3) We have deprecated the gcw device driver and the related +gnome2 and pygcw bindings since these are essentially unmaintained. +For example, the gcw device and associated bindings still depends on +the plfreetype approach for accessing unicode fonts which has known +issues (inconsistent text offsets, inconvenient font setting +capabilities, and incorrect rendering of CTL languages). To avoid +these issues we advise using the xcairo device and the externally +supplied XDrawable or Cairo context associated with the xcairo device +and the extcairo device (see examples/c/README.cairo) instead. If you +still absolutely must use -dev gcw or the related gnome2 or pygcw +bindings despite the known problems, then they can still be accessed +by setting PLD_gcw, ENABLE_gnome2, and/or ENABLE_pygcw to ON. + +(5.9.3) We have deprecated the gd device driver which implements the +png, jpeg, and gif devices. This device driver is essentially +unmaintained. For example, it still depends on the plfreetype approach +for accessing unicode fonts which has known issues (inconsistent text +offsets, inconvenient font setting capabilities, and incorrect +rendering of CTL languages). To avoid these issues for PNG format, we +advise using the pngcairo or pngqt devices. To avoid these issues for +the JPEG format, we advise using the jpgqt device. PNG is normally +considered a better raster format than GIF, but if you absolutely +require GIF format, we advise using the pngcairo or pngqt devices and +then downgrading the results to the GIF format using the ImageMagick +"convert" application. For those platforms where libgd (the +dependency of the gd device driver) is accessible while the required +dependencies of the cairo and/or qt devices are not accessible, you +can still use these deprecated devices by setting PLD_png, PLD_jpeg, +or PLD_gif to ON. + +(5.9.3) We have re-enabled the tk, itk, and itcl components of PLplot +by default that were disabled by default as of release 5.9.1 due to +segfaults. The cause of the segfaults was a bug (now fixed) in how +pthread support was implemented for the Tk-related components of +PLplot. + +(5.9.2) We have set HAVE_PTHREAD (now called PL_HAVE_PTHREAD as of +release 5.9.8) to ON by default for all platforms other than Darwin. +Darwin will follow later once it appears the Apple version of X +supports it. + +(5.9.1) We have removed our previously deprecated autotools-based +build system. Instead, use the CMake-based build system following the +directions in the INSTALL file. + +(5.9.1) We no longer support Octave-5.1.73 which has a variety of +run-time issues in our tests of the Octave examples on different +platforms. In contrast our tests show we get good run-time results +with all our Octave examples for Octave-3.0.1. Also, that is the +recommended stable version of Octave at +http://www.gnu.org/software/octave/download.html so that is the only +version of Octave we support at this time. + +(5.9.1) We have decided for consistency sake to change the PLplot +stream variables plsc->vpwxmi, plsc->vpwxma, plsc->vpwymi, and +plsc->vpwyma and the results returned by plgvpw to reflect the exact +window limit values input by users using plwind. Previously to this +change, the stream variables and the values returned by plgvpw +reflected the internal slightly expanded range of window limits used +by PLplot so that the user's specified limits would be on the graph. +Two users noted this slight difference, and we agree with them it +should not be there. Note that internally, PLplot still uses the +expanded ranges so most users results will be identical. However, you +may notice some small changes to your plot results if you use these +stream variables directly (only possible in C/C++) or use plgvpw. + +5. Changes relative to PLplot 5.8.0 (the previous stable release) + +N.B. This release includes many code cleanups and fixes relative to +5.8.0 that are not mentioned in the list below. + +5.1 All autotools-related files have now been removed + +CMake is now the only supported build system. It has been tested on +Linux / Unix, Mac OS-X and Windows platforms. + +5.2 Build system bug fixes + +Various fixes include the following: + +Ctest will now work correctly when the build tree path includes symlinks. + +Dependencies for swig generated files fixed so they are not rebuilt every +time make is called. + +Various dependency fixes to ensure that parallel builds (using make -j) +work under unix. + +5.3 Build system improvements + +We now transform link flag results delivered to the CMake environment by +pkg-config into the preferred CMake form of library information. The +practical effect of this improvement is that external libraries in +non-standard locations now have their rpath options set correctly for our +build system both for the build tree and the install tree so you don't have +to fiddle with LD_LIBRARY_PATH, etc. + +5.4 Implement build-system infrastructure for installed Ada bindings and +examples + +Install source files, library information files, and the plplotada library +associated with the Ada bindings. Configure and install the pkg-config file +for the plplotada library. Install the Ada examples and a configured Makefile +to build them in the install tree. + +5.5 Code cleanup + +The PLplot source code has been cleaned up to make consistent use of +(const char *) and (char *) throughout. Some API functions have changed +to use const char * instead of char * to make it clear that the strings +are not modified by the function. The C and C++ examples have been updated +consistent with this. These changes fix a large number of warnings +with gcc-4.5. Note: this should not require programs using PLplot to be +recompiled as it is not a binary API change. + +There has also been some cleanup of include files in the C++ examples +so the code will compile with the forthcoming gcc-4.3. + +5.6 Date / time labels for axes + +PLplot now allows date / time labels to be used on axes. A new option +('d') is available for the xopt and yopt arguments to plbox which +indicates that the axis should be interpreted as a date / time. Similarly +there is a new range of options for plenv to select date / time labels. +The time format is seconds since the epoch (usually 1 Jan 1970). This +format is commonly used on most systems. The C gmtime routine can be +used to calculate this for a given date and time. The format for the +labels is controlled using a new pltimefmt function, which takes a +format string. All formatting is done using the C strftime function. +See documentation for available options on your platform. Example 29 +demonstrates the new capabilities. + +N.B. Our reliance on C library POSIX time routines to (1) convert from +broken-down time to time-epoch, (2) to convert from time-epoch to +broken-down time, and (3) to format results with strftime have proved +problematic for non-C languages which have time routines of variable +quality. Also, it is not clear that even the POSIX time routines are +available on Windows. So we have plans afoot to implement high-quality +versions of (1), (2), and (3) with additional functions to get/set the epoch +in the PLplot core library itself. These routines should work on all C +platforms and should also be uniformly accessible for all our language +bindings. + +WARNING..... Therefore, assuming these plans are implemented, the present +part of our date/time PLplot API that uses POSIX time routines will be +changed. + +5.7 Alpha value support + +PLplot core has been modified to support a transparency or alpha value +channel for each color in color map 0 and 1. In addition a number of new +functions were added the PLplot API so that the user can both set and query +alpha values for color in the two color maps. These functions have the same +name as their non-alpha value equivalents, but with a an "a" added to the +end. Example 30 demonstrates some different ways to use these functions +and the effects of alpha values, at least for those drivers that support alpha +values. This change should have no effect on the device drivers that do not +currently support alpha values. Currently only the cairo, qt, gd, wxwidgets and +aquaterm drivers support alpha values. There are some limitations with the gd +driver due to transparency support in the underlying libgd library. + +5.8 New PLplot functions + +An enhanced version of plimage, plimagefr has been added. This allows images +to be plotted using coordinate transformation, and also for the dynamic range +of the plotted values to be altered. Example 20 has been modified to +demonstrate this new functionality. + +To ensure consistent results in example 21 between different platforms and +language bindings PLplot now includes a small random number generator within +the library. plrandd will return a PLFLT random number in the range 0.0-1.0. +plseed will allow the random number generator to be seeded. + +5.9 External libLASi library improvements affecting our psttf device + +Our psttf device depends on the libLASi library. libLASi-1.1.0 has just been +released at http://sourceforge.net/svn/?group_id=187113 . We recommend +using this latest version of libLASi for building PLplot and the psttf +device since this version of libLASi is more robust against glyph +information returned by pango/cairo/fontconfig that on rare occasions is not +suitable for use by libLASi. + +5.10 Improvements to the cairo driver family + +Jonathan Woithe improved the xcairo driver so that it can optionally be +used with an external user supplied X Drawable. This enables a nice +separation of graphing (PLplot) and window management (Gtk, etc..). Doug +Hunt fixed the bugs that broke the memcairo driver and it is now fully +functional. Additionally, a new extcairo driver was added that will plot +into a user supplied cairo context. + +5.11 wxWidgets driver improvements + +Complete reorganization of the driver code. A new backend was added, based +on the wxGraphicsContext class, which is available for wxWidgets 5.8.4 +and later. This backend produces antialiased output similar to the +AGG backend but has no dependency on the AGG library. The basic wxDC +backend and the wxGraphicsContext backend process the text output +on their own, which results in much nicer plots than with the standard +Hershey fonts and is much faster than using the freetype library. New +options were introduced in the wxWidgets driver: + - backend: Choose backend: (0) standard, (1) using AGG library, + (2) using wxGraphicsContext + - hrshsym: Use Hershey symbol set (hrshsym=0|1) + - text: Use own text routines (text=0|1) + - freetype: Use FreeType library (freetype=0|1) +The option "text" changed its meaning, since it enabled the FreeType library +support, while now the option enables the driver's own text routines. + +Some other features were added: + * the wxWidgets driver now correctly clears the background (or parts of it) + * transparency support was added + * the "locate mode" (already available in the xwin and tk driver) was + implemented, where graphics input events are processed and translated + to world coordinates + +5.12 pdf driver improvements + +The pdf driver (which is based on the haru library http://www.libharu.org) +processes the text output now on its own. So far only the Adobe Type1 +fonts are supported. TrueType font support will follow. Full unicode +support will follow after the haru library will support unicode strings. The +driver is now able to produce A4, letter, A5 and A3 pages. The Hershey font +may be used only for symbols. Output can now be compressed, resulting in +much smaller file sizes. +Added new options: + - text: Use own text routines (text=0|1) + - compress: Compress pdf output (compress=0|1) + - hrshsym: Use Hershey symbol set (hrshsym=0|1) + - pagesize: Set page size (pagesize=A4|letter|A3|A5) + +5.13 svg driver improvements + +This device driver has had the following improvements: schema for generated +file now validates properly at http://validator.w3.org/ for the +automatically detected document type of SVG 1.1; -geometry option now works; +alpha channel transparency has been implemented; file familying for +multipage examples has been implemented; coordinate scaling has been +implemented so that full internal PLplot resolution is used; extraneous +whitespace and line endings that were being injected into text in error have +now been removed; and differential correction to string justification is now +applied. + +The result of these improvements is that our SVG device now gives the +best-looking results of all our devices. However, currently you must be +careful of which SVG viewer or editor you try because a number of them have +some bugs that need to be resolved. For example, there is a librsvg bug in +text placement (http://bugzilla.gnome.org/show_bug.cgi?id=525023) that +affects all svg use within GNOME as well as the ImageMagick "display" +application. However, at least the latest konqueror and firefox as well as +inkscape and scribus-ng (but not scribus!) give outstanding looking results +for files generated by our svg device driver. + +5.14 Ada language support + +We now have a complete Ada bindings implemented for PLplot. We also have a +complete set of our standard examples implemented in Ada which give results +that are identical with corresponding results for the C standard examples. +This is an excellent test of a large subset of the Ada bindings. We now +enable Ada by default for our users and request widespread testing of this +new feature. + +5.15 OCaml language support + +Thanks primarily to Hezekiah M. Carty's efforts we now have a complete OCaml +bindings implemented for PLplot. We also have a complete set of our standard +examples implemented in OCaml which give results that are identical with +corresponding results for the C standard examples. This is an excellent test +of a large subset of the OCaml bindings. We now enable OCaml by default for +our users and request widespread testing of this new feature. + +5.16 Perl/PDL language support + +Thanks to Doug Hunt's efforts the external Perl/PDL module, +PDL::Graphics::PLplot version 0.46 available at +http://search.cpan.org/dist/PDL-Graphics-PLplot has been brought up to date +to give access to recently added PLplot API. The instructions for how to +install this module on top of an official PDL release are given in +examples/perl/README.perldemos. Doug has also finished implementing a +complete set of standard examples in Perl/PDL which are part of PLplot and +which produce identical results to their C counterparts if the above updated +module has been installed. Our build system tests the version of +PDL::Graphics::PLplot that is available, and if it is not 0.46 or later, the +list of Perl/PDL examples that are run as part of our standard tests is +substantially reduced to avoid examples that use the new functionality. In +sum, if you use PDL::Graphics::PLplot version 0.46 or later the full +complement of PLplot commands is available to you from Perl/PDL, but +otherwise not. + +5.17 Updates to various language bindings + +A concerted effort has been made to bring all the language bindings up to +date with recently added functions. Ada, C++, f77, f95, Java, OCaml, Octave, +Perl/PDL, Python, and Tcl now all support the common PLplot API (with the +exception of the mapping functions which are not yet implemented for all +bindings due to technical issues.) This is a significant step forward for +those using languages other than C. + +5.18 Updates to various examples + +To help test the updates to the language bindings the examples have been +thoroughly checked. Ada, C, C++, f77, f95, and OCaml now contain a full set +of non-interactive tests (examples 1-31 excluding 14 and 17). Java, Octave, +Python and Tcl are missing example 19 because of the issue with the mapping +functions. The examples have also been checked to ensure consistent results +between different language bindings. Currently there are still some minor +differences in the results for the tcl examples, probably due to rounding +errors. Some of the Tcl examples (example 21) require Tcl version 8.5 for +proper support for NaNs. + +Also new is an option for the plplot_test.sh script to run the examples +using a debugging command. This is enabled using the --debug option. The +default it to use the valgrind memory checker. This has highlighted at +least one memory leaks in PLplot which have been fixed. It is not part +of the standard ctest tests because it can be _very_ slow for a complete +set of language bindings and device drivers. + +5.19 Extension of our test framework + +The standard test suite for PLplot now carries out a comparison of the +stdout output (especially important for example 31 which tests most of our +set and get functions) and PostScript output for different languages as a +check. Thanks to the addition of example 31, the inclusion of examples 14 +and 17 in the test suite and other recent extensions of the other +examples we now have rigorous testing in place for almost the entirety +of our common API. This extensive testing framework has already helped +us track down a number of bugs, and it should make it much easier for us +to maintain high quality for our ongoing PLplot releases. + +5.20 Rename test subdirectory to plplot_test + +This change was necessary to quit clashing with the "make test" target which +now works for the first time ever (by executing ctest). + +5.21 Website support files updated + +Our new website content is generated with PHP and uses CSS (cascaded style +sheets) to implement a consistent style. This new approach demanded lots of +changes in the website support files that are used to generate and upload +our website and which are automatically included with the release. + +5.22 Internal changes to function visibility + +The internal definitions of functions in PLplot have been significantly +tidied up to allow the use of the -fvisibility=hidden option with newer +versions of gcc. This prevents internal functions from being exported +to the user where possible. This extends the existing support for this +on windows. + +5.23 Dynamic driver support in Windows + +An interface based on the ltdl library function calls was established +which allows to open and close dynamic link libraries (DLL) during +run-time and call functions from these libraries. As a consequence +drivers can now be compiled into single DLLs separate from the core +PLplot DLL also in Windows. The cmake option ENABLE_DYNDRIVERS is now +ON by default for Windows if a shared PLplot library is built. + +5.24 Documentation updates + +The DocBook documentation has been updated to include many of the +C-specific functions (for example plAlloc2dGrid) which are not part +of the common API, but are used in the examples and may be helpful +for PLplot users. + +5.25 libnistcd (a.k.a. libcd) now built internally for -dev cgm + +CGM format is a long-established (since 1987) open standard for vector +graphics that is supported by w3c (see http://www.w3.org/Graphics/WebCGM/). +PLplot has long had a cgm device driver which depended on the (mostly) +public domain libcd library that was distributed in the mid 90's by National +Institute of Standards and Technology (NIST) and which is still available +from http://www.pa.msu.edu/ftp/pub/unix/cd1.3.tar.gz. As a convenience +to our -dev cgm users, we have brought that +source code in house under lib/nistcd and now build libnistcd routinely +as part of our ordinary builds. The only changes we have made to the +cd1.3 source code is visibility changes in cd.h and swapping the sense of +the return codes for the test executables so that 0 is returned on success +and 1 on failure. If you want to test libnistcd on your platform, +please run + +make test_nistcd + +in the top-level build tree. (That tests runs all the test executables +that are built as part of cd1.3 and compares the results that are generated +with the *.cgm files that are supplied as part of cd1.3.) + +Two applications that convert and/or display CGM results on Linux are +ralcgm (which is called by the ImageMagick convert and display applications) +and uniconvertor. + +Some additional work on -dev cgm is required to implement antialiasing and +non-Hershey fonts, but both those should be possible using libnistcd according +to the text that is shown by lib/nistcd/cdtext.cgm and lib/nistcd/cdexp1.cgm. + +5.26 get-drv-info now changed to test-drv-info + +To make cross-building much easier for PLplot we now configure the *.rc +files that are used to describe our various dynamic devices rather than +generating the required *.rc files with get-drv-info. We have changed the +name of get-drv-info to test-drv-info. That name is more appropriate +because that executable has always tested dynamic loading of the driver +plug-ins as well as generating the *.rc files fro... [truncated message content] |