-Must-have external packages
- POSIX
- X/Motif/whatever
+Tie Modules
+ VecArray Implement array using vec()
+ SubstrArray Implement array using substr()
+ VirtualArray Implement array using a file
+ ShiftSplice Defines shift et al in terms of splice method
-Bugs
- BEGIN { require 'perldb.pl' }
- Make yyparse recursion longjmp() proof.
- perl -c shell_script bug
- fix the need for double ^D on $x
- STDOUT->print("howdy\n");
- %ENV not there
- Make "delete $array{$key} while ($key) = each %array" safe
- using unpack(P,$ref) shouldn't unref the ref
- binary function is missing
- wrong line reported for runtime elsif condition error
- unreference variable warnings busted (but don't warn on $seen{$key}++)
-
-Regexp extensions
- /m for multiline
- /\Afoo/ (beginning of string, or where previous g match left off)
- /foo\Z/ (end of string only)
- negative regexp assertions?
- /<>/x for grouping?
- /f for fixed variable interpolation?
- Rewrite regexp parser for better integrated optimization
-
-Nice to have
- Profiler
+Would be nice to have
pack "(stuff)*"
+ Contiguous bitfields in pack/unpack
lexperl
Bundled perl preprocessor
- FILEHANDLE methods
- Make $[ compile-time instead of run-time
+ Use posix calls internally where possible
+ gettimeofday
+ format BOTTOM
+ -iprefix.
+ -i rename file only when successfully changed
+ All ARGV input should act like <>
+ report HANDLE [formats].
+ support in perlmain to rerun debugger
+ regression tests using __DIE__ hook
+ reference to compiled regexp
+ lexically scoped functions: my sub foo { ... }
+ lvalue functions
+ regression/sanity tests for suidperl
+ Full 64 bit support (i.e. "long long")
+
+Possible pragmas
+ debugger
+ optimize (use less memory, CPU)
Optimizations
- Make specialized allocators
- Optimize switch statements
- Optimize foreach on array
- Optimize foreach (1..1000000)
+ constant function cache
+ switch structures
+ eval qw() at compile time
+ foreach (1..1000000)
+ foreach(reverse...)
Set KEEP on constant split
Cache eval tree (unless lexical outer scope used (mark in &compiling?))
rcatmaybe
Shrink opcode tables via multiple implementations selected in peep
- Cache hash value?
+ Cache hash value? (Not a win, according to Guido)
Optimize away @_ where possible
- sfio?
-
-Need to think more about
- ref in list context
- When does split() go to @_?
- Figure out BEGIN { ... @ARGV ... }
- Implement eval once? (Unnecessary with cache?)
- Detect inconsistent linkage when using -DDEBUGGING?
- Populate %SIG at startup if appropriate
- Multiple levels of warning
+ "one pass" global destruction
+ Optimize sort by { $a <=> $b }
+ Rewrite regexp parser for better integrated optimization
+ LRU cache of regexp: foreach $pat (@pats) { foo() if /$pat/ }
Vague possibilities
- readonly variables
- sub mysplice(@, $, $, ...)
+ ref function in list context
data prettyprint function? (or is it, as I suspect, a lib routine?)
- Nested destructors
make tr/// return histogram in list context?
- undef wantarray in void context
- goto &replacement_routine
- filehandle references
Loop control on do{} et al
Explicit switch statements
- perl to C translator
- multi-thread scheduling
built-in globbing
compile to real threaded code
structured types
+ autocroak?
+ Modifiable $1 et al
+