NOTE: These release notes are preliminary, and are subject to change before the final release. Many issues with the release are not yet settled. In particular, the decisions on trial-use status are yet to be made, so all new functionality is eligible for trial-use status.
The LSB project team is proud to announce LSB Version 4.0. The specification is available for download at the Specification page. The tools, tests and development environment are available for download at the Download page.
Although all LSB releases starting with version 3.0 are compatible with previous releases, LSB 4.0 is a major release, and contains significant changes compared to the 3.x series.
The LSB consists of a number of components, or modules:
The seven supported architectures for LSB 4 are: IA32, IA64, PPC32, PPC64, S390, S390X, X86_64.
There may be other modules or books in an LSB specification development tree but only the above are released as part of LSB 4.0.
In general, LSB 4.0 is a superset of previous LSB 3.x releases, with new modules added. New low-level functionality has been added in LSB 4.0, however, which may introduce issues with binary compatibility between LSB 4 applications and LSB 3 distributions. Our binary compatibility guarantee, however, continues to be in force for LSB 3 applications running on LSB 4 distributions.
In a number of places, the standards have been relaxed or adjusted a bit to correct errors and accommodate a larger number of use cases.
With the release of LSB 4.0, the LSB SDK is now decoupled from the release of new specifications. The 4.0 SDK can build applications to the LSB 3.0, 3.1, 3.2, or 4.0 specifications, and can switch at will between them.
lsbcc now automatically adds a preprocessor define __LSB_VERSION__. This define can be checked if necessary in source code for conditional builds (bug 1676). By default, lsbcc will set this to a value of 40; starting with this version the development environment can target different versions of the LSB, the default can be overridden by setting the environment variable LSBCC_LSBVERSION to a different two-digit version code.
ATK Manager (released with previous versions of the LSB) has been enhanced, and is now called the Linux Application Checker. Besides LSB compliance information, the tool can now report on your application's compatibility with the leading Linux distributions.
The SDK now comes with a tool that makes the creation of LSB-compliant packages easier. Instead of maintaining a spec file, simple packages can be built from the commmand line as a final step in an existing build/install process.
The Sample Implementation has been completely redesigned, and is now based on the rPath Conary technology instead of Linux From Scratch. A tool suite has also been developed to make SI use easier.
LSB Eclipse plugin is introduced to facilitate development of portable C/C++ applications for the Linux platform by integrating the Linux Standard Base (LSB) tools into the Eclipse IDE. It enables smooth using the LSB SDK for building C/C++ applications within the Eclipse IDE along with "at hand" checking of applications under development with the Linux Application Checker.
The LSB dynamic linker, while essential for distribution flexibility, can make application deployment more difficult. To fix this, the SDK now supports a "best-effort" mode for supporting the LSB dynamic linker which allows LSB-compliant applications to work on systems missing LSB support, making them work on a "best effort" basis.
Support for the new stack checker facilities in newer versions of gcc are now supported in LSB-compliant applications.
Support for the new size of long doubles has been added to the SDK. Applications built with the SDK to target 4.0 will use the new size; applications built to target the 3.x versions will continue to use the old size.
A new "Security" module has been added to the LSB, covering application interfaces for controlling security. The first addition is the NSS library from Mozilla, used in applications like Firefox to provide SSL/TLS support and general-purpose encryption.
Building on the support for non-native-code languages introduced in LSB 3.2, we have added Java to the list of supported languages.
Besides the aforementioned NSS libraries, the following libraries are new or upgraded:
A full list of the new interfaces is too long to relate here, but can be found on the LSB Navigator's statistics page. Some highlights:
Four new test suites have been added thanks to our continued partnership with ISPRAS.
Two test suites generated using the AZOV system which cover Qt 3 and Qt 4 have been contributed. These are the so-called "shallow" tests, which mostly cover interface existence and call semantics.
Using the T2C test harness, a new set of C++ tests has been added, joining the desktop tests contributed in LSB 3.2. These are "normal" tests, which cover the most important functionality of the interfaces and some error conditions.
Finally, new core tests based on the OLVER framework have been added. These are "deep" tests, in that tests are rigorously tied to parts of the specification, and nearly all assertions in the specification have tests to back them up.
In addition, many new tests have been contributed to the original core tests by Pavan Naregundi of IBM.
In addition to the Java interpreter, the "command", "seq", and "type" commands were added to LSB 4.0.
The Linux Foundation keeps track of issues with the 4.0 specification and software on their Web site, and welcomes comments. Issues can be found in our bug tracker, on the mailing list at firstname.lastname@example.org, and on several LSB Wiki pages, especially TestPilot40.