2022-06-20 03:51:19 +00:00
|
|
|
|
|
|
|
ABOUT
|
2022-06-26 04:39:15 +00:00
|
|
|
Ciabatta - An implementation of CRT for x86-64 windows and linux platforms.
|
|
|
|
The goal is to provide a platform-independent CRT with the purpose of
|
|
|
|
explicitly defining some of platform-defined behaviours in order to simplify
|
|
|
|
the development and providing additional functionality to aid the developers in
|
|
|
|
writing cross-platform applications.
|
|
|
|
|
|
|
|
Note that Undefined Behaviour is impossible to define on a CRT level, since the
|
|
|
|
semantics of the language can only be changed at the compiler level. Sometimes
|
|
|
|
the compilers will replace CRT function calls with builtin functions, which is
|
|
|
|
meant as an optimization, e.g. replacing some forms of prinf() with puts() or
|
|
|
|
replacing strlen with an x86 rep movsb instruction. Even if ciabatta does have
|
|
|
|
a specific behaviour under given UB conditions, that behaviour is not
|
|
|
|
guaranteed.
|
|
|
|
|
|
|
|
The goals:
|
|
|
|
- Providing API for sockets, unicode processing (not just encodings), maybe
|
|
|
|
the support for common image and data file formats and other useful
|
|
|
|
non-standard functionality.
|
|
|
|
- Making it easy to port the library to a new platform, e.g. a custom OS
|
|
|
|
kernel or a different processor architecture.
|
|
|
|
- Defining implementation-defined behaviours of some of the functions and
|
|
|
|
explicitly documenting them.
|
|
|
|
- Make it reasonably fast compared to MSVCRT and GLIBC.
|
|
|
|
|
|
|
|
PLATFORM SUPPORT
|
|
|
|
OS/Kernel:
|
|
|
|
- Windows (64-bit)
|
|
|
|
- TODO: Linux
|
|
|
|
Processor Architecture
|
|
|
|
- x86-64
|
2022-06-20 03:51:19 +00:00
|
|
|
|
|
|
|
USAGE
|
2022-08-05 04:21:07 +00:00
|
|
|
Note that the library can only be used with clang
|
|
|
|
Once MSVC compiler finally decides to support C11 atomic types I'll consider
|
|
|
|
supporting MSVC, until then clang is your only option
|
|
|
|
1. Run bake.cmd
|
|
|
|
2. Make sure you've got the following in some folder:
|
|
|
|
- The inc folder
|
|
|
|
- The ciabatta.lib archive file
|
|
|
|
- The utf8.obj object file
|
|
|
|
3. Add the following flags to your compilation command:
|
|
|
|
-I <path/to/ciabatta/inc> utf8.obj -nostdlib -mfma
|
|
|
|
4. Don't forget to link to the following libraries:
|
2022-07-31 06:03:53 +00:00
|
|
|
-lciabatta.lib
|
2022-06-20 03:51:19 +00:00
|
|
|
|
|
|
|
CONTRIBUTING
|
2022-06-26 04:39:15 +00:00
|
|
|
Pull requests are always welcome.
|
2022-06-20 03:51:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
LICENCE
|
|
|
|
|
2022-06-26 04:39:15 +00:00
|
|
|
TBD, but probably i'll make it MIT or WTFPL :kekw:
|