libnodelay
plan9port
libnodelay | plan9port | |
---|---|---|
1 | 28 | |
6 | 1,559 | |
- | 0.3% | |
10.0 | 5.0 | |
over 2 years ago | 26 days ago | |
C | C | |
GNU General Public License v3.0 only | 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.
libnodelay
-
Golang is evil on shitty networks
> not to mention nearly 50% of every packet was literally packet headers
I was just looking at a similar issue with grpc-go, where it would somehow send a HEADERS frame, a DATA frame, and a terminal HEADERS frame in 3 different packets. The grpc server is a golang binary (lightstep collector), which definitely disables Nagle's algorithm as shown by strace output, and the flag can't be flipped back via the LD_PRELOAD trick (e.g. with a flipped version of https://github.com/sschroe/libnodelay) as the binary is statically linked.
I can't reproduce this with a dummy grpc-go server, where all 3 frames would be sent in the same packet. So I can't blame Nagle's algorithm, but I am still not sure why the lightstep collector behaves differently.
plan9port
-
Only9Fans
Acme is genuinely worth trying, you can run it on Linux/Mac without a VM [1]. I'm pretty sure Russ Cox [2] and Rob Pike use it as their daily driver which is insane because it doesn't even have syntax highlighting. I used it for years when I was in school as an exercise in masochism, but I learned a lot about Unix, and the mouse-driven workflow actually grew on me.
[1]: https://9fans.github.io/plan9port/
-
Show HN: Towards Oberon+ concurrency; request for comments
[2] https://9fans.github.io/plan9port/
-
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).
- A tutorial for the Sam command language (1986) [pdf]
- Makefile Tutorial
-
Mk: A Successor to Make [pdf]
I tried plan9port's mk for a moment out of curiosity. I quickly ran into an annoying usability problem: it compares file mtimes with second accuracy.
https://github.com/9fans/plan9port/blob/cc4571fec67407652b03...
With sub-second build times for individual targets, this causes mk to needlessly recompile files because the target may have the same mtime as the prerequisites.
- Plan 9 from User Space
What are some alternatives?
rke2
sam - An updated version of the sam text editor.
.NET Runtime - .NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
plan9-1e - Mirror of Plan 9 1st Edition from p9f
certificate-transparency-go - Auditing for TLS certificates (Go code)
Fontpkg-PxPlus_IBM_VGA8 - A monospace system font in the styles of regular, italic and underline.
grpc-go - The Go language implementation of gRPC. HTTP/2 based RPC
Shrine - A TempleOS distro for heretics
go - The Go programming language
fsv - fsv is a file system visualizer in cyberspace. It lays out files and directories in three dimensions, geometrically representing the file system hierarchy to allow visual overview and analysis.
kubernetes - Production-Grade Container Scheduling and Management
mk - make remade