Skip to content

Highly portable C system library: threads and synchronization primitives, sockets (TCP, UDP, SCTP), IPv4 and IPv6, IPC, hash functions (MD5, SHA-1, SHA-2, SHA-3, GOST), binary trees (RB, AVL) and more. Native code performance.

License

Notifications You must be signed in to change notification settings

saprykin/plibsys

Repository files navigation

About

plibsys is a cross-platform system C library with some helpful routines. It has zero third-party dependencies and uses only native system calls.

Features

plibsys gives you:

  • Platform independent data types
  • Threads
  • Mutexes
  • Condition variables
  • Read-write locks
  • System-wide semaphores
  • System-wide shared memory
  • Optimized spinlock
  • Atomic operations
  • Socket support (UDP, TCP, SCTP) with IPv4 and IPv6
  • Hash functions: MD5, SHA-1, SHA-2, SHA-3, GOST (R 34.11-94)
  • Binary trees: BST, red-black, AVL
  • INI file parser
  • High resolution time profiler
  • Files and directories
  • Shared library loading
  • Useful routines for linked lists, strings, hash tables
  • Macros for CPU architecture, OS and compiler detection
  • Macros for variable arguments

To achieve maximum native performance on each platform several implementation models are used:

  • Threading models: POSIX, Solaris, OS/2, BeOS, AtheOS, AmigaOS and Win32
  • IPC models: POSIX, System V, OS/2, AmigaOS and Win32
  • Time profiler models: POSIX, Solaris, Mach, OS/2, BeOS, AmigaOS, Win32 and generic
  • Directory iterating models: POSIX, OS/2 and Win32
  • Shared library loading models: POSIX, HP-UX, OS/2, BeOS, AmigaOS and Win32
  • Atomic operations models: sync, C11, DECC, Win32 and simulated
  • Sockets: BSD with Win32 support

Platforms

plibsys is a cross-platform, highly portable library, it is fully covered with unit tests and was tested on the following desktop 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
  • AmigaOS

plibsys also supports the following mobile platforms:

  • iOS, tvOS, visionOS, watchOS
  • Android
  • BlackBerry 10

It should also work on other *nix systems with or without minimal efforts.

Compilers

plibsys was tested with the following compilers:

  • MSVC (x86, x64, AArch64) 2003 and above
  • MinGW (x86, x64)
  • Open Watcom (x86)
  • Borland (x86)
  • GCC (x86, x64, PPC32be, PPC64be/le, IA-64/32, Alpha, HPPA2.0-32, MIPS64/32, AArch32/64, SPARCv8/9, S390x, LoongArch64, RISC-V)
  • Clang (x86, x64, PPC32be, PPC64le, AArch32/64, S390x, LoongArch64, RISC-V)
  • Intel (x86, x64)
  • QCC (x86, AArch32)
  • Oracle Solaris Studio (x86, x64, SPARCv8/9)
  • MIPSpro (MIPS32)
  • XL C (PPC64le)
  • DEC C (Alpha, IA-64, x64)
  • PGI (x86, x64)
  • Cray (x64)
  • LCC (e2k)

Building

Use CMake to build plibsys for target platform. For OpenVMS see platforms/vms-general directory.

Documentation

Documentation for the latest stable verison is avaialble through the GitHub Pages.

License

plibsys is distributed under the terms of MIT license.

More

More information about the library is available on the Wiki.