2010/5/27 Alan Coopersmith <alan.coopersm...@oracle.com>: > ольга крыжановская wrote: >> Roland also said that perl has the same problem. Since perl in ON >> needs to be build with both Studio and gcc compilers the perl build >> had to downgrade its floating point support from long double to double >> which causes interoperability problems with 3rd party perl software >> and turns Solaris /bin/perl unusable for numeric applications. > > That problem should be solved now that perl integrates to SFW, not ON. > We offered many times to solve many ksh93 integration headaches by > doing the same there...
Grumpf... AFAIK we had this kind of discussion many many times. Lets recall some of the reasons (I'm not listing all, just the "top eight" out of my head, otherwise this email would become much bigger): - ksh93 greatly benefitted from being in OS/Net. All the rules _forced_ us to invent new things&&stragegies to hunt down bugs and adopt the code (I remeber the first year of ksh93 in OS/Net as stress... but IMO it was worth it since we slaughtered many many bugs). We would never be at the static current level (that means ksh93 version "u-", which is not integrated yet (and excluding the mad/crazy command substitution issues we have since we switched command substitutions from |mmap()|'ed files to pipes... something which I'd like to revert again ASAP)) without such rules. Relaxing them by putting ksh93 into SFWNV will IMO cause a slow degradation of quality since noone will care to enforce them. People like John Beck and others really did a very very good job with keeping the quality up and I don't see how this should happen with SFWNV since AFAIK most of the QA people were RIF'ed (please correct me if I am wrong). - As Olga pointed out: The native build system of AST and the way how SFWNV builds things don't work well with each other (it is not suited (and the use of parallel builds, too) for "autoconf" either but in SFWNV noone cares (or seems to care) if "configure" tests which use timeout randomly change between builds (this issue depends on the load of the build machines)). There are a lot of teething things which can go wrong. We had such problems in OS/Net too but solved them by using our own Makefiles and lots of other little tweaks. Moving ksh93 to SFWNV would require to rewrite all this stuff from scratch and this is around 6-9 manmonths of work. - Having our own Makefiles and build configuration allowed some interesting optimisations and addition of features which are not part of the upstream work (for example we have a few very popular extra builtins (like "poll" or AST "egrep"/"grep"/"fgrep") which you won't find in the default upstream configuration) - ksh93 was added as part of a bigger project, basically as starting point for an userland modernisation (but we were carefull not to sell it as this in the initial ARC case, AFAIK PAC&co. would've eaten us alive (feet first to make it extra cruel) like they did when other people like Henk proposed such a move earlier). - All code affected sits in OS/Net. - There were two colliding versions of libcmd, one from AT&T and one from Solaris (both had a common ancestor but evolved and mutated in different universes until we merged them back). Having both in a single, merged libcmd.so.1 has simplified many things (remeber the many phone call we had about this fun ?) - libast&&co. consumes a couple of private interfaces which all live in OS/Net. This is by design and should (in theory) go in both directions, e.g. OS/Net should be able to consume private libast&co. APIs [a] and the libast stuff should be able to use private OS/Net interfaces. We could stop using them but this would come with a _HUGE_ performace and code bloat (e.g. another 140k of code would be needed in the already big libast [b]) price tag and there would still be some interfaces which need to be contracted - April originally estimated seven man-months of work to do this (and noone was interested in doing it since it would cause more pain for exactly _ZERO_ benefits, see [a] below). - ksh88 sits in OS/Net... it was logiacal to put the successor there, too (by using the "grandfathering" rule). All the other things and our future plans listed above pointed to OS/Net, too. [a]=For example: 1. "perl" was planned to use SFIO for a huge performance boost (but this got deferred and the RIF of Tim Sparlin's team stopped active work on this from Sun's side). The matching code changes are still around but we would now require lots of ARC work instead of just doing it without much pain. 2. As part of the modernisation work we planned to investigate and implement to superset libc's stdio implementation and move libast's implementation to libc. The reason/rationale was (and IMO still is) that libc's stdio implementations is one of the slowest (and some people have claimed it's _THE_ worst, too), lacks standards conformance by default and lacks features other implementations have since years (some things have been hacked away by adding horrible hacks or tacking-on new features but this never really solved the issues completely (and the code became incresingly hard to maintain)). These are all problems which cannot be fixed with the existing code. The idea was to do a fresh start: Stuff libast into OS/Net, work out the problems we hit, review the code to make sure all APIs can be extended easily without running into the same problems the original libc stdio implementaton had, run the test suites against libast's stdio and once this all runs smoothly move the stdio implementation to libc (the old implementation will remain, hidden by ELF symbol versioning). Basically most of this work has been done and we were at the point of testing and asking for the funding of a prototype for the code move and inception ARC case when Tim's team was RIF'ed. This was really BAD timing. 3. Same as [2], but for regex API but without any nasty ELF symbol versioning stunts required. The AST implementation is _MUCH_ faster and has a few interesting/usefull extra features which would be nice-to-have (like the ability to select any pattern system via the prefix system, basically ending the 20 year old war of "my pattern system is better then yours". With two implementations (AST+Solaris) this could even be proposed as POSIX standard addition). [b]=If anyone considers to complain: The problem is that many functions in libc are far away from the standards or simply missing. libast is much smaller on platforms like Linux or MacOSX... guess why (which is more or less the full circle back to the beginning of this email thread were Olga asked for |long double| variants of some of the C99 functions in libm.so.2 to avoid having to duplicate this stuff in the AST code) ... ---- Bye, Roland -- __ . . __ (o.\ \/ /.o) roland.ma...@nrubsig.org \__\/\/__/ MPEG specialist, C&&JAVA&&Sun&&Unix programmer /O /==\ O\ TEL +49 641 3992797 (;O/ \/ \O;) _______________________________________________ ksh93-integration-discuss mailing list ksh93-integration-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/ksh93-integration-discuss