9.012 cpan:Perlito5 2015-11-06
- Docs:
-- started "Cookbook" section in Perlito5.pm POD
with instructions to generate perlito5.js
9.011 cpan:Perlito5 2015-11-06
- fix command line option "expand_use"
9.010 cpan:Perlito5 2015-11-06
- fix MANIFEST.SKIP
9.009 cpan:Perlito5 2015-11-05
- Build:
-- add bin/perlito5 to script_files section, add dist_abstract
-- requires perl 5.014 because older versions don't have 'feature.pm',
which breaks tests
- Parser:
-- update CORE prototypes to Perl v5.22 - use (+) instead of (\\[@%])
- Perl5-to-Javascript compiler:
-- implement (+) prototype
9.008 cpan:Perlito5 2015-11-04
- Makefile - add bin/perlito5 to EXE_FILES section
- add LICENSE.md
- Perl5-to-Javascript compiler:
-- default "print" function tries harder to find a native print
-- fixed context in readline() - that is, "$x = <$fh>" vs. "@x = <$fh>"
9.007 cpan:Perlito5 2015-10-30
- add Build.PL
9.006 cpan:Perlito5 2015-10-30
* Perlito5 (Perl 5 compiler):
- fix handling of native data parameters
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/
- /<subrule>/
- /<'xyz'>/
- /\n/
2006-11-01
- initial language draft (on paper)