An alternative runtime for C11/C23 (mirror)
Go to file
flysand7 2438fad20e Fix up repo for the badge 2023-06-25 02:54:28 +11:00
.github/workflows Add NASM to CI 2023-06-25 02:45:20 +11:00
docs rename some files 2023-06-18 18:28:07 +11:00
include Uncomment fflush 2023-06-24 16:10:27 +11:00
src Account for 'shit aint working' kind of issue 2023-06-25 02:44:39 +11:00
test Account for 'shit aint working' kind of issue 2023-06-25 02:44:39 +11:00
.gitignore Some stdio tests 2023-06-24 14:42:11 +11:00
build.cmd rename some files 2023-06-18 18:28:07 +11:00
readme.md Fix up repo for the badge 2023-06-25 02:54:28 +11:00
test.bat Fix integer overflow on SetFilePointer 2023-06-24 15:55:21 +11:00
todo.md Update readme.md 2023-06-25 02:50:53 +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.md

Ciabatta

Build Status

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.

Support

Operating System:

  • Windows
  • Linux (planned)

Processor Architecture:

  • x86-64

This library is supposed to be extensible to other platforms, meaning that you can write an OS layer for another OS and use the rest of the CRT functionality.

Building & Usage

Building 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 ./build.cmd to compile ciabatta
  • (Optionally) Run ./test crt to make sure there are no errors
  1. Grab the following files into your project's directory:
  • The ./include folder
  • The ./ciabatta.lib archive file
  • The ./utf8.obj object file
  1. Add the following flags to your compilation command: -I ./include utf8.obj -nostdlib -mfma
  2. Don't forget to link to the following libraries: -lciabatta.lib

Contributing

Pull requests welcome and accepted in any form.

License

TBD