FSG touts LSB 3.0 features, acceptance
Sep 19, 2005 — by LinuxDevices Staff — from the LinuxDevices Archive — viewsThe Free Standards Group (FSG) is touting a major new version of the Linux Standards Base (LSB) approved in July. LSB 3.0 improves POSIX compliance and internationalizability, updates C++ compiler requirements, and adds new interfaces while removing deprecated ones. It is supported by “all major distributors,” the LSB claims.
What's the LSB?
The LSB defines a standard interface between applications and Linux distributions. It aims to make Linux easier for ISVs (independent software vendors) to support multiple Linux distributions. Development and maintenance of the LSB specification is supported mainly by ISVs and Linux distributors such as FSG members MontaVista, TimeSys, Novell/SuSE, Red Hat, and many others.
The LSB was conceived in July of 2001 with the aim of prevening Linux from “fragmenting” — that is, to discourage vendors from producing mutually incompatible versions of Linux, as happened to Unix during the “Unix wars” of the 80s and 90s. The LSB has gained widespread industry acceptance, and LSB compliance is a requirement of several other standards, including Carrier Grade Linux and the erstwhile Embedded Linux Consortium's Platform Specification, recently transitioned to the OSDL.
The LSB defines a set of common, shared libraries, including specific versions of glibc, libstdc++, and x11. It also defines filesystem placement, configuration files, system commands, and ABIs (application binary interfaces). It is available for seven architectures, including IA32, IA64, PPC32, PPC64, S390, S390X, and X86_64.
What's new in 3.0?
According to the FSG, LSB 3.0 “does not represent a major technological change.” However, a change in the major version number means that applications written to run on LSB 2.0-compliant systems could require recompilation to run on LSB 3.0 systems. The LSB standard neither forbids nor requires simultaneous support for multiple LSB versions, however.
Some changes in LSB 3.0 affect better POSIX compliance; with version 3.0, the LSB command set now matches base POSIX requirements, according to the FSG.
Other changes relate to the goal of registering the LSB with ISO (International Standards Organization), a goal likely to be achieved with the 3.1 release later in 2005.
Internationalization requirements represent the most problematic aspect of LSB 3.0, the FSG says; support for a set of multi-byte character handling requirements is not fully implemented, currently, by coreutils, diffutils, grep, nor cpio. A patch set from the Openl18N FSG project is available, but may not be current in all cases, and is not authorized by upstream maintainers.
Some of the specific changes in LSB 3.0 include:
- C++ ABI updated to that used by gcc 3.4.4 and later (probably including gcc 4.0) — libstdc++.so.6 is now standard, although it can coexist with libstdc++.so.5 where LSB 2.0 compliance is required.
- A subset of the real-time library librt has been reinstated. The library was removed due to a non-standard implementation of asynchronous I/O. The reinstated version omits the aio_*, lio_* and mq_* interfaces
- New interfaces:
- libc: duplocale, freelocale, newlocale, uselocale, getgrouplist, posix_openpt, getlogin_r
- ibpthread: pthread_attr_getinheritsched, pthread_attr_getschedpolicy, pthread_attr_getscope, pthread_attr_setinheritsched, pthread_attr_setschedpolicy, pthread_attr_setscope, pthread_getschedparam, pthread_setschedparam, pthread_setschedprio
- librt (new library): clock_getcpuclockid, clock_getres, clock_gettime, clock_nanosleep, clock_settime, shm_open, shm_unlink, timer_create, timer_delete, timer_getoverrun, timer_gettime, timer_settime
- New symbol versions:
- _sys_siglist uplifted to GLIBC_2.3.3
- nftw, nftw64 uplifted to GLIBC_2.3.3
- regexec uplifted to GLIBC_2.3.4
- ppc64, ppc32: _ _sigsetjmp, _longjmp, _setjmp, longjmp, siglongjmp, getcontext, setcontext,swapcontext were changed to version GLIBC_2.3.4 to match a change to an underlying data structure
- Data structure changes in Power architecture (ppc32 and ppc64)
- LSB linker version number incremented
- Package manager must supply lsb-core-noarch, lsb-graphics-noarch, lsb-core-arch, and lsb-graphics-arch
- lsb_release command must support shell command mode, and must supply core-3.0-noarch, graphics-3.0-noarch, core-3.0-arch and graphics-3.0-arch
- New commands: ed, logger, lp, mailx, pax
- New shell builtins: cd, getopts, read, umask, wait
- Removal of interfaces previously marked as “deprecated”:
- Network entries: endnetent, setnetent
- Domain names: getdomainname, setdomainname
- Signals: siggetmask, sigstack, sigblock
- Old regular expression: step, advance, loc1, loc2, locs
- Host/network names: getnetbyaddr, gethostbyname_r
- Administrative: sethostid
- BSD regular expression: re_comp, re_exec
- Strings: strfry, strverscmp
- BSD process wait: wait3
- Tune kernel clock (admin): adjtimex
- Random numbers: random_r
- Network entries: endnetent, setnetent
- Graphics module changes:
- Added Xevi to libXext
- Added libXi (X input extension)
- Added Xevi to libXext
- New interfaces:
- libXext: XeviGetVisualInfo, XeviQueryExtension, XeviQueryVersion
- libXi: XAllowDeviceEvents, XChangeDeviceControl, XChangeDeviceDontPropagateList, XChangeDeviceKeyMapping, XChangeFeedbackControl, XChangeKeyboardDevice, XChangePointerDevice, XCloseDevice, XDeviceBell, XFreeDeviceControl, XFreeDeviceList, XFreeDeviceMotionEvents, XFreeDeviceState, XFreeFeedbackList, XGetDeviceButtonMapping, XGetDeviceControl, XGetDeviceDontPropagateList, XGetDeviceFocus, XGetDeviceKeyMapping, XGetDeviceModifierMapping, XGetDeviceMotionEvents, XGetExtensionVersion, XGetFeedbackControl, XGetSelectedExtensionEvents, XGrabDevice, XGrabDeviceButton, XGrabDeviceKey, X!Input_find_display, XListInputDevices, XOpenDevice, XQueryDeviceState, XSelectExtensionEvent, XSendExtensionEvent, XSetDeviceButtonMapping, XSetDeviceFocus, XSetDeviceMode, XSetDeviceModifierMapping, XSetDeviceValuators, XUngrabDevice, XUngrabDeviceButton, XUngrabDeviceKey
A complete changelog can be found here. Further high-level details about the release, including specific “major Linux distributors” endorsing the release, can be found in an in-depth story at eWEEK.com, here.
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.