Notice how the OP specifically said well-known and widely used. Yes Rust is currently cool, but way way more people can actually work productively with Python.
This is like MINIX vs Linux all over again. Yes, the microkernel architecture is a better concept, but the monolithic Linux was a better implementation.
Notice how the OP specifically said well-known and widely used.
I did notice. If Rust isn’t “widely used”, then I’ll need to let Apple, Microsoft, Google, Amazon, Mozilla, Huawei, Meta, the Linux kernel devs, and a fuckload of open-source projects know that they actually don’t exist.
It’s plently widely used, and unlike a scripting language (edit: Python), it’s performant – as server software should be. Rust is not a hard language to use or learn either, and it’s great for large projects.
I’ve learned dozens of languages over 40 years. Rust is one of the hardest I have tried to use for serious projects. It introduces completely new concepts that need to be deeply understood to be productive. It’s also one of the most convenient, well-tooled, and expressive languages I’ve used. But c’mon, as languages go, Rust is deep into BDSM territory.
As someone who routinely works on a complicated C++ codebase, had to use C, Python, and Java all the time through school, has had to use absolute trash like JavaScript and PHP, and has dabbled in languages similar-ish to Rust like Go and Swift, Rust to me is simple to work with.
The compiler is extremely helpful when I do something wrong, it has sensible conventions like immutability by default, Cargo is a streamlined build system, I’ve found the documentation easy to read, I actually prefer curly brace-delimited scopes to tabbed ones and explicit type declarations for readability, and in the obvious comparison to C/C++, Rust lacks extremely common memory footguns.
Obviously compared to Python – with its mountain of syntax sugar and a library for everything – Rust is going to be more difficult. But for languages in general? Rust is not at all one of the harder ones I’ve learned or used.
(Btw I hate Java; it’s the worst language I’ve ever used.)
How many times have you spent an entire day not moving forward on a project because you couldn’t figure out what the borrow checker was trying to tell you? Maybe you’re just a 10X developer. I feel quite qualified to inform you that for we mere mortals, Rust can very fairly be described as a relatively hard language.
Rust has completely unique paradigms not expressed in any other language! Things that no one coming to Rust has prior experience with. If you cannot admit that makes it harder than some random language that just fucks with syntax, …dude
While I agree with the general sentiment, scripting languages are perfectly fine to use for server software. Would you call hackernews slow? Its been running on lisp (originally Arc, now common lisp) for its entire existence.
Another fun example of popular interpreter is, y’know, the JVM.
Common Lisp could be compiled, so not the best example.
Lua is a way better example, since Lua scripts often finish in the time it takes Python to get going at all. And that’s with interpreted Lua, without JIT. I once straight up had to recheck if I left the dummy static output in there instead of calling my script, because the result was appearing instantly.
There’s also Fennel, a Lisp compiled to Lua on the fly. Since Lua is so snappy, the compilation overhead is unnoticeable.
Performance is an attractive metric because it’s something you can put a number on. It’s measurable, so comparisons are easy.
But there are so many other metrics that are more important.
Still, https://leafo.net/lapis/ looks like something I’d like to try sometime. I don’t know anything about the Lua web framework ecosystem, that’s just the first search result I found. Do you have any recommendations?
I’m more familiar with Lua for desktop scripting — I’m using it whenever I can, if it’s something that’s more than like three lines in Bash and the Lua libraries aren’t too bad. I’m even using it on the phone when dragging around blocks in Automate becomes too much (its minuscule footprint comes handy there). There’s also the excellent automation app Hammerspoon for Mac, which uses Lua for its scripting.
I’ve been vaguely looking now and then into using it for web in the manner of node.js, with asynchrony being handled on the Lua side — but was offput by the fact that many popular Luarocks libraries presumed synchronous workings, and async requires installing different libs if they even exist. Node has it better since the libs were developed to be async from the start. Iirc Luvit is what I was looking at, there are both libs and some kinda frameworks for it.
OpenResty and frameworks for it like Lapis could be the better way to go. Nginx is pretty much mandatory anyway, and afaiu synchronous libs can be used then, leaving it to Nginx to chuck requests into multiple Lua threads. A drawback is that LuaJIT, used in Resty, still supports only Lua 5.1 features, which is pretty damn old.
I haven’t looked into Lua for web in a few years, but since apparently nothing like Hammerspoon with its built-in http server exists for Linux, I’ll need to pick it up again, just to do some custom remote control from the phone.
Wait… PieFed uses Python? Holy shit… as someone who regularly uses both, Rust is such a better fit for something like this on this scale. That’s actually one of the best arguments I’ve heard against PieFed
Lemmy is so heave that @jeena@piefed.jeena.net replaced his lemmy instance with a piefed instance and it’s using less resources. I like Rust, but like every tool, it has to be used properly.
From what I understand, the limitation in speed/scalability for lemmy/piefed/mbin is the database, not the back end language, so the specific language used appears to matter much less than it would seem.
Piefed also appears to be less buggy overall. As an example, Lemmy has suffered from a persistent memory leak that’s been around for years, with no fix in sight. You can see the opinion of our sysadmin who has been running slrpnk.net (lemmy instance) for 5 years now to find that just because lemmy is built in a memory-safe language, it doesn’t automatically translate to a good experience.
Notice how the OP specifically said well-known and widely used. Yes Rust is currently cool, but way way more people can actually work productively with Python.
I think for a large project Rust should be easier to manage in the long run.
Also it’s safer and much faster than python.
This is like MINIX vs Linux all over again. Yes, the microkernel architecture is a better concept, but the monolithic Linux was a better implementation.
Well, you’ve got another think coming.
I did notice. If Rust isn’t “widely used”, then I’ll need to let Apple, Microsoft, Google, Amazon, Mozilla, Huawei, Meta, the Linux kernel devs, and a fuckload of open-source projects know that they actually don’t exist.
It’s plently widely used, and unlike
a scripting language(edit: Python), it’s performant – as server software should be. Rust is not a hard language to use or learn either, and it’s great for large projects.I’ve learned dozens of languages over 40 years. Rust is one of the hardest I have tried to use for serious projects. It introduces completely new concepts that need to be deeply understood to be productive. It’s also one of the most convenient, well-tooled, and expressive languages I’ve used. But c’mon, as languages go, Rust is deep into BDSM territory.
As someone who routinely works on a complicated C++ codebase, had to use C, Python, and Java all the time through school, has had to use absolute trash like JavaScript and PHP, and has dabbled in languages similar-ish to Rust like Go and Swift, Rust to me is simple to work with.
The compiler is extremely helpful when I do something wrong, it has sensible conventions like immutability by default, Cargo is a streamlined build system, I’ve found the documentation easy to read, I actually prefer curly brace-delimited scopes to tabbed ones and explicit type declarations for readability, and in the obvious comparison to C/C++, Rust lacks extremely common memory footguns.
Obviously compared to Python – with its mountain of syntax sugar and a library for everything – Rust is going to be more difficult. But for languages in general? Rust is not at all one of the harder ones I’ve learned or used.
(Btw I hate Java; it’s the worst language I’ve ever used.)
How many times have you spent an entire day not moving forward on a project because you couldn’t figure out what the borrow checker was trying to tell you? Maybe you’re just a 10X developer. I feel quite qualified to inform you that for we mere mortals, Rust can very fairly be described as a relatively hard language.
Rust has completely unique paradigms not expressed in any other language! Things that no one coming to Rust has prior experience with. If you cannot admit that makes it harder than some random language that just fucks with syntax, …dude
Rust is a superb language, but it is famously not easy to learn.
While I agree with the general sentiment, scripting languages are perfectly fine to use for server software. Would you call hackernews slow? Its been running on lisp (originally Arc, now common lisp) for its entire existence. Another fun example of popular interpreter is, y’know, the JVM.
Common Lisp could be compiled, so not the best example.
Lua is a way better example, since Lua scripts often finish in the time it takes Python to get going at all. And that’s with interpreted Lua, without JIT. I once straight up had to recheck if I left the dummy static output in there instead of calling my script, because the result was appearing instantly.
There’s also Fennel, a Lisp compiled to Lua on the fly. Since Lua is so snappy, the compilation overhead is unnoticeable.
Performance is an attractive metric because it’s something you can put a number on. It’s measurable, so comparisons are easy.
But there are so many other metrics that are more important.
Still, https://leafo.net/lapis/ looks like something I’d like to try sometime. I don’t know anything about the Lua web framework ecosystem, that’s just the first search result I found. Do you have any recommendations?
I’m more familiar with Lua for desktop scripting — I’m using it whenever I can, if it’s something that’s more than like three lines in Bash and the Lua libraries aren’t too bad. I’m even using it on the phone when dragging around blocks in Automate becomes too much (its minuscule footprint comes handy there). There’s also the excellent automation app Hammerspoon for Mac, which uses Lua for its scripting.
I’ve been vaguely looking now and then into using it for web in the manner of node.js, with asynchrony being handled on the Lua side — but was offput by the fact that many popular Luarocks libraries presumed synchronous workings, and async requires installing different libs if they even exist. Node has it better since the libs were developed to be async from the start. Iirc Luvit is what I was looking at, there are both libs and some kinda frameworks for it.
OpenResty and frameworks for it like Lapis could be the better way to go. Nginx is pretty much mandatory anyway, and afaiu synchronous libs can be used then, leaving it to Nginx to chuck requests into multiple Lua threads. A drawback is that LuaJIT, used in Resty, still supports only Lua 5.1 features, which is pretty damn old.
I haven’t looked into Lua for web in a few years, but since apparently nothing like Hammerspoon with its built-in http server exists for Linux, I’ll need to pick it up again, just to do some custom remote control from the phone.
Wait… PieFed uses Python? Holy shit… as someone who regularly uses both, Rust is such a better fit for something like this on this scale. That’s actually one of the best arguments I’ve heard against PieFed
Lemmy is so heave that @jeena@piefed.jeena.net replaced his lemmy instance with a piefed instance and it’s using less resources. I like Rust, but like every tool, it has to be used properly.
Heave, ho!
Python and bootstrap. Honestly, piefed feels like someone’s final cs50 project - which is why I’m hesitant to jump.
From what I understand, the limitation in speed/scalability for lemmy/piefed/mbin is the database, not the back end language, so the specific language used appears to matter much less than it would seem.
Piefed has some some pretty great features over lemmy, but for the sysadmin side of things, it has a noticeable improvement regarding network resource usage, and potentially raw speed.
Piefed also appears to be less buggy overall. As an example, Lemmy has suffered from a persistent memory leak that’s been around for years, with no fix in sight. You can see the opinion of our sysadmin who has been running slrpnk.net (lemmy instance) for 5 years now to find that just because lemmy is built in a memory-safe language, it doesn’t automatically translate to a good experience.
Is the project called PyFed?