Revision history for GT.M changes in this perl-enabled tree $Id: ChangeLog 45 2004-04-19 09:20:44Z oesi $ - "released" 45 - ok, we have $ZPERLTYPE and - surprise - sv_reftype(...) was the function I looked for - oesi - "released" 44 - tried to implement "ref" but ended up by implementing $ZPERLSCALAR which returns the scalar representation of a mstrSVRV Not good, adding $ZPERLTYPE later - oesi - added full iconv-support for interaction between Perl and GT.M $ZPERLICONV("...") - oesi - fixed "PerlArray" I/O to support parameter changes on "USE". - oesi - added GTM::GlobalTie - oesi - fixed prototypes for g_* - oesi - hacked in reference support in mvals - oesi - cleaned up the array writer. It now uses "PERLARRAY" namespace and supports the following I/O parameters: - ZPUSH (default) -> append to array on write - ZUNSHIFT -> insert at array begin on write - ZSHIFT (default) -> shifts the array on read - ZPOP -> pops the array on read - added a sr_perl/typemap mval/mstr - oesi - disabled MDEFAULT.o for /dev/shm - since I build in /dev/shm - oesi - tree is now under subversion, GT.M source is in vendor branch :) - oesi - added tstart/tcommit/trollback/trestart they work, but not much fun without global support - oesi - imported tty-hack from my Cac module will be removed again soon - oesi - changed the indent-mode for this ChangeLog - oesi - added sr_perl/gen_sv_access.pl, this script parses svnames.h, op_svput.c and op_svget.c, generates an XS-file with correct signature and POD documentation beside the stuff required for %EXPORT_TAGS. gtm_perl_callin.xs includes the output gen_sv_access.xs - oesi - started with the perl-side sr_perl/GTM is the module directory. Startup works! - oesi - sr_unix/gtmshr_symbols.exp now handled by patch-manager we generate gtm_perl_callin.exp by parsing gtm_perl_callin.c and we add boot_GTM and all XS functions to the export-list on perl builds we require this for bootstrapping the GTM module if perl is "master" - oesi - target library is now libgtmperl.* instead of libgtmshr.* on perl-enabled builds. (GTMSHR_IMAGE_NAME is modified) - oesi - found and fixed (in my tree) a bug in sr_port/op_fnreverse.c notifed Sanchez - oesi - default prompt is GTM-PERL> on perl-enabled builds this is a warning :) - oesi - ported to 4.4.004 - ioperlAV_wteol uses now int4 instead of short - oesi - sr_unix_nsb/opcode_def.h handled by patch-manager - oesi - sr_unix_port/opcode_def.h handled by patch-manager - oesi - sr_port/merrors.msg handled by patch-manager - oesi - sr_unix_nsb/ttt.txt handled by patch-manager - oesi - sr_unix/ttt.txt handled by patch-manager - oesi - added a patch-manager, sr_perl/gtm-patch this tool patches in/out perl support of files that do not support preprocessing - oesi - created perl.mk in sr_perl directory it creates xs_init.c gtm_perl_callin.c and regnerates ttt.c gtm_perl_callin.xs is the file where all call-in stuff resides - oesi - created sr_perl directory moved all perl-specific files there - oesi - added PERLINIT/PERLALLOC/PERLDIE/PERLUNDEF/PERLREF to merrors.msg needed for op_fnzperleval and SV* mval* conversion stuff - oesi - added op_fnzperleval - oesi - added M-I/O interface to Perl arrays(!) - oesi - renamed op.h to gtm_op.h name clash with perl includes - oesi - renamed opcode.h to gtm_opcode.h name clash with perl includes - oesi - renamed util.h to gtm_util.h name clash with perl includes - oesi - renamed Stat #define to gtm_Stat globally #define clash with perl includes - oesi - renamed UNLINK #define to gtm_UNLINK globally #define clash with perl includes -oesi 0.00 Sun Apr 4 00:21:08 MEST 2004 - started from scratch with GT.M cvs - oesi List of authors in this ChangeLog: oesi - Stefan Traby If you modify stuff in this tree please add your name and email address above. GPL requires that you maintain a ChangeLog. As maintainer of this tree I only accept contributions from people that signed the "LICENSE AGREEMENT FOR DEVELOPED WORKS". see: http://sourceforge.net/docman/display_doc.php?docid=5735&group_id=11026 The tree is dual-licensed GPL/Sanchez - I want that the tree goes into GT.M core in the future. This requires that Sanchez can use it in their commercial products. Style for modifications/short design overview: ALL Perl additions to .c and .h files should be within #ifdef WANT_GTM_PERL #endif except if they are under ./sr_perl/ WANT_GTM_PERL is defined if "gtm_perl" environment points to a perl executable at built time. In Makefiles use stuff like this: ifdef gtm_perl perllibs=$(shell $(gtm_perl) -MExtUtils::Embed -eldopts) else perllibs= endif The primary goal is that a built without "gtm_perl" set works. This dramatically increases the chance that this tree makes it into GT.M core. If you want to "patch" files that don't support conditionals like "ifdef gtm_perl" or "#ifdef WANT_GTM_PERL" you MUST use the "patch-gtm" script in the sr_perl directory. Do not include "perl.h" or "EXTERN.h". include "gtm_perl.h". if you call-out to perl, invoke the GTM_PERL_INIT; macro (defined in gtm_perl.h) before. I choosed to delay perl-startup until it's needed. You don't need it if you *know* that the perl-engine is up. For example the I/O stuff for perl arrays uses GTM_PERL_INIT in it's open function. there is no need to use it read/write and related functions. for call-in invoke the GTM_GTM_INIT; macro - I choosed to delay GT.M init if it's embedded in Perl. Note: make sure that call-in/call-out code works under following conditions: a) if GT.M is "master" (outside) b) if Perl is "master" (outside) c) if call-in/call-outs are deeply nested This tree will support nested exception-unwinding on both sides (M and Perl). If Perl "dies" within call-out at outer perl-level rts_error PERLDIE should be raised including the scalar value of perls ERRSV. On the other side if no $ZT is set if in M and it's call-in - the GT.M error message should be raised in perl like the following pseudo-M/perl code would do: die 'M-EXCEPTION: '.$zstatus. If you change interfaces that affect Sanchez please document *why* you've changed the stuff. The only two reason to change GT.M core-stuff without asking them are: a) you are fixing a serious bug inside GT.M - please inform Sanchez anyway b) you fix an incompatibility between Perl and GT.M and you can't work-arround it easily without touching GT.M code. Note that the call-in stuff has to be "standard" XS-code that gets compiled when GT.M is built. It's in "sr_perl/gtm_perl_callin.xs". Read sr_perl/gtm_perl.h - it contains more informations. Have fun, oesi EOF