atom feed1 message in org.apache.tcl.rivet-devbranch 'rivet-namespace' ready for tests
FromSent OnAttachments
Massimo ManghiApr 7, 2011 8:24 am 
Subject:branch 'rivet-namespace' ready for tests
From:Massimo Manghi (mass@unipr.it)
Date:Apr 7, 2011 8:24:51 am
List:org.apache.tcl.rivet-dev

branch 'rivet-namespace' now has a working module that uses a command set entirely relocated within the ::rivet namespace. The branch includes all the changes made so far to trunk, so basically it's like 'trunk' with a few more changes.

I had to give up letting rivet/init.tcl import the namespace into the root namespace (as per Damon's suggestion). My view is that we have to treat the whole command set (i.e. commands listed and documented in the manual in section 'Rivet Tcl Commands and Variables') as a whole and therefore we should get all of them into ::rivet. Unfortunately because of a bug in Tcl it could be impossible on some platform to require package ::rivetlib (formerly named 'Rivet') either from C or from Tcl in rivet/init.tcl. This lead me to file bug #3276070 concerning Tcl method to load shared libraries, Jan Nijtmans supported it and patched the code in repository (it's not clear to me whether the fix will go into Tcl8.6 or already in the next 8.5 bugfix release)

As a consequence some important commands such as 'escape_sgml_chars' or '[un]escape_string' have to be loaded in the application scripts anyway with the usual 'package require rivetlib' and then, to have full compatibility with existing code, a new 'namespace import ::rivet::*' has to be reissued. Notice that the right way to import ::rivet is

namespace import -force ::rivet::*

because ther's at least one command (lassign) which is a reimplementation of a native command. One more reason for introducing the namespace and not importing it unless absolutely needed.

Other changes:

1) command incr0 has been removed: from tcl8.5 the native 'incr' provides identical functionalities

2) documentation for not documented commands in rivet-tcl has been added. Some command are still undocumented: I haven't figured out what they were meant for and they look like pieces of a larger, unfinished and undocumented feature.

testers are welcome to step forward and get the hell out of this branch so that we can improve it.

-- Massimo