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/
- /<subrule>/
- /<'xyz'>/
- /\n/

2006-11-01
- initial language draft (on paper)