Portal:Embedding and Extending Perl: Difference between revisions

From Perl Guilds - Getting Medieval with Perl
Jump to navigation Jump to search
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

Extending and Embedding Perl by Jenness and Cozens is seminal work on this topic.
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.

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