PageRenderTime 47ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/branches/hbabcock/www/announce/announce-plplot-5.2.1.html

#
HTML | 340 lines | 325 code | 15 blank | 0 comment | 0 complexity | eae40adc34432df2cc7c58dc87ff07a3 MD5 | raw file
Possible License(s): LGPL-2.0, BSD-3-Clause-No-Nuclear-License-2014, Apache-2.0, GPL-2.0
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  2. "http://www.w3.org/TR/html4/strict.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  6. <title>Announcement of PLplot-5.2.1</title>
  7. </head>
  8. <body>
  9. <h1>Announcement of PLplot-5.2.1</h1>
  10. <p>
  11. Three months and a lot of hard work after the release of PLplot-5.2.0, it is
  12. time for another stable release of this publication-quality scientific
  13. plotting package.
  14. </p>
  15. <ul>
  16. <li>What: PLplot-5.2.1 release.</li>
  17. <li>Where: <a href="http://sourceforge.net/project/showfiles.php?group_id=2915">
  18. http://sourceforge.net/project/showfiles.php?group_id=2915</a>
  19. (click on plplot-5.2.1.tar.gz).</li>
  20. <li>When: 2003 April 21.</li>
  21. <li>Why: Consolidation of the many changes in 5.2.0, bug-fixing, new
  22. features.</li>
  23. <li>Who: The PLplot core development <a href="http://sourceforge.net/project/memberlist.php?group_id=2915">team</a>
  24. with additional help from
  25. <a href="mailto:svensson@esrf.fr">Olof Svensson</a>
  26. in supporting the windows port of PLplot (see
  27. plplot/sys/win32/msdev/README.TXT).
  28. </ul>
  29. <p>
  30. This is the first detailed PLplot release announcement since 5.1.0 so we
  31. will be covering both the changes (1000+ commits) between 5.1.0
  32. and 5.2.0, and the additional changes (700+ commits) between
  33. 5.2.0, and the current 5.2.1.
  34. </p>
  35. <h2>API Additions</h2>
  36. <ul>
  37. <li> 5.2.0
  38. <ul>
  39. <li>plcalc_world. Calculate world coordinates and subpage from relative
  40. device coordinates.</li>
  41. <li>plenv0. Similar to plenv, but in multiplot mode does not advance the
  42. subpage, instead the current subpage is cleared.</li>
  43. <li>plgvpd. Get viewport boundaries in normalized device coordinates.</li>
  44. <li>plgvpw. Get viewport boundaries in world coordinates.</li>
  45. <li>plmeshc. Contoured version of plmesh.</li>
  46. <li>plot3dc. Contoured version of plot3d.</li>
  47. <li>plsurf3d. Contoured version of deprecated plotsh3d.</li>
  48. <li>plsbopH. Sets an optional user bop handler.</li>
  49. <li>plseopH. Sets an optional user eop handler.</li>
  50. </ul>
  51. </li>
  52. <li> 5.2.1
  53. <ul>
  54. <li>plsmem. Set the memory area to be plotted. This function is used in
  55. conjunction with the mem.c device driver which is required by Doug Hunt's
  56. PDL interface to PLplot.</li>
  57. <li>plgriddata. Generate grid data for 3D plots from irregularly sampled data.</li>
  58. </ul>
  59. </li>
  60. </ul>
  61. <p></p>
  62. <h2>API Changes</h2>
  63. <ul>
  64. <li> 5.2.0
  65. <ul>
  66. <li>plotsh3d deprecated. Use plsurf3d instead.</li>
  67. <li>plP_gvpd deprecated. Use plgvpd instead.</li>
  68. <li>plP_gvpw deprecated. Use plgvpw instead.</li>
  69. <li>plpoly3. Argument list change.</li>
  70. <li>plimage. Argument list change.</li>
  71. <li>plend. Changed internally. May only be called once to close the PLplot
  72. library and terminate all plotting. If you have multiple instances of
  73. plinit, the first one opens the PLplot library and plend1 should be used to
  74. terminate all but the last of them which should be terminated by plend.</li>
  75. </ul>
  76. </li>
  77. <li> 5.2.1
  78. <ul>
  79. <li>None.</li>
  80. </ul>
  81. </li>
  82. </ul>
  83. <p></p>
  84. <h2>Important Paradigm Shifts for 5.2.x</h2>
  85. <p>
  86. 5.1.0 introduced the idea of plug-in or dynamic devices, and this paradigm
  87. shift lead to other paradigm shifts in the way our libraries were organized
  88. and the way we configured PLplot for 5.2.0. Because of limitations in the
  89. way our 5.1.0 code was organized into libraries several drivers (e.g., xwin,
  90. tk) could not be made dynamic. This problem was solved for 5.2.0 by
  91. reorganizing our code into a larger number of smaller libraries and shared
  92. objects where linking was strictly hierarchical (rather than having
  93. cross-linking between our various libraries and shared objects). This
  94. paradigm shift meant that code specific to particular interfaces was kept
  95. strictly in separate interface libraries; libplplot was strictly reserved
  96. for core plotting functions; and specialized device code was kept with the
  97. device shared objects (or plug-ins). A side benefit of this reorganization
  98. was that it became possible to load the plplot Tcl/Tk interface library
  99. directly into a tclsh or wish environment for the first time for Linux/Unix
  100. platforms. (See examples/tcl/README.tcldemos and examples/tk/README.tkdemos
  101. for the details.)
  102. </p>
  103. <p>
  104. The library reorganization forced another paradigm shift in the way we did
  105. our configuration for 5.2.0. Our previous low-level pure autoconf-based
  106. configuration system was extremely difficult to adjust to the new library
  107. reorganization. Thus, we changed over to a high-level autotools (libtool and
  108. automake on top of autoconf) approach to generate our configuration. This
  109. paradigm shift is mostly transparent to the user (who should simple execute
  110. configure; make; and make install as before, see comments below), but it
  111. makes PLplot configuration much more maintainable and also potentially gives
  112. our users the ability to configure, build and run PLplot on a much wider
  113. variety of Unix platforms. For example, Unix users should now be able to use
  114. their native make command (as opposed to the GNU make we demanded before)
  115. and their native compiler to build PLplot using shared libraries, and
  116. dynamic drivers; something that was impossible before.
  117. </p>
  118. <p>
  119. Although the new configuration has great cross-platform potential, it should
  120. be emphasized that the vast majority of our testing of PLplot-5.2.1 has been
  121. done on Linux (good reports for Debian, Mandrake, RedHat, and SuSe), and our
  122. Unix testing has so far been quite limited (good reports for OSF1 and
  123. NetBSD). Thus some additional minor changes might be required to get PLplot
  124. to work for other Unix platforms such as Solaris. User's feedback will be an
  125. essential part of determining what (if any) changes need to be made.
  126. </p>
  127. <p>
  128. Here is a list of known exceptions to the expected cross-platform Unix
  129. support of PLplot.
  130. </p>
  131. <ul>
  132. <li>Pre-built documentation is included in our release tarball so there is no
  133. need for our general users to build the documentation. Thus, we only support
  134. documentation building on Linux for developers who want to contribute
  135. documentation, and our Makefiles in the doc/docbook tree consequently
  136. contain Gnu makeisms and probably other Linux-only constructs as well.
  137. </li>
  138. <li>The Tcl/Tk configuration works on Linux, but it will need some changes
  139. to work on all Unix platforms.
  140. </li>
  141. <li>From bad reports we have received we do not expect PLplot-5.2.1 to work on
  142. Cygwin and Mac OS X because of libtool-1.4.3 issues with those platforms.
  143. However, there has been a very recent release (only a week ago) of
  144. libtool-1.5 which apparently addresses a number of those issues. Although
  145. this libtool release is too late to test for our current PLplot release,
  146. there is good hope for PLplot on Cygwin and Mac OS X for the near future.
  147. </li>
  148. </ul>
  149. <p></p>
  150. <h2>5.2.0 Improvements</h2>
  151. <ul>
  152. <li>The plframe widget for multi-page plots now has page control.
  153. </li>
  154. <li>The internals of dealing with hidden 3D shaded regions have been
  155. completely
  156. rewritten so that the egregious rendering bugs in example 8 for 5.1.0 have
  157. now been fixed.
  158. </li>
  159. <li>Contouring versions of all 3D surface plotting routines. See added API
  160. above and examples 8 and 11 at <a
  161. href="http://plplot.sourceforge.net/examples/index.html">
  162. http://plplot.sourceforge.net/examples/index.html</a> for some good-looking
  163. examples of this API.</li>
  164. <li>SWIG-generated Python and Java interfaces to the PLplot library. Unlike,
  165. the prior hand-coded interfaces, these new interfaces have essentially
  166. complete support for all PLplot API (with the redundant dimensions of
  167. matrices and vectors dropped). The Python version has a user-friendly
  168. wrapper (see bindings/python/plplot.py) which supports some useful
  169. simplified variations in the argument list as well as angle wrapping (see
  170. below). The Java interface lacks this user-friendly wrapper at the moment.
  171. For other (minor) Java interface limitations see
  172. bindings/java/README.javaAPI.
  173. </li>
  174. <li>Removed bugs in angle wrapping code (a user-friendly way to deal with the
  175. transition from 2pi to 0) for the Tcl and Python interfaces to PLplot. The
  176. Java interface is lacking this angle-wrapping code at the moment.
  177. </li>
  178. <li>Completed Java, Tcl, Python, and Octave equivalents of most of the C
  179. examples. The consistency of example results for the interfaces to PLplot
  180. is a good measure of the quality of the various interfaces.
  181. </li>
  182. <li>The Tcl/Tk interface to PLplot can now be run directly from tclsh and wish
  183. environments (tested on Linux, but not on Unix).
  184. </li>
  185. <li>tkwin driver added. (It does not implement a plug-in device like other
  186. drivers. Instead, it is designed to work in both
  187. plserver and wish
  188. environments, see examples/tk/README.tkdemos.)
  189. </li>
  190. <li>3D clipping support added to allow zooming of 3D plots. This gives good
  191. results for example 18, mostly good results for example 8 (the base contours
  192. [if present] are not clipped properly). Through an oversight, plmesh and
  193. plmeshc were not included in the 3D clipping code fixup so zooming gives a
  194. poor result for example 11.
  195. </li>
  196. <li>PLplot interface to freetype2 library. This allows us to use system fonts
  197. instead of our default Hershey fonts. At this time only the gd device driver
  198. (which implements the png and jpeg devices)
  199. has been freetype-enabled. To use this feature look
  200. at the documentation in drivers/gd.c. This proof of concept gives some
  201. nice-looking antialiased character results in png and jpeg plots using
  202. system fonts, and we need volunteers to extend this idea to other device
  203. drivers as well.
  204. (See the notes on how to do this in
  205. <a href="http://plplot.sourceforge.net/resources/docbook-manual/plplot-html-5.2.1/freetype-notes.html">
  206. http://plplot.sourceforge.net/resources/docbook-manual/plplot-html-5.2.1/freetype-notes.html</a>.)
  207. </li>
  208. <li>Application-defaults files (to set X resources) for use with PLplot and
  209. Tk. See bindings/tk/app-defaults/README for more details.
  210. </li>
  211. </ul>
  212. <p></p>
  213. <h2>5.2.1 Improvements</h2>
  214. <ul>
  215. <li>There has been a a substantial rewrite of the the new autotools
  216. configuration system in a better style which should make it easier to
  217. maintain in the future. As a direct benefit of this rewrite, Debian
  218. packaging of PLplot (see results at
  219. <a href="http://packages.debian.org/unstable/math/libplplot5.html">
  220. http://packages.debian.org/unstable/math/libplplot5.html</a>) is now easier to
  221. do.
  222. </li>
  223. <li>The configuration combination of static libraries and double precision
  224. which failed in 5.2.0 now works.
  225. </li>
  226. <li>Allow 3D plots of irregularly sampled data (see new plgriddata API above
  227. and example 21 at
  228. <a href="http://plplot.sourceforge.net/examples/index.html">
  229. http://plplot.sourceforge.net/examples/index.html</a> for
  230. some good-looking results).
  231. </li>
  232. </ul>
  233. <p></p>
  234. <h2>Configuring, Building, Installing, and Testing PLplot</h2>
  235. <h3>Configuring</h3>
  236. <p>
  237. To configure Plplot just run the configure script with appropriate options
  238. (see below). It normally should find all resources (programmes, libraries,
  239. and headers) required to build PLplot on your system (or else after a
  240. warning turn off some aspect of PLplot that needs the missing resource).
  241. </p>
  242. <p>
  243. Our configuration option defaults have substantially changed from 5.2.0.
  244. Every interface is turned on by default except for Java. You can turn that
  245. on by using the &minus;&minus;enable-java option. (Our new SWIG-generated Java interface
  246. works well to compile and run our rather complete Java examples without
  247. problems, but in our judgement the Java interface needs this fully
  248. publicized 5.2.1 release cycle of full user testing before we turn it on by
  249. default in the next release.) Every device driver is enabled by default
  250. except for gnome (still alpha quality software). Both shared and static
  251. libraries are built by default.
  252. </p>
  253. <p>
  254. There are some important options you may want to use rather than the
  255. defaults. If you want to save the time and space required to build static
  256. libraries, specify &minus;&minus;disable-static. If you prefer the old-fashioned method
  257. of embedding the drivers into the library rather than the default method of
  258. using dynamic (or plug-in) drivers, specify &minus;&minus;disable-dyndrivers. If you
  259. prefer building single precision versions of all the libraries, specify
  260. &minus;&minus;without-double. If you want to install the pre-built documentation that is
  261. included in the tarball, specify &minus;&minus;with-prebuiltdoc. If you want a
  262. different installation prefix than the default /usr/local, specify it using,
  263. e.g., &minus;&minus;prefix=/usr/local/plplot.
  264. </p>
  265. <p>
  266. You can find out quite a bit about configuration options using the
  267. &minus;&minus;help option to the configure command. Also, in difficult cases
  268. there are environment variables you can set to help the configure script
  269. find libraries and headers on your system. Most of these environment
  270. variables are not well documented, but you can usually figure them out by
  271. reading configure.ac and sysloc.in.
  272. </p>
  273. <h3>Building and installing</h3>
  274. <p>
  275. The usual make; make install.
  276. </p>
  277. <h3>Testing</h3>
  278. <p>
  279. Currently none of our examples work in the build directory (unless you take
  280. some extraordinary measures). Instead, you must install PLplot first, then
  281. (optionally) copy the *installed* examples directory to some user location,
  282. build the examples, and exercise them for a comprehensive test. Here are
  283. the details.
  284. </p>
  285. <pre>
  286. # Substitute your installation prefix for /usr/local/plplot. Also note
  287. # this cp step is not necessary if you can write files into your install area
  288. # as an ordinary user.
  289. cp -a /usr/local/plplot/lib/plplot5.2.1/examples /tmp
  290. cd /tmp/examples
  291. # build the installed examples that need compiling
  292. cd c; make; cd c++; make; cd f77; make; cd tk; make; cd ..
  293. # Run all the examples to produce many coloured postscript image files.
  294. ./plplot-test.sh --device=psc
  295. # Find out about other PLplot file devices to test such as png and jpeg.
  296. ./plplot-test.sh --help
  297. </pre>
  298. <p>
  299. If you have installed the Tcl/Tk interface to PLplot you can do further
  300. interactive testing following the instructions in
  301. examples/tcl/README.tcldemos and examples/tk/README.tkdemos.
  302. </p>
  303. <p>
  304. N.B. for all the above testing steps to work /usr/local/plplot/bin must be in
  305. your PATH.
  306. </p>
  307. <h2>The Future</h2>
  308. <p>
  309. The future for PLplot looks bright indeed. 5.2.1 consolidates the paradigm
  310. shifts of plug-in devices, library reorganization, and an autotools-based
  311. configuration scheme for PLplot and establishes an excellent infrastructure
  312. for further more incremental improvements.
  313. </p>
  314. <h2> Thanks </h2>
  315. <p>
  316. I thank the rest of the PLplot core team for all their hard work in making
  317. PLplot-5.2.1 possible. Also,
  318. an external developer, Gary Bishop, deserves special thanks for his
  319. donation of the new SWIG-generated Python interface (which inspired my work
  320. on the SWIG-generated Java interface as well), and his complete rewrite of
  321. what is now called plsurf3d to eliminate our worst rendering bug in 5.1.0.
  322. </p>
  323. <p>Alan W. Irwin, 2003 April 21</p>
  324. </body>
  325. </html>