https://github.com/maandree/slibc
Yet another C standard library
https://github.com/maandree/slibc
c c-library libc standard-c-library
Last synced: 2 days ago
JSON representation
Yet another C standard library
- Host: GitHub
- URL: https://github.com/maandree/slibc
- Owner: maandree
- License: gpl-3.0
- Created: 2015-08-31T19:50:19.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2026-05-09T15:35:42.000Z (about 2 months ago)
- Last Synced: 2026-05-09T17:36:01.917Z (about 2 months ago)
- Topics: c, c-library, libc, standard-c-library
- Language: C
- Homepage: https://codeberg.org/maandree/slibc
- Size: 717 KB
- Stars: 17
- Watchers: 1
- Forks: 5
- Open Issues: 2
-
Metadata Files:
- Readme: README
- License: COPYING
Awesome Lists containing this project
README
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 implementations of the functions
that are 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 implementations when the library
is compiled to use the size-optimised implementations.
RATIONALE
slibc is written as a learning exercise, and for fun.
SEE ALSO
Full documentation available locally via: info '(slibc)'