Glossary#

Terms, acronyms, and project-specific vocabulary.

pperl#

The PetaPerl runtime — a Rust reimplementation of Perl 5, binary name pperl. Reads the same Perl source code the stock perl interpreter does; ships a p5 runtime (the faithful reimplementation) as default and a pp runtime (native Rust interpreter) under --pp.

p5 runtime#

The default pperl runtime. Behavioural mirror of perl5: semantics, edge cases, magic. Where a test disagrees with upstream perl5, p5 is the one that’s wrong.

pp runtime#

The alternative pperl runtime, selected by --pp. Implemented from scratch in Rust with a simpler op dispatch. Faster on some workloads; not yet feature-complete against perl5.

SV#

Scalar Value. A Perl scalar as represented in pperl’s runtime — the enum lives in src/runtime/sv.rs and mirrors perl5’s SV layout where the semantics depend on it.

JIT#

Just-In-Time compilation. pperl compiles hot loops to machine code via Cranelift; triggered automatically on eligible for/while bodies.

named unary operator#

A Perl built-in that takes exactly one argument at a specific precedence level — tighter than comparison operators, looser than the arithmetic and shift operators. Unlike a list operator (which greedily slurps the rest of the expression), a named unary takes its one argument and stops there. Examples: defined, exists, ref, scalar, length, uc/lc, chr/ord, int, abs, sqrt, sin/cos, log, exp, -e/-r/-f/… file tests. See perlop precedence row 10.

list operator#

A Perl built-in that takes a list of arguments and, at the right-hand side of the operator, greedily consumes the rest of the expression. Examples: print, sort, push, unshift, join, split. Contrast with named unary operator.

This is an initial seed. Terms referenced by {term} roles elsewhere in the docs should be added here when they appear.