add a STATUS file to keep track of implementation progress

This commit is contained in:
Lephenixnoir 2021-05-16 18:11:09 +02:00
parent 5f48a6b4e0
commit d70a2c671c
Signed by: Lephenixnoir
GPG Key ID: 1BBA026E13FC0495
1 changed files with 112 additions and 0 deletions

112
STATUS Normal file
View File

@ -0,0 +1,112 @@
This file describes the implementation status and some notes; information is
taken from the C99 standard (ISO/IEC 9899:1999), section 7 ("Library").
Notes for implementers:
7.1.2§6:
Use (extern) in all function prototypes
7.1.3§1:
Only expose standard identifiers; anything else might be defined as a macro.
Make sure every argument name, internal function name, etc. starts with
either "__" or "_X" (where X is any uppercase letter)
7.1.4§1:
Always give a function even if there is a macro definition, so that the
address of the function can be taken; don't rely on the macro being defined,
as the user can remove it except in some special cases
In this file, every definition is classified in one of several implementation
statuses. There are 5 stages that every definition should go through.
TODO: Function/symbol/macro is not implemented/defined
BDEPS(...): Function/symbol/macro needs ... to build
LDEPS(...): Function/symbol/macro needs ... to link
TEST: Function/symbol/macro needs to be tested
DONE: Function/symbol/macro is defined, builds, links, and is tested
7.2 <assert.h>
7.2.1 assert: LDEPS(fprintf,stderr,abort)
7.3 <complex.h>
Provided by Lephenixnoir's port of OpenLibm.
TODO: Check standard compliance
7.4 <ctype.h>
7.4.1 is*: TEST
7.4.2 to*: TEST
7.5 <errno.h>
7.5.2 EDOM EILSEQ ERANGE: DONE
7.6 <fenv.h>
Provided by Lephenixnoir's port of OpenLibm.
TODO: Check standard compliance
7.7 <float.h>
Provided by GCC.
7.8 <inttypes.h>
7.8.1 Macros for printing: TODO
7.8.2.1 imaxabs: TODO
7.8.2.2 imaxdiv: TODO
7.8.2.3 strotimax strtoumax: TODO
7.8.2.4 wcstoimax wcstoumax: TODO
7.9 <iso646.h>
Provided by GCC.
7.10 <limits.h>
Provided by GCC.
7.11 <locale.h>
7.11.1 setlocale: TEST
7.11.2 localeconv: TEST
What if we wanted to support more locales?
-> Need to a mechanism to supply the raw information, similar to the text
files in /usr/share/i18n/locales
-> Implement setlocale() and localeconv() properly (not hard)
-> Probably support nl_langinfo(), which is much better than localeconv()
7.12 <math.h>
Provided by Lephenixnoir's port of OpenLibm.
TODO: Check standard compliance
7.13 <setjmp.h>
7.13.1 setjmp: TEST
7.13.2 longjmp: TEST
7.14 <signal.h>
TODO: Difficult; the execution environment might not support signals
7.15 <stdarg.h>
Provided by GCC.
7.16 <stdbool.h>
Provided by GCC.
7.17 <stddef.h>
Provided by GCC.
7.18 <stdint.h>
Provided by GCC.
7.19 <stdio.h>
TODO (will give the full list later on)
7.20 <stdlib.h>
TODO (will give the full list later on)
7.21 <string.h>
TODO (will give the full list later on)
7.22 <tgmath.h>
Provided by GCC.
7.23 <time.h>
TODO (will give the full list later on)
7.24 <wchar.h>
TODO (not a priority)
7.25 <wctype.h>
TODO (not a priority)