NSPR — Netscape Portable Runtime
Warning
NSPR is a legacy library (started in 1994!) and should not be used for new projects. It predates modern C/C++ standards and the portable threading, I/O, time, and networking primitives now available in the standard library and the operating system. New code should rely on those instead (e.g.
<threads.h>/std::thread,<chrono>, POSIX/Winsock APIs). NSPR is maintained primarily for the benefit of existing consumers such as NSS and Firefox.
NSPR (Netscape Portable Runtime) is a platform-neutral API that provides system-level and libc-like functions. It gives applications a uniform interface to non-GUI operating system facilities and is used by Mozilla clients, Red Hat and Oracle server applications, and other software.
NSPR is functionally complete and is in maintenance mode: updates track changes in supported operating systems rather than adding new features.
Features
- Threads — a unified threading API across platforms ranging from those without native threads to those with sophisticated implementations.
- Thread synchronization — monitor-style mutual exclusion and condition variables, with Java-compatible reentrancy.
- I/O — an enhanced BSD-sockets model supporting layered, synchronous I/O with optional non-blocking behavior.
- Network addresses — manipulation of network addresses with a migration path between IPv4 and IPv6.
- Time — interval timers for timeouts and scheduling, plus calendar functions covering roughly year −30000 to year 30000.
- Memory management —
malloc,calloc,realloc,free. - Shared library linking — load and unload dynamic libraries.
Getting NSPR
- Windows — build from source.
- macOS — install via MacPorts or Homebrew.
- Debian / Ubuntu —
sudo apt-get install libnspr4-dev - openSUSE — install
mozilla-nspr(andmozilla-nspr-develfor headers) viazypperor YaST.
Building from source
mkdir target && cd target
../configure
make
Running the test suite
make -C target/pr/tests
cd target/pr/tests && ./runtests.sh
Related projects
- NSS — Network Security Services, built on top of NSPR.
License
NSPR is licensed under the Mozilla Public License, version 2.0. See LICENSE for details.