Hi Neil, On Sun, Sep 21, 2008 at 2:40 AM, Neil Jerram <[EMAIL PROTECTED]> wrote: > Hi Bruce, and thanks for your input on this... > > 2008/9/18 Bruce Korb <[EMAIL PROTECTED]>: >> 1. the most retrograde platform must have all the GH capabilities in >> the SCM interfaces for their releases. It seems to take quite a few >> years for BSD to get around to building newer versions. > > Greg has countered this, I believe. Do you still think there's any > real concern here?
To be honest, I don't know. Some years back I started using some newfangled Guile interfaces that were, at the time, a couple years old. I think it was a 1.6-ism. However, some variation of BSD (I'd guess not "Net") was still on 1.4.x. So, I became responsible for having some if-def code decide which way to do something based on the Guile version. Not a particularly difficult problem, but nevertheless a bug report + new release cycle problem. >> 3. I finally get around to removing GH stuff from my code > > Just to be clear: are you saying that you still need to do this? Once bitten, twice shy. I want to be as sure as I can that my "clients" are all up to 1.6 before dumping the last of 1.4 support. I am as retrograde as I can get away with. :) >> 4. a couple more years pass > > Why is this interval needed? We have two parallel development processes: Guile and AutoGen. They get picked up by clients at semi-random, un-coordinated points in time. My switch from GH must be after potential clients have pretty much all gotten recent enough Guile versions. Similarly, releasing a Guile without GH must happen long enough after your clients have switched that few such clients would get whacked. > I will make an announcement to the guile-users list; that should be > enough. (Anyone who is going to use or package a new Guile version > needs to be (at least vaguely) following guile-devel or guile-users.) That's probably my level of "following": vaguely. :) On a slightly unrelated question, are there any pending changes that would make the following code obsolete? I've hated using it ever since I wrote it, but I still do not know of any reasonable alternative. Thank you. Regards, Bruce SCM ag_scm_c_eval_string_from_file_line( char const * pzExpr, char const * pzFile, int line ) { SCM port; if (OPT_VALUE_TRACE >= TRACE_EVERYTHING) { fprintf( pfTrace, "eval from file %s line %d:\n%s\n", pzFile, line, pzExpr ); } #if GUILE_VERSION < 106000 { static char const zEx[] = "eval-string-from-file-line"; SCM expr = scm_makfrom0str( pzExpr ); port = scm_mkstrport( SCM_INUM0, expr, SCM_OPN | SCM_RDNG, zEx ); } #else port = scm_open_input_string( AG_SCM_STR02SCM( pzExpr )); #endif #if GUILE_VERSION < 107000 { static SCM file = SCM_UNDEFINED; static char* pzFl = NULL; scm_t_port* pt; if ( (pzFl == NULL) || (strcmp( AG_SCM_CHARS( file ), pzFile ) != 0) ) { if (pzFl != NULL) AGFREE(pzFl); AGDUPSTR(pzFl, pzFile, "eval file name"); file = AG_SCM_STR02SCM( pzFile ); } pt = SCM_PTAB_ENTRY(port); pt->line_number = line - 1; pt->file_name = file; } #else { static SCM file = SCM_UNDEFINED; static char* pzOldFile = NULL; if ((pzOldFile == NULL) || (strcmp( pzOldFile, pzFile ) != 0)) { if (pzOldFile != NULL) AGFREE( pzOldFile ); AGDUPSTR( pzOldFile, pzFile, "scheme file source" ); file = scm_from_locale_string( pzFile ); } scm_set_port_filename_x( port, file ); } { SCM ln = scm_from_int( line ); scm_set_port_line_x( port, ln ); } #endif { SCM ans = SCM_UNSPECIFIED; /* Read expressions from that port; ignore the values. */ for (;;) { SCM form = scm_read( port ); if (SCM_EOF_OBJECT_P( form )) break; ans = scm_primitive_eval_x( form ); } return ans; } }