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.
- 1 LSB 4.0 Release Notes
- 1.1 Summary of Major Differences
- 1.2 Multi-Version SDK
- 1.3 Linux Application Checker
- 1.4 New Packaging Tool
- 1.5 New Sample Implementation
- 1.6 LSB Eclipse Plugin
- 1.7 Best-Effort Dynamic Linking
- 1.8 Stack Checker
- 1.9 Updated Support for PowerPC
- 1.10 New Modules
- 1.11 New Language: Java
- 1.12 New and Upgraded Libraries
- 1.13 New Interfaces
- 1.14 New Tests
- 1.15 New Commands
- 1.16 More Information and Feedback
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.
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.
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.
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.
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.
- Many libpng functions missed previously, but identified via the LSB Navigator.
- Several pthread mutex-related functions.
- Several C++ template classes.
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.
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 firstname.lastname@example.org, and on several LSB Wiki pages, especially TestPilot40.