[Perldl] PDL-2.4.10 released

chm devel.chm.01 at gmail.com
Sun Feb 5 06:11:45 HST 2012


All PDL Users-

The PDL Development Team is pleased to announce the
PDL-2.4.10 release of the Perl Data Language *and*
the first PDF release of the PDL Book.

PDL-2.4.10 is the latest point release with more
functionality, portability, and robustness than ever
before, including:

  - POSIX threads support for all platforms
  - Auto parallelization of PDL threadloops
  - Support for PDLs larger than 2GiB
  - PDL Book draft release (PDF format)
  - Much, much, more...

As always, the source distribution will be available
at a CPAN mirror near you within a couple of days.
Our sf.net site has the source distribution and the
PDL Book:

> http://sourceforge.net/projects/pdl/files/PDL/2.4.10/PDL-Book-20120205.pdf/download

Windows binary PPM are available in the usual site,
see "Get PDL" in the sidebar at http://pdl.perl.org
(the PDL website for links, documentation and info
for all things PDL).

The SciPDL-2.4.10 release for MacOS X systems will be
announced when it is available.

Enjoy and Happy PDL-ing!

Chris Marshall
   for the PDL Development Team



Release Notes for PDL 2.4.10 --------------------------

General Notes:

  New Stuff:

   * PDL::Constants module provides E, PI, I (or J) and more.

   * PDL::NiceSlice has a new engine based on Filter::Simple
     which is more selective about where the PDL::NiceSlice
     source filter is applied.

   * pdl() constructor now accepts a string argument which
     can include MATLAB-style [ ; ] syntax, bad values,
     inf values, and nan values.  This makes it much easier
     to specify pdl values in programs and scripts.

   * PDL now supports pthreads on all platforms as well
     as a new, auto-parallelization capability for PDL
     threadloops across multiple processors using the
     PDL::ParallelCPU module.

   * Many(!) bug fixes.


  Incompatible Changes:

   * List output from whichND is now deprecated.

   * The default.perldlrc uses PDL::Constants to
     provide E and PI.

   * perldl.conf has new fields so be sure to update
     any local versions you use with the new fields.

   * rcols and wcols always use dim0 for the data
     dimension and dim1 for the column dimension.
     This only matters if you use the support for
     reading multiple columns into a 2D pdl.

   * Makefile.PL now requires at least version 6.31
     of ExtUtils::MakeMaker to support the new standard
     INSTALL_BASE option matching Module::Build usage.

   * Prerequisite Text::Balanced minimum version is
     now 1.89 although this is not expected to be an
     issue because it is provided in the perl core
     since 5.8.0.


