What are the "serious" libraries?

Joe Nelson joe at begriffs.com
Sat Apr 4 18:01:51 UTC 2020

I've been looking for major libraries that do the heavy lifting behind
the scenes for most software, and that power features in other languages
(like how Haskell relies on libgmp to do the actual numerical work).

I came up with the list below. Anybody have more suggestions for serious
and portable libraries? For instance, I'm looking for a good cross
platform GUI library. Also is there a good container library for C that
provides generic data structures?

LibreSSL https://www.libressl.org/
	Symmetric ciphers
	Public key cryptography and key agreement
	Authentication codes and hash functions
	Input, output, and data encoding

ICU http://site.icu-project.org/home
	Code Page Conversion
	Formatting numbers, dates, times and currency amounts
	Time calculations with calendars and time zones
	Unicode: character properties, normalization, case folding, other fundamental operations
	Regular expressions
	Bidirectional writing
	Text Boundaries: Locate the positions of words, sentences,
	  paragraphs within a range of text, or identify locations that would
	  be suitable for line wrapping when displaying the text

SQLite https://sqlite.org/index.html
	an in-process library that implements a self-contained,
	  zero-configuration, transactional SQL database engine
	uses a high-level, stable, reliable, cross-platform,
	  widely-deployed, extensible, performant, accessible,
	  concurrent file format

GMP https://gmplib.org/
	arbitrary precision arithmetic, operating on signed integers,
	  rational numbers, and floating-point numbers
	carefully designed to be as fast as possible by using fullwords as
	  the basic arithmetic type, by using fast algorithms, with highly
	  optimised assembly code for the most common inner loops for a lot
	  of CPUs

X/Open Curses https://publications.opengroup.org/c094
	(ncurses is an implementation and extension https://invisible-island.net/ncurses/)
	terminal capability detection
	"raw" mode keyboard input
	cursor motion
	line drawing
	highlighting, underlining
	{insert,delete} {line,character}
	status line
	area clear

libcurl https://curl.haxx.se/libcurl/
	multi-protocol file transfer

lex / yacc   (flex and bison are widely available implementations)
	generate lexers and parsers

libarchive https://www.libarchive.org/
	multi-format archive and compression
	(arguably it uses more fundamental libraries internally like zlib)

More information about the Friends mailing list