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.001

  • Perlito5 (Perl 5 compiler):
  • command line: -Cast-json
  • fix CPAN distro
  • dev 2015-08-17
  • Perlito5 (Perl 5 compiler):
  • more than 1700 tests
  • Parser:
  • emit the same error messages as 'perl' in more places
  • expanded support for prototypes, regex, v-strings
  • track variable redeclarations and variable scopes
  • add the variable type to AST nodes ("real sigil")
  • "Perlito5X" namespace re-implements CPAN modules that are not possible (or not easy) to support directly in Perlito - such as Data::Dumper. Some modules are inlined in the parser - such as "vars" and "constant".
  • add "<<>>" (Perl 5.22)
  • support for "__LINE__", "__FILE__", and tracking the current line number
  • more pod implementation details, such as "=encoding"
  • fix return value for if/unless modifiers
  • command line - implement "-n", "-p", "-M", "-m", fixed "-I"
  • use a smaller grammar-grammar
  • use a faster calling convention in grammar
  • shorter AST node names
  • Perl5-to-Javascript compiler:
  • file operators (nodejs)
  • create regex variables $1, $2, ...
  • implement regex /e and /ee modifier
  • /usr/bin/node displays the message's text and a backtrace (Shlomi Fish)
  • initial overload implementation
  • flip-flop operator, split, tr
  • Perl5-to-Java compiler:
  • statements: while() and if()
  • containers: hash, array, scalar; autovivification
  • lexical and global variables
  • Java data types: String, long, double, boolean
  • Perl data types: closures, references
  • initial implementation of regexes
  • native Java objects and classes using: package Perl::Package { import => "java.class" }
  • typed lexicals - mapped to imported Java classes: my Perl::Package $java_variable
  • Java::inline
  • Perlito6 (Perl 6 compiler):
  • no significant changes
  • Go backend no longer works
  • Python bootstrap still works
  • instructions in "README-perlito6" need some update (replace "d8" with "node")
  • dev 2014-05-30
  • Perlito5 (Perl 5 compiler):
  • more than 1000 tests!
  • Perl5-to-Perl6 compiler
  • 'perlito5.org' web page moved to github
  • implement 5.20 "prototype" attribute
  • implement 5.20 "hash slices"
  • implement 5.16 "__SUB__"
  • 'use vars', 'use constant'
  • bugfixes:
  • allow special variables in "for" loop
  • implement "\( @a )" in p5-js
  • 'local' now works with subscripted variables
  • implement '$;'
  • many more
  • dev 2012-04-12
  • Perlito5 (Perl 5 compiler):
  • namespace Perlito5X contains versions of CPAN modules adapted for perlito
  • option "-B" is now the default; this executes immediately: perlito5 -e 'say "ok"'
  • option "-MO=Deparse": $ node perlito5.js -Isrc5/lib -MO=Deparse -e ' while (1) { say "works" } '
  • environment variable PERL5LIB=src5/lib now works
  • parser:
  • autoquote hash-keys fix
  • string interpolation in m//
  • accept underlines inside numbers
  • javascript backend:
  • AUTOLOAD
  • tie() - TIEARRAY, STORE, FETCH
  • string increment
  • negative index in array
  • more file and process operations: chdir, unlink, close, exit
  • control functions: next, last, redo, break
  • more functions: rand, printf, sprintf
  • "continue" blocks
  • GLOB references
  • perl5 backend:
  • requires v5.10
  • Perlito6 (Perl 6 compiler):
  • updated method hyper syntax to use >>. instead of .>>

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
Inheritable, overridable class data
A base class for exception objects
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

Provides

in lib/Perlito5X/Carp.pm
in lib/Perlito5X/Dumper.pm
in lib/Perlito5X/Exporter.pm
in lib/Perlito5.pm
in lib/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 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 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 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 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 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 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 lib/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 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 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 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 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 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 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 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 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 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 lib/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/JSON.pm
in lib/Perlito5/Java/Emitter.pm
in lib/Perlito5/Javascript2/Array.pm
in lib/Perlito5/Javascript2/CORE.pm
in lib/Perlito5/Javascript2/IO.pm
in lib/Perlito5/Javascript2/Emitter.pm
in lib/Perlito5/Javascript2/PrettyPrinter.pm
in lib/Perlito5/Javascript2/Runtime.pm
in lib/Perlito5/Javascript2/Sprintf.pm
in lib/Perlito5/Javascript3/CORE.pm
in lib/Perlito5/Javascript3/IO.pm
in lib/Perlito5/Javascript3/Emitter.pm
in lib/Perlito5/Javascript3/Runtime.pm
in lib/Perlito5/Javascript3/Sprintf.pm
in lib/Perlito5/Perl5/PrettyPrinter.pm
in lib/Perlito5/Perl6/PrettyPrinter.pm
in lib/Perlito5/Perl6/TreeGrammar.pm
in lib/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in lib/Perlito5/Emitter/Token.pm
in lib/Perlito5/Test.pm
in lib/Perlito5/TreeGrammar.pm
in lib/Perlito5/X64/Assembler.pm
in lib/Perlito5/X64/Assembler.pm
in lib/Perlito5/X64/Assembler.pm
in lib/Perlito5/X64/Assembler.pm
in lib/Perlito5/Eval.pm
in lib/Perlito5X/bytes.pm
in lib/Perlito5X/encoding.pm
in lib/Perlito5X/feature.pm
in lib/Perlito5X/strict.pm
in lib/Perlito5X/utf8.pm
in lib/Perlito5X/warnings.pm