From The Linux Foundation
Revision as of 21:08, 29 January 2009 by Khoroshilov (Talk | contribs)

(diff) ←Older revision | view current revision (diff) | Newer revision→ (diff)
Jump to: navigation, search

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.

LSB 4.0 Release Notes

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 Core specification, described by a Generic specification and seven Architecture Specific supplements. The Core specification in turn is made up of three "books", however these are not released separately, only combined as lsb-core:
    • the ELF specification,
    • the LSB interface specification,
    • the packaging specification.
  • The C++ module (with Generic module and seven Architecture Specific supplements)
  • The Desktop module (with Generic module and seven Architecture Specific supplements)
  • The Languages module
  • The Printing module
  • The Multimedia module
  • The Security module

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.

Summary of Major Differences

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.

Multi-Version SDK

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.

Linux Application Checker

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.

New Packaging Tool

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.

New Sample Implementation

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

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.

Best-Effort Dynamic Linking

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.

Stack Checker

Support for the new stack checker facilities in newer versions of gcc are now supported in LSB-compliant applications.

Updated Support for PowerPC

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.

New Modules

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.

New Language: Java

Building on the support for non-native-code languages introduced in LSB 3.2, we have added Java to the list of supported languages.

New and Upgraded Libraries

Besides the aforementioned NSS libraries, the following libraries are new or upgraded:

  • glibc has been upgraded from the 2.3 API set to 2.4.
  • The GTK+ library suite has been upgraded from the 2.6 API set to 2.8.
  • The Cairo library has been added.
  • libGLU has been added.
  • The X Test extension has been added.

New Interfaces

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:

  • The aforementioned stack checker interfaces emitted by newer gcc versions.
  • The new long double interfaces on PPC64.
  • The epoll interfaces.
  • Unlocked versions of many standard I/O functions.
  • Scheduler affinity functions.
  • The inotify interfaces.
  • sendfile().
  • Many libpng functions missed previously, but identified via the LSB Navigator.
  • Several pthread mutex-related functions.
  • Several C++ template classes.

New Tests

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.

New Commands

In addition to the Java interpreter, the "command", "seq", and "type" commands were added to LSB 4.0.

More Information and Feedback

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, and on several LSB Wiki pages, especially TestPilot40.