I've been going over with my team the various implications of supporting 
a Solaris version of Apache libcstdcxx, whether it is delivered by a 
Solaris consolidation or by the compiler group.

Let's suppose we go the route suggested by Stefan, where he delivers the 
headers into /usr/include/... and the runtime libraries into /usr/lib.

The feature would not be available on Solaris 9 or earlier. We have 
precedent for such a limitation: full C99 conformance is similarly not 
available. But I don't think restricting the availability to 
SNV/OpenSolaris is acceptable. Currently, full Sun support (e.g. for 
enterprise customers) is available only for Solaris 10. A plan to 
provide support for OpenSolaris is being discussed, but nobody yet knows 
what form that will take.

Will you undertake to deliver Apache libstdcxx into a Solaris 10 patch 
and update?

It might be possible to deliver a single version of the runtime library 
(per platform) compiled with -mt to be used by both MT and non-MT 
programs, but it would have performance implications for single-threaded 
programs. We think a better solution would be to have two libraries, to 
ensure no conflict between MT and non-MT code, and to eliminate 
gratuitous performance loss in single-threaded code. (In MT code, the 
library must lock critical regions of an object during manipulation by 
library functions.)

Will you undertake to deliver both single- and multi-threaded library 
versions?

As discussed earlier, for SPARC, only v8plus (sparcvis) or better will 
be supported, so we eliminate the need to provide different versions for v8.

The compiler team would like to consult with you on the best way 
(compiler options, etc) to build the libraries, and on the library 
configuration parameters.

Subject to agreement on these points, I have no objections to a Solaris 
consolidation taking responsibility for delivery and maintenance of 
libcstdcxx as a Solaris component.

The compiler group will add an option to CC, presumably
     -library=stdcxx
that will take care of disabling use of the default libCstd, and adding 
-I, -L, and -l options to pick up the appropriate version of libstdcxx.

We have already discussed maintaining binary compatibility, which will 
be done via the usual mechanism of external and internal library versioning.

There are probably few minor technical details to be ironed out.

---
Steve Clamage, stephen.clamage at sun.com

Reply via email to