I think it is time for an updated spec/issue roll up.
Here is where I think things stand - please correct any misunderstandings:
This project is an amendment to the Korn Shell 93 Integration project
update 1 ARC case (PSARC/2008/094) specifying the following additional
interfaces:
1) Update of ksh93 from upstream release ast-ksh.2007-12-15 to
ast-ksh-2008-05-22
1.1) Update of ksh93
1.2) New "typeset" variable storage qualifier for function
1.3) New floating-point datatype "hexfloat" ("typeset -X varname)
1.4) New reserved options for "typeset".
1.5) New ksh93 math functions "ceil":
1.6) New reserved builtin "enum"
2) Project-private location for shell function library
(Details:
http://www.opensolaris.org/os/community/arc/caselog/2008/344/onepager/)
There are 3 issues with the existing proposal: New keywords, release
taxonomy and /usr/lib/shell.
I think they all have been mostly resolved:
1) Introduction of hexfloat, enum and ceil into reserved namespace
Commentary:
hexfloat is simply a new argument to the typeset command.
ceil is a math function that can't conflict with shell
variables or function names.
This leaves enum as the only potential name conflict.
My judgment call is that this is OK. Why?
Doing it now is better than either later or never. Impact on
users at this point is zero - ksh93 is new to Nevada, it does
not ship with S10. In addition, the upstream project team has
a history of being extremely compatible - this is the first
such addition in a dozen years, and it appears that no more
additions are planned, so this should not turn into a chronic
issue.
Resolution:
Not a problem.
2) Relationship of "t-, t, t+" versioning scheme and C-Team
integration rules.
Commentary:
The upstream convention seems to be "no incompatible changes",
"run API conformance test suites rigorously to ensure no
regressions" and "moderate new feature additions based on
[- +] release state"
The boogie man is whether or not incompatible changes would show
up in a "-" release, or if bugs would show up there that would
cause equivalent breakage. Given the external team's almost
obsessive focus on compatibility, I for one am not concerned
about this at all.
Resolution:
Not a problem.
3) Creation of /usr/lib/shell as Project Private
Commentary:
The desire is to create a place to experiment with creating an
environment for POSIX compatible shells to place and share
middleware "library" code. This implies a whole bunch of stuff,
most of which is non-obvious and not appropriate for Project
Private classification.
POSIX shells are usually the ones called "sh" - usually linked
to include bash, korn, ash, dash, etc. The level of conformity
to the official POSIX shell spec varies significantly between
all these shells.
Resolution (from Roland):
Create /usr/lib/shell as a Volatile playground with the
following initial expectations:
A place to bundle shell function libraries _toegether_ in
one common base directory, have them share functions
via ${BASEDIR}/sh/ if the functions are in the POSIX
shell syntax and in interpreter-specfic (e.g.
${BASEDIR}/zsh/..., ${BASEDIR}/ksh/...) if they use
extended syntax... and handle the modules (one module
may contain multiple functions) and functions in a
DNS-like hieracy and allow pattern to be used as
selectors.
The intent is that shells will contain a builtin
variable which points to the base directory so that
consuming shell scripts do not need to know the
absolute location where the library files are stored.
-John