sc/README.md
Tezc 35fe96f0b0
doc fix (#30)
uri test, doc, posix define
2021-02-05 16:35:10 +03:00

3.9 KiB

Overview

Stand-alone, portable C libraries.

Each folder is independent and contains a header and a source file.
There is no build, just copy paste *.h *.c files into your project.

List

Library Description
array Generic array/vector
buffer Buffer for encoding/decoding variables, best fit for protocol/serialization implementations
condition Condition wrapper for Posix and Windows
crc32 Crc32c, uses crc32c CPU instruction if available
heap Min heap which can be used as max heap/priority queue as well
ini Ini parser
linked list Intrusive linked list
logger Logger
map A high performance hashmap
math Utility functions
memory map Mmap wrapper for Posix and Windows
mutex Mutex wrapper for Posix and Windows
option Cmdline argument parser. Very basic one
perf Benchmark utility to get performance counters info via perf_event_open()
queue Generic queue which can be used as dequeue/stack/list as well
rc4 Random number generator
signal Signal handler & signal safe snprintf (handling CTRL+C, printing backtrace on crash etc)
socket Pipe, TCP sockets, Epoll/Kqueue/WSAPoll for Posix and Windows
string Length prefixed, null terminated C strings.
thread Thread wrapper for Posix and Windows.
time Time and sleep functions for Posix and Windows
timer Hashed timer wheel implementation for fast poll / cancel ops
uri A basic uri parser

Test

Although I use on Linux mostly, CI runs with some combination of

OS         : Linux, MacOS, FreeBSD and Windows  
Compilers  : GCC, Clang, MSVC  
Arch       : x64, aarch64, armv6, armv7, ppc64le, s390x  
Sanitizers : valgrind and clang/gcc sanitizers(address, undefined, thread)

To run all tests :

#with valgrind
mkdir build; cd build;
cmake .. && make && make check

#with address sanitizer
mkdir build; cd build;
cmake .. -DSANITIZER=address && make && make check

#with undefined sanitizer
mkdir build; cd build;
cmake .. -DSANITIZER=undefined && make && make check