Portal:Embedding and Extending Perl: Difference between revisions
No edit summary |
No edit summary |
||
Line 2: | Line 2: | ||
[[File:51WB2JDyfqL.jpg|alt=Extending and Embedding Perl by Jenness and Cozens is seminal work on this topic.|thumb|[https://www.amazon.com/Extending-Embedding-Perl-Tim-Jenness/dp/1930110820 ''Extending and Embedding Perl''] by Jenness and Cozens is seminal work on this topic.]] | [[File:51WB2JDyfqL.jpg|alt=Extending and Embedding Perl by Jenness and Cozens is seminal work on this topic.|thumb|[https://www.amazon.com/Extending-Embedding-Perl-Tim-Jenness/dp/1930110820 ''Extending and Embedding Perl''] by Jenness and Cozens is seminal work on this topic.]] | ||
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. | 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. | ||
This portal is in need of a domain expert, in the meantime it is a collection of links and other resources. | |||
== Recent == | |||
[https://blogs.perl.org/users/nerdvana/2025/01/premium-xs-integration-pt-1.html Premium XS Integration Part 1] by [https://blogs.perl.org/users/nerdvana/ 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 == | |||
* [https://github.com/rurban/illguts/blob/db5d51138597724fa98f55591cb487ef81bae22c/illguts.pdf Perl Illguts] (0.49, Perl 5.20+) by Reini Urban, et al. | |||
* [https://perlbin.sourceforge.net/perlcompiler/perl.internals.pdf Perl 5 Internals] by Simon Cozens (2001) |
Revision as of 10:43, 29 January 2025
Introduction
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.
This portal is in need of a domain expert, in the meantime it is a collection of links and other resources.
Recent
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
- Perl Illguts (0.49, Perl 5.20+) by Reini Urban, et al.
- Perl 5 Internals by Simon Cozens (2001)