Highlights:

  * General cleanup of code, including restructuring for clarity.

  * List output from whichND() is now deprecated.  whichND() now returns
    a piddle of coordinates in all cases with a warning when a list
    context is detected.  See the docs for work-arounds to your code.

  * PDL::IO::Misc now has better support for handles that are not
    files (e.g., pipes or standard input) for rgrep(), rcols(),...

  * Added bad value support to pctover() and oddpctover().
    This was sf.net feature #3328001.

  * New whereND() routine provides the same functionality as where
    but with support for multi-dimensional masks and implicit
    threading over higher dimensions.  This was sf.net feature
    request #3390043.

  * Many bugs fixed.

      3059083  Problems with FITS header handling
      3080505  PLplot segfaults on plshades call on OS X
      3285520  status message from gslmroot_fsolver
      3294808  sever on Empty piddle causes segfault
      3295544  NiceSlice parsing bug
      3299611  FITS I/O obscure bug
      3300467  NiceSlice asterisk parsing issue
      3307121  wmpeg sometimes kills perldl if file already exists
      3307613  indexND of Empty pdls can segfault
      3368883  t/opengl.t fails if display type not available
      3375837  _read_flexhdr state machine fails
      3388862  tiny bug in PDL-2.4.3. May apply to 2.4.9
      3391645  bad printf formats in pdlapi.c and others
      3394327  PDL::IO::FITS::wfits corrupting FITS image
      3396738  PDL::Core::convert default return type
      3410905  t/pgplot.t hangs test harness for PDL
      3415115  whereND fails to handle all zero mask case
      3428356  PDL::Transform::map output FITS header is slightly wrong
      3434842  Error in definition of gsl_sf_laguerre_n function

  * PDL::Constants now provides: E, PI, I and J and is loaded by the
    default.perldlrc.  It is not yet part of 'use PDL' so you'll need
    to 'use PDL::Constants ...' by hand for now.

  * default.perldlrc sets $PDL::IO::FlexRaw::writeflexhdr=1 by
    default so that writeflex() to a filename automatically writes
    the header file.  This is different from the previous behavior
    but it seems to "do what you mean".  Feedback welcome!

  * PDL::NiceSlice now has a new engine based on Filter::Simple which
    is smarter about only applying the slicing source filter to syntax
    occurring outside of POD, comments, and quotelike strings.  The
    new implementation is available for *files* by setting the
    PDL_NICESLICE_ENGINE environment variable to 'Filter::Simple'.

    Work is underway to port the new niceslice filter implementation
    to perldl/pdl2.  Once this task is completed, the new engine will
    become the default source filter and the PDL_NICESLICE_ENGINE
    environment variable will be removed.

  * There is experimental support for PDL::NiceSlice syntax in the
    perl debugger (i.e., perl -d).  Just set the PERL5DB environment
    variable to 'BEGIN { require "PDLdb.pl" }' to use niceslice
    from the debugger command line.  If PERL5DB is already set,
    you'll need to adjust the above recipe accordingly.

  * Better handling of build configuration options from perldl.conf
    as well as improvements in the detection of external dependencies.

  * perldl.conf has some new fields added:
     - POSIX_THREADS_INC and POSIX_THREADS_LIBS to specify
           locations of your pthread header file and library
     - PDL_CONFIG_VERSION to track the perldl.conf VERSION
     - PDLDOC_IGNORE_AUTOLOADER to control pdldoc behavior
     - PDL_BUILD_DIR provides the build directory path
     - PDL_BUILD_VERSION provides the PDL build version
           (to help with ambiguity from multiple PDL installs)

    NOTE: If you are using a private or customized perldl.conf
    file, please be sure to update with these additional fields
    as the perl Makefile.PL doesn't yet detect version skew
    automatically.

  * PDL::IO::Browser now builds in many cases (but not all).
    If you try it, please let us know how it goes.  Just edit
    the value of WITH_IO_BROWSER in your perldl.conf before
    configuring the build (i.e., perl Makefile.PL).

  * PDL::PP has seen some significant improvements including
    code cleanup, improved documentation, and code refactoring
    for comprehension.  There is a new PDL::PP::pp_line_numbers()
    routine which enables line # traceback for errors and warnings
    from PP code.

  * Improved error output from the pdl2 shell via the new
    CleanErrors plugin which filters out the non-PDL part
    of the error output leading to *much* more concise and
    helpful reports.

  * The pdl() constructor now accepts a string argument which
    allows for writing pdls using a matlab/octave style
    syntax as well as cutting and pasting from interactive
    session output to create pdls initializations for scripts
    and program files.

    The new constructor also allows for inf, nan, and bad to
    generate the appropriate values (case insensitive), e.g.,

    $bad = pdl q[1 2 3 bad 5 6];  # Set 4th element to bad value
    $bad = pdl q[1 2 3 BAD 5 6];  # ditto
    $bad = pdl q[1 2 inf bad 5];  # 3rd element is IEEE inf
    $bad = pdl q[nan 2 inf -inf]; # 1st value is IEEE nan

    This is new functionality so feedback and problem reports
    are welcome.

  * PDL::Image2D has new routines: pnpoly() to determine the points
    in a polygon from the sequence of vertex coordinates, and
    cc4compt() for 4-component labeling of a binary image.

  * PDL now supports pdls larger than 2GiB.  The element count
    is still an int type internally so the total number of elements
    per-piddle must be less than 2**31.

  * POSIX threads (pthreads) are supported for win32 and cygwin
    platforms.  Pthreads are now available for all PDL platforms.

  * New PDL::ParallelCPU module provides automatic distribution
    of implicit thread loops across a number of processors.  Now
    you can watch your PDL computations maximize the load on
    *all* your processors.  See the docs for how to configure this
    feature and how to adjust your calculations to best take
    advantage of this feature.

  * PDL::Graphics::PLplot now works with the latest release of the
    PLplot library and has improved configuration and build
    handling.  Feedback welcome.

  * rcols() and wcols() now use the same convention for multi-column
    input and output: dim0 is *always* the data dimension and
    dim1 corresponds to the columns in the file.  This adjustment
    makes them their inverse operations.

  * The ADEV calculation in statsover has been corrected along
    with the documentation.

  * PDL::Graphics::TriD changes:
     - PDL::Graphics::TriD now builds using the perl OpenGL
           module (POGL) when configured on cygwin with the
           interface=W32API option.  By default, POGL used
           interface=GLX on cygwin which does software rendering
           via Mesa/X11 (slower!).  If you reinstall POGL with
           the W32API setting, you will need to rebuild PDL and
           PDL::Graphics::TriD to pick up the new configuration.
     - A new 4-line graphics demo contributed by Mark Baker has
           been added to 'demo 3dgal'.  Take a look.

  * Various enhancements to FITS handling, including:
    - add map() fix for nonlinear FITS headers
    - Enable hdrpcy() in rfits() for Rice-compressed images

  * Test suite improvements to provide better diagnostics from
    failures and to make tests more correct avoiding "false fails"
    in the test reports.  Various tests have been migrated to use
    File::Temp::tempdir and File::Temp::tempfile to improve the
    robustness for temporary files and directories naming and
    creation during tests.

  * Update ExtUtils::MakeMaker required version to 6.31 to support
    the new standard of INSTALL_BASE to configure for a local
    perl/PDL module installation.

  * Update Text::Balanced required version to 1.89.  This is the
    version present in perl 5.8.0 (the minimum required for PDL)
    so this change in requirement is not expected to affect any
    PDL users.

  * pdldoc now searches your PDLLIB path for PDL::AutoLoader docs
    in addition to the pre-extracted documentation database.  This
    makes pdldoc give the same output as the help command in the
    PDL shells.

  * Many updates and additions to the PDL documentation.

  * Devel::CheckLib is being used in more places during the
    PDL configuration stage.  We plan to make this the standard
    baseline for dependency library detection going forwards.
    The included copy of Devel::CheckLib has been updated to 0.95.

  * A new unified implementation of barf()/warn() for PDL removes
    code duplication.  barf() is now defined in both PDL::Core and
    the PDL packages.  PDL::cluck is added as an analog of Carp::cluck
    (as PDL::barf is an analog of Carp::confess).  barf() now
    generates its stack trace by hooking into Carp::confess on
    both the Perl and C sides.

  * Various fixes for PDL::Transform
    - fix inverse in perspective()
    - fix t_cubic() parameter parsing
    - fix handling of multiple PCi_j systems in the piddle header

  * Added SIGPIPE handlers to cases where PDL uses pipes to/from
    external processes (such as ffmpeg or some NetPBM image
    converter programs).  This should make PDL "SIGPIPE safe" by not
    exiting when a PDL piped IO output process quits (e.g., as when
    called from within the perldl/pdl2 shell).



More information about the Perldl mailing list