summaryrefslogtreecommitdiff
path: root/Todo
blob: d073b04ca9e0fbe52b0059bb3f079dea14572c33 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Must-have external packages
	POSIX
	X/Motif/whatever

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
	pack "(stuff)*"
	lexperl
	Bundled perl preprocessor
	FILEHANDLE methods
	Make $[ compile-time instead of run-time

Optimizations
	Make specialized allocators
	Optimize switch statements
	Optimize foreach on array
	Optimize foreach (1..1000000)
	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?
	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

Vague possibilities
	readonly variables
	sub mysplice(@, $, $, ...)
	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