Hinterlib
Hinterlib | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Created by | Alexander Nicholi | ||||||||||
Written in | C | ||||||||||
OSes | Sirius DOS, Linux, Windows, macOS, Game Boy Advance, and others | ||||||||||
ISAs | i286, IA-32, x86-64, ARMv4T | ||||||||||
Licence | ASL 1.1 | ||||||||||
Repository | aquefir/hinterlib |
Hinterlib, often referred to jointly with its Cosmopolitan-based sister project as Hinterlib/Neopolitan, is a libc surrogate library created by Alexander Nicholi as a more embedded-friendly surrogate to use than alternatives like GLib or qLibc.
History
Hinterlib was originally created under the name unilib on Christmas Day, 2019. Starting with semantic version 1.2, it was split from a monolithic library into several more modular libraries.
Features
Hinterlib provides many useful utilities that are staples of application and library programming, including error reporting, crash-first programming tools, debug I/O wrappers, string manipulation, containers, high-level memory management, and succinct notations for data types of integers, floating-point numbers, and geometric primitives. It also tries to support compiler intrinsics for things like SIMD operations and exact-width integers which are non-standard in ANSI C.
Neopolitan
While Hinterlib supports many target platforms, Neopolitan was created to target the special Actually Portable Executable format created by Justine Tunney. Its name is a derivative of the reference implementation of APE, called Cosmopolitan libc. It was created because it is not a platform to be targeted in the usual sense, and also because APE's fixed, x86-64 only ABI allows the creation of additional types that escape the practical limits on complexity imposed upon Hinterlib for the sake of portability.