LITTLE/ALICE V0.8a README ========================== + What is it? LITTLE is a programming language, somewhat LISP-, Python-, Smalltalk-, Java-like. It is an object-only OO-based language like Smalltalk, dynamically typed, using a class-based object system, with support for multiple inheritance, garbage collection, late binding, DSOs etc. The implementation of LITTLE uses a bytecode-oriented approach, ie. relies on a so-called virtual machine, which executes intermediate code created by a compiler. It's main purpose is to serve as application scripting/extension system. Emphasis was/is put on design of a 'small', easily maintainable and optimizable RISC-like core VM written in C with integrated support for a sufficient, but minimal extension API. This version of LITTLE is pre-alpha, mostly undocumented, unsupported. It has a VM, runtime libraries and a compiler, which is able to compile the demos provided with this package. + Copyright/License LITTLE and ALICE are (C) Thalion Graphic Solutions eK. 2002-2004, all rights reserved. Thalion Graphic Solutions eK. grants you the right to use and redistribute the binary programs included in this software distribution. Thalion Graphic Solutions eK. furthermore grants you the right to use, modify and redistribute the source code included in this software distribution. This distribution contains demo/evaluation software. It is provided as-is and comes without any warranty. + How to run this demo version? There is no sophisticated install routine yet. However, the required environment set-up is now achieved by the VM wrapper script 'little' - the interpreter tool itself has been renamed to .little, located in the 'bin'-subdirectory and should not be invoked immediately anymore. To finish the installation, it is sufficient to add the installation root's bin-directory to the PATH environment variable, or just launch 'little' by typing the full path. You can still influence LITTLE's behaviour by these variables: LITTLE_HOME - allows to select an alternate installation (however it doesn't hurt, if it is set to the current installation) LITTLE_CLASSPATH - should point to whereever additional class libraries might live (colon-separated list, library files must be included like in 'mypath/mylib.lib:myotherpath/mysecondlib.lib' LD_LIBRARY_PATH or DYLD_LIBRARY_PATH - should include all DSO locations needed by additional packages; it is not required anymore to include $LITTLE_HOME/lib Assumed, you use ksh, bash or another modernized sh-clone, issue the following commands (or edit your .profile): >> export PATH=$PATH:$LITTLE_HOME/bin After that, the command >> little -V or >> little -O -V should correctly print out this version's manufacturer, VM and release info. It should look about like the text below (replace operating system and version by your site's settings): System version is: Thalion Graphic Solutions eK. ALICE V0.7.9.3 build 1797 on IRIX64 VM details: Non-accelerated VM , threads not supported or System version is: Thalion Graphic Solutions eK. ALICE V0.7.9.3 build 1797 on IRIX64 VM details: MIPS Native JIT , threads not supported depending on whether you specified the -O switch or not. You now are ready to compile the demos. The following command compiles all source files in ./demo, and writes output to ./classes: >> littlec -dclasses ./demo/*.ltl To run any of the demos, issue >> little -O -L./classes [ [ ... ]] where classname has to be specified using '.' as scope delimiter (it is generally recommended to use the accelerated intepreter, ie. the -O option, as this has no known negative impact on robustness anymore). You can run any classes providing a '(method main ():static). Example: >> little -O -L./classes demo.Dir . will run the LITTLE dir cmd. See comment headers in demo source files for details about what the demo programs ought to do. + Available tools: + little little.util.Version prints the VM and runtime version info of the system it is using + little little.util.SysInfo [ ... ] shows properties of the classes given as arguments, or lists properties of all classes loaded into the VM cache (currently, you must use the VM internal notation for class names, which uses '/' as separator, instead of '.' + little little.util.GenWrap [ ... ] creates C wrapper code for callbacks into LITTLE + Available source: + The distribution now includes all LITTLE runtime sources (no C code, LITTLE only). The files are located below the 'src'-subdirectory. Note: many of them use the deprecated syntax '*', which was used by the now obsolete bootstrap compiler to identify global class names. Furthermore, most of the runtime source still uses horrible string notations, due to bootstrap compiler restrictions as well. All of this will be smoothed out in the future. In the installation root, you may build a new runtime library from these sources via littlec -drt.lib src/*.ltl + Demo source below 'demo'-subdirectory: +---------------+-------------------+---------------------+ | Source file | Entry point class | Arguments | +---------------+-------------------+---------------------+ | Brainfuck.ltl | bf.Engine | | | cat.ltl | demo.Cat | ... | | dir.ltl | demo.Dir | [ ... ] | | mkdir.ltl | demo.MkDir | [ ... ] | | qsort.ltl | demo.QSort | ... | | tokens.ltl | demo.Tokens | ... | +---------------+-------------------+---------------------+ + Some stuff on the net: www: check http://www.thalion-graphics.de/little for currently available demo code. usenet: check comp.lang.misc for samples posted and/or discussed there + Additional remarks This package contains optimized builds - no debugging code included. Nevertheless, you can activate garbage collection diagnostic output via setting LITTLE_GC_VERBOSE to verbosity levels ranging from 1-N. Setting to 0 deactivates GC trace output. + Issues Except being under development, and by far not yet complete, the big problem still are memory leaks and memory footprint in general + Notes See file:/$LITTLE_HOME/doc/html/little_relnotes.html for additional release info. Current documentation and LITTLE releases are included in this distribution below 'doc/html'. The most recent documentation is available at http://www.thalion-graphics.de/little + Feedback, Questions, Suggestions, Complaints are welcome. Direct them to helmut@thalion-graphics.de