http://qs321.pair.com?node_id=11138523

PDL 2.058 has just been released. Notable changes since 2.057: 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:

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.

Replies are listed 'Best First'.
PDL 2.059 released
by etj (Deacon) on Nov 08, 2021 at 05:08 UTC
    PDL 2.059 has just been released. Notable changes since 2.058:
    • As alluded above, pthreading now uses the number of available CPU cores if no PDL_AUTOPTHREAD_TARG is set
    • use of tgmath.h plus some macros makes for shorter generated functions
    The first point will mean you need to ensure you set “NoPthread=>1” on your functions if that is necessary, for instance if you are calling into a non-thread-safe library, or doing I/O.

    Please try the new PDL and report any problems.

PDL 2.062 released
by etj (Deacon) on Nov 19, 2021 at 05:12 UTC
    PDL 2.062 has just been released. Notable changes since 2.059:
    • Fixes for log10 with “tgmath”
    • Native-complex ->re and ->im now do two-way dataflow
    • The random-number functions now use xoroshiro256+ rather than the almost-always worse (and thread-unsafe) libc analogues; they can now also pthread
    Future plans, in no particular order:
    • 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
    • “loop fusion” techniques to maximise locality of computation, minimising data’s trips through the “straw” between CPU and main RAM
    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.

      thanks for that! (I just learned what "loop fusion" is)

PDL 2.063_04 released
by etj (Deacon) on Jan 07, 2022 at 22:22 UTC
    PDL 2.063_04 has just been released. Notable changes since 2.063_01:
    • pthreads should now be available on BSD systems
    • Support for signed and unsigned versions of all integers up to 64-bit, and real and complex long double
    • qsortvec* now work with badvalues as documented
    • wfits now handles RICE compression
    • NiceSlice now works correctly with comments and strings
    • rmpeg added, rpic and wpic work with multi-image PNM files
    • xvals returns at least a double, avoiding problems with e.g. byte ndarrays
    Please give it a try, and report problems!
Re: PDL 2.058 released
by xiaoyafeng (Deacon) on Nov 08, 2021 at 08:17 UTC
    I tried to install it by cpanm but failed:




    I am trying to improve my English skills, if you see a mistake please feel free to reply or /msg me a correction

        Unfortunately the line numbers are a bit misleading, and the error is nothing to do with %extra etc. The error is actually happening on a call to log10() when passed a PDL_Byte (unsigned char) and I think PDL_Ushort (unsigned short). I believe it's a compiler/libc bug of some sort.
      Thanks for the report! Could you share the result of perl -V:gccversion
PDL 2.063_01 released
by etj (Deacon) on Dec 21, 2021 at 14:43 UTC
    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!)
    EDIT: 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.

PDL 2.063 released
by etj (Deacon) on Nov 20, 2021 at 20:09 UTC
    PDL 2.063 was released yesterday. The automatic seeding of its supplied random-number generator is now more randomised, from the system time and also from the process ID; code provided by the mighty Zaki Mughal.