What's New in the Solaris 9 9/04 Operating Environment

Development Tools

The Solaris 9 release includes the following development tool enhancements.

Compatibility of Solaris and Linux Application Programming Interfaces

Some freeware that was available on the Solaris 8 Software Companion CD is now integrated in the Solaris 9 operating environment. As a result, software application developers can now develop and compile their freeware applications more easily in the Solaris operating environment. Freeware libraries include the following:

For further information about freeware that is available on the Solaris media, see Freeware Enhancements.

Choice of XML Output for Live Upgrade Messages

When using Solaris Live Upgrade at the command line, you can now choose XML output with the -X option. This option is for use when writing programs or shell scripts that use Solaris Live Upgrade as a tool. The default output is text, but with the -X option, XML that is suitable for machine parsing and interpretation is created. The output for the -X option is XML for all messages, including error, warning, informational, and general.

See the man page lucreate(1M).

SPARC: Multiple Page Size Support

Multiple Page Size Support (MPSS) allows a program to use any hardware-supported page size to access portions of virtual memory. Previously, only 8–KB pages were available on UltraSPARC platforms for a program's stack, heap, or anonymous memory mapped with the mmap() function.

You can tune the performance of large, memory-intensive applications to use any page size. Any page size that is supported by the hardware for stack, heap, or /dev/zero private memory mapped with the mmap() function can be used. The use of larger page sizes might significantly improve the performance of programs that intensively use large amounts of memory.

For more information, see the man pages for pagesize(1), mpss.so.1(1), ppgsz(1), memcntl(2), mmap(2), and getpagesizes(3C).

Improved Multithreading Library

The Solaris 9 release includes an improved and faster multithreading library. This library was available as the alternate libthread in previous Solaris software releases.

For further information, see the Multithreaded Programming Guide and the threads(3THR) man page.

Perl Version 5.6.1

A new, default version of the Practical Extraction and Report Language (Perl) is available in the Solaris 9 release. The new default version of Perl is version 5.6.1. Also included in the Solaris 9 release is an older Perl version, version 5.005_03. This older version was previously included with the Solaris 8 release.

For further information, see the perl(1) man page.

Unified diff Format

The diff and sccs-sccsdiff commands have been updated to include support for the GNU-style unified diff format. In this format, context lines are only printed once in the listing of differences.

For information on these commands, see the diff(1) and sccs-sccsdiff(1) man pages.

Sysevent Framework

The sysevent framework enables notification of kernel-level and user-level system events to appropriate applications. Events can include hardware and software state changes, errors, and faults.

Components of the sysevent framework include the following:

The syseventd daemon is a user-level daemon that accepts delivery of system event buffers from the kernel. After an event buffer has been delivered to syseventd, the daemon then attempts to propagate the event to all interested end-event subscribers.

The syseventadm command can be used to configure event specifications. These specifications are subsequently used to invoke commands, applications, or scripts in response to a system event.

For information on the sysevent kernel and library APIs, see the man pages syseventadm(1M), syseventconfd(1M), and syseventd(1M).

See ddi_log_sysevent(9F) for information about driver-level event notification logging.

Kernel Pseudo-Random Number Generator

The Solaris Pseudo-Random Number Generator (PRNG) is available through the /dev/random and /dev/urandom devices. PRNG provides ISVs with a standard interface to access pseudo-random numbers for cryptographic operations, scientific applications, and simulation tools. The PRNG operates in the Solaris kernel. PRNG protects the contents of the entropy pool. The PRNG gathers entropic data from kernel memory pages and maintains a high level of randomness at all times.

For further information, see the random(7D) man page.

SPARC: Application Interface to Remote Shared Memory on Clusters

If you develop applications that extend the use of a Sun Cluster environment, you can benefit from this interface. Using the new Remote Shared Memory (RSM) API, you can program your applications to lower the latency for message passing over high-speed cluster interconnects. Such cluster-aware applications can significantly reduce the time that is required to respond to events in a clustered configuration.

You must have Sun Cluster 3.0 installed. Existing Sun Cluster applications need to be modified to exploit the new interface.

