1 Improve error recovery, so as to show as many errors as possible
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.
8 Implement multi-dimensional arrays.
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
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.
23 Check for duplicate GUIDs.
25 Properties with automatic getters and setters (or just getters if
26 read-only), which can be overridden with custom getters and setters
29 Methods can be specified as read-only; a read-only version of the
30 interface is then generated, and a secure read-only reference to an
31 object can be generated that can only access read-only methods. This
32 would save effort declaring a separate interface and a separate
33 class, and would allow the read-write interface to use the read-only
34 methods without retreiving the read-only object.
36 Implement marshalling/unmarshalling stubs.
38 Implement async methods.
40 Implement remote-only async methods; these are async only when
41 invoked out-of-process, and sync (and thus faster) when invoked
42 in-process. Full async methods would be used when the async
43 semantics are truly required; remote-only async methods would be used
44 where async isn't required, but the method is async-safe and would
45 benefit from the buffering of async out-of-process methods. This
46 would reduce the number of methods that are declared in both sync and
47 async versions (and allow the choice between them to be made
50 Possibly implement out parameters on remote-only async methods that
51 can only be used when invoked as a sync in-process method; the method
52 implementation can check to see how it was invoked, and use the out
53 parameters to avoid having to make a completion callback.
55 Vstructs need a length field.