[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