PDL::D...erGuide(3pm)
π NAME π
PDL::DeveloperGuide β How to develop for PDL π οΈβ¨
hi bestie!! yes this is the PDL::DeveloperGuide(3pm) page, and it's literally the group chat of "how do I actually contribute to PDL" π«Ά everything you need to know is right here, no cap.
π Public Git Repository π
The PDL source distribution lives with Git over at the GitHub site https://github.com/PDLPorters/pdl, sitting alongside all the other PDL-related software π.
This is the preferred place to drop bug reports or β even better, main character move β pull requests π
β¨ PDL Developer Guidelines β¨
okay so these guidelines are for any developer who has access to the PDL Git repository. read them, love them, live them π
- Add new files to the inventory Before you commit a change with new files into the repository, you should update:
MANIFEST(if files were added, using'make manifest')MANIFEST.SKIP(if applicable)
- Add tests Make sure you add a test case in the
't'directory for any significant additional capability you add to PDL. And please useTest::Moreor one the of the Test modules available via perl modules rather than doing-it-yourself! π - Add documentation Please include POD documentation for any functions you add to the distribution π.
- Run the tests Don't commit before you successfully built and passed
make test. like, actually. it's the vibe check π§ - Watch for bug reports Bugs should be reported to the GitHub issue tracker at
https://github.com/PDLPorters/pdl/issues. See PDL::Bugs for a detailed description π. - PDL Developer Recommended Workflow This is detailed in section 4.11 of PDL::FAQ π.
π¦ PDL Developer Notes π¦
π₯ Getting (some) Debug Information π₯
PDL has some global variables which control diagnostic output:
$::PP_VERBOSEβ if set to a true value, PDL::PP will print details while building the module processingpp_defdeclarations.$PDL::Graphics::TriD::verboseβ if set to a true value, the routines in PDL::Graphics::TriD will report their progress.$PDL::verboseβ several modules produce diagnostic output to STDOUT if$PDL::verbosehas a true value.$PDL::debugβ several modules produce diagnostic output if$PDL::verbosehas a true value.
π Generating a Stack Trace π
To generate a stack-trace to help us debug a problem, please first of all do make realclean and ensure you have the latest released PDL. Then, if it's still happening, please follow this process:
- Rerun perl Makefile.PL This will update the timestamps on Makefiles, prompting a full rebuild.
- Edit your generated top-level Makefile Add
-gto theOPTIMIZE =line to generate debug symbols (this gets propagated to subdirectories). - Run:
makeThis builds PDL into theblibdirectory. - Run:
gdb perl -ex 'run -Mblib t/tracking.t'In gdb, run:bt - Copy-paste the backtrace output This should show where the segfault originated.
Then please open an issue on whichever repo is relevant with your perl -V output and PDL version, together with the stack-trace created above. When you do paste such output into a GitHub issue, please surround such blocks with ``` on their own lines. You can check out how it will render with the Preview button above the issue-editing box π.
πΈ Random Musings πΈ
A (small) collection of random musings to note if you feel the need to improve or add to PDL (please do π):
- Organizing Commits The preferred way to organize commits is one commit per small, meaningful change (ideally each with an update to the corresponding tests). This makes it easy in the log to determine what was done and to locate any desired commit in case of issues that need to be resolved ποΈ.
π Finding the Source π
As of 2.096, the directory layout in the repository is largely the same as in a PDL installation, especially in PDL::Basic.
Where the .pm files are generated via PDL::PP, changes would need to go into their .pd sources. Use git grep Package::Name to find them π.
β References β
- Official Website For the audience of PDL users there is a dedicated website in the perl.org domain:
https://pdl.perl.org/π. - The current PDL version on MetaCPAN
https://metacpan.org/dist/PDL - A guide to PDL's module references for PDL users PDL::Modules
- The comprehensive modules index (autogenerated) PDL::Index
- Git The main Git home page is at
http://www.git-scm.org/. Two good online Git references are:- the Git User's Manual at
http://www.kernel.org/pub/software/scm/git/docs/user-manual.html - and Git Magic at
http://www-cs-students.stanford.edu/~blynn/gitmagic/
- the Git User's Manual at
and that's the whole thing bestie, you're officially a PDL dev now, go slay π β¨
this little manual was brought to you by perl v5.42.3 on 2026-08-20 β the PDL::DeveloperGuide(3pm) era, iconic, no notes π«Άππ
π¦ where this page comes from
- ubuntu stonking: pdl 1:2.106-1build1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms