gimp r26930 - in trunk: . plug-ins/script-fu/tinyscheme



Author: kcozens
Date: Thu Sep 11 20:57:38 2008
New Revision: 26930
URL: http://svn.gnome.org/viewvc/gimp?rev=26930&view=rev

Log:
2008-09-11  Kevin Cozens  <kcozens cvs gnome org>

	* plug-ins/script-fu/tinyscheme/CHANGES: Updating to match version
	in official version of TinyScheme.

	* plug-ins/script-fu/tinyscheme/scheme.c: Applied changes from
	official version of TinyScheme which adds entry point for nested
	calling. Part of making it more suitable for Scheme->C->Scheme
	calling. See SourceForge bug #1599945. Updated usage information
	using text from Manual.txt.


Modified:
   trunk/ChangeLog
   trunk/plug-ins/script-fu/tinyscheme/CHANGES
   trunk/plug-ins/script-fu/tinyscheme/scheme.c

Modified: trunk/plug-ins/script-fu/tinyscheme/CHANGES
==============================================================================
--- trunk/plug-ins/script-fu/tinyscheme/CHANGES	(original)
+++ trunk/plug-ins/script-fu/tinyscheme/CHANGES	Thu Sep 11 20:57:38 2008
@@ -1,206 +1,207 @@
-     Change Log
-     ----------
-     Version 1.38
-          Interim release until the rewrite, mostly incorporating modifications from 
-          Kevin Cozens. Small addition for Cygwin in the makefile, and modifications
-          by Andrew Guenther for Apple platforms.
-     Version 1.37
-          Joe Buehler submitted reserve_cells.
-     Version 1.36
-	  Joe Buehler fixed a patch in the allocator.
-	  Alexander Shendi moved the comment handling in the scanner, which 
-	  fixed an obscure bug for which Mike E had provided a patch as well.
-	  Kevin Cozens has submitted some fixes and modifications which have not
-	  been incorporated yet in their entirety.
-     Version 1.35
-	  Todd Showalter discovered that the number of free cells reported 
-	  after GC was incorrect, which could also cause unnecessary allocations.
-	 Version 1.34
-	  Long missing version. Lots of bugfixes have accumulated in my email, so
-	  I had to start using them. In this version, Keenan Pepper has submitted
-	  a bugfix for the string comparison library procedure, Wouter Boeke 
-	  modified some code that was casting to the wrong type and crashed on
-	  some machines, "SheppardCo" submitted a replacement "modulo" code and
-	  Scott Fenton submitted lots of corrections that shut up some compiler
-	  warnings. Brian Maher submitted instructions on how to build on OS-X.
-	  I have to dig deeper into my mailbox and find earlier emails, too.
-     Version 1.33
-	  Charles Hayden fixed a nasty GC bug of the new stack frame, while in
-	  the process of porting TinyScheme to C++. He also submitted other 
-	  changes, and other people also had comments or requests, but the GC
-	  bug was so important that this version is put through the door to 
-	  correct it.
-     Version 1.32
-	  Stephen Gildea put some quality time on TinyScheme again, and made
-	  a whole lot of changes to the interpreter that made it noticeably 
-	  faster.
-     Version 1.31
-          Patches to the hastily-done version 1.30. Stephen Gildea fixed
-	  some things done wrongly, and Richard Russo fixed the makefile
-	  for building on Windows. Property lists (heritage from MiniScheme)
-	  are now optional and have dissappeared from the interface. They
-	  should be considered as deprecated.
-     Version 1.30
-	  After many months, I followed Preston Bannister's advice of
-	  using macros and a single source text to keep the enums and the
-	  dispatch table in sync, and I used his contributed "opdefines.h".
-	  Timothy Downs contributed a helpful function, "scheme_call".
-	  Stephen Gildea contributed new versions of the makefile and 
-	  practically all other sources. He created a built-in STRING-APPEND,
-	  and fixed a lot of other bugs.
-	  Ruhi Bloodworth reported fixes necessary for OS X and a small
-	  bug in dynload.c.
-     Version 1.29
-	  The previous version contained a lot of corrections, but there
-	  were a lot more that still wait on a sheet of paper lost in a
-	  carton someplace after my house move... Manuel Heras-Gilsanz
-	  noticed this and resent his own contribution, which relies on
-	  another bugfix that v.1.28 was missing: a problem with string
-	  output, that this version fixes. I hope other people will take
-	  the time to resend their contributions, if they didn't make it
-	  to v.1.28.
-     Version 1.28
-	  Many people have contacted me with bugfixes or remarks in
-	  the three months I was inactive. A lot of them spotted that 
-	  scheme_deinit crashed while reporting gc results. They suggested
-	  that sc->outport be set to NIL in scheme_deinit, which I did.
-	  Dennis Taylor remarked that OP_VALUEPRINT reset sc->value instead
-	  of preserving it. He submitted a modification which I adopted 
-	  partially. David Hovemeyer sent me many little changes, that you
-	  will find in version 1.28, and Partice Stoessel modified the 
-	  float reader to conform to R5RS.
-     Version 1.27
-          Version 1.27 is the successor of 1.25. Bug fixes only, but I had to
-          release them so that everybody can profit. 'Backchar' tried to write
-          back to the string, which obviously didn't work for const strings.
-          'Substring' didn't check for crossed start and end indices. Defines
-          changed to restore the ability to compile under MSVC.
-     Version 1.26
-          Version 1.26 was never released. I changed a lot of things, in fact
-          too much, even the garbage collector, and hell broke loose. I'll
-          try a more gradual approach next time.
-     Version 1.25
-          Types have been homogenized to be able to accomodate a different
-	  representation. Plus, promises are no longer closures. Unfortunately,
-	  I discovered that continuations and force/delay do not pass the SCM
-	  test (and never did)... However, on the bright side, what little
-	  modifications I did had a large impact on the footprint: 
-	  USE_NO_FEATURES now produces an object file of 63960 bytes on Linux!
-     Version 1.24
-	  SCM tests now pass again after change in atom2str.
-     Version 1.23
-          Finally I managed to mess it up with my version control. Version
-	  1.22 actually lacked some of the things I have been fixing in the
-	  meantime. This should be considered as a complete replacement for
-	  1.22.
-     Version 1.22
-          The new ports had a bug in LOAD. MK_CLOSURE is introduced.
-	  Shawn Wagner inquired about string->number and number->string.
-	  I added string->atom and atom->string and defined the number
-	  functions from them. Doing that, I fixed WRITE applied to symbols
-	  (it didn't quote them). Unfortunately, minimum build is now
-	  slightly larger than 64k... I postpone action because Jason's idea
-	  might solve it elegantly.
-     Version 1.21
-          Jason Felice submitted a radically different datatype representation
-	  which he had implemented. While discussing its pros and cons, it
-	  became apparent that the current implementation of ports suffered
-	  from a grave fault: ports were not garbage-collected. I changed the
-	  ports to be heap-allocated, which enabled the use of string ports
-	  for loading. Jason also fixed errors in the garbage collection of 
-	  vectors. USE_VERBATIM is gone. "ssp_compiler.c" has a better solution
-	  on HTML generation. A bug involving backslash notation in strings
-	  has been fixed. '-c' flag now executes next argument as a stream of
-	  Scheme commands. Foreign functions are now also heap allocated,
-          and scheme_define is used to define everything.
-     Version 1.20
-          Tracing has been added. The toplevel loop has been slightly
-	  rearranged. Backquote reading for vector templates has been
-	  sanitized. Symbol interning is now correct. Arithmetic functions
-	  have been corrected. APPLY, MAP, FOR-EACH, numeric comparison
-	  functions fixed. String reader/writer understands \xAA notation.
-     Version 1.19
-          Carriage Return now delimits identifiers. DOS-formatted Scheme files
-          can be used by Unix. Random number generator added to library.
-          Fixed some glitches of the new type-checking scheme. Fixed erroneous
-          (append '() 'a) behavior. Will continue with r4rstest.scm to
-          fix errors.
-     Version 1.18
-          The FFI has been extended. USE_VERBOSE_GC has gone. Anyone wanting
-          the same functionality can put (gcverbose #t) in init.scm.
-          print-width was removed, along with three corresponding op-codes.
-     	  Extended character constants with ASCII names were added.
-          mk_counted_string paves the way for full support of binary strings.
-          As much as possible of the type-checking chores were delegated
-          to the inner loop, thus reducing the code size to less than 4200 loc!
-     Version 1.17
-          Dynamically-loaded extensions are more fully integrated.
-          TinyScheme is now distributed under the BSD open-source license.
-     Version 1.16
-          Dynamically-loaded extensions introduced (USE_DL).
-          Santeri Paavolainen found a race condition: When a cons is executed,
-          and each of the two arguments is a constructing function,  GC could
-          happen before all arguments are evaluated and cons() is called, and
-          the evaluated arguments would all be reclaimed!
-          Fortunately, such a case was rare in the code, although it is
-          a pitfall in new code and code in foreign functions. Currently, only
-          one such case remains, when COLON_HOOK is defined.
-     Version 1.15
-          David Gould also contributed some changes that speed up operation.
-          Kirk Zurell fixed HASPROP.
-          The Garbage Collection didn't collect all the garbage...fixed.
-     Version 1.14
-          Unfortunately, after Andre fixed the GC it became obvious that the
-          algorithm was too slow... Fortunately, David Gould found a way to
-          speed it up.
-     Version 1.13
-          Silly bug involving division by zero resolved by Roland Kaufman.
-          Macintoch support from Shmulik Regev.
-          Float parser bug fixed by Alexander Shendi.
-          GC bug from Andru Luvisi.
-     Version 1.12
-          Cis* incorrectly called isalpha() instead of isascii()
-          Added USE_CHAR_CLASSIFIERS, USE_STRING_PORTS.
-     Version 1.11
-          BSDI defines isnumber... changed all similar functions to is_*
-          EXPT now has correct definition. Added FLOOR,CEILING,TRUNCATE
-          and ROUND, courtesy of Bengt Kleberg. Preprocessor symbols now
-          have values 1 or 0, and can be set as compiler defines (proposed
-          by Andy Ganor *months* ago). 'prompt' and 'InitFile' can now be
-          defined during compilation, too.
-     Version 1.10
-          Another bug when file ends with comment!
-          Added DEFINE-MACRO in init.scm, courtesy of Andy Gaynor.
-     Version 1.09
-          Removed bug when READ met EOF. lcm.
-     Version 1.08
-          quotient,remainder and modulo. gcd.
-     Version 1.07
-          '=>' in cond now exists
-          list? now checks for circularity
-          some reader bugs removed
-          Reader is more consistent wrt vectors
-          Quote and Quasiquote work with vectors
-     Version 1.06
-          #! is now skipped
-          generic-assoc bug removed
-          strings are now managed differently, hack.txt is removed
-          various delicate points fixed
-     Version 1.05
-          Support for scripts, *args*, "-1" option.
-          Various R5RS procedures.
-          *sharp-hook*
-          Handles unmatched parentheses.
-          New architecture for procedures.
-     Version 1.04
-          Added missing T_ATOM bits...
-          Added vectors
-          Free-list is sorted by address, since vectors need consecutive cells.
-          (quit <exitcode>) for use with scripts
-     Version 1.03 (26 Aug 1998):
-          Extended .h with useful functions for FFI
-          Library: with-input-* etc.
-          Finished R5RS I/O, added string ports.
-     Version 1.02 (25 Aug 1998):
-          First part of R5RS I/O.
-	
\ No newline at end of file
+Change Log
+----------
+
+Version 1.38
+    Interim release until the rewrite, mostly incorporating modifications
+    from Kevin Cozens. Small addition for Cygwin in the makefile, and
+    modifications by Andrew Guenther for Apple platforms.
+Version 1.37
+    Joe Buehler submitted reserve_cells.
+Version 1.36
+    Joe Buehler fixed a patch in the allocator.
+    Alexander Shendi moved the comment handling in the scanner, which 
+    fixed an obscure bug for which Mike E had provided a patch as well.
+    Kevin Cozens has submitted some fixes and modifications which have
+    not been incorporated yet in their entirety.
+Version 1.35
+    Todd Showalter discovered that the number of free cells reported 
+    after GC was incorrect, which could also cause unnecessary allocations.
+Version 1.34
+    Long missing version. Lots of bugfixes have accumulated in my email, so
+    I had to start using them. In this version, Keenan Pepper has submitted
+    a bugfix for the string comparison library procedure, Wouter Boeke 
+    modified some code that was casting to the wrong type and crashed on
+    some machines, "SheppardCo" submitted a replacement "modulo" code and
+    Scott Fenton submitted lots of corrections that shut up some compiler
+    warnings. Brian Maher submitted instructions on how to build on OS-X.
+    I have to dig deeper into my mailbox and find earlier emails, too.
+Version 1.33
+    Charles Hayden fixed a nasty GC bug of the new stack frame, while in
+    the process of porting TinyScheme to C++. He also submitted other 
+    changes, and other people also had comments or requests, but the GC
+    bug was so important that this version is put through the door to 
+    correct it.
+Version 1.32
+    Stephen Gildea put some quality time on TinyScheme again, and made
+    a whole lot of changes to the interpreter that made it noticeably 
+    faster.
+Version 1.31
+    Patches to the hastily-done version 1.30. Stephen Gildea fixed
+    some things done wrongly, and Richard Russo fixed the makefile
+    for building on Windows. Property lists (heritage from MiniScheme)
+    are now optional and have dissappeared from the interface. They
+    should be considered as deprecated.
+Version 1.30
+    After many months, I followed Preston Bannister's advice of
+    using macros and a single source text to keep the enums and the
+    dispatch table in sync, and I used his contributed "opdefines.h".
+    Timothy Downs contributed a helpful function, "scheme_call".
+    Stephen Gildea contributed new versions of the makefile and 
+    practically all other sources. He created a built-in STRING-APPEND,
+    and fixed a lot of other bugs.
+    Ruhi Bloodworth reported fixes necessary for OS X and a small
+    bug in dynload.c.
+Version 1.29
+    The previous version contained a lot of corrections, but there
+    were a lot more that still wait on a sheet of paper lost in a
+    carton someplace after my house move... Manuel Heras-Gilsanz
+    noticed this and resent his own contribution, which relies on
+    another bugfix that v.1.28 was missing: a problem with string
+    output, that this version fixes. I hope other people will take
+    the time to resend their contributions, if they didn't make it
+    to v.1.28.
+Version 1.28
+    Many people have contacted me with bugfixes or remarks in
+    the three months I was inactive. A lot of them spotted that 
+    scheme_deinit crashed while reporting gc results. They suggested
+    that sc->outport be set to NIL in scheme_deinit, which I did.
+    Dennis Taylor remarked that OP_VALUEPRINT reset sc->value instead
+    of preserving it. He submitted a modification which I adopted 
+    partially. David Hovemeyer sent me many little changes, that you
+    will find in version 1.28, and Partice Stoessel modified the 
+    float reader to conform to R5RS.
+Version 1.27
+    Version 1.27 is the successor of 1.25. Bug fixes only, but I had to
+    release them so that everybody can profit. 'Backchar' tried to write
+    back to the string, which obviously didn't work for const strings.
+    'Substring' didn't check for crossed start and end indices. Defines
+    changed to restore the ability to compile under MSVC.
+Version 1.26
+    Version 1.26 was never released. I changed a lot of things, in fact
+    too much, even the garbage collector, and hell broke loose. I'll
+    try a more gradual approach next time.
+Version 1.25
+    Types have been homogenized to be able to accomodate a different
+    representation. Plus, promises are no longer closures. Unfortunately,
+    I discovered that continuations and force/delay do not pass the SCM
+    test (and never did)... However, on the bright side, what little
+    modifications I did had a large impact on the footprint: 
+    USE_NO_FEATURES now produces an object file of 63960 bytes on Linux!
+Version 1.24
+    SCM tests now pass again after change in atom2str.
+Version 1.23
+    Finally I managed to mess it up with my version control. Version
+    1.22 actually lacked some of the things I have been fixing in the
+    meantime. This should be considered as a complete replacement for
+    1.22.
+Version 1.22
+    The new ports had a bug in LOAD. MK_CLOSURE is introduced.
+    Shawn Wagner inquired about string->number and number->string.
+    I added string->atom and atom->string and defined the number
+    functions from them. Doing that, I fixed WRITE applied to symbols
+    (it didn't quote them). Unfortunately, minimum build is now
+    slightly larger than 64k... I postpone action because Jason's idea
+    might solve it elegantly.
+Version 1.21
+    Jason Felice submitted a radically different datatype representation
+    which he had implemented. While discussing its pros and cons, it
+    became apparent that the current implementation of ports suffered
+    from a grave fault: ports were not garbage-collected. I changed the
+    ports to be heap-allocated, which enabled the use of string ports
+    for loading. Jason also fixed errors in the garbage collection of 
+    vectors. USE_VERBATIM is gone. "ssp_compiler.c" has a better solution
+    on HTML generation. A bug involving backslash notation in strings
+    has been fixed. '-c' flag now executes next argument as a stream of
+    Scheme commands. Foreign functions are now also heap allocated,
+    and scheme_define is used to define everything.
+Version 1.20
+    Tracing has been added. The toplevel loop has been slightly
+    rearranged. Backquote reading for vector templates has been
+    sanitized. Symbol interning is now correct. Arithmetic functions
+    have been corrected. APPLY, MAP, FOR-EACH, numeric comparison
+    functions fixed. String reader/writer understands \xAA notation.
+Version 1.19
+    Carriage Return now delimits identifiers. DOS-formatted Scheme files
+    can be used by Unix. Random number generator added to library.
+    Fixed some glitches of the new type-checking scheme. Fixed erroneous
+    (append '() 'a) behavior. Will continue with r4rstest.scm to
+    fix errors.
+Version 1.18
+    The FFI has been extended. USE_VERBOSE_GC has gone. Anyone wanting
+    the same functionality can put (gcverbose #t) in init.scm.
+    print-width was removed, along with three corresponding op-codes.
+    Extended character constants with ASCII names were added.
+    mk_counted_string paves the way for full support of binary strings.
+    As much as possible of the type-checking chores were delegated
+    to the inner loop, thus reducing the code size to less than 4200 loc!
+Version 1.17
+    Dynamically-loaded extensions are more fully integrated.
+    TinyScheme is now distributed under the BSD open-source license.
+Version 1.16
+    Dynamically-loaded extensions introduced (USE_DL).
+    Santeri Paavolainen found a race condition: When a cons is executed,
+    and each of the two arguments is a constructing function,  GC could
+    happen before all arguments are evaluated and cons() is called, and
+    the evaluated arguments would all be reclaimed!
+    Fortunately, such a case was rare in the code, although it is
+    a pitfall in new code and code in foreign functions. Currently, only
+    one such case remains, when COLON_HOOK is defined.
+Version 1.15
+    David Gould also contributed some changes that speed up operation.
+    Kirk Zurell fixed HASPROP.
+    The Garbage Collection didn't collect all the garbage...fixed.
+Version 1.14
+    Unfortunately, after Andre fixed the GC it became obvious that the
+    algorithm was too slow... Fortunately, David Gould found a way to
+    speed it up.
+Version 1.13
+    Silly bug involving division by zero resolved by Roland Kaufman.
+    Macintoch support from Shmulik Regev.
+    Float parser bug fixed by Alexander Shendi.
+    GC bug from Andru Luvisi.
+Version 1.12
+    Cis* incorrectly called isalpha() instead of isascii()
+    Added USE_CHAR_CLASSIFIERS, USE_STRING_PORTS.
+Version 1.11
+    BSDI defines isnumber... changed all similar functions to is_*
+    EXPT now has correct definition. Added FLOOR,CEILING,TRUNCATE
+    and ROUND, courtesy of Bengt Kleberg. Preprocessor symbols now
+    have values 1 or 0, and can be set as compiler defines (proposed
+    by Andy Ganor *months* ago). 'prompt' and 'InitFile' can now be
+    defined during compilation, too.
+Version 1.10
+    Another bug when file ends with comment!
+    Added DEFINE-MACRO in init.scm, courtesy of Andy Gaynor.
+Version 1.09
+    Removed bug when READ met EOF. lcm.
+Version 1.08
+    quotient,remainder and modulo. gcd.
+Version 1.07
+    '=>' in cond now exists
+    list? now checks for circularity
+    some reader bugs removed
+    Reader is more consistent wrt vectors
+    Quote and Quasiquote work with vectors
+Version 1.06
+    #! is now skipped
+    generic-assoc bug removed
+    strings are now managed differently, hack.txt is removed
+    various delicate points fixed
+Version 1.05
+    Support for scripts, *args*, "-1" option.
+    Various R5RS procedures.
+    *sharp-hook*
+    Handles unmatched parentheses.
+    New architecture for procedures.
+Version 1.04
+    Added missing T_ATOM bits...
+    Added vectors
+    Free-list is sorted by address, since vectors need consecutive cells.
+    (quit <exitcode>) for use with scripts
+Version 1.03 (26 Aug 1998):
+    Extended .h with useful functions for FFI
+    Library: with-input-* etc.
+    Finished R5RS I/O, added string ports.
+Version 1.02 (25 Aug 1998):
+    First part of R5RS I/O.
+

Modified: trunk/plug-ins/script-fu/tinyscheme/scheme.c
==============================================================================
--- trunk/plug-ins/script-fu/tinyscheme/scheme.c	(original)
+++ trunk/plug-ins/script-fu/tinyscheme/scheme.c	Thu Sep 11 20:57:38 2008
@@ -4747,7 +4747,7 @@
      pointer carx=mk_symbol(sc,procname);
      pointer cdrx=sc->NIL;
 
-     dump_stack_reset(sc);
+     s_save(sc,OP_QUIT,sc->NIL,sc->NIL);
      sc->envir = sc->global_env;
      sc->code = cons(sc,carx,cdrx);
      sc->interactive_repl=0;
@@ -4756,7 +4756,7 @@
      }
 
 void scheme_call(scheme *sc, pointer func, pointer args) {
-   dump_stack_reset(sc);
+   s_save(sc,OP_QUIT,sc->NIL,sc->NIL);
    sc->envir = sc->global_env;
    sc->args = args;
    sc->code = func;
@@ -4793,7 +4793,13 @@
     printf(banner);
   }
   if(argc==2 && strcmp(argv[1],"-?")==0) {
-    printf("Usage: %s [-? | <file1> <file2> ... | -1 <file> <arg1> <arg2> ...]\n\tUse - as filename for stdin.\n",argv[0]);
+    printf("Usage: tinyscheme -?\n");
+    printf("or:    tinyscheme [<file1> <file2> ...]\n");
+    printf("followed by\n");
+    printf("          -1 <file> [<arg1> <arg2> ...]\n");
+    printf("          -c <Scheme commands> [<arg1> <arg2> ...]\n");
+    printf("assuming that the executable is named tinyscheme.\n");
+    printf("Use - as filename for stdin.\n");
     return 1;
   }
   if(!scheme_init(&sc)) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]