Введение

Библиотека языка программирования C Netscape Portable Runtime, или NSPR, — это кроссплатформенная библиотека, представляющая собой слой абстракции для языка программирования C. Она предоставляет унифицированный API для различных функций операционных систем.

История

NSPR изначально разрабатывался как основа для виртуальной машины Java в Netscape 5. Со временем он был расширен для поддержки дополнительной функциональности, используемой в серверном и клиентском программном обеспечении Netscape. NSPR по-прежнему используется Firefox, а также многими серверными продуктами Oracle и Red Hat.

В/В

NSPR предоставляет функции для работы с файлами, каталогами, анонимными каналами и сетевыми сокетами.

Сетевые адреса

NSPR определяет объект сетевого адреса, ориентированный на IP. Предоставляются функции для преобразования строк ASCII (DNS-имен) в сетевые адресные структуры NSPR, независимо от того, используется ли технология адресации IPv4 или IPv6.

Время

NSPR предоставляет средства синхронизации времени в двух формах: интервальные таймеры и календарные функции. Интервальные таймеры основаны на свободно работающем таймере с 32-битным разрешением. Их начальную точку отсчета и интервал можно задавать по мере необходимости. Календарное время представлено 64-битным целым числом со знаком в формате Unix time. NSPR предоставляет функции для работы и преобразования временных меток.

Управление памятью

NSPR предоставляет API для выполнения базовых функций malloc, calloc, realloc и free. В зависимости от платформы, эти функции могут быть реализованы практически полностью в среде выполнения NSPR или же представлять собой обертки, которые сразу обращаются к функциям, предоставляемым операционной системой.

Связывание

Поддержка динамической компоновки (загрузка и выгрузка общих библиотек) входит в состав функциональных возможностей NSPR. В большинстве случаев это лишь унификация средств, предоставляемых различными поставщиками платформы.

Структуры данных

NSPR предоставляет реализации циклического связного списка и хеш-таблицы.