SPL - The SPL Programming Language
SPL Documentation
  • Reference Manual (PDF)
  • Modules Reference
  • Mailing List
  • SPL and WebSPL Downloads
  • Releases
  • SVN Repository
  • SPL Example Sources
  • Towers of Hanoi
  • 4-in-a-row game
  • Many small examples
  • SPL Pong (SDL Demo)
    Small demonstration of the SPL SDL bindings.

  • Screenshot
  • Sources
  • XML Viewer (Qt Demo)
    Small demonstration of the SPL Qt bindings.

  • Screenshot
  • Sources
  • UI File
  • WebSPL Screenshots
  • WSF Debugger Screenshot
  • SPL Ticket Screenshots
  • SPLCMS Screenshots
  • WebSPL W2T Demo
    W2T is the SPL Web 2.0 Toolkit. Here is a little poker game using dynamic SVG, implemented with W2T.

  • Try it online
  • Sources
  • WebSPL Demo #1
    A simple WebSPL example without WSF (Web SPL Forms) library.

  • Try it online
  • Sources
  • WebSPL Demo #2
    Small demonstration of the basic WSF API and the DOM update features.

  • Try it online
  • Sources
  • WebSPL Demo #3
    Small demonstration of the WSF Graph class, a more advanced WSF widget.

  • Try it online
  • Sources
  • WebSPL Demo #4
    Small demonstration of the WSF Dialog class, a WSF widget for point-and-click GUI design.

  • Screenshot 1/2
  • Screenshot 2/2
  • Sources
  • XML Data
  •  

    Introduction

    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 interpeter. 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 IRIX, Cygwin and native Win32 (using MinGW).

    Download

    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: English, German.

    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 webserver in your applications. This makes it very easy to write server applications with a Web GUI (e.g. as administrational interface) using the WSF module.

    We need your help

    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 beeing 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...