Re: How about a Safe Virtual Machine?

Daniel W. Connolly (connolly@hal.com)
Mon, 3 Oct 1994 23:43:55 +0100

In message <aab5fbf503030001251c@[128.102.17.23]>, Dave Crocker writes:
[...]
>
>Safe-TCL was designed to satisfy these requirements. Peculiarities of
>programming in TCL notwithstanding, it is a simple language and the
>interpreter can run on any platform easily. (TK is less trivial, but is
>proving also to be portable.) Safe-TCL carefully crippled TCL, to make it
>safe, and then provides access to interfaces for "modules" of specialized
>service.

It is not at all clear to me that Safe-Tcl provides access to
interfaces to modules. How does one introduce an interface into the
Safe-Tcl system? By adding to the Safe-Tcl implementations on each
host where my computations will run, I gather. What if my program
uses two independently-developed extension interfaces? How do I build
a Safe-Tcl interpreter with _both_ extensions built in?

This is a solved problem for python, for example. I might argue that
it is as much work to address the modules problem in Tcl as it is to
make python safe.

I also suspect that very soon we will discover that these little agent
programs need to conduct dialogs with multiple parties at the same
time: they need to talk not just with the user, but also with other
agents and network entities. Hence suspect that threads will be an
invaluable part of the runtime system for distributed agents.

Threads are no picnic in python (and I've never seen any work on
multi-threaded Tcl apps...) but the scheme48 virtual machine supports
them. I think it's worth studying carfully.

>In other words, let's try not to make the major part of the effort be
>definition and implementation of the platform. I fear that work on a
>highly general, virtual 'machine' environment would result in such a
>distraction. Instead, let's use the considerable effort that has been put
>into Safe-TCL and build on it, creating some useful Internet services.

I agree that a lot of ground has been covered in the Safe-Tcl work,
and that we should not throw it away lightly.

But I also believe that building useful Internet services involves
significant complexity management, and that complexity management is a
particular weakness of Tcl. Sure, the implementation of Safe-Tcl is
clean and somewhat simple, but at the cost of complexity of programs
built on that platform.

The point of this thread is to consider whether a more fine-grain
platform would lead to a system that can be implemented in a
straightforward fashion without hampering the ability to build large
systems using sophisticated languages to manage the complexity.

You're not the first to argue that universality is a requirement of
this system, and I'm not the first one to suggest that a world built
on top of Tcl will be unmanageable.

Dan