Portal:Embedding and Extending Perl
Introduction[edit | edit source]
One of Perls major strengths is the many options programmers have for extending Perl using C code and digging into the guts of the interpreter. This page is the dedicated portal for the vast and option rich subject.
Note: This portal is in need of a domain expert(s) willing to participate at least in the "Discussion" tab, in the meantime it is a collection of links and other resources. Email me if you're interested.
Modern Resources[edit | edit source]
- XS Cheatsheet by nrdvana (github.org)
Recent Articles[edit | edit source]
Premium XS Integration Part 1 by nerdvana (blogs.perl.org)
The author advocates for a balanced XS approach that exposes low-level C library functions while ensuring runtime safety to prevent crashes. The article critiques common patterns for binding C structs to Perl objects, pointing out issues like segfaults and improper object management. It recommends using Perl’s magic system to link C objects to Perl objects securely, preventing accidental errors. Typemaps are also highlighted as a way to simplify XS code by automating object validation and memory management, reducing boilerplate and improving error handling. Additionally, the article introduces the use of custom structs to manage multiple C pointers for complex libraries, further streamlining XS code. These techniques aim to create foolproof, efficient XS bindings, providing clear error messages and improving the overall developer experience.
Past[edit | edit source]
- Perl Illguts (0.49, Perl 5.20+) by Reini Urban, et al. (github.org)
- Perl 5 Internals by Simon Cozens (2001) (sourceforge.net)