Hi Vadim,

Konovalov, Vadim wrote:
> my plans are to remove *all* "use" statements from Tcl.pm.

The use of Config in that situation is very important.  Otherwise you risk not
functioning correctly on OS X 10.3.

> If all else fails, please write
> 
> if ($^O eq 'whatever') {
> require 'Config.pm';
> # ... or
> #     eval "use Config;"
> }

If these are all functionally equivalent, then we can replace the 'use
Config'.

> BTW there are too many startup logic dependant on many ENV 
> variables, etc.

I don't see why these internal bits need to be cleaned up.

> and Tcl.xs contain some code like:
> 
>     dl_path = SvPV_nolen(get_sv("Tcl::DL_PATH", TRUE));
> 
> plus some registry searching in the "Software\\ActiveState\\ActiveTcl"
> 
> plus some more...
> 
> IMO there are too many... Especially registry setting, which 
> will prohibit PAR usage, for example...
> 
> I propose removing all ENV vars and registry vars from XS, 
> move those to pure-perl, and Tcl.pm should pass found DLL 
> into XS via SV.

OK, that would be the Tcl::DL_PATH that we already allow to be initialized at
the pure-perl level.  However, I disagree that what is in Tcl.xs should be
moved out - it's impractical.  The code paths in there are as follows:

CASE 1: if defined(Tcl::DL_PATH), load it
CASE 2: if APPLE, load as framework
CASE 3: if !defined(Tcl::DL_PATH), load with dlopen (tcl8x.dll on path)
CASE 4: if WIN32, try registry

CASE 1 is the pure-perl path (and is what Tkx in ActivePerl will use).
CASE 2 is may not possible in pure-perl, and is the needed fallback for Apple.
CASE 3 is the general fallback - you'll need to leave this in regardless.
CASE 4 is a Win32-specific fallback that allows for the most popular Tcl
distribution to be found.

So as you see, the other pieces in Tcl.xs are all fallbacks to Tcl::DL_PATH
not being specified.  If you can move the Apple path to pure-perl, then you
could reproduce that logic there, but CASE 3 would require reproducing the
dlopen search logic, and CASE 4 needs to remain a final fallback after CASE 3.

If you think you can move this to pure-perl, I'd welcome the patch, but all of
the functionality needs to remain.

Regards,

  Jeff Hobbs, The Tcl Guy, http://www.ActiveState.com/

Reply via email to