[MUD-Dev] IMatix Tools: Libero and SMT

J C Lawrence claw at under.engr.sgi.com
Mon Jul 6 13:39:36 CEST 1998


URL:http://www.imatix.com/

Has a number of tools that would be useful for a server effort.

Libero is a peculiar form of CASE tool, that I could easily see doing
the kernel of a MUD server with:

URL:http://www.imatix.com/html/libero/index.htm

--<cut>--

How do I use Libero? 

   1.Design your program visually as a state diagram; 
   2.Choose your programming language; 
   3.Generate a framework for your program; 
   4.Fill-in the framework to get from rapid prototype to working program; 
   5.Repeat until your program is perfect. 

What Languages can I use? 

     C 
     Java 
     C++ 
     Perl 
     Awk 
     UNIX shells - Korn shell, BASH, Bourne shell, C shell 
     Rexx 
     MS Visual Basic 
     MS Test Basic 
     COBOL 
     MS 80x86 Assembler 

... with open-ended support for other languages. Libero uses a
programmable code generator engine.  To generate code in a specific
language, you write a new schema. A schema is like a script or
program, written using Libero's schema language.

--<cut>--

SMT is a bolt-on for Libero that allows Libero-generated apps to be
internally threaded (pseudo-threads also Cold/MOO/etc).  The locking
model (see the docs off the web page, is cute:

URL:http://www.imatix.com/html/smt/index.htm

--<cut>--

The SMT (Simple Multi-Threading kernel) from iMatix is an add-on for
the Libero programming tool that lets you write portable
high-performance multithreaded programs based on Libero's finite-state
machine (FSM) design method.

...

You can use the SMT kernel for: 

     Internet programming: where each connection is handled by one
     thread.

     Real-time programming: where multilevel finite-state machines
     work cooperatively.

     GUI development: where events are collected from the GUI and
     passed to threads for processing. 

The SMT kernel's main features are: 

     100% portability. 

     Strong object orientation. 

     Support for multiple FSM programs within one application. 

     Support for multiple threads within one FSM program. 

     Support for Internet protocols (TCP/IP, UDP/IP). 

     Based on Libero program development method. 

     Standard agents: http, file transfer, authorization, logging,
     console, timing, socket i/o.

     Unrestricted number of threads, queue sizes, etc. 

The SMT kernel currently supports C/C++, and is written in portable
ANSI C. It uses the iMatix SFL (standard function library) as a
technical platform, and the Libero tool as development method.

...

The main differences between SMT and 'classic' multithreading are: 

     Multithreading works at the user level, not the kernel
     level. This is sometimes called 'internal multithreading' or
     'pseudo-multithreading'. User-level multithreading is transparent
     to the operating system, and can be 100% portable (as it is in
     SMT).

     SMT cannot make direct use of multiple CPUs, since threads are
     not visible to the operating system.

     Threads communicate with events as well as with semaphores. This
     is a clean abstraction that lets you design an object-oriented
     application.

     SMT is simpler to use. 
     
     SMT is portable to (almost) any operating system and programming
     language, although the primary implementation is in ANSI C.

We note some other points of interest: 

     Thread switching occurs only between dialog action modules. A
     single dialog module will always run to completion. Thus, threads
     can share resources (data, files,...) without locking, critical
     sections, or other special safeguards.

     SMT provides a high-level framework for constructing real
     applications. This is useful even without the multithreading
     aspects.

     SMT uses asynchronous or non-blocking i/o as far as possible -
     for Internet sockets and file access. This results in efficient
     applications that can handle large numbers of connections with a
     low overhead per connection.

--<cut>--

--
J C Lawrence                               Internet: claw at null.net
(Contractor)                               Internet: coder at ibm.net
---------(*)                     Internet: claw at under.engr.sgi.com
...Honourary Member of Clan McFud -- Teamer's Avenging Monolith...




More information about the mud-dev-archive mailing list