-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtodo.TODO
85 lines (83 loc) · 6.75 KB
/
todo.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
Version 2.1.0:
- x
- @low clean up test cases
- @low clean up benchmarks
- @low prepend/append to allow for circular buffer functionality
- @critical fix some of the exception stuff that is handled internally, mostly related to library development pains
- @high fix some of the Tuple constructors that doesnt exist pre 4.7
In general Tuples are not supported in 4.6 without an external package, so they should
probably be removed for this target
- @low move some of the unsafe usage of MemoryCopy and the unsafe calls in StringHelper, they mostly provide no benefit over the safe ones
- @high setting/moving write cursor before read cursor should move the read cursor
- @low make a parameter for [RePacker] attribute as a toggle between either skipping or including fields/properties marked with [RePack]
- @low RePackerWrapper<T> should probably override the [RePacker] attribute
another way to override other wrappers would also be nice to have
- @low change some of the generic T parms to something more descriptive
- @high UnpackInto requires more proper testing
- @high Reorganize and clean up TypeCache, naming of TypeCache also doesnt make sense anymore
- @low "ref" should probably be replaced with "in" for most entry points to the code, as ref doesnt support properties
One issue with this is that pre NET4.7 doesnt support in keyword, only ref
- @low SizeOf on managed arrays is extremely slow, should probably look into other ways to handle it
- @low SizeOf for strings is a bit slow, might be better to use a different SizeOf for Packing and Unpacking them
especially for auto-buffer, where we can refit the array afterwards. More hits to Gen.0, but might be worth it
- @low ReBuffer::Peek is a bit ambiguous in how it works, although the inner workings makes the most sense
It takes a byteOffset, but it could seem as though the offset would be T * byteOffset
Having it be T * byteOffset would make it less flexible though, so maybe a util method to
calculate byte offset from T would be nice to have.
- @low ReBuffer::PackBuffer/ReBuffer::UnpackBuffer has some UB
It currently does not care if it found any valid buffer while unpacking which wont notify the user of an error
- @low hide some classes/methods that should be internal
☐ ILUtils
Archive:
✔ @high support for seleting between big/little endianess @done(21-06-20 02:35)
✘ @low make ILogger support object and formatting @cancelled(21-05-21 13:59)
✔ @low clean up the csproj files @done(21-05-21 13:59)
✔ @high A lot of comments on public facing API is missing @done(21-05-21 13:59)
✔ @low Add a UnpackRef<T> method that returns a reference to the value, instead of a copy @done(21-05-21 12:45)
✔ StringHelper is not working as intended in some cases, getting wrong size @done(21-05-04 13:02)
Probably the SizeOf method on StringHelper, it's calling the wrong string size method
✔ ReBuffer::Copy uses wrong Length, see ReBuffer::CopyFixed @done(21-05-04 12:20)
✔ test cases for SizeOf with Classes as base type @done(21-03-07 11:47) @project(Version 2.0.0)
✔ ValueTuple with TRest value (8th generic argument) @done(21-03-07 11:46) @project(Version 2.0.0)
✔ clean up generators for collecitons @done(21-03-07 11:10) @project(Version 2.0.0)
✔ change dictionary generator to pack as KeyValuePair collection instead of two separate lists, as done in DictionaryPacker @done(21-03-07 11:02) @project(Version 2.0.0)
✔ SizeOfColleciton typo @done(21-03-07 10:52) @project(Version 2.0.0)
✔ Rename Buffer to ReBuffer to avoid collision with System.Buffer @done(21-03-07 10:51) @project(Version 2.0.0)
✔ make Buffer be packable @done(21-03-07 10:45) @project(Version 2.0.0)
✔ update with new changes to Buffer (removal of BoxedBuffer) @done(21-03-07 07:00) @project(Readme)
✔ info on SizeOf @done(21-03-07 07:00) @project(Readme)
✔ info on auto-expand for Buffer @done(21-03-07 07:00) @project(Readme)
✔ add info about StructLayout on untagged and blittable structs @done(21-03-07 07:00) @project(Readme)
✔ ability to check if a managed object fits the buffer @done(21-03-05 12:26)
✔ alternative mode where the buffer grows/shrinks to fit the data @done(21-03-05 12:25)
✔ rename MemoryCopyFromUnsafe/MemoryCopyToUnsafe to something more sensible @done(21-03-04 12:16)
✔ At this point the Buffer struct could be removed all together and instead move functionality into an extensions class for BoxedBuffer @done(21-03-04 12:16)
✘ Add a IPacker<T> work as an override for serialization @cancelled(21-02-23 14:09)
✔ move extensions methods out of the RePacker.Builder namespace @done(21-02-23 10:30)
✔ unroll the last serialization if the entire object didnt fit @done(21-02-23 09:54)
✔ ICollection<T> @done(21-02-22 16:31) @project(Base Serializer)
✔ test cases for filling a buffer of large size with all primitive types @done(21-02-22 16:31)
✔ missing null handling when packing/unpacking @done(21-02-22 16:31)
✘ Figure out a way around using BoxedBuffer for IL generated stuff, not a huge deal since buffers should be pooled @cancelled(21-02-21 18:01)
✔ remove IEnumerableType stuff @done(21-02-21 18:01)
✔ Multi-dim arrays @done(21-02-21 14:03) @project(Base Serializer)
✘ remove all the custom unmanaged packers on Buffer since Pack/Unpack has the same performance characteristics @cancelled(21-02-21 10:07)
✔ BuildCustomWrappers using RePackerWrapper needs to define a "direct copyable" field @done(21-02-21 10:07)
✔ Clean up how typeCache in TypeCache is setup @done(21-02-20 15:25)
✔ make root of namespace be just RePacker @done(21-02-20 09:06)
✔ Clean up interfacing with Buffer in Serializer.cs @done(21-02-20 08:16)
✔ More efficient lookup of types on serialization @done(21-02-20 08:16)
✔ generic producers currently doesnt support multi-threading @done(21-02-20 08:16)
✔ pushing values into Buffer when it's large and filled is slow @done(21-02-20 08:17)
✔ Remove generated logger stuff @done(21-02-20 08:16) @project(CR)
✔ Nullabel<T> @done(21-02-20 08:10) @project(Base Serializer)
✔ cache AppDomain type lookup in TypeCache @done(21-02-15 11:09)
✔ Allow Identifier attribute to control ordering @done(21-02-14 14:58)
✔ KeyValuePair<K, V> @done(21-02-14 14:56) @project(Base Serializer)
✔ Tuples @done(21-02-14 14:56) @project(Base Serializer)
✔ Clean up project structure making proper sub-projects for everything @done(21-02-02 06:44)
✔ Clean up the IL and code gen mess in SerializerBuilder.cs @done(21-02-02 09:04)
✔ Remove ReadOnlyBuffer altogether? @done(21-02-02 06:48)
✔ IEnumerable<T> @done(21-02-02 14:20) @project(Base Serializer)
✔ IList<T> @done(21-02-02 14:20) @project(Base Serializer)
✔ IDictionary<K, V> @done(21-02-02 16:03) @project(Base Serializer)