Open UNIX 8 Release 8.0 New Features
The most notable change in the OUDK compared to all previous releases of
the UnixWare and OpenServer Development Kit (UDK) is that the OUDK is intended
for use with Open UNIX 8, although it can also be installed and used on UnixWare 7.1.1.
This is different from the UDK, which
provided for building "universal" binaries that could be run on
UnixWare 7, OpenServer 5, and at one time UnixWare 2.
There are two immediate UDK "predecessor" product releases to the OUDK:
the UDK Release 7.1.1,
which is included in UnixWare 7.1.1 media kit, and the later UDK Release 7.1.1b
Feature Supplement, which is available for
download from the Caldera web download site.
Compared to UDK 7.1.1b Feature Supplement, the OUDK contains no new features,
but does contain a number of bug fixes.
Compared to UDK 7.1.1, the OUDK contains many new features (that is, those
that were in the UDK 7.1.1b Feature Supplement). These are:
-
Almost full conformance to the new ISO/IEC 14882:1998 C++ standard,
including:
-
a complete, thread-safe implementation of the C++ Standard Library,
including
-
the Standard Template Library (STL)
-
iostreams
-
locale
-
string
-
complex
-
valarray
-
the standard C library in namespace std
-
support for additional language features
-
template template parameters
-
default arguments on template functions only being instantiated if needed
-
class name injection
-
argument-dependent lookup on function calls
-
elimination of friend name injection
-
string literals having const char* type
-
return void
-
universal character names in source code.
-
Important fixes and improvements in C++ template instantiation,
especially when archives are involved.
-
Almost full conformance to the revised ISO/IEC 9899:1999 C standard
(also known as C 99 or C9X), including the following
(a few of these were already in the base 7.1.1 UDK C compiler or library):
-
more precise aliasing rules via effective type
-
restricted pointers
-
flexible array members
-
static and type qualifiers in parameter array declarators
-
type-generic math macros in tgmath.h
-
the long long int type and library functions
-
increased minimum translation limits
-
additional floating-point characteristics in float.h
-
removal of implicit int
-
reliable integer division
-
universal character names (\u and \U)
-
extended identifiers
-
hexadecimal floating-point constants and %a and %A printf/scanf conversion specifiers
-
compound literals
-
designated initializers
-
// comments
-
extended integer types and library functions in inttypes.h and stdint.h
-
remove implicit function declaration
-
preprocessor arithmetic done in intmax_t/uintmax_t
-
mixed declarations and code
-
new block scopes for selection and iteration statements
-
integer constant type rules
-
integer promotion rules
-
macros with a variable number of arguments
-
the vscanf family of functions in stdio.hand wchar.h
-
additional math library functions in math.h
-
floating-point environment access in fenv.h
-
IEC 60559 (also known as IEC 559 or IEEE arithmetic) support
-
trailing comma allowed in enum declaration
-
%lf conversion specifier allowed in printf
-
inline functions
-
the snprintf family of functions in stdio.h
-
boolean type in stdbool.h
-
idempotent type qualifiers
-
empty macro arguments
-
new struct type compatibility rules (tag compatibility)
-
additional predefined macro names
-
_Pragma preprocessing operator
-
standard pragmas
-
__func__ predefined identifier
-
VA_COPY macro
-
additional strftime conversion specifiers
-
LIA compatibility annex
-
deprecate ungetc at the beginning of a binary file
-
remove deprecation of aliased array parameters
-
conversion of array to pointer not limited to lvalues
-
relaxed constraints on aggregate and union initialization
-
relaxed restrictions on portable header names
-
return without expression not permitted in function that returns a value (and vice versa).
-
A better math library libm:
-
shared library libm.so in addition to archive libm.a
-
addition of new C 99 math functions (except for complex and imaginary)
-
float, double, and long double precision versions of all
of math library operations (except for the Bessel functions)
-
small improvements in speed and accuracy of many functions.
-
Other APIs made available from shared libraries in addition to archives,
making calls to these APIs easier from dynamically opened shared libraries
(such as from Java<sup>TM</sup> native methods).
-
Functionality and usability improvements to the cc and CC compile commands,
including:
-
support for -Kalloca in CC and defaulting this option in both cc and CC;
-
new option -Kpthread to enable POSIX threads semantics;
-
new option -Xb in cc to provide source compatibility with the older C standard;
-
new option -i in cc to allow user-supplied _init and
_fini sections;
-
new options -Toipo and -Toipo_list in CC for advanced template instantiation needs;
-
support for a -R option in both cc and CC for passing a runapth to the linker;
in the case ofCC, the option is overloaded with the existing -R option for precompiled headers;
-
additional
warnings or errors generated for option combinations that will usually
or always lead to runtime failures.
-
Enhancements to the debugger, including:
-
a new debugger identity command that
provides information about a particular location of memory
specified by an address, expression, symbol, or any value that can be
interpreted as a memory location;
-
the debugger signal
command has a new option -m to display the signal mask
of the debugged process or thread;
-
the debug(1) command and the debugger grab
command, in most cases, do
not need the user to specify the executable path and name when starting
to debug a core file; the -c option is optional in such cases;
-
the debug(1) command and both the debugger create and
grab commands have
a new option -p which searches the user's PATH environment variable for the
executable;
-
support for newly added C++ language features, such as template template
parameters.
-
Change to the C++ Standard Components Time class to follow X/Open
guidelines regarding interpretation of two-digit-year input dates.
-
Bug fixes in all updated components.
The only items from the ISO/IEC 14882:1998
C++ standard not implemented in this release of the OUDK
are: two-phase name binding in templates, partial specialization
of a class member template outside of the class definition,
the export keyword for templates, placement delete,
function-try-blocks, and support for multibyte characters in source.
The only items from the ISO/IEC 9899:1999
C standard not implemented in this release of the OUDK
are: variable-length arrays, complex and imaginary numbers,
and some minor variances in the snprintf(3S) function and in
some header name space issues. Since this release
of the OUDK is not fully C99 conformant, the cc -Xc option
retains its conformance checking to the older C standards.
See the
cc(1)
and
CC(1C++)
man pages for full details on items from
the standards not implemented.
Finally, be aware that the new C keyword inline will only
be effective in inlining calls to the function it is specified for,
when the cc -O option is used.
Next topic:
Release 7.1 New Features
Previous topic:
Development Kit Documentation
© 2004 The SCO Group, Inc. All rights reserved.
UnixWare 7 Release 7.1.4 - 27 April 2004