Plan9 has a GCC port on which pico compiles with a few changes. (The
changes are required because the GCC port itself is not complete!).
The binary runs with no problems.

About the lack of shared libraries on Plan9: Plan9 don't need shared
libraries because components on Plan9 can interact using just four
system calls - open, read, write and close. As an example consider a
graphics library that could be shared by various applications:

/* Pseudo C */
handle =3D  LoadLibrary ("");
CallFn (handle, "drawRect", 0, 0, 200, 200);
Close (handle);

The equivalent plan9 code will be something like this:

handle =3D open ("/sys/graphics/cntl");
cmd =3D "drawRect 0 0 200 200";
write (handle, cmd, strlen (cmd));
close (handle);

The interesting thing is that /sys/graphics/cntl/ could be on a remote
file system. This makes distributed computing easy and shared
libraries redundant.


-- Vijay

On Fri, Sep 3, 2010 at 1:17 PM, Mateusz Jan Przybylski
<> wrote:
> Hi Tomas,
> On Thursday 02 September 2010 19:32:40 you wrote:
>> > makes up my daily work environment ;)
>> cool. =A0I looked at it briefly but couldn't find my way around. =A0Do y=
>> really use that acme editor or how it's called? =A0Is it possible to run
>> it as console only with vi (or emacs;-)?
> <even more ot>
> To clear it up, i use the `Plan 9 from User Space' (i.e., the tools porte=
d to
> Mostly because of Acme -- for very quick edit/[compile/]run/open-file-wit=
> error cycle, and for the Rc shell -- practical for scripting.
> Acme requires GUI (it could be implemented with exact same semantics in t=
> mode, I guess, but it isn't). However, it uses little bandwidth, and so i=
> usual and natural to use it over network in both native Plan 9 and ported=
> version. ssh -Y -C gets the job done even on slow links.
> It took me a few (3?) months to learn to use Acme efficiently.
> Acme takes a three-buttoned mouse, preferably with a scroll. It's pretty
> important to have all three physical buttons, since a lot is done via cho=
> two buttons.
> Acme understands and uses a certain text processing language, based on se=
> It's executed via the `Edit THE_PROGRAM'.
> For example, I indent selected portion of text with:
> Edit s,^, =A0 =A0 =A0 ,g
> To find current selection address(es), I do
> Edit =3D
> etc.etc.
> You ought to have plumber up and running before you start Acme
> to get some extra functionality, mostly related to opening files you indi=
> with rightclick.
> You want the plumber started on the same machine the Acme is running (one=
> POSIX limitations)
> My plumbing rules (the file is $HOME/lib/plumbing) are as follows:
> #file / line in PHP format
> type is text
> data matches '(.+) on line ([0-9]+)'
> arg isfile $1
> data set $file
> attr add addr=3D$2
> plumb to edit
> include /usr/local/plan9/plumb/
>> > As a curiosity, there are no shared libraries in P9 -- only what we ca=
>> > `static linking'. It's awesome in the longer run <3
>> What's so awesome about it?
> No DLL hell.
> Programs (and thus processes) and libraries are very small.
> Greater percentage of code & data fits in CPU cache. Less indirect & more
> direct data access & code calls/jumps. etc. etc.
> and it avoids the worst bane of DLL so far:
> </even more ot>
> tl;dr:
> Plan 9 from User Space provides tools that may appeal to a long-time POSI=
> user ;-)
> Cheers,
> --
> Mateusz Jan Przybylski
> ``One can't proceed from the informal to the formal by formal means.''
> --

Reply via email to