]> git.buserror.net Git - polintos/scott/priv.git/blob - idlcomp/TODO
Some weak symbol usage, and some marshalling stuff.
[polintos/scott/priv.git] / idlcomp / TODO
1 Improve error recovery, so as to show as many errors as possible
2 before aborting.
3
4 Support UTF-8 identifiers.  This includes deciding which subset of
5 UTF-8 characters are valid for such use, and how to map them to
6 languages that only support ASCII.
7
8 Implement multi-dimensional arrays.
9
10 Delegates.
11
12 Typedefs and aliases need to support complex types (e.g. typedef
13 int[] intarray;).  This ties into multi-dimensional arrays above;
14 at the very least, it needs to be possible to declare an array
15 of strings.
16
17 Be consistent in whether the specified name or the fully qualified
18 symbol name is reported in error messages.  The former makes it more
19 obvious which usage is referred to in certain cases; the latter makes
20 it obvious which symbol was found in lookup.  Adding column
21 information as well as line number would address the former concern.
22
23 Check for duplicate GUIDs.
24
25 Properties with automatic getters and setters (or just getters if
26 read-only), which can be overridden with custom getters and setters
27 in the class.
28
29 Implement marshalling/unmarshalling stubs.
30
31 Implement async methods.
32
33 Implement remote-only async methods; these are async only when
34 invoked out-of-process, and sync (and thus faster) when invoked
35 in-process.  Full async methods would be used when the async
36 semantics are truly required; remote-only async methods would be used
37 where async isn't required, but the method is async-safe and would
38 benefit from the buffering of async out-of-process methods.  This
39 would reduce the number of methods that are declared in both sync and
40 async versions (and allow the choice between them to be made
41 dynamically).
42
43 Possibly implement out parameters on remote-only async methods that
44 can only be used when invoked as a sync in-process method; the method
45 implementation can check to see how it was invoked, and use the out
46 parameters to avoid having to make a completion callback.
47
48 Use linker section garbage collection to discard GUIDs, vtables, etc. for
49 interfaces/vstructs that aren't referenced.