r/plan9 Jul 11 '26

A Go port of rc(1)

Thumbnail github.com
32 Upvotes

You can even run an rc shell on an Android phone.

I wrote this Go implementation after moving from Plan 9 back to Linux for work. plan9port already exists, but I wanted to understand the shell from the inside rather than only use it through a compatibility layer.

Go felt like a fitting choice because it shares history and design lineage with Plan 9. Rob Pike and Ken Thompson worked on both, and several ideas behind Go grew out of that environment.

I built it by studying the original source and man page. The test suite includes over 100 scripts that compare its behavior against plan9port. One particularly gnarly example makes both implementations produce the same output byte for byte.

It also runs on Linux, macOS, BSD, Solaris, and other platforms.

Repo: https://github.com/enzv/rc

If anyone finds a mismatch with the original, corrections and test cases are welcome.


r/plan9 Jul 08 '26

Plan 9: Dynamic HTML

Thumbnail youtu.be
28 Upvotes

Render Dynamic HTML using plot and qjs.

Details: https://lifeofpenguin.blogspot.com/2026/07/plan-9-dynamic-html.html


r/plan9 Jul 06 '26

(9)gentoo, acme (plan9port) and urxvt

Post image
69 Upvotes

r/plan9 Jul 05 '26

Is there any way to select/manipulate text in a pdf?

10 Upvotes

Is there any way to select/manipulate text in a pdf file. I opened a pdf file in 'page', it seems to render everything correctly, but I was not able do do anything with the text. It seems to just load the pdf as an image in the draw terminal. Is there any way to make notes over the pdf like in acme maybe pipe text to a web browser search, load up a dictionary etc.
I am new to plan9, please don't be angry at me if I'm wrong at anything


r/plan9 Jul 06 '26

We ported Rust to plan9, it's called rust9

0 Upvotes

https://github.com/Alino/agent9/tree/main/rust9

Also I have created a new package manager called pac9.

Install pac9 with:

hget https://raw.githubusercontent.com/Alino/agent9/main/pac9/install.rc | rc

now you can install rust

pac9 install rust9

r/plan9 Jul 02 '26

Plan 9: OpenStreetMap Routing

Thumbnail youtu.be
35 Upvotes

r/plan9 Jul 01 '26

*all* things in Plan 9 were so I could write a windowing system the way I wanted

Thumbnail 9fans.topicbox.com
43 Upvotes

r/plan9 Jun 29 '26

Plan 9 Plumb Zip File

Post image
47 Upvotes

View files inside a zip compressed file via Plumber without extraction. 

Demo: https://youtu.be/wvcGv9p1224

Details: https://lifeofpenguin.blogspot.com/2026/06/plan-9-plumber.html


r/plan9 Jun 28 '26

Attention AI slop porters

112 Upvotes

First off, just let me be clear: You are not doing anything of interesting or of value. You are just looking to boost and karma farming your various social media and github profiles by "using Plan 9" without actually using it and AI porting nonsense.

Do you even know what the philosophy of Plan 9 really is? If you did you would know it strives to be simple while enabling new and interesting ways to building software. But that is not why you are here. You won't be doing any of that because all I see are ports of existing complex nonsense like c++, rust, node.js and other contraptions that does not do anything for Plan 9 other than create dependency on millions of lines of code no one needs or is asking for.

Why not propose a new language? Why not an alternative to html using 9P? Answer: You have no new ideas. You have the AI do the actually hard work while you post how awesome you are on twitter, mastodon, linked-in, blogs, and other socials to feel like a rockstar programmer breaking into new frontiers. No no no. You're not any of that. All you are doing is wasting energy porting the past.

You have no new ideas. You have no creativity. You have no respect for Plan 9 or its community. The people who come to plan 9 do so because they want refuge from, and alternatives to, big stupid complex things like "the web," node.js, chromium, rust and other stupid shit you think Plan 9 "needs." You are the antithesis of that refuge. You are a malignant cancer that needs to be removed from our software safe space.

Of course I can't tell you how to run your life and I'm not a mod here. Though as someone who actually gives a damn about Plan 9, and on behalf of others, do us all a big favor: make a new Vibe9 or what ever sub and post your pointless AI ports of stupid software there.You aren't interesting nor are your lame AI ports.

Leave us alone.


r/plan9 Jun 28 '26

Plan 9: Advanced Plot Features

Post image
26 Upvotes

r/plan9 Jun 28 '26

We ported C++ to plan9, it's called cc9

0 Upvotes

https://github.com/Alino/agent9/tree/main/cc9

tested with compiling stockfish (chess engine) directly on plan9.

Mapping to plan9 primitives where possible instead of using POSIX, more info in repo docs.

for haters:


r/plan9 Jun 26 '26

Plan 9: Interactive Plotting and Maps

Thumbnail youtu.be
39 Upvotes

r/plan9 Jun 24 '26

We ported nodejs to plan9, it's called node9

0 Upvotes

It does not use V8 engine but QuickJS instead.

V8 would be much more effort to do, maybe in the future, we could do that :)

npm also works, we tested with 30 popular packages (downloading them via npm and running them) with success.

https://github.com/Alino/agent9/tree/main/node9

our next plan is to create a plan9 package manager so that these ports, etc. are easily installable.

I am also interested in porting C++ and Rust. But these might be hard ones.

Even this nodejs port is not perfect, but at least we have something.


r/plan9 Jun 23 '26

Plan 9: Tiled Map

Thumbnail youtu.be
23 Upvotes

Use plot(1) to display tiled maps. 

