Web lists-archives.com

Bug#871541: ITP: libplibsys0 -- Highly portable C system library




Package: wnpp
Severity: wishlist
Owner: Alexander Saprykin <saprykin.spb@xxxxxxxxx>

* Package name    : libplibsys0
  Version         : 0.0.3
  Upstream Author : Alexander Saprykin <saprykin.spb@xxxxxxxxx>
* 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.