Skip to content
Newer
Older
100644 108 lines (66 sloc) 3.56 KB
311ba52 @sorear Reorganize and combine TODO lists
authored
1 Here are a bunch of project ideas, both for me and for anyone else who
2 wants to help out. Starred items are ones I've already spent time
3 thinking about; check with me if you want to build on that.
4
5 EASY
6
7 Add your favorite missing function to the setting, with tests.
8 In particular, I could use: sprintf, dir, write, close, split, ...
9
10 Add $*ARGFILES, %*ENV, your favorite other *-var.
11
12 Add the 'loop' statement. Should be very straightforward.
13
14 Add decimal literals. (Don't try to implement your own floating point
15 radix converter; use +$str)
16
17 *Optimize control exceptions to gotos in the intrablock case.
18
19 Add more benchmarks to perf/.
20
21 Fix the qw< > parsing problems.
22
23 Strip whitespace from here documents.
24
25 return and take need to accept multiple arguments and wrap them in a Parcel
26
27 :$.foo is broken. Find out why and fix it.
28
29 Binding to values like @PROCESS::ARGS doesn't contextualize correctly. Fix.
30
31 MEDIUM
32
33 Implement buffer types and binary I/O.
34
35 Implement a general socket API.
36
37 Design and implement a generic system for multiplexed and non-blocking I/O.
38
39 *CATCH and CONTROL blocks.
40
41 Jump table optimization for when chains.
42
43 Implement callsame.
44
45 Implement constant %foo = a => 1 and constant @foo = 1, 2. It needs to
46 contextualize into a list/hash or something like that.
47
48 Find out what readonly subs are supposed to do with lists, etc and implement
49 that. Also add return-rw, take-rw, and the is rw trait for subs and attrs.
50
51 *Implement BUILD submethod calling.
52
53 Implement @.foo contextualiztion and make $.foo contextualize.
54
55 Methods with variable names need to call the correct action method. (See
56 the horrible hack in NieczaActions.FALLBACK).
57
58 Audit accelerated context routines for correct undefined value and odd
59 representation handling. +Num shouldn't crash, etc.
60
61 HARD
62
63 Design and implement some sort of NFG thing that allows use codes, graphs,
64 etc and handles canonical equivalence in regexes.
65
66 Replace nam with something that doesn't use as much memory. (Talk to
67 pmurias to get his experiences.)
68
69 *Implement junctions. You'll need to add some slightly tricky code
70 on the slow path of nominal type checks. You will also need to fix
71 the optimized builtins to use nominal type checking. Bonus points
72 if the optimizer can turn if $x == any(1,3,5) into a loop.
73
74 *Implement multiple dispatch.
75
76 Niecza is probably the ideal platform for prototyping a concurrency
77 system which will whirlpool back into the synopses.
78
79 *Parallel hyperops! Read the Cilk papers, they seem to have a data
80 parallelism model most similar to what Perl 6 needs.
81
82 Understand the Str/Stringy distinctions, and improve stringification
83 and numification handling for Any. Develop a warning system.
84
85 *Explicitly imprecise error reporting. In many circumstances niecza
86 doesn't actually have an exact line number; it should be able to
87 report a range.
88
89 Design something to take the place of STD's :$*endsym, probably as
90 a trait of some kind.
91
92 Design something to deal with the last remnants of cursor mutability
93 in STD.pm6.
94
95 *"Immediate mode metamodel" - Metamodel::StaticSub object should be
96 constructed by the closing brace at the latest. This will require
97 a lot of STD hacking and is required for BEGIN to work.
98
99 NASTY
100
101 *A multicore job scheduler would be cool. You'll need to talk with
102 TimToady on dependency extraction; there are some subtle points with
103 modules that export slangs.
104
105 *Figure out how eval can possibly work. Do it.
106
107 *Figure out how BEGIN can possibly work. Do it.
Something went wrong with that request. Please try again.