[comp.lang.c] C Interpreters?

bpendlet@esunix.UUCP (Bob Pendleton) (05/24/88)

I've heard some rumors about a C interpreters called Sabre. Does anyone
know where I can get more information about it? Any information about
commercially available, or even free, C interpreters would be
appreciated.

			Thanks

				Bob P.

-- 
Bob Pendleton @ Evans & Sutherland
UUCP Address:  {decvax,ucbvax,ihnp4,allegra}!decwrl!esunix!bpendlet
Alternate:     {ihnp4,seismo}!utah-cs!utah-gr!uplherc!esunix!bpendlet
        I am solely responsible for what I say.

mlandau@bbn.com (Matt Landau) (05/26/88)

In comp.lang.c (<844@esunix.UUCP>), bpendlet@esunix.UUCP (Bob Pendleton) writes:
>
>I've heard some rumors about a C interpreters called Sabre. Does anyone
>know where I can get more information about it? 

I've been helping to beta test new versions of Saber for a couple of
months now, using Saber to develop new code and debug existing code 
under both SunView and X11.  It was particularly useful to be able
to call Xlib functions interactively in the interpreter and see what
would happen -- I learned a great deal about how X really works that
way.

I have no particular connection with Saber Software, except as a very
satisfied (and impressed!) customer and beta-test site.
--
 Matt Landau		    	    Riding shotgun down the avalanche
 mlandau@bbn.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

Saber is a rather impressive interpreter/debugger combination for C 
programmers.  Here's a brief description of some of its features:

   * The debugging environment is a workspace into which you can load 
     a combination of compiled and interpreted code.  The workspace
     understands a superset of dbx commands, so if you can use dbx it's
     pretty easy to switch to Saber.  The workspace is also an ANSI
     compatible C interpreter, so you can do anything that can be
     expressed in C -- define and call functions, create and modify
     data, define and call macros (How often have you wanted to use
     a #define in dbx?) etc.

   * At load-time, the interpreter does stronger-than-lint syntax and 
     type checking.  Errors are flagged with a message; you can ignore 
     this instance of the error, suppress future complaints about the 
     error (for this line, this procedure, this source file, or globally),
     or edit the file [your $EDITOR pops up positioned on the offending
     line] and have it automatically reloaded.

   * Code is dynamically linked.  Source modules can be modified within 
     or outside Saber, so if you (or Saber) detect an error at runtime 
     you can fix it and reload the file.  You're reset to the top-level 
     of the workspace, with your debugging environment intact, so you 
     can test the modified code immediately.

   * Another implication of dynamic linking is that you can run code 
     fragments -- if you try to reference something that doesn't exist 
     yet, Saber will drop you into a Lisp-like break level and let you 
     define the required objects or functions on the fly, or else just
     provide a one-shot value to use in place of the missing object
     or function call.

   * There's an extensive variety of breakpoints and watchpoints you
     can set.  These can be tagged with user-specified actions, which
     are arbitrary functions or C code fragments.  You can also attach
     arbitrary user-defined output functions to datatypes, so when
     you say "print foo" it prints in whatever format you like.

   * There's also a whole set of functions for listing the contents
     of modules or libraries, cross-referencing for data and functions,
     etc.

   * Runtime pointer and array bounds checking in interpreted code.
     This is perhaps the single most valuable feature in Saber - it
     tends to find those "stray pointer trashes allocated memory"
     bugs, gives you a warning message telling what pointer went bad
     and where, and drops you into a break level.

   * It deals gracefully with multiple windows under SunView and X11,
     using separate windows for editing, code listing, help requests,
     program I/O, etc.

   * They're also testing an amazing thing called "sabertool", which
     is the dbxtool of Saber, only better.  It's hard to describe all
     the nifty stuff sabertool does, including:

	+ visual crossreferencing, which displays a map of who uses 
	  and is used by a given symbol, allows you to click on things 
	  to extend the crossreference in either direction

	+ the usual panels full of buttons to execute debugger commands

	+ separate panels that show you the how the load or link stages
	  are progressing, display online help, display program I/O,
	  etc.

	  and the really wonderful part. . .

	+ the data browser, which must be seen to be believed.  You
	  know all those papers you've seen about visual display of
	  data structures all nicely formatted in little boxes, with 
	  the ability to click on pointer fields and follow all of 
	  the links?  Well, this is what they're talking about -- it's 
	  like working with a Lisp Machine debugger, but for C on your 
	  Sun.  Really impressive.  It's also saved me a lot of
	  debugging time, even in the (not fully integrated into the
	  rest of Saber) beta test version.

Saber is currently available on Sun-2's, Sun-3's, and VAXen, running
under SunOS, Ultrix, and 4.3BSD, and using SunView, X10, or X11 if 
they're available.  (Sabertool is only available with SunView at the
moment.)

Pricing starts around $1000 for the first CPU (quantity 1), with 
volume discounts (e.g., about $500/copy in quantities of 20 or more).
For detailed pricing or more information, you can reach Saber Software 
by electronic mail as "saber@harvard.harvard.edu", or at

			Saber Software, Inc.
			30 JFK Street
			Cambridge, MA  02138
			(617) 876-7636

