







Please
Please is a cross-language build system with an emphasis on high performance, portability, extensibility and correctness.

Bringing Clojure programming to Enterprise
How a dialect of LISP can help developping modern enterprise applications


Building personal tools by programming

The mythical matched modules | Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Certified compilers are complex software systems. Like other large systems, they demand modular, extensible designs. While there has been progress in extensible metatheory mechanization, scaling extensibility and reuse to meet the demands of full ...

Extensible Software in the age of LLMs | Jeremy Morrell
Solid core + capability-based sandboxes + LLMs = Users with superpowers

Gamedev in Lisp. Part 1: ECS and Metalinguistic Abstraction
In this series of tutorials, we will delve into creating simple 2D games in Common Lisp. The result of the first part will be a development environment setup and a basic simulation displaying a 2D sce...

Malleable Software in the Age of AI - Geoffrey Litt
Using Lisp libraries from other programming languages - now with sbcl
Have you ever wanted to call into your Lisp library from C? Have you ever written your nice scientific application in Lisp, only to be requ...
Crafting Interpreters
Ever wanted to make your own programming language or wondered how they are designed and built?
Pony
An open-source, object-oriented, actor-model, capabilities-secure, high-performance programming language.
storytold/craft-anything
Craft Anything: understand how any software works, and craft your own.
Crafting Interpreters
Despite using them every day, most software engineers know little about how programming languages are designed and implemented. For many, their only experience with that corner of computer science was a terrifying "compilers" class that they suffered through in undergrad and tried to blot from th...

Designing and Programming Malleable Software
User needs for software features and interfaces are diverse and changing, motivating the goal of making it as easy as possible for users themselves to change software, or to have it changed on their behalf in response to their developing needs. However, in my opinion, current approaches do not address this issue adequately: software engineering promotes flexible code, but in practice this does not help end-users effect change in their software. End-user and live programming systems help users customize their interfaces by accessing and modifying the underlying source code. I take a different approach, seeking to maximize the kinds of modifications that can take place through regular interactions, e.g. direct manipulation of interface elements. I call this approach malleable software. To understand contemporary needs for and barriers to modifying software, I study how it is produced, maintained, adopted, and appropriated in a network of communities working with biodiversity data. I find that the mode of software production, i.e. the technologies and economic relations that produce software, is biased towards centralized, one-size-fits-all systems. This leads me to propose a long-term, interdisciplinary research program in reforming the tools of software development to create infrastructures for plurality. These tools should help multiple communities collaborate without forcing them to consolidate around identical interfaces or data representations. Malleable software is one such infrastructure, in which interactive systems are dynamic constellations of interfaces, devices, and programs assembled at the site of use. My technological contribution is a reconstruction of the programming mechanisms used to create interactive behavior. I generalize existing control structures for interaction as entanglements, and develop a higher-order control structure, entanglers, which produces entanglements when particular pre-conditions, called co-occurrences, are met. Entanglers cause interactions to be assembled dynamically as system components come and go. I develop these mechanisms in Tangler, a prototype environment for building malleable interactive software. I demonstrate how Tangler supports malleability through a set of benchmark cases illustrating how users can modify systems by themselves or with programmer assistance. This thesis is an early step towards a paradigm for programming and designing malleable software that can keep up with human diversity.
Systems Programming with Zig
Zig delivers performance, reliability, and complex integration in systems programming in a simple, modern package. Zig hits the sweet spot for systems programming. This new programming language is high-performance, low-level, ultra-reliable, and perfectly suited for serious projects like writing libraries, daemons and shell utilities, and even operating systems and embedded code. Systems Programming with Zig shows you how to write quality, useful Zig applications without relying on libraries or frameworks-even if you’re new systems programming. In Systems Programming with Zig you’ll learn how to: Understand the Zig perspective on systems programming Write idiomatic Zig code Integrate Zig with C, systems libraries, and scripting languages Networking, interpreters, and graphics from the ground up Unlike UI-centric applications that form the public face of your software, systems programs like OS kernels, device drivers, and utilities interact directly with the hardware or operating system. In these low-level programs, performance and safety are paramount. Zig is a new programming language that builds on the legacy of C, C++, and even Rust to provide a high-productivity systems programming environment that does not rely on awkward libraries and frameworks.
