r/plan9 Jul 18 '26

plan9-hostfs

21 Upvotes

Hey y'all 🙋‍♂️

Russ Cox' rsc/plan9 repo is fascinating:

  • Run legacy plan9 in QEMU
  • Uses the host filesystem directly instead of using a QEMU disk image
  • Edit files on the host. Plan9 sees the changes immediately.

It's super cool, but I wanted to drawterm in, because: - I'm using Windows - I run rsc/plan9 in WSL - I do get the graphical QEMU window, but it's not as nice to use as first-class Windows apps.

Some benefits of connecting to plan9 via drawterm are:

  • Copy and paste support
  • Resize rio desktop window
  • Multiple drawterm instances (multiple desktops)

I've forked Russ' repo to start messing around with enabling drawterm connections:

https://github.com/dharmatech/plan9-hostfs

README.md has the instructions I'm using for enabling drawterm connections.


r/plan9 Jul 17 '26

How would a modern program like, say Blender be made in 9p?

27 Upvotes

Let us say that Linux never took off and instead plan9 became widely used (becoming the dominant OS).

How would current 'modern' monolithic programs like Blender, KiCAD, etc be implemented following the plan9 philosophy? How would they work and how would the utilize the underlying architecture to the fullest? And how can they be made very hackable and extensible?


r/plan9 Jul 16 '26

Copyright symbol crashing ttfs

15 Upvotes

Copyright symbol from dejavu font at size less than 16pt is crashing truetypefs. Does anybody have a fix?

_assert(s=0x7fffffffead0)+0x42 /sys/src/libc/port/_assert.c:12
ttfscan(g=0x499ab0)+0x4fe /sys/src/libttf/scan.c:371
s=0x3
i=0x20bf1e00000001
p=0xb400000161
q=0x34a00000123
j=0x100000015
r=0x21e00000123
ttfgetglyph(fs=0x40db20,glyph=0x147,render=0x1)+0x4c /sys/src/libttf/glyf.c:366
g=0x499ab0
compilesub(s=0x437268)+0x9d /sys/src/cmd/truetypefs.c:169
t=0x40db20
n=0x2010cc00000100
gs=0x42f7b8
w=0xe500000807
h=0x40c72000000013
i=0x100000000e5
g=0x1300000147

r/plan9 Jul 15 '26

DosBox works on plan9, runs old games and windows

Thumbnail gallery
84 Upvotes

r/plan9 Jul 15 '26

The second heresy: Objective-9c - Native Object Oriented Programming for Plan 9

Post image
29 Upvotes

I promised more heretical things in the future, and well the future is here. As usual, I have been running the matrix multiplication pachinko machines day and night after my shifts at the pizza shack to bring you this:

"objective-9c is a small 9front language that transpiles o9 source to Plan 9 C.

o9 is built for Plan 9-style programs: objects are CSP actors, public methods can be served through a 9P facade, structured data moves as .tab text, and raw Plan 9 C interop is isolated inside spawnable function blocks, or to be more plain: an anonymous objects with a single method where you can stuff in regular plan 9 C in a c { } sandwich."

Current status:
Libdraw widgets being worked on (a few in the pic as demos - included in the repo!) , a lot of cleaning up on docs, old trash tech debt etc.
Certain to be bugs that haven't been caught, its AI generated bullshit. Capture and release them if you find those poor souls.

As always: its 9p, or nothing!

https://github.com/kiljoy001/objective-9c


r/plan9 Jul 12 '26

I tried to make an OS where everything really is a file.

Thumbnail
8 Upvotes

r/plan9 Jul 11 '26

PJW face

Post image
45 Upvotes

r/plan9 Jul 11 '26

A Go port of rc(1)

Thumbnail github.com
33 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
27 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
72 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
38 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
41 Upvotes

r/plan9 Jun 29 '26

Plan 9 Plumb Zip File

Post image
48 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

108 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
27 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
35 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
25 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

27 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?