PDL 2.058 has just been released. Notable changes since 2.057:
- pthreading can be over non-divisible number of threads
- With an opt-in, .pd files generate one C file per function, allowing parallel build
- PP only updates files that have changed, for faster rebuilds during development especially with the above
- allow any pointer including “pdl *” as OtherPars
- OtherPars are now stored in a separate struct, so no restriction on names
- all PDL operations now have a C function interface called pdl_(name)_run
- 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)
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).
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.
Future plans, in no particular order:
- enabling pthreading by default rather than opting-in with an environment variable, detecting how many cores you have automatically
- 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 to also utilise GPUs if available
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!
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.
Please give the new PDL a try and report problems.