LIL (stands for Little Interpreted Language) is a small highly dynamic scripting language inspired by Tcl and unix shells. LIL has two implementations, one written in C, which consists of a pair of .c and .h files and one in Free Pascal, which consists of a single pas file (a unit). Also a Lazarus package for the latter is provided.
LIL is currently available as source code snapshots of both the C and the Free Pascal version combined in a single ZIP file. These snapshots are versioned using their release date. Note that the interpreter's reflect version command will report 0.1 regardless of date versioning. Both of these will change at some point in the future to provide proper versioned releases.
The latest version of LIL is lil20190114.zip (91KB).
Some older versions are also available in case you need them. LIL should be mostly backwards compatible (see below), but right now there is no promise for strict API or ABI compatibility.
If you are using Windows you can also download WinLIL, a small Windows-based environment with editor, console and extra graphics functions that can be used to experiment with LIL. It is self-contained in a single executable, including the LIL documentation.
The latest version is WinLIL 1.3 (204KB). Here is a screenshot of it in action. Also a small doodle program can be downloaded here and a screenshot seen here. This archive (45KB) contains the source code, but note that it uses the original Borland C++ Builder and to compile with a newer version (such as the free Community Edition) you'll need to recreate the project file and make a few modifications to the code.
Older versions of WinLIL can be found in these files: winlil20170424.zip (binary), winlilsrc20161220.7z (source).
Generally speaking, both the C and Free Pascal implementation
APIs are stable for the most part. The C API was
broken only once in middle 2010 when
was renamed to
lil_func_t and the C ABI for
the Windows DLL is also backwards compatible since late 2010.
The Free Pascal implementation has a less stable API but
as Free Pascal itself does not support ABI stability, this is
less of a concern.
In the foreseeable future the C API should be stable, but i'd recommend against building a system-wide shared version of the library before a proper versioned release is made. Once a versioned release is made, both the API and ABI will remain stable for as long as it is technically possible.
Script code should be backwards compatible even as new commands
are introduced since scripts and host applications will redefine
any conflicting functions anyway. The only time script code was
broken was in 2012 when the multiline comments were introduced
so any script that used a comment line like
was broken. This was addressed in a fix in 2014 that added a special
check for such cases so that multiline comments can only start
and end with two
#s but not three or more (while
this could have broken any script that used three or more
to start and end multiline comments, the chances for such a script
are very slim).
Like with the C API, the script backwards compatibility currently is mostly stable, but minor changes (like the multiline comment changes mentioned above) might be made until a versioned release is made. At that point no changes will be made that may affect backwards compatibility.
Currently the only documentation is the (lengthy) readme.txt file that you can read here or as part of the archive containing the source code. At some point i'll write better formatted documentation.
Also an old LIL presentation can be found on SlideShare. Please note that the URLs in the presentation are not valid anymore.
LIL is practically feature-complete and i do very little development of it. I do not plan on making it a big and bloated library that tries to provide everything - if anything, in the future i might add some conditionals to remove bits of the library for users who do not need, e.g, the string or list functions.
Further work is mostly "around" LIL and not on the language itself: improving the documentation, writing a test suite (currently there are several examples which i run after making changes and almost half of them come from bug fixes, but i'd like somethnig more automated), fixing some issues with the Free Pascal implementation, adding more functions on the C API to access LIL's state, etc.
Both the C and Free Pascal implementations as well as WinLIL are licensed under the zlib license below:
LIL - Little Interpreted Language Copyright (C) 2010-2019 Kostas Michalopoulos This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution.