mirror of https://github.com/flysand7/ciabatta.git
2.7 KiB
2.7 KiB
general:
- Start writing documentation concerning various implementation defined behaviours of the library.
- (MSVC Ext.) Different kinds of main functions: wmain, WinMain, wWinMain, DllMain
- (MSVC Ext.) envp argument for main functions
math.h:
- exp
- exp2
- expml
- log
- log10
- log2
- log1p
- pow
- cbrt
- hypot
- atan2
- erf
- erfc
- tgamma
- lgamma
- frexp
- ldexp
- M_* constants
- M_E
- M_LOG2
- M_LOG10
- other stuff?
stdint.h:
- Implement 7.20.3
stdio.h:
- The only reason to keep a linked list of all streams is to make sure they are flushed after main() returns. I wonder if only remembering the files with a buffer would increase performance.
- Formatted scan
- %s precision should specify how much characters to write
- %s check for NULL
- %Ls this is an actual weird territory. If (wchar_t *) is a unicode string then to determine it's "width" (to figure out field padding) would require to use a Unicode composition algorithm. But the problem is that windows Unicode rendering advances text by 2 units, even if it's 1 graphical character that was composed from 2 unicode characters. The question becomes: do we implement the thing correctly by using a more complex solution, or do we succumb to windows' bullshittery. I guess the answer is obvious. That's why I wrote this todo item :D
- tmpfile
- tmpnam
- tmpfile_s
- tmpnam_s
- Printing 8.98846567431157854073e+307
- Printing negative zero
- Add functions for testing a file path, creating directories
- Fix the bug where if a file wasn't closed the thing crashes when trying to flush the buffer
stdlib.h:
- Strtod base 16 must be correctly rounded
- Multibyte string functions
- Better PRNG
- Fix aligned_malloc
- Constraint Handlers
- getenv_s
- aligned_alloc can't be used with free()
string.h:
- strnlen_s
- memset_s
- memmove_s
- memcpy_s
- strncpy_s
- strcpy_s
- strcat_s
- strncat_s
- strtok_s
- strerror_s
- strerrorlen_s
tgmath.h:
- Due to the use of conditional operator in type-generic macros the
expression always expands to the value of type
long double
. This leads to warnings when used with printf, e.g. as in printf("%f\n", exp(0)). Using _Generic macros isn't a good choice either, because it won't work with typedef'd types. In other words there's no pure-C way to do tgmath.h. That's probably the reason msvc stdlib headers don't implement tgmath.h. clang implements it with attribute((overloadable)).
threads.h:
- TODO: add todo items
time.h:
- Probably some other funcs
- asctime_s
- ctime_s
- gmtime_s
- localtime_s
wchar.h:
- Collation, IO, Tokenization, Conversions