PDL 2.063_01 released

There have been a couple of developments in PDL since the last announcement on here I could find, from 2013. To hypersummarise: 64-bit indexing, native complex number support, automatic pthreading using all available CPU cores, faster installation thanks to parallel-building, memory-mapped data, repository hosted on GitHub, easy to use "with" Inline. Returning you to the announcement:

PDL 2.063_01 has just been released. Notable changes since 2.062:


  • Various API changes (see below)
  • Improvements to $MACRONAME() handling including that arguments can now contain (balanced) brackets
  • redodims no longer leaks memory
  • The PROJ.4 interface has been updated to use the PROJ v6+ interface, finally
  • A zeroes() regression from 2.057_01 where it ignored the type of an input PDL has been fixed
  • PDL::Compression is now thread-safe (thanks Derek for the report!)

An attempt has been made to fix the older-clang/LLVM compilation errors - if you have clang 12.0.0 or earlier and can try installing this version and report results here, that would be very helpful!

As part of the “independent C interface” effort, the API of some functions has changed, including the PP-generated ones now not returning “void” (and throwing Perl exceptions) but a “pdl_error” (so that callers can use them to throw exceptions but not necessarily Perl ones, possibly doing cleanup first). This broke the Application Binary Interface (ABI), which means you’ll need to reinstall your PP-generated PDL extensions. Sorry.

Further to the above – if any of your PP functions do a “return” to terminate early, you will need to update that to say “return PDL_err”.

Future plans, in something like intended order:


  • “loop fusion” techniques to maximise locality of computation, minimising data’s trips through the “straw” between CPU and main RAM
  • finish the independent C interface for making PDL usable from e.g. Python
  • more pervasive use of e.g. BLAS/LAPACK routines if available
  • use OpenCL or other means to also utilise GPUs if available

The IRC channel (#pdl on irc.perl.org) is a great virtual place to come and ask questions, or just watch the GitHub messages flow by.

As usual, please give the new PDL a try and report problems.

Leave a comment

About Mohawk

user-pic I blog about Perl.