- 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)
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
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.