6 ms·
It would be quite something to rewrite glibc in Rust! Of course, its the C/C++ run time.
by ape4 3y ago
It would be quite something to rewrite glibc in Rust! Of course, its the C/C++ run time.
- yjftsjthsd-h 3y agoIt's a funny thought, but I don't think there's any reason it shouldn't work; IIRC redoxos is providing a libc written in rust for compatibility.
- Retr0id 3y agoThe redox impl is here: https://github.com/redox-os/relibc https://github.com/redox-os/relibc Apparently it also supports linux!
- Retr0id 3y agoIt would be quite amusing, but there's no reason in principle that it couldn't be done. The user-facing APIs would be just as dangerous as ever, but the internal implementation-detail stuff - like this "__vsyslog_internal" - could presumably be made safer.
- pjmlp 3y agoAs C++ advocate on C vs C++ flamewars, I already find quite ironic that GCC, clang, clang's libc and Windows Universal C Runtime are all written in C++. All those C users hatting on C++, while being forced to use tooling that has dropped C for C++.
- tmtvl 3y ago> All those C users hatting on C++ Such haberdashery! Anyway, something that I appreciate about the Rust community is their dedication to rewriting anything and everything in Rust. I'd love it if the Lisp community also had some of that drive. Seeing a library which uses a Python script to generate documentation is so disheartening, they don't need that horrendous, awful garbage, they could just do it in Lisp.
- gnabgib 3y agoI can't quite guess what you meant (balderdash[1]?), but I'm pretty sure you didn't mean a goods and wears shop[0] [0]: https://www.merriam-webster.com/dictionary/haberdashery https://www.merriam-webster.com/dictionary/haberdashery [1]: https://www.merriam-webster.com/dictionary/balderdash https://www.merriam-webster.com/dictionary/balderdash
- tmtvl 3y agoBecause 'hating' was misspelled 'hatting' I did mean to refer to a provider of men's wear such as hats.
- uecker 3y agoIndeed it is a shame. All bloated. It would be nice to have small and lean tool chain again.
- flohofwoe 3y agoYou're not exactly "forced" to use the C stdlib though. That's one nice thing about C, that the C stdlib is so bare bones that it could just as well not exist and not much would be lost (much harder to ignore the stdlib in C++, at least for some "modern C++" features). Besides: MUSL is written in plain C ;P
- pjmlp 3y agoYeah, but that isn't C any longer, it is a flavour of a language that largely looks like C. C is the complete printout from ISO/IEC 9899.
- nindalf 3y agoYeah it would. There are a few attempts, such as C-gull (https://github.com/sunfishcode/c-ward/tree/main/c-gull#readme https://github.com/sunfishcode/c-ward/tree/main/c-gull#readm...). > c-gull is a libc implementation. It is an implementation of the ABI described by the libc crate. > Currently it only supports --linux-gnu ABIs, though other ABIs could be added in the future. And currently this mostly focused on features needed by Rust programs, so it doesn't have all the C-idiomatic things like qsort yet, but they could be added in the future.
- flohofwoe 3y agoIt's not so unusual to write the C stdlib in a different language. E.g. Zig is getting a libc written in Zig: https://github.com/ziglang/zig/issues/514 https://github.com/ziglang/zig/issues/514 Rust would work too of course. MUSL is probably the only popular C stdlib actually written in C.
- 2OEH8eoCRo0 3y agoI think their point is that the c in glibc stands for C, as in the language. A glibc rewrite in Rust wouldn't be glibc anymore!
- wongarsu 3y agoWell, the Common Language Runtime that powers .Net languages isn't written with .Net, and the Java runtime environment isn't written in Java. I know these are a lot more involved than the functions provided by the glibc, but the point is that libc means Library for C, not Library in C. And of course on Unixes all software is expected to link to the glibc for basic functionality, no matter whether it's written in C or not. So the name is only historically accurate.
- wrs 3y agoYes, but even more so. Linux “expects” programs to link to libc, but many other Unix-like OSes require programs - in any language — to link to libc. The kernel syscall interface is not considered a stable API. Windows has a similar structure, but the required kernel interface library is not the same one as the C runtime, so it’s less confusing language-wise.
- pjmlp 3y ago> Well, the Common Language Runtime that powers .Net languages isn't written with .Net, and the Java runtime environment isn't written in Java. Actually a large part of it is, and in Java's case there are bootstraped implementations, OpenJDK isn't the only one. Java is like C and C++, where multiple implementations are available for a given specification. https://docs.oracle.com/javase/specs/ https://docs.oracle.com/javase/specs/