NSPR 4.6.2 Release
Table of Contents
- What's New
- Library Version Specification
- Release Components
- Test Data
- Reporting bugs
- Building from source
- Contact Info
2.1 Bug fixes
- Bug 111428: If a folder name ends '\' or '/' in IE Favorites, the folder cannot be imported. Contributed by Masayuki Nakano and Jungshik Shin.
- Bug 195219, Bug 312199: Implement atomic routines in IA-64 assembly language for HP-UX/ia64. Reviewed and improved by Dennis Handly of HP.
- Bug 307527: implement NSPR interval timer with timeGetTime instead of QueryPerformanceCounter or GetTickCount.
- Bug 312361: Determine if the visibility("default") attribute is supported by using GCC version only.
- Bug 322287: Implement NSPR atomic routines in x86 assembly code for Intel Macs. Contributed by Josh Aas.
- Bug 326110: PR_SetSysfdTableSize and PR_GetSysfdTableMax are not exported.
- Bug 327448: Redundant implicit calls in NSPR. Contributed by Masatoshi Kimura.
- Bug 247896, Bug 331216: PR_ParseTimeString use PR_Assert and it calls abort on invalid date.
326168: Add a UTF-16 API to load a library. Contributed by Jungshik
Shin with firstname.lastname@example.org.
2.3 Build System Enhancements
- Bug 302212: Mac OS X x86 builds can't target SDKs. Contributed by Mark Mentovai.
- Bug 322427: remove -ansi when compiling NSPR with gcc on Linux, because it's not needed and causes failures.
- Bug 322578: Support ppc<->x86 cross builds for Mac OS X. Contributed by Mark Mentovai.
2.4 Code Cleanup
- Bug 236613: Relicense Mozilla code to MPL/LGPL/GPL tri-license. Contributed by Gervase Markham.
- Bug 331600: Remove code from _netbsd.h which we don't have permission to relicense. Contributed by Gervase Markham.
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
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.
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.1 Platform DirectoryThe platform-dependent name of the directory where the components are placed is of the form
SunOS5.8_OPT.OBJ (optimized build)
HP-UXB.11.00_64_DBG.OBJ (64-bit, debug build)
6.2 Implementation StrategyFor 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 ComponentsUnder 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
4. mdheader.jar, jar file for the header files.
5. mdbinary.jar, jar for the libraries, executable programs, and scripts.
- 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
NSPR_4_6_2_RTM. You can check out the source from CVS by
cvs co -r NSPR_4_6_2_RTM mozilla/nsprpub
To build, do
mozilla.dev.tech.nspr - NSPR newsgroup at mozilla.org