Home

Awesome

master branch: Build Status (gcc/clang/tcc) Build Status (Ubuntu 16) Build Status (vs win32)

master branch analysis: Build Status

documentation (generated by doing ./make_test.sh 8): HTML

libsrt has been included into Paul Hsieh's String Library Comparisons table. What a great honor! :-)

libsrt: Safe Real-Time library for the C programming language

libsrt is a C library that provides string, vector, bit set, set, map, hash set, and hash map handling. It's been designed for avoiding explicit memory management when using dynamic-size data structures, allowing safe and expressive code, while keeping high performance. It is also suitable for low level and hard real-time applications, because functions are predictable in both space and time (assuming OS and underlying C library is also real-time suitable).

Key points:

How to build

Generic advantages

Generic disadvantages/limitations

String-specific advantages (srt_string)

String-specific disadvantages/limitations

Vector-specific advantages (srt_vector)

Vector-specific disadvantages/limitations

Set and map advantages (srt_set and srt_map)

Set and map disadvantages/limitations (srt_set and srt_map)

Hash set and hash map advantages (srt_hset and srt_hmap)

Hash set and hash map disadvantages/limitations (srt_hset and srt_hmap)

Test-covered platforms

ISAWord sizeEndianessUnaligned memory access HW supportOSCompilersCode analysisTest coverage
x86, x86-64 (Core i5)32, 64littleyesLinux Ubuntu 12.04/14.04/17.10gcc, g++, tcc, clang, clang++Valgrind, clang, CoverityTravis CI (automatic, every public commit)
x86, x86-64 (Core i5)32, 64littleyesWindowsVisual Studio Express 2013, AppVeyor's VSVSAppVeyor (automatic, every public commit)
x86, x86-64 (Core i5)32, 64littleyesFreeBSD 10.2gcc, g++, clang, clang++Valgrind clangmanual
x86, x86-64 (Core2Duo)32, 64littleyesDarwin 11.4.2gcc, g++, clang, clang++nonemanual
ARMv5 (ARM926EJ-S)32littlenoArch Linuxgcc, g++, clang, clang++nonemanual
ARMv5 (ARM926EJ-S)32littlenoLinux Debian 7.0 "Wheezy"gcc, g++, clang, clang++nonemanual
ARMv5 (Feroceon)32littlenoLinux Debian 7.0 "Wheezy"gcc, g++nonemanual
ARMv6 (ARM1176JZF-S)32littleyesLinux Raspbiangcc, g++, clang, clang++Valgrind, clangmanual
ARMv7-A (Krait 400)32littleyesLinux Android 5.1.1 + BusyBoxgcc, g++nonemanual
ARMv8-A (Cortex A53)64littleyesDebian 8.5 "Jessie"gcc, g++, clang, clang++Valgrind, clangmanual
ARMv8-A (MSM8996)64littleyesLinux Android 7.1.1clang, clang++clangmanual
MIPS, MIPS64 (Octeon)32, 64bigyesEdgeOS v1.6.0 (Linux Vyatta-based using Debian 7 "Wheezy" packages)gcc, g++, clang, clang++Valgrind, clangmanual
MIPS (EE R5900)32littlenoPlaystation 2 Linux (Red Hat based)gcc, g++ 2.95.2nonemanual
PowerPC (G4)32bigyesLinux Ubuntu 12.04gcc, g++nonemanual
PowerPC, PPC64 (Cell)32, 64bigyesYellow Dog Linux 6.2 for Playstation 3 (Red Hat based)gcc, g++ 4.1.2nonemanual

License

Copyright (c) 2015-2019, F. Aragon. All rights reserved. Released under the BSD 3-Clause License (see the LICENSE file included).

Contact

email: faragon.github (GMail account, add @gmail.com)

Other

Status

Beta. API still can change: suggestions are welcome.

Acknowledgements and references

Check doc/references.md