plan9
CspChan
plan9 | CspChan | |
---|---|---|
11 | 4 | |
430 | 421 | |
0.0% | - | |
0.0 | 5.9 | |
about 3 years ago | 6 months ago | |
C | C | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
plan9
-
Nintendo(1)
Debatable: 80 columns ease reading, as each line is completely within the cone of vision. It's not enforced in their style(5)[0], but the code mostly and naturally (e.g. short variable names) falls within this limit (random sample[1]).
(I don't think that Plan9's "not thinking in terms of terminals", which is more of a "a better-than-X11 GUI is the default UI" is really relevant in this context)
[0]: https://man.cat-v.org/clive/6/style
[1]: https://github.com/plan9foundation/plan9/blob/main/sys/src/c...
- Plan 9 history in Git, from 1992-09-21 to 2015-01-10. (2021)
-
A pure C89 implementation of Go channels, including blocking and non-blocking selects
If you find it too complicated and closely tied to Go internals, you can also check out Plan 9 from User Space's version, which is itself based on libthread from Plan 9 starting from 3rd edition, which is itself based on Alef's implementation of channels (Alef is Go's grandfather).
- There is a book that explain the source code of the 3rd Edition Plan 9 kernel. Where can I find the full source code of the 3rd Ed?
-
Git repository of Plan 9 History, from 1992 to 2015
there's always one https://github.com/plan9foundation/plan9/search?q=fuck
- Git repository of Plan 9 commit history, from 1992 to 2015
CspChan
-
Show HN: Towards Oberon+ concurrency; request for comments
I've updated the paper and removed the SELECT, CLOSE and CLOSED procedures as discussed.
I still think a close feature which - in contrast to Go - would just signal all waiting threads and abandon communication could be useful. I implemented this in the C library I use for experiments: https://github.com/rochus-keller/CspChan
> the proposal for it to take a timeout, which could then be detected via execution of ELSE?
It could still be added in future, e.g. as an additional parameter to SEND or RECEIVE, but in a similar way to CLOSE it makes things more complicated, and there is an alternative solution with a separate thread sending after a delay a over a channel which receives in a WITH statement where the candidate channel waits.
> have you considered asking Dr Wirth for feedback?
I have qualms about bothering him with this in his well-deserved retirement, especially as he has demonstrated with Oberon-07 in which direction he would develop the language (see also https://oberon-lang.github.io/2021/07/16/comparing-oberon+-w...).
- Show HN: A pure C89 implementation of Go channels, with blocking selects
- A pure C89 implementation of Go channels, including blocking and non-blocking selects
What are some alternatives?
plan9-3e - Mirror of Plan 9 3rd Edition from p9f
go - The Go programming language
libdill - Structured concurrency in C
libmill - Go-style concurrency in C
plan9port - Plan 9 from User Space
specification - The Oberon+ Programming Language Specification