STATUS Oct, 2000 - moved to http://www.equi4.com/minotaur/ In a nutshell: all Perl/Python/Tcl combo's in Minotaur work The details have been worked out on Linux and Windows. - pForth builds and works, on Linux, Macintosh, and Windows - for{Com,Ici,Java,Lua,Pl,Py,Rb,Tcl} work for "123 456 +" - forPhp builds, but crashes (a malloc vs. emalloc problem) - forDll has not yet been tested, it was stripped from forPy - shared library call interface ok for Linux/Mac/Win, yeay! ROADMAP forAll/ A single shared lib linking Python/Tcl/Perl forCom/ MS COM server, using OLE automation forDll/ General DLL, exports eval call as external forIci/ ICI extension, a C-like scripting language forJava/ Java extension, uses JNI to connect forLua/ Lua extension, of Brazilian origin forPhp/ PHP extension, used for web scripting forPl/ Perl extension, frighteningly complex forPy/ Python extension, the OO scripting language forRb/ Ruby extension, of Japanese origin forTcl/ Tcl extension, the string scripting language forth/ Standalone build of pForth csrc/ Source code of pForth docs/ The original pForth documentation setup/ pForth sources used to build core dictionary utils/ Some pForth utility code to look at forTwo/ Extension for Python and Tcl (either way) minotaur/ Links Perl/Python/Tcl, if shared libs present Explanation: - "forth" is a basic standalone program, used to figure out pForth, to test forth code, and to compile dictionaries - most "for[A-Z]*" directories have dynamic extensions for each language, tying a forth system onto them as add-on, these are used to develop and test language-specific code - ForTwo is a special combination of ForPy and ForTcl, which lets either one call the other, as well as return results (it needs to know where to find both .so files on Unix) - ForAll takes forTwo one step further by including Perl. It requires Tcl, Python, and Perl, all must be shared libs. ForAll didn't handle Perl dynaloading right, Minotaur does. - Minotaur is the ultimate version of ForAll, it uses "weak" runtime linkage so it will work with Python, Tcl, and Perl, yet won't fail if any one of them is not present / used. Minotaur also/only needs the "forth/" directory to build. - The "Colossus" project will be a next phase of TinyScript (this is for those who witnessed the recent name change). DOWNLOAD All source code is available from http://www.equi4.com/minotaur/ EXAMPLES Python (MacOS): Python 1.5.2b1 (#47, May 14 1999, 04:13:11) [CW PPC w/GUSI w/MSL] Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>> import forPy >>> forPy.init() >>> forPy.eval("123 456 +") 579 >>> Tcl (Windows): C> tclsh80 % load forTcl.dll % forTcl::init % forTcl::eval {123 456 +} 579 % Perl (Linux): $ perl use forPl; forPl::init(); print forPl::eval("123 456 +"); ^D 579$ Lua (Linux): $ lua Lua 3.1 Copyright (C) 1994-1998 TeCGraf, PUC-Rio > require("forLua.so") > forLua_init() > print(forLua_eval("123 456 +")) 579 > Java (MacOS): public class TestFor { static { System.loadLibrary("forJava"); } public static void main(String args[]) { ForJava fj = new ForJava (); fj.init(); System.out.println(fj.eval("123 456 +")); } } ICI (Linux): $ ici -0 forth.init(); printf("%d", forth.eval("123 456 +")); 579^D $ Ruby (Linux): $ ruby require "forRb" ForRb::init() print ForRb::eval("123 456 +") ^D 579$ Microsoft COM server (Windows), extract of C++ code: Trace(_T("Calling IForObj::eval(...) method...\n")); long result = pMin->eval(_T("123 456 +")); Trace(_T("Call returns %d\n"), result); REFERENCES Minotaur homepage, a.k.a. TinyScript/2 http://www.equi4.com/minotaur/ pForth, a simple portable ANS-Forth implemented in C http://www.softsynth.com/pforth/ Python homepage at CNRI: http://www.python.org/ Tcl homepage at Scriptics: http://www.scriptics.com/ Perl homepage at CPAN: http://www.cpan.org/ Lua homepage at the University of Rio de Janeiro: http://www.tecgraf.puc-rio.br/lua/ Java homepage at Sun: http://java.sun.com/ ICI homepage in Australia: http://www.zeta.org.au/~atrn/ici/ Ruby homepage in Japan: http://www.netlab.co.jp/ruby/ PHP homepage: http://www.php3.org/ -- Jean-Claude Wippler