]> git.saurik.com Git - cycript.git/blob - todo.txt
Compile libcycript for OS X and package framework.
[cycript.git] / todo.txt
1 lol
2 unicode identifier support (native and \u)
3 support unions (right now 0-1 fields parsed as struct)
4 look into what String is, and whether to bridge it
5 think about bridging NSNumber with Number prototype
6 some JS callbacks don't use exception pointers at all...
7 a newline needs to not be allowed after a unary *
8 finish implementing default xml namespace statement
9 encode newlines in history for later replay (psql uses ^A)
10
11 consider replacing regex literals with constructors
12 https://bugzilla.mozilla.org/show_bug.cgi?id=98409
13 numerification needs to use specific precision values
14 https://bugzilla.mozilla.org/show_bug.cgi?id=5856
15 consider a mode where unicode string content is saved
16 https://bugzilla.mozilla.org/show_bug.cgi?id=274152
17
18 NSDictionaries that have NSNumber keys don't getProperty
19 errors in another process aren't displayed; to fix this, parse errors should get converted to exceptions and thrown
20 CYPoolTry/Catch now carefully save the exception after it /no longer needs the exception/... uhh... wtf?
21 throw CYJSError should probably be replaced with CYThrow() across the board
22 figure out what to do about global context refs: I really really want to retain the bastards
23 the concept of NULL pooling is entirely incorrect and sad... bad... evil... need to work on this... really
24 NSArray's .toString() and .toLocaleString() fail hard, as Array.prototype.to*String are Array-specific
25 applyOnMainThread, when done at console, loops the cyonifier
26 special work needs to be done to correctly handle the "arguments" symbol: Declare("arguments", ...Special)
27 at the Program level I seem to be eating away all of the var statements
28 function pointers are ?; note that blocks are currently block_P = '?'
29 I should probably attempt to use the auto_ flag somehow to not do contexts_ push when compiling
30 Object_callAsFunction_toCYON should be implemented
31
32 [NSString stringWithString:""] crashes, on linux, not on mac
33 GS #defines should be _finline
34
35 replace procmod g+s with gdb's macosx_get_task_for_pid_rights
36 non-local return prologue is not being Replace()d: multipass compiler!
37 interpretation of documentation comments should be compiler-only and off by default
38 don't ever generate $ CYWith, in particular for CYLet... use CYFunctionExpression
39
40 semi-colon insertion warnings should mark after the previous token, not on the current one: makes a /lot/ more sense
41 new for pools should take a reference, not a pointer
42
43 output errors during Trampoline to some kind of log file
44
45 there is a reinterpret_cast<> that I replaced with an old-style cast on the output of dladdr
46
47 why do I never deallocate ffi closures?
48
49 make a reference holder for namearrays
50 rename names to accumulator when it is a name accumulator, and retake names for subset
51 I believe calls to mutableCopy will leak memory
52 consider pointerTo instead of toPointer
53 store the last exception in a variable
54 should WebUndefined be @undefined?
55
56 if something is a function, it should be output differently
57 evaluate usages of CYTry in ObjectiveC/Library for CYObjectiveTry
58 verify name targets of "incorrect number of arguments to"
59 maybe support __objc_{yes,no} intrinisic primitives
60
61 support new objective-c subscript notation:
62 id key = ...;
63 id value = object[key];
64 -> id value = [object objectForKeyedSubscript:key];
65 object[key] = newValue;
66 -> [object setObject:newValue forKeyedSubscript:key];
67 and:
68 NSUInteger idx = ...;
69 id value = object[idx];
70 -> id value = [object objectAtIndexedSubscript:idx];
71 object[idx] = newValue;
72 -> [object setObject:newValue atIndexedSubscript:idx];
73
74 use JSObjectMakeError to build exception objects
75 replace cy$getProperty's return value with JSValueRef
76 flatten compound expressions made up of compound expressions
77
78 cy# {{5,6};6;{7;{8;5}}}
79 got: {5,6;6;{7;8,5}}
80 wanted: 5,6,6,7,8,5
81
82 cy# for each (var i = 9 in [1, 2]) system.print(i);
83 got: {i=9;(function(e,t){for(t in e){i=e[t];system.print(i)}})([1,2])}
84 wanted: i=9,function(e,t){for(t in e)i=e[t],system.print(i)}([1,2])
85
86 with is being translated in a manner that doesn't handle variables
87 cy# function b() { for each (var t in a) {} }
88 function b(){var e,t,n;with({t:a,n:undefined})for(n in t)e=t[n]}
89
90 [[self description] cy$toCYON:] seems like a poor implementation of toCYON
91 implement cy$toJSON:inContext: for NSDictionary and NSArray
92
93 the non-local transform used for let is ludicrous... :( :(
94
95 cy# function q(e) { }
96 function q(e){var e}
97
98 CYCompound needs to be able to replace itself away without causing multiple Replace
99 fat arrows are currently output with too much verbosity
100
101 CYJSString <- wrap JavaScript strings and provide them back to Objective-C
102 ruby blocks need to return their last thing
103 Objective-C strings might should be cyonified using double-quotes
104
105 apparently you can have random escape sequences in strings, like \!
106 cycript -p with processes that have spaces doesn't work
107 CYDriver uses std::istream, but it should use std::streambuf
108 the mechanism I used to autodetect readline is horrible: use autoconf
109
110 constant flags on types are encoded using something horribly wrong
111 http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtTypeEncodings.html
112 http://gcc.gnu.org/onlinedocs/gcc/Type-encoding.html
113 http://gcc.gnu.org/onlinedocs/gcc/Legacy-type-encoding.html
114
115 using .withName from the grammar is a horrible hack that makes other uses impossible
116
117 blocks should be allowed to return blocks/functions: ModifiedType needs to go
118 instead, TypedParameterList should be folded into a TypeModifier with the other types
119
120 LT_INIT([pic-only]) doesn't work, because the default is only used if unset, and it has a default setting...
121 even when using --pic-only, libtool insists on building every file twice... with the same fucking arguments