2008-09-07 Vadim Konovalov * Tcl.pm: Version 0.97 * Makefile.PL: --usestubs default on linux (--nousestubs has twisted and broken guesses on linux) also, avoid fake FAIL on CPAN due to design bug on smokers * Changes: mention new release 2008-01-04 Jeff Hobbs * Tcl.xs (NpLoadLibrary): add dlerror warning to improve info when dlopen doesn't succeed. 2007-05-12 * Makefile.PL: $^O is 'FreeBSD', not 'freebsd', according to Slaven Rezic 2007-09-11 Vadim Konovalov * Tcl.pm: Version 0.95 * Makefile.PL: cygwin fix from Jerry D. Hedden * Tcl.xs: cygwin improvement from Jerry D. Hedden * t/info.t: cygwin fix from Jerry D. Hedden * Changes: mention new release 2006-11-13 Vadim Konovalov * Tcl.pm: Version 0.91 * MANIFEST: list tcl-core directory for stubs * Makefile.PL: --usestubs is no by default CPAN release 2006-11-11 Vadim Konovalov * Tcl.pm: remove mention of create-moveable-dist.pl * Makefile.PL: --no-usestubs was actually ignore; fix this * Manifest: remove mention of create-moveable-dist.pl CPAN release 2006-10-03 Vadim Konovalov * Tcl.xs: new renamed to _new; for Win32+HAVE_TKINIT+!USE_STUBS minimal DllMain introduced HAVE_DDEINIT, HAVE_BLTINIT introduced new Tcl C interface for Tcl_SetPreInitScript, TclpInitLibraryPath, Tcl_SetDefaultEncodingDir, Tcl_GetDefaultEncodingDir, Tcl_GetEncoding remove never-working Tcl_perl_detach, Tcl_perl_attach * Tcl.pm: replace DynaLoader with XSLoader remove bogus insecure C insert fresh "use Tclaux;" bootstrap helper "use Carp;" only when "require"-ed sub new - direct call to XS variant _new version now is 0.90 2006-08-23 Jeff Hobbs * Tcl.pm: replace 'use Config' with less invasive 'require Config'. 2006-08-13 Jeff Hobbs * Tcl.pm: Add exe path for Darwin. OS X 10.3 requires it for #! scripts to operate properly (avoids RegisterProcess error). * tcl-core/darwin-universal/libtclstub8.4.a: AT 266625 update 2006-07-15 Vadim Konovalov * Tcl.xs: support statical inclusion of some extensions (Tk, Tix, etc) so when Makefile.PL invoked with --define="-DHAVE_TKINIT" 2006-05-31 Jeff Hobbs * Makefile.PL: add -framework Carbon for default OS X build 2006-05-25 Jeff Hobbs * tcl-core/aix/libtclstub8.4.a: Additional platform stubs * tcl-core/hpux-ia64/libtclstub8.4.a: libraries * tcl-core/linux-ia64/libtclstub8.4.a: * tcl-core/linux-x86_64/libtclstub8.4.a: * Makefile.PL: Enhanced to allow no argument invocations to attempt to build from provided stubs libraries. No longer requires --library --include options on most platforms. Run ranlib on darwin stublib to work around ranlib bug. (MY::libscan): make override .pl match case insensitive. 2006-05-23 Vadim Konovalov * Changes: brief summary for 0.89 * Tcl.pm: version 0.89 2006-05-22 Jeff Hobbs * tcl-core/darwin-universal/libtclstub8.4.a: Binary stub archives * tcl-core/hpux-parisc/libtclstub8.4.a: for various platforms * tcl-core/linux-i686/libtclstub8.4.a: to allow building the * tcl-core/solaris-sparc/libtclstub8.4.a: Tcl module without any * tcl-core/solaris-x86/libtclstub8.4.a: Tcl distribution on * tcl-core/win32-x86/libtclstub8.4.a: the system. A Tcl * tcl-core/include/tcl((Plat)Decls).h: distribution is still required to test/run the module. * Makefile.PL: add --include --library and --define as command line arguments that control where to pull build info from. * Tcl.xs (NpLoadLibrary): allow alternate TCL_LIB_FILE (basedll) loading on darwin. 2005-09-28 Vadim Konovalov * Tcl.xs: Win32 build was unfortunate 2005-09-12 Gisle Aas * Makefile.PL: Added libscan override to prevent installation of create-moveable-dist.pl. 2005-09-09 Gisle Aas * Tcl.xs: Read Tcl library override from $Tcl::DL_PATH instead of the $ENV{PERL_TCL_DLL}. On Mac OS X search for libtcl.so using the standard File System Domain order. * Tcl.pm: Initialize $Tcl::DL_PATH from environment if not set up by something else. Initialize from $ENV{PERL_TCL_DLL} for backwards compatiblity. 2005-08-24 Jeff Hobbs * tclcfg.tcl: enhanced tclConfig.sh file search 2005-08-23 Vadim Konovalov * MANIFEST: mention t/unicode.t * Changes: brief summary for 0.88 * CPAN release 0.88 2005-08-16 Jeff Hobbs * Tcl.xs (SvFromTclObj, TclObjFromSv): Convert NULLs to utf-8 \xC0\x80 to/from Tcl as some extensions (eg Tk) call non-counted string APIs. (Tcl_result, Tcl_AppendResult): use Sv <> Tcl_Obj bridge functions. (Tcl_Eval, Tcl_GlobalEval): allow optional flags arg to Tcl::Eval, removing Tcl::GlobalEval. Add Tcl::EVAL_GLOBAL and Tcl::EVAL_DIRECT constants. * Tcl.pm: note removal of Tcl::GlobalEval, updated Tcl::Eval * t/unicode.t (new): extended unicode/null passing tests * t/var.t: replace GlobalEval with Eval using flags. * Makefile.PL: HP-UX uses .sl libnames 2005-08-15 Jeff Hobbs * Tcl.pm: doc cleanup * Tcl.xs: squelch a few compile warnings * t/createcmd.t: perl 5.8.0 finalization order is wonky, so don't expect the implicit Tcl finalization callbacks. 2005-07-31 Vadim Konovalov * Makefile.PL: darwin config touches from Tom Wyant * Tcl.pm: tiny 'authors' change 2005-07-18 Vadim Konovalov * Tcl.pm: documentation improvements: explain installation techniques; explain ::perl::Eval from Tcl side bump to 0.88 create hook to optional reading of Tcl.cfg * Changes: start 0.88 history * TODO: file removed * Manifest: document TODO removal and adding of create-moveable-dist.pl 2005-02-02 Vadim Konovalov * Changes: prepare for CPAN release 2005-01-30 Vadim Konovalov * Tcl.pm: automatic cleanup on widget deletion bump to 0.87 * Changes: start 0.87 history 2005-01-23 Vadim Konovalov * Tcl.pm: implement method for tied hashes to Tcl::Var 2004-12-30 Jeff Hobbs * Changes: * Tcl.pm: bump to 0.85 with change notes * Makefile.PL: add ENV{TCLSH_PROG} tclsh exe propagation var to make it easier to configure Tcl-Tk as a subdir. Make --usestubs the default, allow --nousestubs. * t/info.t: replace 'info hostname' test with 'info exists' test as we just wanted another info test, not testing whether Perl and Tcl agree on hostname, since they might not. 2004-11-12 Jeff Hobbs * Tcl.xs (NpInitialize): support HP-UX shl_* functions. 2004-09-13 Vadim Konovalov * Tcl.pm: version 0.84 callbacks of type [$Tcl_Tk_widget, 'method name', ...] * Makefile.pl: Mac OS X wisdom from Daniel A. Steffen * Changes: brief summary for 0.84 2004-09-10 Jeff Hobbs * Tcl.xs (NpLoadLibrary): make PERL_TCL_DLL check error if no file is found. 2004-06-01 Jeff Hobbs * Tcl.xs (NpLoadLibrary): minor code cleanup 2004-05-31 Gisle Aas * Tcl.pm: Introduce global variable $Tcl::STACK_TRACE. Setting this to a false value avoids some overhead in calls and make it possible for icall to experience void context. * Tcl.xs: Introduce class Tcl::List when a list is returned in scalar context. It works as before it is used as an array refence, but will also stringify properly. * Tcl.pm: Set up stringify overload of Tcl::List * t/call.t: Test Tcl::List. 2004-05-10 Jeff Hobbs * Tcl.xs (NpInitialize): change load around to use different dll-kit based init that call TclKit_SetKitPath to indicate the path of the kit for loading (the dll). (NpLoadLibrary): take filename arg to pass the found library name back to the caller. 2004-05-09 Konovalov * Changes: brief summary between 0.80 and 0.81 2004-05-07 Jeff Hobbs * Makefile.PL: force Tcl 8.4 as the minimum version 2004-05-06 Jeff Hobbs * Tcl.xs: enhance stubs-based initialization to check for a preloaded Tcl dll as well as for stubs-based dll that is tclkit-based. This requires maintaining the first created interp through the lifetime of the module. 2004-05-04 Jeff Hobbs * Tcl.pm: bump to 0.81 and add commands for icall and invoke. * Tcl.xs: change Tcl::icall to Tcl::invoke and make alternate Tcl::icall the default one. Tcl::icall will now have command tracing and use Tcl's unknown mechanism, whereas Tcl::invoke does the direct command invocation (where it is an error if the command does not already exist). This is the better default as Tcl uses unknown for autoload in many cases. 2004-05-03 Vadim Konovalov * Tcl.pm (call): return of \\'xy' convenience * Changes: brief summary for version 0.80 2004-04-30 Jeff Hobbs * Tcl.xs (TclObjFromSv): pass strings to Tcl in a strictly correct way - check SvUTF8 before making a String obj, otherwise make a ByteArray obj. This is 100% correct, but not as efficient as ignoring the corner-case binary/utf-8 discrepancies. 2004-04-29 Jeff Hobbs * Tcl.xs: add a hash of interps created that we can force delete of prior to Tcl_Finalize, ensuring better cleanup. * Makefile.PL: Added --usestubs option, which adds DEFINE flags. * Tcl.pm: Add stubs support to give us version and dll location * Tcl.xs: independence. Tcl.xs can handle the loading and finalization of Tcl. Tcl_Finalize is now called by an END block in Tcl.pm in all cases, flipping a bit that says we shouldn't call any more Tcl_* APIs. * Tcl.xs (Tcl_DoOneEvent): expose Tcl::DoOneEvent for perl and add TCL_*_EVENTS and TCL_DONT_WAIT constants to BOOT block. (TclObjFromSv): remove SvIOK check in SvNOK block to force the int-equiv double check. By default, perl does math with doubles, so we need to force this check. Possibly not necessary for 5.8+. 2004-04-27 Jeff Hobbs * Tcl.xs (Tcl_SetVar, Tcl_SetVar2): make SV/Tcl_Obj aware. 2004-04-25 Vadim Konovalov * Tcl.pm: rename Tcl::EV to Tcl::Ev 2004-04-22 Jeff Hobbs * Tcl.xs (SvFromTclObj): For boolean types, use the string value if it's not empty, as booleans that came from strings are often not 0/1. For list types, use "" for empty lists instead of an empty AV. This corrects a problem with Tcl literal sharing where "" can be marked as a list, although the string is intended. 2004-04-21 Jeff Hobbs * Tcl.xs (Tcl_EvalInPerl): create ::perl::Eval proc in Tcl_Init. This can be used in Tcl to eval whatever you want in Perl. * Tcl.pm: jump to v0.80. Remove Tcl::Ev, replace with Tcl::EV. This is used in the callback creation instead of in the callback sub, passing the args as proper args to the sub. Removed the previously ability to have ref-ref scalars magically convert to %-subs and consume the next arg as a code ref. What used to be written: '', \\'XY', \&mysub, ... is now written: '', [\&mysub, Tcl::EV('%X', '%Y')], ... and they are pass in as true args (no Tcl::Ev calls required). **** POTENTIAL INCOMPATABILITY **** Arguments from Tcl passed to sub with Perl args now properly pass those args to the Perl sub as well (precede Perl args). IOW, a reference to [\&mysub, "foo"] that becomes CODE(0x1234) called from Tcl as "CODE(0x1234) bar" will have ("bar", "foo") in @_. (call): Create tied vars in Tcl in the ::perl namespace and leave the ()s, making them all elements of the Tcl array ::perl::SCALAR. (create_tcl_sub): Create procs in Tcl in the ::perl namespace. 2004-04-21 Gisle Aas * Tcl.pm (call): undo hack to prevent 1=>1.0 (for r1.17). Should not be needed after Jeff's r1.23 change to Tcl.xs. 2004-04-20 Jeff Hobbs * Tcl.xs (TclObjFromSv): check for IV == NV in SvNOK to account for some perl versions' overaggressiveness in promoting ints. 2004-04-17 Vadim Konovalov * Tcl.pm (call): add hack to prevent 1=>1.0 * Tcl.pm: add wcall wrapper to 'call' function * Changes: brief summary of changes between 0.76 and 0.77 2004-04-17 Vadim Konovalov * Makefile.PL: fix WinCE case, check if Tcl version supported * README: change WinCE explanations; add authors; change file format to be more consistent with other modules * Tcl.pm: change version to 0.76 for CPAN release; make AUTHORS section more complete. * Changes: brief summary of changes between 0.75 and 0.76 * t/info.t: should ignore difference between '/' and '\' on Win32. 2004-04-16 Jeff Hobbs * t/info.t: return -longname of nameofexe on Windows to match $^X. 2004-04-16 Gisle Aas * Tcl.xs: Make it possible to subclass Tcl. * Tcl.pm: Don't subclass Tcl::Tk any more. Tcl::Tcl will subclass Tcl instead. 2004-04-15 Gisle Aas * Tcl.xs: Added BOOT: section and moved initializations there. * Tcl.xs, Tcl.pm, t/constants.t: Avoid hardcoded constants. Let tcl.h provide the values. The old constants actually got the values for TCL_APPEND_VALUE and TCL_LIST_ELEMENT wrong from what I observe in the 8.4 tcl.h. * Tcl.xs: Got rid of the Tcl_DESTROY and Tcl_result macros. More obvious what's going on with explict CODE sections instead of global macros. * Tcl.xs, t/info.t: Make 'info nameofexecutable' work. * Tcl.xs: Use boolSV() instead of int to represent bools. A user visible difference is that false is now "" instead of 0, but that's the official perl way. * Tcl.xs: The !SvOBJECT() test is just fine. Remove XXX comment. * Tcl.pm: Improved argument check in Tcl::Ev. * Tcl.pm: Enable XS version check during bootstrap. * Makefile.PL: Integrate ceMakefile.PL * Makefile.PL: Cleanup. Use Getopt::Long instead of handcoded option parsing * Tcl.xs, Tcl.pm: Whitespace cleanup. Remove trailing space. 2004-04-14 Gisle Aas * Tcl.xs (has_highbit): renamed 'l' as 'len'. 'l' is not a good variable name as it looks quite a lot like '1' in many fonts 2004-04-14 Jeff Hobbs * Tcl.xs (SvFromTclObj): turn on Tcl_ListObj to AV conversion. * Tcl.pm (call): rework with much clearer comments on what is going on. Don't bother doing map of undefined vals to "", icall does that for us. Cache arg ref for use in the if/elsifs. Remove commented out listify and listify sub - icall properly handles the AV to Tcl_ListObj conversions. Correct result handling by matching expectations with icall. If we are called in ARRAY context, invoke icall in array context, otherwise invoke icall in scalar context. * t/call.t (new): some tests for call and icall functions 2004-04-13 Jeff Hobbs * Tcl.xs (SvFromTclObj): correct if/else if for objPtr == NULL and return newSV(0) instead of &PL_sv_undef for cleanliness. * t/var.t: do unicode tests on 5.8, correct some test result output. * Tcl.xs (SvFromTclObj): set newSV* to sv, then return that var. (Tcl_new): changed it to force Tcl_FindExecutable call before first Tcl_CreateInterp and cache data types on first new. (Tcl_Init): moved Tcl_FindExecutable call to Tcl_new. 2004-04-12 Jeff Hobbs * Tcl.xs: #define PERL_NO_GET_CONTEXT and pass perl context through internal funcs. (SvFromTclObj): add possible Tcl_ListObj -> SV conversion. This needs further examination as it forces coding changes and is not yet used. (TclObjFromSv): change to return Tcl_Objs with refcount 0 and manage refcount from caller. This corrects the recursive refcount getting too high (caused objects not to be freed when done). * Tcl.pm (listify): add more comments about usage and add backslash correcting. 2004-04-09 Jeff Hobbs * Makefile.PL: add the ability to control what tclsh we build with * tclcfg.tcl: by passing --tclsh (path to tclsh to use when calling tclcfg.tcl), --tclconfig (path to tclConfig.sh to get data from) and --buildspec (use BUILD spec info in conjunction with --tclconfig). * Tcl.pm (FETCH, STORE): add perl versions for reference (not used) * Tcl.xs (SvFromTclObj): if objPtr == NULL, return &PL_sv_undef. (TclObjFromSv): Add SvGMAGICAL check and check that RV is not an object. Remove one impotent cycle check and add empty array elem check. Remove impotent SvUOK check. Always return Tcl_Obj with refcount 1. (Tcl_PerlCallWrapper): Tcl_Obj-ify input and result. (Tcl_icall): rewrite from scratch to allow for recursive calls, which can occur via commands or tied vars. (Tcl_icall #2): added alternate implementation (not default) that calls Tcl_EvalObjv instead of direct command invocation. (Tcl_Init): pass NULL (not ".") to Tcl_FindExecutable. Create Tcl_PerlCallWrapper as a Tcl_Obj command. (Tcl_SetResult): use SVs/Tcl_Objs (Tcl_GetVar, Tcl_GetVar2): return SV instead of char * (Tcl_UnsetVar): call Tcl_UnsetVar2 (FETCH): return SV (STORE): call Tcl_SetVar2Ex always, use SVs 2004-04-07 Jeff Hobbs * Tcl.xs (TclObjFromSv): updated to correctly descend into ARRAY refs and add possible ref cycle checking. Move SvUOK check below SvIOK check. (Tcl_icall): also check cmdinfo.isNativeObjectProc before using, although we might want to use this when non-native since the string version must use Tcl_Obj routines now for correctness. The string version also calls TclObjFromSv to properly handle ARRAY to list conversion. * Tcl.pm (call): let icall do the ARRAY to Tcl_Obj list conversion (create_tcl_sub): don't s/\W/_/g $tclname, Tcl doesn't care. (listify): add routine that does rough listification of Perl sv. * Tcl.xs (Tcl_PerlCallWrapper): handle the perl sub error case where an error occurs calling perl sub from Tcl callback. (Tcl_Init): move init of Tcl_Obj typePtrs 2004-04-06 Jeff Hobbs * Tcl.xs: use ANSI prototypes for some functions. Remove use of PL_na in favor of SvPV_nolen. (SvFromTclObj, TclObjFromSv): create bridge routines to translate to/from Tcl_Obj and SV. May need refinement. (prepare_Tcl_result): made use of newer GIMME_V macro and Tcl_Obj based return results. (Tcl_Eval, Tcl_GlobalEval): use more efficient Tcl_EvalEx. (Tcl_icall): prefer objProc over string proc and make efficient Tcl_Obj list out of SVs. 2004-04-01 Jeff Hobbs * Tcl.pm (call): define tie'd var to "" if undefined before setting. * Tcl.xs: code cleanup to squelch AIX compiler warnings 2004-03-22 Jeff Hobbs * Tcl.pm: modifications from Vadim to fix minor ref issues and initial attempt to support code with args in array refs. * Tcl.xs (USE_NON_CONST): define to squelch 8.4 const warnings started using ChangeLog