Hi all,
I’ve just released the first version of ProjecturEd. Here’s the first thing it’s useful for: let’s say you have a DataFrame in the REPL, and you want to look at it, you want to scroll through it, sort it, filter it, and fix a value, without leaving Julia.
This is how you can install it and give it a try:
pkg> registry add General
pkg> registry add https://github.com/projectured/ProjecturedRegistry
pkg> add Projectured ProjecturedSDL ProjecturedDataFrames DataFrames SimpleDirectMediaLayer
julia> using Projectured, DataFrames, SimpleDirectMediaLayer
julia> df = DataFrame(n = 1:100_000, square = (1:100_000) .^ 2)
julia> display_in_editor(df)
A window opens with your frame as a table, and the REPL stays free (starting Julia with more than one thread helps but not necessary). In the table you can:
- scroll through big frames (millions of rows/columns, both directions are lazy): the view doesn’t copy the frame, and it only builds the rows that are on screen
- sort by a click on the arrows in a column header (Shift+click adds the next key)
- filter out rows: type in the field under a column name or write a Julia expression like
age > 30 && startswith(city, "B")for the whole row - filter out columns using the type-in field at corner of the table
- find a value with Ctrl+F
- edit a cell: the new value goes straight into your
df, and Ctrl+Z takes it back - use Ctrl+Shift+P for context sensitive help
Each data frame that you display gets its own tab, and you can have multiple of them and drag them around splitting the screen, etc. If your code changes a frame later, refresh_display_editor!() shows the change.
Fair warning: the first window of a session takes half a minute or more even on my powerful computer, because Julia compiles most of the editor on the fly. Add AutoPrecompile.jl and put it in your using line. It builds the compiled code in the background, and in the next session the window opens in well under a second.
Data frames are just the start. ProjecturEd is a projectional editor: where the data is the source, every view is computed from it, and an edit in a view changes the data itself. About twenty other domains come as packages, for example JSON, YAML, XML, Markdown, SQL, Julia code, basic math formulas, a few charts, and you can add your own. Domains are in different states of completeness though.
The packages are in their own registry for now, not in General, and you need Julia 1.12 or newer (if using 1.13 make sure you are using 1.13.1).
A note on how it’s made: ProjecturEd started in Common Lisp in 2013, and I wrote that version by hand. I started this Julia port in May 2026 for a discrete event simulation tool for communication networks, and Claude Code writes most of its code. The design and the decisions are mine, if you are interested see the plans folder in the development repository.
It’s an early release, so expect rough edges, and names can still change. Issues and questions on GitHub are very welcome!
- Web page, with videos: projectured.org
- The packages, and the ways to load them:Projectured.jl
- The development repository: projectured-julia
- This is the data frame domain
Here is a screenshot:
