SPL – The SPL Programming Language

Warning: SPL is unmaintained. I do not recommend it for new projects.


SPL - The SPL Programming Language 1

SPL is a powerful scripting language. It is very feature-rich (hashes, regular expressions, objects, exceptions, built-in template language, etc. pp.) and has a c-style syntax. The Name „SPL“ is a left-recursive acronym and expands to „SPL Programming Language“. The name was meant to be pronounced as an acronym, but I've already heard people pronouncing it „spell“, which is also fine with me.

The SPL VM is a pure bytecode interpreter. Support for JIT compilation or generating machine code for the host CPU is not planed and doesn't make much sense for various technical reasons. The entire SPL toolchain (compiler, assembler, virtual machine, etc) is pretty small (about 100k on x86 architectures). The additional memory usage by the applications is rather small too. One of the more advanced VM features is the capability to dump the entire VM state to a file and resume later. It is even possible to resume on another machine with a different architecture.

SPL has support for loadable modules. The spl package contains already modules for stuff such as accessing SQL databases (SQLite, Postgres, MySQL), XML (incl. XPATH and XSLT), Terminal and File IO, Web Application development (the CGI, WSF and W2T (Web 2.0 Toolkit) modules), SDL, Qt and much more.

SPL currently supports Linux,BSD Systems, other POSIX environments, MacOS-X (Darwin)SGI IRIXCygwin and native Win32 (using MinGW).


The SPL source releases can be downloaded directly from this webpage. The current development sources can be found in our Subversion Repository. More information about Subversion can be found on the Subversion Homepage.

WebSPL and WSF

WebSPL is a pretty powerful framework for doing web application development with SPL.

The interesting thing about WebSPL is that, other than usual CGI scripts, a WebSPL script is not executed once for each HTTP request. Instead, there is one SPL process for each session and such a WebSPL script can pause its execution at any time, wait for the user to do something and continue execution as soon as the user did something.

In addition to that there is a module package called „WSF“ (WebSPL Forms) which add an additional abstraction layer between the application login and the representation as web page. With this SPL modules, web application development becomes as easy as normal application development with well-designed widget sets.

Recently, the W2T (Web 2.0 Toolkit) module has been added. It can be used to create highly interactive web pages and applications (AJAX). Wikipedia information about AJAX: EnglishGerman.

WebSPL, WSF and W2T are included in the SPL source distribution.

Embedding SPL

One of the design goals of SPL has been to make it pretty easy to embed SPL in other applications. That way users can extend or change the applications they are using by writing SPL scripts.

One of the applications using SPL as scripting backend is the QCake 3D Game Designer. User supplied SPL scripts are used to control the behavior of the worlds created with QCake. QCake did use another scripting language before, but the QCake developer decided to switch to SPL soon after the first SPL snapshot releases became available in late 2004.

SPL is a plain C library with just a few dependencies. So it is possible to use SPL in your programs without adding much of a overhead. It also has a very simple and clean API – fast to learn and efficient to use.

It is even possible to embed a WebSPL web server in your applications. This makes it very easy to write server applications with a Web GUI (e.g. as administration interface) using the WSF module.

We need your help

SPL - The SPL Programming Language 3

SPL is under heavy development. You can help! The most important issues are:

  • Use it — Right now there are only a few projects which have been implemented with SPL. By using it you help growing the user base.
  • Feedback — Start using SPL and send your feedback. Without your feedback I cannot improve SPL.
  • Documentation — There is documentation (the reference manual has over 100 pages). But it is not perfect. Proof-read the documentation and send your corrections.
  • Extend SPL — Write your own modules and extend the SPL compiler and SPL Virtual Machine. But discuss your ideas on the mailing list first to avoid work being done twice.

Subscribe to the Mailing List and discuss your ideas and ask your questions there. It is important to get in touch with the SPL community and share your mind when you want to get involved…