9.004 cpan:Perlito5 2015-10-30 * Perlito5 (Perl 5 compiler): - fix CPAN files [rt.cpan.org #108111] - main Java class is "Main" - fix Perl5 emitter $/ variable 9.003 cpan:Perlito5 2015-10-21 * Perlito5 (Perl 5 compiler): - fix CPAN index 9.002 cpan:Perlito5 2015-10-21 * Perlito5 (Perl 5 compiler): - fix CPAN index 9.001 cpan:Perlito5 2015-10-21 * Perlito5 (Perl 5 compiler): - command line: -Cast-json - fix CPAN distro 9.000 cpan:Perlito5 2015-10-20 * Perlito5 (Perl 5 compiler): - first 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 .>> 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 8.0 2011-12-24 - added new compiler for Perl version 5. * Perlito Perl 5: - command line "perlito5.pl" - supported backends: Perl 5, Javascript - source code in src5/ directory * Perlito Perl 6: - command line renamed to "perlito6.pl" - supported backends: Perl 5, Python 2.6, Javascript - new experimental backend: Java - fixed META.yml for "v6.pm" CPAN distribution (thanks Aevar) - fixed unicode IO, added unicode tests - add some formatting to Perl5 and Javascript output - methods: map, grep - operators: x - source code moved to src6/ directory Regressions: - removed '-B' command line flag (since 7.0) - backends pending upgrade to the new AST: Common Lisp, Ruby 1.9, Eval - backends no longer supported in this version: Go, Parrot, Rakudo, Clojure 7.0 2011-04-20 - supported backends: Perl 5, Python 2.6, Javascript - added "perlito" command-line compiler and shell - new distribution "v6.pm" (Perlito in Perl 5) This replaces Pugs::Compiler::Perl5 as the v6.pm compiler in CPAN. - correct operator precedence - interpolation of variables and code in strings - 'unless' and statement modifiers - several fixes in List, Hash, Array, Block, Bool, Str, Mu - operators: numeric autoincrements, defined-or, range Regressions: - removed '-B' command line flag - backends pending upgrade to the new AST: Go, Common Lisp, Ruby 1.9, Eval - backends not supported in this version: Parrot, Rakudo, Clojure 6.0 2010-07-27 - Ruby backend bootstrap. - more tests 5.0 2010-07-19 - Python backend bootstrap. - use variable assignment instead of binding - that is, use '=' instead of ':=' - 'use' - all backends can now use Test.pm - 'elsif' - 'loop' - regex quantifiers - Lisp backend now bootstraps with the 'util/mp6.pl' compiler 4.1 2010-03-24 - floating point numbers - 'while' loop 4.0 2010-03-20 - Go backend bootstrap. The Go backend was updated to the latest Go language spec. - Perl5 backend optimized; 30% faster - More library functions, added to all backends - New 'Eval.pm' module - implements a MiniPerl6 interpreter in MiniPerl6. This should add some debugging capabilities later on. - New test suite. See README on how to use 'prove' for each backend. - New compiler options to create binary executables - Currently the stable backends are: Perl5, Javascript, JVM, Lisp, Go. See README for bootstrapping instructions for all backends. - Removed support for features that are not standard Perl6. 3.0 2010-01-21 - Go language backend; using Go: http://golang.org - Java-class backend; using Rhino: http://www.mozilla.org/rhino - util/mp6.pl - compiler command line script written in MiniPerl6 - new repository at http://github.com/fglock/Perlito - new web page at http://www.perlito.org created by nferraz (Nelson Ferraz) 2.0 2009-10-09 - Javascript (Firefox, V8) bootstrap - simplified 'make' inside tokens 1.0 2009-08-28 - Lisp (SBCL) bootstrap - Changed accessors to lvalue [intermission] - Perl5 emitter: fixed Array inside signature: method ( $a, [ $b, $c ] ) ... - Perl5 emitter: implemented "warn" 0.003 2006-12-12 - All tests converted to TAP format - Parrot backend: - added Parrot emitter and 'mp6-parrot' script - passes several tests - 'Match' class written in MP6 - Perl5 backend: - parameter binding with complex data structures 0.002 2006-11-18 - fixed array expansion in 'for @x {...}' - fixed grammar compilation in MiniPerl6::Grammar and MiniPerl6::Grammar::Regex - type annotations my Int $x - autoquote hash keys { a => 42 } - pair syntax sugar { :$a } - deep array binding [ $a, [ $b, $c ] ] := [ 1, [ 2, 3 ] ] 0.001 2006-11-17 - MiniPerl6::Perl5::Emitter and MiniPerl6::Emitter::Token compile ok echo 'class Main { say "hello, World" }' | perl -Ilib5 mp6-perl5-boot.pl | perl -Ilib5 2006-11-14 - all files parsed - added Perl5 build script 2006-11-11 - parses MiniPerl6/Emitter.pm 2006-11-10 - parses mp6.pl 2006-11-06 - implemented MP6::G::Regex::rule() - /<%hash>/ - /const|const/ - // - /<'xyz'>/ - /\n/ 2006-11-01 - initial language draft (on paper)