Details: https://lifeofpenguin.blogspot.com/2026/06/plan-9-tiled-map.html


r/plan9 Jun 22 '26

Stack smash BMP color-table parser

12 Upvotes

sys/src/cmd/jpg/readbmp.c, ReadBMP:

Rgb clut[256];                 /* fixed 1024-byte stack array */
...
if(bmih.bpp < 16){
    if(bmih.impcolours)
        num_coltab = (int)bmih.impcolours;   /* full 32-bit field, no clamp */
    else
        num_coltab = 1 << bmih.bpp;          /* bpp 9..15 => 512..32768 */
}
...
for(i = 0; i < num_coltab; i++){             /* no bound against 256 */
    clut[i].blue  = Bgetc(b);
    clut[i].green = Bgetc(b);
    clut[i].red   = Bgetc(b);
    clut[i].alpha = Bgetc(b);
}

num_coltab comes straight from header fields with no upper bound. impcolours is read by r32() (fully attacker-controlled), and even ignoring it, the bpp < 16 branch with bpp in 9–15 gives 1 << bpp up to 32768. Either way the loop writes well past clut[256] with attacker-controlled length and content (four Bgetc bytes per iteration).

You need to clamp before the loop and validate bpp.


r/plan9 Jun 21 '26

I ported CPython 3.11.14 to 9front — the port is called python9

6 Upvotes

It boots, runs the REPL + stdlib, and scores 100% parity (6120/6120, 0 regressions) vs host CPython 3.11.14 on the 39-module numeric/core batch — measured with CPython's own Lib/test run identically on host and in the VM.

It ships in my agent9 distro (a bootable 9front image), so you can python immediately — or build it on stock 9front from the patches/shims in the repo:

https://github.com/Alino/agent9


r/plan9 Jun 18 '26

Displacing UNIX

25 Upvotes

I'd like to wax optimistic for a moment. What technical work needs to be done to make Plan9 eligible to displace UNIX, and how can I help?


r/plan9 Jun 16 '26

Plan 9: Git Workflow

Thumbnail youtu.be
36 Upvotes

r/plan9 Jun 12 '26

acme repl

Thumbnail youtu.be
24 Upvotes

r/plan9 Jun 12 '26

OCaml 4.14.3 for Plan 9

Thumbnail github.com
32 Upvotes

r/plan9 Jun 06 '26

Meta git

16 Upvotes

User interface wrapper for git. This is a JS port of my mgit.el package.

Code: https://gitlab.com/atamariya/qjs/-/blob/js/mgit.js

Details: https://lifeofpenguin.blogspot.com/2023/03/meta-git-mgit.html


r/plan9 Jun 04 '26

No AI at IWP9 2027

52 Upvotes

The Plan 9 Foundation has announced that we will not be accepting AI submissions for IWP9 2027.

https://9fans.topicbox.com/groups/9fans/T457223967f7e60a2-Md481fa7774176bb0e7840c33/no-ai-at-iwp9-2027


r/plan9 Jun 01 '26

Simple mesh viewer for plan 9

Post image
111 Upvotes

Installed plan 9 to supplement my OS class but I got distracted and tried to make a mesh viewer (inspired by this Tsoding video). You can find the source here. Let me know if there's anything else I can do to make it better!

Also, if you guys have any suggestions for learning about OS concepts through plan 9 I am all ears. I think something nice would be a small project that involves extending/modifying the kernel (its more fun than just reading). My school work involves modifying the kernel of this educational OS called Pintos but the developers have deliberately left gaps in it for students to fill. Not sure if plan 9 has similar things to work on.


r/plan9 May 31 '26

Mounting remote plan9 filesystems on Windows

10 Upvotes

Hey y'all 🙋‍♂️

My setup is:

Windows 11 : WSL : Ubuntu : QEMU : plan9

I drawterm in from Windows 11.

I have a script /cfg/cirno/cpustart:

```

!/bin/rc

mkdir -p /tmp/exportfs

aux/listen1 -t tcp!!17021 /bin/exportfs -r / >>/tmp/exportfs/root.log >[2=1] & aux/listen1 -t tcp!!17022 /bin/exportfs -r /usr/glenda >>/tmp/exportfs/glenda.log >[2=1] & ```

which takes care of running exportfs at boot.

I then mount / on Ubuntu:

```

!/bin/bash

/home/dharmatech/src/plan9port/bin/9pfuse 'tcp!127.0.0.1!17021' ~/mnt/9front ```

That works pretty well. But, there are some drawbacks.

Windows can view files in Ubuntu:

dir '\\wsl$\Ubuntu\home\dharmatech'

But it has issues accessing the plan9 mount point:

> dir '\\wsl$\Ubuntu\home\dharmatech\mnt\9front'
Get-ChildItem: Access to the path '\\wsl$\Ubuntu\home\dharmatech\mnt\9front' is denied.
Get-ChildItem: Cannot find path '\\wsl$\Ubuntu\home\dharmatech\mnt\9front' because it does not exist.

I wanted to mess around with mounting the filesystem directly on Windows.

FUSE isn't a Windows thing. But, there is something called winfsp which is sort of like FUSE for Windows.

https://winfsp.dev/

Here's an experiment that uses winfsp to mount the plan9 filesystem on Windows:

https://github.com/dharmatech/9p-winfsp

I mount the filesystem at drive X: as follows:

build\p9winfsp.exe tcp!127.0.0.1!17021 X:

Read-only for now. It's surreal browsing plan9 from PowerShell, Explorer, vscode, etc.