An alternative runtime for C11/C23 (mirror)
Go to file
bumbread 0c9875c53c Some type declarations for __STDC_WANT_LIB_EXT1__ 2022-08-10 17:12:33 +11:00
doc add underscore to _DEBUG user macro 2022-08-07 20:41:49 +11:00
inc Some type declarations for __STDC_WANT_LIB_EXT1__ 2022-08-10 17:12:33 +11:00
src string.h OCD 2022-08-10 17:05:35 +11:00
test On the second thought memmove was correct 2022-08-10 13:58:13 +11:00
.gitignore I have no idea but something for linux 2022-06-28 23:57:14 +11:00
bake.cmd Remove submodule dependencies 2022-08-05 15:21:07 +11:00
readme Update readme 2022-08-06 22:59:01 +11:00
test.cmd Support for -fstack-protector 2022-08-08 23:39:43 +11:00
todo Some items for stdint.h 2022-08-10 17:12:01 +11:00
utf8.rc Remove submodule dependencies 2022-08-05 15:21:07 +11:00
utf8.xml Remove submodule dependencies 2022-08-05 15:21:07 +11:00

readme

-------------------------------------------------------------------------------
ABOUT
-------------------------------------------------------------------------------

Ciabatta - An implementation of cross-platform C standard library with the
following goals:

- Providing C standard library that fully implements all C features. Some
  standard libraries lack many features of C11 and C23, like threads.h or
  aligned_alloc in case of msvcrt.

- Making standard library that is easy to port to other platforms, for example
  an embedded platform or a custom operating system.

- Allowing applications to debug and step into standard library functions

- Reasonably fast CRT compared to MSVCRT and glibc.

- Extend the possibilities of C standard library with commonly used
  functionality: implementing POSIX standard (including directories and
  sockets), capability for unicode processing.

Ciabatta is not binary-compatible with other CRT libraries. That means that any
libraries that your project uses have to also be compiled with Ciabatta,
otherwise you might run into issues.

Please note that as of today ciabatta is still during development and does not
implement many of the features that need to be implemented. Using it at current
time is discouraged.

-------------------------------------------------------------------------------
PLATFORM SUPPORT
-------------------------------------------------------------------------------

OS:
- Win64
- Linux (planned)
- ...?  (not planned)

Processor Architecture:
- x86-64

-------------------------------------------------------------------------------
USAGE
-------------------------------------------------------------------------------

Using ciabatta with msvc is not supported. The only compiler that the library
have been compiled and tested with is clang.

Note that the library can only be used with clang
1. Run bake.cmd to compile ciabatta
2. Grab the following files into your project's directory:
- The inc folder
- The ciabatta.lib archive file
- The utf8.obj object file
3. Add the following flags to your compilation command:
  -I inc utf8.obj -nostdlib -mfma
4. Don't forget to link to the following libraries:
  -lciabatta.lib

-------------------------------------------------------------------------------
CONTRIBUTING
-------------------------------------------------------------------------------

Pull requests welcome and accepted in any form.

-------------------------------------------------------------------------------
LICENCE
-------------------------------------------------------------------------------

TBD, but probably i'll make it MIT or WTFPL :kekw: