Bug#871541: ITP: libplibsys0 -- Highly portable C system library
Package: wnpp
Severity: wishlist
Owner: Alexander Saprykin <saprykin.spb@gmail.com>
* Package name : libplibsys0
Version : 0.0.3
Upstream Author : Alexander Saprykin <saprykin.spb@gmail.com>
* URL : https://github.com/saprykin/plibsys
* License : LGPL
Programming Lang: C
Description : Highly portable C system library
plibsys is a cross-platform system C library with some helpful routines.
It has zero third-party dependencies and uses only native system calls.
plibsys provides:
- Platform independent data types
- Threads, mutexes, condition variables, RW locks
- Syste-wide semaphores and shared memory
- Optimized spinlock, atomic operations
- Socket support (UDP, TCP) with IPv4 and IPv6
- Hash functions (MD5, SHA-1, SHA-2, SHA-3, GOST)
- Binary trees (RB, AVL)
- INI file parser
- High resolution time profiler
- Files and directories operations
- Shared library loading
- Macros to detect CPU architecture, OS and compiler
- Some other useful routines to manage linked lists, strings, hash tables
To achieve maximum native performance on each platform several implementation
models are used:
- Threading models: POSIX, Solaris, OS/2, BeOS, AtheOS, Win32
- IPC models: POSIX, System V, OS/2, Win32
- Time profiler models: POSIX, Solaris, Mach, OS/2, BeOS, Win32, generic
- Directory iterating models: POSIX, OS/2, Win32
- Shared library loading models: POSIX, HP-UX, OS/2, BeOS, Win32
- Atomic operations models: sync (GCC), C11, DECC, Win32, simulated
- Sockets: BSD with Win32 support
plibsys is fully covered with unit tests and was tested on the following
platforms:
- GNU/Linux
- macOS
- Windows
- Cygwin, MSYS
- FreeBSD, NetBSD, OpenBSD, DragonFlyBSD
- Solaris
- AIX
- HP-UX
- Tru64
- OpenVMS
- OS/2
- IRIX
- QNX Neutrino
- UnixWare 7
- SCO OpenServer 5
- Haiku
- Syllable
- BeOS
It also supports the following modile platforms:
- BlackBerry 10
plibsys was tested with the following compilers:
- MSVC (x86, x64) 2003 and above
- MinGW (x86, x64)
- Open Watcom (x86)
- Borland (x86)
- GCC (x86, x64, PPC32be, PPC64be/le, IA-64/32, IA-64, Alpha,
HPPA2.0-32, MIPS32, AArch32, SPARCv9)
- Clang (x86, x64, PPC32be)
- Intel (x86, x64)
- QCC (x86, AArch32)
- Oracle Solaris Studio (x86, x64, SPARCv9)
- MIPSpro (MIPS32)
- XL C (PPC64le)
- DEC C (Alpha)
- PGI (x86, x64)
This library provides most of the functionality you need when
writing cross-platform system software. It doesn't have any other
dependencies, thus is very lightweight. The build system is
written completely using modern CMake. It was already used in
some proprietary mission-critical projects. Probably, the
closest package would be GLib, but plibsys supports more
operating systems (especially if you need to support old ones),
more compilers, much easier to port on new platforms and compilers.
I'm planning to add and maintain native support for Debian packages.
Actually I have already had a draft version of Debian package
support, but I still need someone to check and verify it, and also
correct my first steps in making packages for Debian.
Reply to: