Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Native Module

PetaPerl unterstützt kein XS (C-Erweiterungen). Stattdessen werden leistungskritische CPAN-Module nativ in Rust reimplementiert. Diese „nativen Module“ bieten dieselbe Perl-API wie ihre XS-Gegenstücke, integrieren sich aber direkt in PetaPerls Laufzeitumgebung — was JIT-Kompilierung, Auto-Parallelisierung und Null-FFI-Overhead ermöglicht.

Funktionsweise

Wenn Sie use List::Util qw(sum min max) schreiben, erkennt PetaPerls Modul-Lader, dass List::Util eine native Implementierung besitzt, und registriert Rust-Funktionszeiger direkt. Es gibt keinen Kompilierungsschritt, kein .so-Laden und keinen XS-Glue-Code.

Native Funktionen werden über NativeFn dispatcht — einen direkten Funktionszeiger mit O(1)-Aufruf-Overhead, identisch zu eingebauten Operatoren.

Verfügbare native Module

Kern-Hilfsmittel

ModulFunktionenHinweise
Scalar::Utilblessed, reftype, refaddr, weaken, isweak, looks_like_number, …Vollständige API
List::Utilsum, min, max, first, any, all, none, reduce, …MULTICALL-optimiert
Sub::Utilsubname, set_subname
Hash::Utillock_keys, lock_hash, …

Digest / Kryptographie

ModulFunktionenHinweise
Digest::MD5md5, md5_hex, md5_base64, OO-SchnittstelleVollständige API
Digest::SHAsha1, sha256, sha512, OO-SchnittstelleVollständige API
MIME::Base64encode_base64, decode_base64
MIME::QuotedPrintencode_qp, decode_qp

Datei / System

ModulFunktionenHinweise
File::Basenamebasename, dirname, fileparse
File::Copycopy, move
File::Findfind, finddepth
File::Globbsd_glob
File::Pathmake_path, remove_tree
File::Speccatdir, catfile, rel2abs, …
File::Temptempfile, tempdirOO + funktional
File::statstat (OO)
Cwdcwd, getcwd, abs_path
Sys::Hostnamehostname

I/O

ModulFunktionenHinweise
IO::FileOO-Dateihandle
IO::HandleOO-Handle-Basis
IO::DirOO-Verzeichnishandle
IO::PipeOO-Pipe-Handle
IO::Selectselect-Wrapper
IO::SocketOO-Socket-Handle
IO::Seekableseek/tell-Mixin
FileHandleLegacy-OO-Handle
SocketSocket-Primitive

Daten / Kodierung

ModulFunktionenHinweise
Data::DumperDumper
Storablefreeze, thaw, nstore, retrieve
Encodeencode, decode, find_encoding
JSON::PPencode_json, decode_jsonÜber reines Perl

Numerik / Mathematik

ModulFunktionenHinweise
POSIXfloor, ceil, fmod, strtod, strftime, …Teilmenge
Math::GMPGanzzahlarithmetik beliebiger GenauigkeitÜber Peta::FFI::GMP

Build / Konfiguration

ModulFunktionenHinweise
Config%Config-HashBuild-Konfiguration
FcntlO_RDONLY, O_WRONLY, …Konstanten automatisch geladen
ErrnoENOENT, EACCES, …Konstanten automatisch geladen

Introspektion

ModulFunktionenHinweise
BCompiler-Backend-IntrospektionMinimal
PadWalkerpeek_my, peek_our
mroget_linear_isa, set_mro
versionVersionsobjekt-VerarbeitungVollständige OO-API

Leistung

Native Module laufen mit derselben Geschwindigkeit wie eingebaute Operatoren, da sie denselben Dispatch-Mechanismus verwenden. Für Funktionen, die Blöcke entgegennehmen (first, any, all, reduce), verwendet PetaPerl MULTICALL-Optimierung, um den Overhead von Unterprogrammaufrufen pro Element zu vermeiden.

Benchmarks (vs. perl5 mit XS):

FunktionPetaPerl nativperl5 XSVerhältnis
List::Util::sum1,7x schnellerBasislinie
List::Util::min/max2,9x schnellerBasislinie
List::Util::first~1xBasislinieMULTICALL-Parität

Native Module hinzufügen

Siehe Dokumentationspipeline für Informationen darüber, wie die Dokumentation nativer Module aus dem Rust-Quellcode extrahiert wird.