-
Notifications
You must be signed in to change notification settings - Fork 3
/
TODO
79 lines (69 loc) · 2.83 KB
/
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
Planned for Version 0.6
================================================================================
Low-level Functions:
* add/sub variants for inplace operations and same-sized input
* change adda/suba to only use a single operand?
* create addua/subua to add in carry for larger ops?
* port remainder of division implementation to x86-64 assembly
* optimize pclz, almost always called on normalized input
* add ptrunc and reimplement ztrunc in terms of it
* get rid of bit-level truncation in prand_kiss, truncation only in zrand***
Integer Functions:
* zhamdist
* zpopcount
* zscan0
* zscan1
* zsetbit
* zgcd
* zpow
* zpowu
* zsqrt
* zload
* zsave
Optimize:
* pclz
* ztrunc
Other:
* improve zand, zor and zxor to generate correct results for negative numbers
* test and fix bugs in ztrunc
* create some sample programs
* add a lot more checks/tests
* add documetation and man pages
* build tool requirements (gmake 4.0+, bmake, awk, etc.)
* supported compilers
* add hebi_kiss init/destroy functions
* add additional random number generators
* add support for compiler static analysis
* enable additional warnings and security hardening flags by default
* add support for SEI CERT C validation and perform security audit
* try out clang-tidy
* audit all uses of LIKELY/UNLIKELY for assignment/mutation
* fix security problem with HEBI_HWCAPS, all dispatcher stubs
should use SSE2 as default
* rewrite generic kernels to just use 64-bit limbs, change
hebi_packet to a struct instead of a union, would also let the
library support big-endian machines as a consequence
* add assertion checks for NULL pointers and audit how we compare to
NULL to make sure we are consistent throughout the code base
* add USE_SECURE_ALLOC_CACHE configuration macro and implement
local cache invalidation with an atomic counter
* add secure versions of functions for explicitly clearing memory
and constant-time comparison
* more testing on other Linux and BSD distributions
* more testing with different C compilers and with older versions of compilers
* perform an audit on floating-point values, make sure we aren't using any
except for when we need to convert to/from these data types
* code cleanup audit, remove any C++ style comments, C++ style pointer
declarations, trailing whitespace, convert spaces to tabs, etc.
* add support for big-endian machines
* need to add a function to copy or swap, depending on destination allocator,
for functions like zmul/zdivrem
Future Versions
================================================================================
* add arbitrary precision rationals and floating-point numbers
* add GNU MP style API wrapper header
* add header only C++11/14 library
* port low-level packet backend to AArch64
* port to Android
* port to Mac OS X / iOS
* port to Windows (MinGW, Ubuntu on Windows and MSVC++ w/ Clang frontend)