4 ms·
I personally find the mention of the implementation language as part of a project description to be slightly interesting/informative, or at worst benign. Unlike
by zellyn 3y ago
I personally find the mention of the implementation language as part of a project description to be slightly interesting/informative, or at worst benign. Unlike the inevitable comments complaining about it.
Mercurial, written in Python, definitely experienced performance problems. Hilariously, the first search result I found when searching for "mercurial performance python" is https://wiki.mercurial-scm.org/OxidationPlan https://wiki.mercurial-scm.org/OxidationPlan, which discusses reimplementing parts of Mercurial in — you guessed it — Rust.
- fifilura 3y agoThank you! And informative. Some days are just like that. Your synapses trigger on something because of historical reasons.
- michaelt 3y ago> Your synapses trigger on something because of historical reasons. When you read a product description written by someone who hopes to draw positive attention to the product, it'll usually draw attention to its most important and distinctive features first. For example, if you look up Stripe, you'll get "Stripe | Financial Infrastructure for the Internet - Stripe powers online and in-person payment processing and financial solutions for businesses of all sizes." If you look up Uber you'll get "Get a ride in minutes. Or become a driver and earn money on your schedule." Clang? "The Clang project provides a language front-end and tooling infrastructure for languages in the C language family". Ubuntu? "Ubuntu is the modern, open source operating system on Linux for the enterprise server, desktop, cloud, and IoT." When the place you usually see the product's best feature says "written in rust" it sounds like they're damning it with faint praise. Of course, not everyone follows the 'best feature first' pattern. For example, when asked about Stripe the first thing Wikipedia tells you is that it's dual-headquartered in South San Francisco, California, United States and Dublin, Ireland.
- pmeunier 3y agoWait, nobody in the Pijul team brags about being in Rust. If Pijul were written today it would probably be in Zig, for many reasons.
- zellyn 3y agoI'm fascinated by this. I like both Rust and Zig, but I would have guessed that for the kind of complex data structure manipulation required for CRDTs and other clever algorithms Pijul employs, the degree reliable correctness Rust gives you would win out. Are you doing something (like entity-component models?) that disables much of Rust's smarts? Or is it just that much more pleasant to program in Zig?
- pmeunier 3y agoI've done very little Zig, so this may not be very informed. Indeed we don't use Rust intrinsically that much. With associated type constructors, Rust would be the best language (I know of) to write Pijul in. Without it, most of the polymorphism uses macros anyway. Zig or Rust would make little difference for Sanakirja I believe, and this is where the entire CRDT thing is done.
- Lacusch 3y agoAs somebody who's interested in both languages and follow zog development relatively closely I'm interested in these many reasons. Can you give a few example of zig features or other reasons that would be useful for Pijul over Rust?
- pmeunier 3y agoIt's mostly about Rust adding lots of features I am not interested in, and not adding the ones I need for the project. Sanakirja was hard to write in Rust, not a single concept of the language matched what I needed, in the end I had to write tons of macros, and the API is hard to use. Zig would have probably made it more natural from the beginning. There are other things related to the community/zealots/Mozilla/Rust foundation, but I'm not sure this is the proper place. Edit: Git zealots are worse than Rust zealots, I attribute this to Git being "harder to learn" (i.e. never really does what people think it does) than Rust.
- zellyn 3y agoBut implementation language is also predictive of the values and style likely to be embraced by a project. I found my current job (as Square) because in 2015, I got on the Atlanta 404 Slack, and asked “Who in Atlanta is doing interesting things in Go?” For Go, that has diluted over time as Go has become more of a default choice, but in 2015, it was highly predictive of a certain sort of work and a certain mindset. And, in some domains (version control is one of them; type checkers/linters/bundlers/compilers are another), it has proven to be extremely important.
- GuB-42 3y agoThat's the criticism I make to all these services and software that use the privacy argument. Most of the times, privacy is not hard, you just have to not do stuff (tracking, data collection, etc...), and maybe use some crypto library. But before telling me what you don't do, what do you do? For example, when I see a search engine claiming privacy, I think "yet another Bing proxy", now, what do your search engine have over the other Bing proxies? Better results? Performance? A specific niche? Better UI? That's what I want to know.
- zellyn 3y agoNo worries. And sorry for my unnecessarily sharp response! :-)