perlnews
etj
PDL 2.058 has just been released. Notable changes since 2.057:
<ul>
<li>pthreading can be over non-divisible number of threads
<li>With an opt-in, .pd files generate one C file per function, allowing parallel build
<li>PP only updates files that have changed, for faster rebuilds during development especially with the above
<li>allow any pointer including “pdl *” as OtherPars
<li>OtherPars are now stored in a separate struct, so no restriction on names
<li>all PDL operations now have a C function interface called pdl_(name)_run
<li>far fewer “SV *” OtherPars, instead they just take e.g. “PDL_Index name[]” and PP and XS make things happen (a “name_count” variable is magically added)
</ul>
Due to changes to the “Core” structure, you will need to reinstall all your PDL::PP modules (though not pure-Perl ones) IF your current PDL version is <2.057_04. Sorry. There may be further core changes, but they should be binary-compatible (things being added not changed).
<p>
It is a known problem that older versions of clang/LLVM (at least 10.0.1 and 12.0.0, though not 12.0.5) crash when compiling the latest PDL. If this happens for you, please upgrade your clang/LLVM.
<p>
Future plans, in no particular order:
<ul>
<li>enabling pthreading by default rather than opting-in with an environment variable, detecting how many cores you have automatically
<li>finish the independent C interface for making PDL usable from e.g. Python
<li>more pervasive use of e.g. BLAS/LAPACK routines if available
<li>use OpenCL to also utilise GPUs if available
</ul>
This work has been aided hugely by the tireless, superb efforts on the PDL ecosystem’s continuous integration (CI) capability by the mighty Zaki Mughal. Thanks, Zaki!
<p>
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.
<p>
Please give the new PDL a try and report problems.