Concatenative topics
Concatenative meta
Other languages
Meta
SPL (Stack Programming Language) is an interpreted, stack-based programming language designed by Daniella H. and inspired by her previous language ISBPL (Improved Stack-Based Programming Language, which she admitted really wasn't improved at all compared to other modern ones).
It is designed to be simple and concise, meaning it should be relatively easy to write without introducing bugs, while also being efficient in terms of code size.
SPL can be installed using the instructions given in the repo, and is packaged in nixpkgs.
SPL's predecessor ISBPL was originally written because its author wanted to try out programming language design, and not much thought was put into the specific principles behind it. Notably, its standard library was written before any interpreter, so the interpreter was designed around existing code.
SPL was written because its predecessor had several design problems that were unfixable while retaining compatibility with old code. With the rewrite, its author also decided to switch to rust, which meant she would have to implement much more of the standard library instead of relying on JIO, an ISBPL system which allowed users to interact with the entire java ecosystem nearly seamlessly. (ISBPL still finds use in some contexts for writing plugins into java programs for this reason.)
SPL was originally written on Feb 17, 2023, and uploaded to GitHub. Next to no programs were written in it for a very long time, as the standard library was very immature, although slowly expanding.
On the fourth of August that same year, a way to embed rust code into SPL was added, but does not find much use as it requires building a new SPL binary (which, while automatic, takes a while and is inconvenient). That same day also marked the start of a one-year break from any further SPL development as Daniella tried to create a language that would combine the syntax of concatenative and C-style languages. She made the mistake of trying to make this language have an advanced type system, which led her to abandon that project. A parser is available, but no implementation. Realizing this, she returned back to SPL.
The break ended on Aug 29, 2024 with slight improvements to rust embedding, some bug fixes, and the addition of compatibility mode, which would allow running some old ISBPL programs in the new interpreter. Development is still active as of writing (September 2024).
A component of the standard library, stream.spl, demonstrates the declaration of constructs (which are SPL's take on classes or structs) quite well: https://git.tudbut.de/TudbuT/spl/src/branch/main/stream.spl
A program written in SPL, mkpolynomial, demonstrates what a real-world SPL program looks like: https://git.tudbut.de/TudbuT/mkfunction/src/branch/main/mkpolynomial.spl
Hello world:
func main { mega | with args ; "Hello, world!" println "a semicolon *can* be added after println to discard its returned values"; 0 }
SPL has the following features (not exhaustive) not usually seen together:
+ <{ 3 4 }
include extension-type in type
) that add functionalityThis revision created on Sun, 8 Sep 2024 17:50:56 by TudbuT (fix a grammatical mistake)