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
|
NAME
slibc - the Stockholm C Standard Library
DESCRIPTION
slibc is a POSIX C standard library. It aims to support
ISO C99, and newer versions of ISO C, other versions of C
are ignored except for proper feature-test macros. Ignores
all languages other than C, this means that slibc cannot be
used in C++ by merely including the header files.
In addition to POSIX, slibc aims to support common
extensions, especially those in the GNU C Library because of
its predominance on GNU systems. slibc also aims to fill the
lacunæ in the C standard library specification, and make
programming in C even easier by adding functions that would
be generally useful are impossible to implement efficiently
in other libraries.
FEATURE-TEST MACROS
slibc defines a few slibc-specified feature-test macros:
_SLIBC_SOURCE
Enable slibc extensions. These extensions are
often extensions introduced in other C libraries,
but are considered good extensions.
slibc provides some slibc-specific extensions that
do not require _SLIBC_SOURCE. (They are however
disabled if _PORTABLE_SOURCE or _LIBRARY_HEADER are
defined.) These extensions are defined in header
files whose name starts with 'slibc-'. Headers
starting with 'slibc/' are not extensions, those are
internals that may change at any time.
_SLIBC_SUPPRESS_WARNINGS
Suppress all #warning and other warnings, this is
primarily intended to be used when compiling slibc.
_PORTABLE_SOURCE
Unconditionally disable all non-POSIX extensions, and
otherwise help ensure that the source is portable.
_LIBRARY_HEADER
Alternative to _PORTABLE_SOURCE that should be used in
header files for libraries. This allows you to be sure
that your library is portable between libc:s, and that
sources using your library does not been to be compiled
with the same libc. It is important to use this instead
of _PORTABLE_SOURCE in library header files, otherwise
the user of the library cannot fully utilise
_PORTABLE_SOURCE.
COMMENTS
Writing a C standard library is a massive task. As I only have
x86_64 hardware, I will require help write the assembly code
for other hardware. I also need help writing the texinfo manual
and example code for functions, help figuring out the correct
feature-test macros for all functions, their etymology, and in
which libc implementions they appear. Help optimising all
functions would also be appreciated.
FUTURE DIRECTIONS
The macro _SMALL_BINARY shall whenever available, create
macros that make the program use implementions of the functions
that optimised for size rather than performance. It should
be compile-time selectable whether this macro has any effect,
or if it is always in effect. _FAST_BINARY could also be added
to make the program use fast implementions when the library
is compiled to use the size optimised implementations.
RATIONALE
slibc is written as a learning exercise, and for fun.
SEE ALSO
<https://en.wikipedia.org/wiki/C_standard_library>
Full documentation available locally via: info '(slibc)'
|