For further information, see the Programming Interfaces Guide. Also, the librsm(3LIB) man pages and the “Section 3: Extended Library Functions” (3RSM) man pages include references to RSM.

GNU-Compatible Version of the gettext() API Functions

The Solaris 9 release provides a GNU-compatible version of the gettext() API functions while maintaining backward compatibility with Solaris gettext() API functions.

For further information, see the gettext(3C) man page.

Extended File Attributes

The UFS, NFS, and TMPFS file systems have been enhanced to include extended file attributes. These attributes enable application developers to associate specific attributes to a file. For example, a developer of a file management application for a windowing system might choose to associate a display icon with a file.

For further information, see File System Enhancements.

New Fixed-Priority (FX) Scheduling Class

The FX scheduler provides a scheduling policy for processes that require user or application control of scheduling priorities. See System Resources Enhancements.

Dynamic Host Configuration Protocol (DHCP)

The Dynamic Host Configuration Protocol (DHCP) service enables host systems to receive IP addresses and network configuration information. This information is received at boot time from a network server. Before the Solaris 8 7/01 release, DHCP configuration data could only be stored in text files or NIS+. Now, data access in the Solaris DHCP service has been redesigned to use a modular framework. Solaris DHCP provides an API that enables you to write shared objects that support any data storage facility for storing DHCP data.

The Solaris DHCP Service Developer’s Guide provides an overview of the data access framework that is used by Solaris DHCP. The guide also provides general guidelines for developers. Also included is a listing of the API functions that you can use to write a module to support a new data store.

For further information, see the Solaris DHCP Service Developer’s Guide.

Solaris Web Start Wizards SDK 3.0.1

Solaris Web Start Wizards simplify the installation, setup, and administration of native Solaris, Java, and non-Java applications. With Web Start Wizards, developers can copackage both Solaris and Microsoft Windows versions of their applications. The installation wizard manages the platform specifics.

The Web Start Wizards SDK 3.0.1 is now included with the Solaris 9 release. SDK 3.0.1 can be installed by using the Solaris Web Start installation program.

Modular Debugger (mdb)

The mdb utility is an extensible utility for low-level debugging and editing of the live operating system. The utility can also debug system crash dumps, user processes, user process core dumps, and object files. In the Solaris 9 release, mdb provides new symbolic debugging support for the Solaris kernel and new kernel debugger commands. The mdb utility also provides new features for the examination and control of live running user processes, and the ability to examine raw disk files and devices.

The Solaris Modular Debugger Guide and the mdb(1) man page provide more information.

Audio Enhancements

New audio directories have been added to the Solaris 9 operating environment. The /usr/include/audio directory is a new directory for applications' audio header files. The audio file format has a new header file, /usr/include/audio/au.h, and man page, au(4).

The /usr/share/audio directory is a new depository for miscellaneous audio files. The audio files from the /usr/demo/SOUND/sounds directory have been moved here. A symbolic link from /usr/demo/SOUNDS/sounds to /usr/share/audio/samples/au has been created. This link enables current applications and current scripts to run without failure.

Numerous bug fixes have been made to the audio kernel modules to improve reliability.

For further information, see the System Administration Guide: Basic Administration.

Vectored System Call: sendfilev()

The vectored system call, sendfilev(), enables better performance for sending data from application buffers or files. For example, in web performance, a web server can construct an HTTP response in a single system call. This HTTP response includes header, data, and trailer as well as server-side includes. This feature provides optimal performance with the Solaris Network Cache and Accelerator (NCA). The sendfilev() system call enables the return of multiple chunks, which might come from various files, for the response.

For further information, see the sendfilev(3EXT) and sendfile(3EXT) man pages.

Verify File Conformance With the appcert Utility

The appcert utility verifies an object file's conformance to the Solaris ABI. Conforming to the Solaris ABI greatly increases an application's probable compatibility with future releases of Solaris software.

For more information, see “Using appcert” in the Programming Interfaces Guide.

Generic Security Services Application Programming Interface (GSS-API)

The Generic Security Services Application Programming Interface (GSS-API) is a security framework that enables applications to protect their transmitted data.

See Security Enhancements.