The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

Changes for version 9.0 - 2012-04-11

  • Perlito5 (Perl 5 compiler):
  • parser:
  • there is now an internal "grammar API"; new words can be added to the grammar from inside perl5 modules; The non-standard "token" grammar was moved to a module
  • here-docs
  • new Perl5-in-Perl6 backend (experimental)
  • new option -Bjs/-Bperl5
  • new option -Cast-perl5
  • added option -I Note: -I./src5/lib is required to compile the compiler and also to run some of the tests
  • runs some tests from the perl5 test suite (pmurias++)
  • implemented prototypes (function signatures)
  • "use", import/unimport; "use strict"/"no strict"
  • perl5 backend:
  • use native data structures and ops
  • javascript backend:
  • works on node-js (pmurias++)
  • @ISA and inheritance
  • %ENV, @ARGV
  • simple regexes (using javascript native regex)
  • symbol tables/typeglobs
  • references
  • "local", "our"; goto &sub
  • wantarray; each; __PACKAGE__
  • native javascript can be accessed with JS::inline('string')
  • reduced generated code size; emitted code is more optimized and better formatted
  • cleanup unused modules from the browser backend
  • javascript backend regressions:
  • the d8 shell (v8 javascript) doesn't support some file system functions needed by the compiler
  • perlito5 calling convention is incompatible with native javascript The last commit using native javascript calls is "e1e3316b"
  • Perlito6 (Perl 6 compiler):
  • compiler namespace moved from Perlito to Perlito6

Documentation

a Perl5 compiler

Modules

Base class for Perlito Perl5 AST nodes
Perl 5 compiler for Perlito5
Code generator for Perlito Perl 5 grammar
AST interpreter for Perlito
precedence parser for Perlito
Parser module for Perlito
Code generator for Perlito Perl5-in-Java
Code generator for Perlito Perl5-in-Javascript2
Code generator for Perlito Perl5-in-Javascript
Ast macros for Perlito
Runtime for Perlito Perl5-in-Javascript grammars
Code generator for Perlito5-in-Perl5
Code generator for Perlito5-in-Perl5
x64 code generator for Perlito
Code generator for Perlito5-in-XS
Base class for Perlito Perl5 AST nodes
Perl 5 compiler for Perlito5
Code generator for Perlito Perl 5 grammar
AST interpreter for Perlito
Grammar for Perlito
Parser and AST generator for Perlito
Parser and AST generator for Perlito
Grammar for Perlito
Parser and AST generator for Perlito
Parser and AST generator for Perlito
precedence parser for Perlito
Parser and AST generator for Perlito
Grammar for Perl5 regex
Grammar for Perlito Grammar
Parser module for Perlito
Grammar for Perlito5 "whitespace"
Parser and AST generator for Perlito
Parser and AST generator for Perlito
Code generator for Perlito Perl5-in-Java
Code generator for Perlito Perl5-in-Javascript2
Code generator for Perlito Perl5-in-Javascript
Ast macros for Perlito
Runtime for Perlito Perl5-in-Javascript grammars
Code generator for Perlito5-in-Perl5
Code generator for Perlito5-in-Perl5
x64 code generator for Perlito
Code generator for Perlito5-in-XS

Provides

