summaryrefslogtreecommitdiff
path: root/Todo
blob: 16255eaa091fb517c655523442486a7a901934a0 (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
73
74
75
76
77
78
79
80
81
82
Modules
	POSIX (in progress)
	X/Motif/Tk etc.

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
	Make yyparse recursion longjmp() proof.
	Make "delete $array{$key} while ($key) = each %array" safe
	Wrong line reported for runtime elsif condition error
	TOOSTRICT is not too strict
	recv and sysread should taint

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

Would be nice to have
	Profiler
	pack "(stuff)*"
	lexperl
	Bundled perl preprocessor
	Make $[ compile-time instead of run-time
	Use posix calls internally where possible
	const variables
	gettimeofday
	bytecompiler
	format BOTTOM
	willcall()
	-iprefix.
	-i rename file only when successfully changed
	All ARGV input should act like <>
	Multiple levels of warning
	.= shouldn't complain about undefined under -w
	report HANDLE [formats].

Pragmas ("assume" maybe?)
	integer, float
	nodebug, debug
	autocroak?

Optimizations
	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?
	"one pass" global destruction
	Optimize sort by { $a <=> $b }

Need to think more about
	ref function in list context
	Populate %SIG at startup if appropriate

Vague possibilities
	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
	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
	paren counting in tokener to queue remote expectations