mirrored from git://git.sv.gnu.org/smalltalk.git
-
Notifications
You must be signed in to change notification settings - Fork 26
/
TODO
109 lines (65 loc) · 2.78 KB
/
TODO
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
* File classes
** maybe add renaming as in Squeak's Rio?
* OpenGL
** use GetProcAddress
** split nurbs into separate package
* Bindings
** Expat
** gnutls
** 3D gnuplot?
* maybe
** prepared statements support for other DBI backends
** cookies and redirects for HTTPClient
----------------------------------------------------------------------
* sometime
** upgrade XML parser for package files
*** support arch-dependent packages that are installed in the image path
** some kind of sandboxing (partly done)
** add check in/check out to the browser so that .st files remain
in sync. Maybe with CVS support (see Smalltalk/X).
** cute BlockClosure implementations
----------------------------------------------------------------------
* bindings
** use zlib bindings to implement direct ZIP-file access in VFS.
** provide cool examples of XML using RSS feeds, SOAP, XML-RPC, whatever.
----------------------------------------------------------------------
* code auditing
** check endian-cleanness of ByteStream's float and double I/O.
Possibly fix by mutuating code from the Java package.
* VM
** create combined pop/push tree codes in the JIT compiler. They're
still there from the old bytecode set and they should improve
performance by ~5%.
** Fix some copy & paste redundancies in comp.c (the small iteration
to find out the length of loops) and opt.c (basic block handling in
the verifier and in the JIT compiler's analysis pass).
** Use multiple malloc-ed areas for the OOP table, and make heap.c
only an implementation detail of alloc.c (not really necessary
anymore with MAP_NORESERVE, and quite complicated)
** Implement polymorphic inline caching
* Java
** Write more native methods. Some, such as network methods, are
easy. Reflection is hard especially for arrays.
** Pass exception in a temporary rather than in the top of the
stack; not very hard, and should make the JITter happy about
exceptions.
* Blox
** Use GTK. Might or might not use libgnomeui for the canvas
widget. I have already written a custom geometry manager compatible
with Tk's placer.
** Clean up the browser's code
*** remove stray sends of #initialize. A good project to learn
about the reflection system (e.g. identify initializations from
outside #new and so on).
*** simplify UI creation (too many panes!)
* other
** finish the smalltalk CPP and C header file parser
** print entities correctly in the URIResolver. A file named abc&def
should print abc&def in the file list.
* emacs mode
** emacs isearch c-u c-s should search for a string anchored at the start of
a line (possibly with blanks), to help finding method definitions.
** fix $. to be handled specially -- indenter gets confused on
ch == $.
<here>ifTrue:
** fix emacs mode so when a compile error occurs, it can be scanned ala C-x`