Skip to content
/ xprl Public

Attempted non von Neumann programming system

Notifications You must be signed in to change notification settings

tgetgood/xprl

Repository files navigation

Janus

The Name

In part the name is a nod to Koestler’s later work which has, for a very long time, shaped the way I look at complexity.

Partly I just want to open new doors.

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 is the original prototype, but is no longer being updated. I’ll keep it around as a reference for awhile yet.

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.

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:

Clojure

From the clj dir (“impls/clj/”), 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.

Julia

# First time project setup
import Pkg
Pkg.activate("./") # Assumes you're running the repl from jl project root.
Pkg.instantiate()

# Optional, takes a while but speeds up subsequent runs
Pkg.precompile()

# Run a demo
include("src/core.jl")

Once the project has been instantiated, you can run the repl from a terminal in the root directory with

julia --project=. src/core.jl

Have fun. Or try to without rlwrap…

Docs

For a primer on the language (in progress) See docs/langauge.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 2024.

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