Skip to content

tgetgood/xprl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Xprl

An experiment in programming languages.

Justification

People always ask “why write a new language? What’s different about it?”.

When people ask me that, I call this an art project. I work on it because I can’t not work on it. I refuse to reduce it to any fixed criteria. It isn’t and won’t be justified.

I refuse to say what it is because, in the end, I don’t know. And focusing on that up front is uselessly limiting.

Instead, let’s focus on a set of things that I don’t think should be as hard as they are in practice, and a set of assumptions that need to be questioned.

Implementations

The julia implementation was the original prototype, but is no longer being updated and I’ve removed it from the head of the repo. It’s available in the history if wanted for reference.

The clojure implementation is far from complete, but the act of reimplementing it in a different paradigm has forced me to clarify a number of things and the clojure implementation is better in most ways.

The interpreter is really just a way to get my ideas clear before committing fully to the effort of generating assembly. But to be clear, this is intended to be a language that compiles to native code, via an llvm front end initially with the posibility of moving to native later on.

Usage

This is still very early. There’s no editor support, basically no tooling. All we have is a some data structures, an interpreter, and a repl. To run the repl:

From one of the impl dirs (“impl/N”), run

clojure -Arepl -X

or call janus.core/repl from your editor. Note: nrepl in emacs handles read by taking stdin from the minibuffer. This is a little weird, but not unusable.

Docs

For a primer on the language (in progress) See docs/language.org.

For a bit of justification, in spite of the above diatribe, see docs/aesthetics.org. That doc is a mosaic of years of my own notes. It’s sprawling, sometimes repetitive, and often (though I’ve tried to clarify) obscure. Enjoy it if you can, otherwise ignore it.

Copyright

Copyright © Thomas Getgood 2025.

All rights reserved.

This code is unlicensed. If you want to use it, contact me and I’ll try to talk you out of it.

About

Attempted non von Neumann programming system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published