Project revival: TwoSquares is preserving GNU Telephony's history and preparing an open-source revival. Contributors and collaborators are welcome.
GNU Telephony
Open-source telephony, preserved and being revived
Core Frameworks

C++ Systems & Foundation Libraries

How GNU Telephony engineered portable multi-threading, socket streaming, and memory pool allocators before modern C++11 standardization.

The Need for Portable System Frameworks

In the late 1990s and early 2000s, writing high-performance multi-threaded servers in C++ meant dealing with sharp differences between POSIX pthread implementations on Linux, FreeBSD, and Solaris, as well as the Win32 threading API on Microsoft Windows.

To enable GNU Bayonne and telephony daemons to run cross-platform, David Sugar developed GNU Common C++. It encapsulated threads, synchronization mutexes, atomic counters, and non-blocking TCP/UDP sockets inside robust C++ classes.

The Transition to GNU uCommon C++

As embedded VoIP systems and plug-computers emerged in the late 2000s, Common C++ proved too heavy. David Sugar redesigned the framework as GNU uCommon C++:

  • Memory Pool Allocators: Eliminated heap fragmentation caused by rapid call allocations and deallocations.
  • Zero Overhead: Replaced deep polymorphic inheritance hierarchies with lightweight, direct struct-based wrappers.
  • Unicode & UTF-8: Built-in native internationalization support.