blob: 3e3ec05a6369400205cae29faca4aab4348b497b [file] [log] [blame]
lahiker426f28ec62008-08-27 03:51:24 +00001----------------------
2--- IMPORTANT TODO ---
3----------------------
lahiker42bb0871c2008-09-09 18:18:28 +00004- ensure enums are int-size
lahiker42ec4ea962010-09-01 04:30:30 +00005- per comments on the main page: wire_format_inl.h is now
6 wire_format_lite_inl.h .. adjust somehow .. possibly write an email
7- rpc protocol should not hardcode method_index (although it's fine
8 for API to do so)
9- BUG? shouldn't enum..by_name[] and enum..by_number[] in the generated-code
10 be static??
lahiker42@gmail.com34b22742011-03-20 02:37:08 +000011- dispatch-within-dispatch protection needed (ie assert that you can't
12 recursively invoke the main-loop)
lahiker42@gmail.com1f72f1d2011-11-12 02:32:22 +000013- uh not sure i like the hash-based situation for required values.
14 perhaps we need a message-descriptor flag to help out. (Could always use
15 different hashes and sizes)
lahiker426f28ec62008-08-27 03:51:24 +000016
17--------------------
18--- NEEDED TESTS ---
19--------------------
20- test:
lahiker426026e982008-08-27 02:14:42 +000021 - service method lookups
22 - out-of-order fields in messages (ie if the number isn't ascending)
23 - gaps in numbers: check that the number of ranges is correct
lahiker426f28ec62008-08-27 03:51:24 +000024 - default values
lahiker42617dfbe2009-03-05 03:57:17 +000025 - message unpack alloc failures when allocating new slab
26 - message unpack alloc failures when allocating unknown field buffers
lahiker42ec4ea962010-09-01 04:30:30 +000027 - packed message corruption.
28 - meta-todo: get a list of all the unpack errors together to check off
29- run gcov
lahiker42bb9e6682008-08-23 20:44:49 +000030
lahiker426f28ec62008-08-27 03:51:24 +000031---------------------
32--- DOCUMENTATION ---
33---------------------
34Document:
lahiker426f28ec62008-08-27 03:51:24 +000035 - services
lahiker422d96d782008-08-25 17:50:52 +000036 - check over documentation again
lahiker42880b6402008-08-22 22:15:42 +000037
lahiker426f28ec62008-08-27 03:51:24 +000038--------------------------
39--- LOW PRIORITY STUFF ---
40--------------------------
lahiker42880b6402008-08-22 22:15:42 +000041- support Group (whatever it is)
lahiker429b596af2010-05-05 12:52:38 +000042- proper support for extensions
43 - slot for ranges in descriptor
44 - extends is implemented as c-style function
45 whose name is built from the package, the base message type-name
46 and the member. which takes the base message and returns the
47 value, if it is found in "unknown_values".
48 boolean package__extension_member_name__get(Message *message,
49 type *out);
50 void package__extension_member_name__set_raw(type in,
51 ProtobufCUnknownValue *to_init);
lahiker42880b6402008-08-22 22:15:42 +000052
lahiker426f28ec62008-08-27 03:51:24 +000053------------------------------------
54--- EXTREMELY LOW PRIORITY STUFF ---
55------------------------------------
lahiker42880b6402008-08-22 22:15:42 +000056- stop using qsort in the code generator: find some c++ish way to do it
lahiker426f28ec62008-08-27 03:51:24 +000057
58----------------------------------------------
59--- ISSUES WE ARE PROBABLY GOING TO IGNORE ---
60----------------------------------------------
61- strings may not contain NULs
62
63-------------------------
64--- IDEAS TO CONSIDER ---
65-------------------------
66
lahiker42ec4ea962010-09-01 04:30:30 +000067- optimization: structures without repeated members could skip
68 the ScannedMember phase
69
70- optimization: a way to ignore unknown-fields when unpacking
71
72- optimization: certain functions are not well setup for WORDSIZE==64;
73 especially the int64 routines are inefficient that way.
74 The best might be an internal #define WORDSIZE (sizeof(long)*8)"
75 except w/ a real constant there, one that the preprocessor can use.
76 I think the functions in protobuf-c.c are already tagged.
77
lahiker426f28ec62008-08-27 03:51:24 +000078- lifetime functions for messages:
lahiker426f28ec62008-08-27 03:51:24 +000079 message__new()
80 return a new message using an allocator with standard allocation policy
81 message__unpack_onto(...)
82 unpack onto an initialized message
83 message__clear(...)
84 clears all allocations, does not free the message itself
85 message__free(...)
86 free the message.
87 [yeah, right: after typing it out, i see it's way too complicated]
lahiker42480bea92008-11-30 15:57:52 +000088
89- switching to pure C.
90 - Rewrite the code-generator in C, including the parser.
91 - This would have the huge advantage that we could use ".proto" files
92 directly, instead of having to invoke the compilers.
lahiker42ec4ea962010-09-01 04:30:30 +000093 - keep in a separate c file for static linking optimziation purposes
94 - need alignment tests
95 - the CAVEATS should discuss our structure-packing assumptions