You are currently viewing a snapshot of www.mozilla.org taken on April 21, 2008. Most of this content is highly out of date (some pages haven't been updated since the project began in 1998) and exists for historical purposes only. If there are any pages on this archive site that you think should be added back to www.mozilla.org, please file a bug.




NSPR 4.6.4 Release

17 November 2006

Table of Contents

  1. Introduction
  2. What's New
  3. Library Version Specification
  4. Platforms
  5. Compatibility
  6. Release Components
  7. Test Data
  8. Reporting bugs
  9. Building from source
  10. Contact Info

1. Introduction

The NSPR 4.6.4 release is a bug-fix patch release for NSPR 4.6.

2. What's New

NSPR 4.6.4 provides bug fixes.

2.1 Bug fixes

  • Bug 351609: PR_UnloadLibrary always calls NSUnLinkModule on lib->dlh on Mac OS X.
  • Bug 354305: FreeBSD 6.2 support in NSPR: getprotobyname_r available. Contributed by Diego Pettenò.
  • Bug 356616: NSPR DLLs should be built at default base address. Contributed by Julien Pierre of Sun.
  • Bug 360169: Binary incompatibility with PR_GetSystemInfo.

3. Library Name and Versioning

The binaries for this release are named libnspr4 (nspr4 on Win 95).

The full release number of nspr library can be determined in several ways:

1. The nspr library exports a function, libVersionPoint, that can be called to retrieve the version of the library. The function and data prototypes are available for other libraries to provide similar version information.
2. On Win32 systems, the version number is embedded in the resource descriptor of the DLL and can be viewed using Windows Explorer. On Unix system, the "what" command of sccs or the "ident" command of rcs can be used to obtain the version information.
3. The PR_VersionCheck function can be called to check for compatibility; given a version number the function returns success condition if the version of the nspr library loaded into the application is compatible.

4. Platforms

NSPR has been ported to all major Unix platforms (including Linux and Mac OS X), Windows, OS/2, and BeOS. The NSPR team regularly builds and tests NSPR on AIX, HP-UX, Linux, Mac OS X, Solaris, and Windows. On most platforms, a single release of the nspr library is used to support all the current releases of the OS.

5. Compatibility

The NSPR 4.6.4 release is backward compatible with NSPR 4.0.x, 4.1.x, 4.2.x, 4.3.x, 4.4.x, 4.5.x, 4.6, 4.6.1, 4.6.2, and 4.6.3.

For the nspr library, backward compatibility does not preclude the addition of new error codes to the set of nspr error codes already defined. An application should allow for nspr functions returning error codes not documented for the particular release with which it is linked. This helps to retain backward compatibility as new error codes are added upon discovery of new information about platform-specific error codes.

6. Release Components

The main components of this release are a set of shared libraries and header files for each platform. A debug build and a release (optimized) build of the libraries are made available for each platform.

6.1 Platform Directory

The platform-dependent name of the directory where the components are placed is of the form

<os-name><os-version>[_<compiler>][cpu-arch][_<implementation strategy>][_<addr-bits>]_<DBG|OPT>.OBJ

For example,
SunOS5.8_OPT.OBJ (optimized build)
HP-UXB.11.00_64_DBG.OBJ (64-bit, debug build)

6.2 Implementation Strategy

For the implementation of nspr, different strategies are used on different platforms. On some platforms the nspr threads map directly to the native threads on the platform, while on others nspr supports both threads that are scheduled by nspr and the native threads.

The default implementation strategies in this release are:
- pthreads: all Unix platforms
- classic: Win NT (combined MxN model, with Windows threads and fibers)
- native threads: Win95

6.3 Components

Under each <platform> directory, there are:

1. include directory, containing the header files
2. lib directory, containing the libraries. Three libraries are built on all platforms: nspr, plc, plds. Only shared (dynamic link) versions of the libraries are built.

The nspr library exports the core nspr functions.

The plc (Portable Library C) library is a separate library from the core nspr. You do
not need to use plc if you just want to use the core nspr functions. The plc library currently
contains thread-safe string functions and functions for processing command-line options.

The plds (Portable Library Data Structures) library supports data structures such as arenas and hash tables. It is important to note that services of plds are not thread-safe. To use these services in a multi-threaded environment, clients have to implement their own thread-safe access, by acquiring locks/monitors, for example.

For Solaris platforms with UltraSPARC processors only, a platform-specific library, libnspr_flt, is also supplied. (libnspr_flt replaces the libultrasparc library in NSPR 4.2.x or earlier.) This library implements optimized versions of atomic operations by using the features present in the UltraSPARC (V9) processors, but not in the SPARC (V8) processors. This library is linked into libnspr by use of the auxiliary filter mechanism of the Solaris linker. To use this library at runtime on UltraSPARC systems, libnspr_flt4.so should be installed in a subdirectory named cpu/sparcv8plus relative to the directory where libnspr4.so resides.

3. bin directory, containing a perl script, compile-et.pl, and a Java bundle, prerr.properties.
4. mdheader.jar, jar file for the header files.
5. mdbinary.jar, jar for the libraries, executable programs, and scripts.

7. Test Data

All the major functional areas of nspr were tested using the programs in the nspr test suite. Both functional and stress tests in the pr/tests directory were successfully run on multi-processor systems for most platforms, except for Win95/98.

8. Reporting bugs

Bugs discovered should be reported by filing a report in Bugzilla. The following information is required
  • platform (Solaris 8, HP-UX 11.0, etc.)
  • number of cpus in the system
  • a stack trace, in the event of a crash
  • reproducibility of the problem
  • location of core dump, if available, along with those for the libraries and executables

9. Building from source

This release is built from the source, at the CVS repository rooted at cvs.mozilla.org:/cvsroot, with the CVS tag
NSPR_4_6_4_RTM. You can check out the source from CVS by
cvs co -r NSPR_4_6_4_RTM mozilla/nsprpub

To build, do
cd mozilla/nsprpub
./configure
gmake export

10. Contact Info

http://www.mozilla.org/projects/nspr/ and http://developer.mozilla.org/en/docs/NSPR - NSPR documentation
mozilla.dev.tech.nspr - NSPR newsgroup at mozilla.org