in lib/Perlito5X/Carp.pm
in src/Perlito5X/Carp.pm
in lib/Perlito5X/Dumper.pm
in src/Perlito5X/Dumper.pm
in lib/Perlito5X/Exporter.pm
in src/Perlito5X/Exporter.pm
in lib/Perlito5.pm
in lib/Perlito5/Runtime.pm
in src/Perlito5.pm
in src/Perlito5/Runtime.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Macro.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Macro.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in src/Perlito5/AST.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/AST.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Perl5/Emitter.pm
in lib/Perlito5/Perl6/Emitter.pm
in lib/Perlito5/XS/Emitter.pm
in src/Perlito5/AST.pm
in src/Perlito5/Eval.pm
in src/Perlito5/Java/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Perl5/Emitter.pm
in src/Perlito5/Perl6/Emitter.pm
in src/Perlito5/XS/Emitter.pm
in lib/Perlito5/Dumper.pm
in src/Perlito5/Dumper.pm
in lib/Perlito5/Grammar.pm
in lib/Perlito5/Grammar/Control.pm
in lib/Perlito5/Grammar/Attribute.pm
in src/Perlito5/Grammar/Attribute.pm
in lib/Perlito5/Grammar/Bareword.pm
in lib/Perlito5/Grammar/Block.pm
in lib/Perlito5/Grammar/Expression.pm
in lib/Perlito5/Grammar/Map.pm
in src/Perlito5/Grammar/Map.pm
in lib/Perlito5/Grammar/Number.pm
in lib/Perlito5/Grammar/Print.pm
in lib/Perlito5/Grammar/Regex5.pm
in lib/Perlito5/Grammar/Regex6.pm
in lib/Perlito5/Grammar/Scope.pm
in src/Perlito5/Grammar/Scope.pm
in lib/Perlito5/Grammar/Space.pm
in lib/Perlito5/Grammar/Statement.pm
in lib/Perlito5/Grammar/String.pm
in src/Perlito5/Grammar/String.pm
in lib/Perlito5/Grammar/Use.pm
in lib/Perlito5/Java/Emitter.pm
in src/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Array.pm
in src/Perlito5/Javascript2/Array.pm
in lib/Perlito5/Javascript2/CORE.pm
in src/Perlito5/Javascript2/CORE.pm
in lib/Perlito5/Javascript2/IO.pm
in src/Perlito5/Javascript2/IO.pm
in lib/Perlito5/Javascript2/Emitter.pm
in src/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript2/PrettyPrinter.pm
in src/Perlito5/Javascript2/PrettyPrinter.pm
in lib/Perlito5/Javascript2/Runtime.pm
in src/Perlito5/Javascript2/Runtime.pm
in lib/Perlito5/Javascript2/Sprintf.pm
in src/Perlito5/Javascript2/Sprintf.pm
in lib/Perlito5/Javascript3/CORE.pm
in src/Perlito5/Javascript3/CORE.pm
in lib/Perlito5/Javascript3/IO.pm
in src/Perlito5/Javascript3/IO.pm
in lib/Perlito5/Javascript3/Emitter.pm
in src/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Javascript3/Runtime.pm
in src/Perlito5/Javascript3/Runtime.pm
in lib/Perlito5/Javascript3/Sprintf.pm
in src/Perlito5/Javascript3/Sprintf.pm
in lib/Perlito5/Perl5/PrettyPrinter.pm
in src/Perlito5/Perl5/PrettyPrinter.pm
in lib/Perlito5/Perl6/PrettyPrinter.pm
in src/Perlito5/Perl6/PrettyPrinter.pm
in lib/Perlito5/Perl6/TreeGrammar.pm
in src/Perlito5/Perl6/TreeGrammar.pm
in lib/Perlito5/Emitter/Token.pm
in src/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in src/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in src/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in src/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in src/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in src/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in src/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in src/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in src/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in src/Perlito5/Emitter/Token.pm
in lib/Perlito5/Test.pm
in src/Perlito5/Test.pm
in lib/Perlito5/TreeGrammar.pm
in src/Perlito5/TreeGrammar.pm
in lib/Perlito5/X64/Assembler.pm
in src/Perlito5/X64/Assembler.pm
in lib/Perlito5/X64/Assembler.pm
in src/Perlito5/X64/Assembler.pm
in lib/Perlito5/X64/Assembler.pm
in src/Perlito5/X64/Assembler.pm
in lib/Perlito5/X64/Assembler.pm
in src/Perlito5/X64/Assembler.pm
in lib/Perlito5/Eval.pm
in src/Perlito5/Eval.pm
in lib/Perlito5X/bytes.pm
in src/Perlito5X/bytes.pm
in lib/Perlito5X/encoding.pm
in src/Perlito5X/encoding.pm
in lib/Perlito5X/feature.pm
in src/Perlito5X/feature.pm
in lib/Perlito5X/strict.pm
in src/Perlito5X/strict.pm
in lib/Perlito5X/utf8.pm
in src/Perlito5X/utf8.pm
in lib/Perlito5X/warnings.pm
in src/Perlito5X/warnings.pm