ciabatta/todo.md

106 lines
2.7 KiB
Markdown

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