mark@navtech.uucp (Mark Stevans) (05/26/88)

In article <844@esunix.UUCP> bpendlet@esunix.UUCP (Bob Pendleton) writes:
>I've heard some rumors about a C interpreters called Sabre. Does anyone
>know where I can get more information about it? Any information about
>commercially available, or even free, C interpreters would be
>appreciated.

We had a demo version of Saber here at Navigation Technologies.  The "demo"
version differs from the real thing in that it has some kind of built-in
time limit on how long you can use it.  After evaluating it, we have decided
to purchase a real copy.

I spent a few hours trying Saber out.  I was able to load an existing program
of mine into it, something on the order of twenty source files totalling a
few thousand lines of C code, and have it interpreted it perfectly, at
fairly impressive speed.  It is easy enough to use that I didn't even need
to read the documentation to figure out how to use it.

Imagine a magic version of "dbx" that could take any C statement as a command
(instead of the "dbx" subset of expressions), and that permitted you to
modify your code without exiting, compiling, or relinking.  Saber comes
pretty close to being that.

Of course, I am hardly an experienced Saber user.  I'm sure some other
customer out there will tell use more.  But from what I have seen with my
own eyes, I think that those of you who are interested in C interpreters
should at least get a demo copy like we did.

					Mark "Volatile" Stevans

gregory@ritcsh.UUCP (Gregory Conway) (05/26/88)

In article <844@esunix.UUCP>, bpendlet@esunix.UUCP (Bob Pendleton) writes:
> 
> I've heard some rumors about a C interpreters called Sabre. Does anyone
> know where I can get more information about it? Any information about
> commercially available, or even free, C interpreters would be
> appreciated.
> 
> 			Thanks
> 
> 				Bob P.


I'll post this to the net since it may be of interest to other people.
While I don't have the article here (it's at work), there was a rather
good report/evaluation of several C interpreters in a recent issue
of BYTE magazine.  Try going back through the last few months issues.
I should state that the interpreters were written for IBM PC's.  You
don't state what machine you own, but it was worth telling you anyway.  :-)


-- 
================================================================================
Gregory Conway@Computer Science House    UUCP: ...rochester!ritcv!ritcsh!gregory
Rochester Institute of Technology, Rochester, NY
    "I got an allergy to Perrier, daylight, and responsibility", Marillion

bpendlet@esunix.UUCP (Bob Pendleton) (05/26/88)

I've heard some rumors about a C interpreters called Saber. Does anyone
know where I can get more information about it? Any information about
commercially available, or even free, C interpreters would be
appreciated. 

			Thanks

				Bob P.

-- 
Bob Pendleton @ Evans & Sutherland
UUCP Address:  {decvax,ucbvax,ihnp4,allegra}!decwrl!esunix!bpendlet
Alternate:     {ihnp4,seismo}!utah-cs!utah-gr!uplherc!esunix!bpendlet
        I am solely responsible for what I say.

raeburn@athena.mit.edu (Ken Raeburn) (05/28/88)

In article <850@esunix.UUCP> bpendlet@esunix.UUCP (Bob Pendleton) writes:
>I've heard some rumors about a C interpreters called Saber. Does anyone
>know where I can get more information about it? Any information about
>commercially available, or even free, C interpreters would be
>appreciated. 

(This seems to keep coming up....)

Yes, Saber-C is an (excellent!) C interpreter.  Lots of fancy
debugging features are available, as is the ability to execute C
statements interactively.  (In version 1.x of Saber-C, all the
commands were issued in C syntax -- including preprocessor commands.
Version 2.0, in beta test, also accepts shell-style input.)

I believe Saber-C accepts either ANSI or K&R C.  It catches bad memory
references (free()'d memory, type mismatching on retrieval, bounds
checking), unused variables, missing declarations of functions
(sometimes annoying but generally correct, strictly speaking -- don't
you sometimes forget to declare malloc or include <string.h>?), link
against compiled code (though this naturally reduces the debugging
capabilities), and, of course, run your program.

The manuals I've got in front of me don't appear to list the machine
types it runs on.  I do know that it runs on the vax and the IBM
RT/PC; these are the only machine types Athena has at this point, so I
wouldn't know about any others.

The address to get more info is saber@harvard.harvard.edu.  It's also
the address for bug reports and questions.  Although Saber-C isn't
completely without bugs (and the occasional annoying misfeature), the
people I've dealt with regarding it have been most helpful in tracking
things down.

I would heartily recommend it.

chris@contex.UUCP (Chris Anderson) (11/15/89)

I am looking for a C interpreter to use as a sort of fancy
scripting language.  I know that products like Saber-C include
such an interpreter, but it is inexorably linked to the debugger there.

What would be great is a portable, free-standing  interpreter
(preferably PD, but doesn't have to be), unadorned.  It needs to run 
on a few different (and slightly strange) platforms; porting is no
problem for me if I have the source :-)

Yeah, I have Perl, but this project needs structures & such.
Plus, teaching others another whole language is a real drag.

Any leads would be appreciated. 

Chris Anderson
Xyvision, Inc

Email: contex!chris@uunet.uu.net
--------------------------------