Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 48390d5aff
Fetching contributors…

Cannot retrieve contributors at this time

executable file 113 lines (58 sloc) 2.346 kb
TODO list for Perlito5
* basic functionality
-- add "map" block
-- add "grep", "sort"
-- add regexes
-- add "local", "our"
* extensibility
-- add "require"
* libraries
-- these should probably go into namespace Perlito5X::*
-- Test
-- Data::Dumper
* Parser
-- maybe use "prefix + proto" to represent variables, because it is more flexible; remove 'Var'
-- use an array to represent names that contain '::', because it is more flexible
-- implement signatures
-- check that \(@a) and \@a have different meanings
-- symbol variables like $]
* Perl5 backend
* Javascript backend
-- array refs break the compiler bootstrap; the problem seems to be an autovivification bug
-- fix autovivification:
$ perl -Ilib5 -Cjs -e ' use strict; my $x = []; push @{ $x->[2][2] }, 10 ' > x && ~/bin/d8 x
v__NAMESPACE.push((v_x[2][2]), 10);
TypeError: Cannot read property '2' of undefined
v__NAMESPACE.push((v_x._array_[2]._array_[2])._array_, 10);
TypeError: Cannot read property '_array_' of undefined
-- wrap CODE.js and Runtime.js in perl code.
-- create target-specific versions of the runtime
-- add browser, v8, node.js runtimes
-- move "substr" and others to CORE
-- bug: negative index in array doesn't work
-- bug: packages currently create lexical blocks
-- bug: "my" variables are block-wide; this doesn't work as expected: my $v = $v
possible fix: rename variables
-- bug: variable aliases create copies instead
-- generate more compact code; maybe use more subroutines instead of inlining;
autovivification is probably the most verbose part of the code.
-- in the browser: implement "use" with XMLHttpRequest (what are the security implications?)
-- add symbol tables for scalar, array and hash
-- string increment and string ranges
* Python backend
* Ruby backend
* Java backend
* Nice to Have
-- run the "perl" test suite
-- wantarray()
-- import
-- require plain perl5 syntax (any perl6 is a syntax error)
-- run perltidy on the source code
-- proper "use strict" and "use warnings"
-- use the same error messages and warnings as 'perl'
-- __PACKAGE__, __END__
-- BEGIN{}, INIT{}, END{}
-- finish "overload" implementation
-- source code - remove Perl 6 code such as "token"
(fixed: This is only loaded if the grammar compiler is needed)
-- here-docs
Jump to Line
Something went wrong with that request. Please try again.