I know nothing about rust but I assume borrow checker is some integral part of it that this guy somehow has never heard of?
post
Uses rust because it's memory safe but it is vibe coded and the developer doesn't know what a borrow checker is.
Just use a high level language at this point
Is rust low level? Genuine question, not trying to start an argument. I guess I sort of view it as low level but with a high level compiler lmao.
Rust is very popular because is as low level as C but has memory safety features builtin, so it is considered the best of both worlds. So basically what you said is correct.
(Disclaimer: I am not a Rust programmer, I prefer C/C++)
I guess in my mind I just associate raw pointers with low level. But I guess Rust lets you do that with unsafe blocks still?
Low level goes way beyond raw pointers. But yes, rust does have raw pointers.
Java does have raw pointers too I believe though. I wouldn't call it low level.
But low level is not well defined. At some point, the difference between low level and high level used to be whether you had to write a different program for each computer architecture. Under that definition, C is a high level language. Assembly (and very old languages) would be low level.
My own definition of low level is: if you have to care at all about memory management, it's low level.
Basically, if the language has a garbage collector or if it automatically counts references without you explicitly telling it so, it's a high level language for me.
Doesn't Rust's safety guarantees mean automatic reference counting? Or am I misunderstanding. I guess it means more like happening dynamically at runtime.
You can reference count, but you must do so explicitly, just like in C++ you have to explicitly use std::shared_ptr, in rust you must explicitly use std::rc::Rc.
Rusts' memory safety is managed at compile time, that's what the borrow checker does. It enforces a strict set of simple rules that guarantee at compile time that all the references are valid when they are used. This means that there is no runtime cost.
Q: "Why would you use Rc then? It would only introduce runtime overhead that is not needed because rust already checked that the program is correct"
A: the borrow checker ensures that your program is valid. However, not all valid programs are allowed by the borrow checker. That is what unsafe is for. unsafe allows you to skip some rust safety features if you want to make a program that is valid but rejected by the "safe" rust compiler. Rc uses unsafe internally to expose an API that is safe, but allows you to do things that would normally be rejected by rust.
Of course, the borrow checker is not all the safety features of rust. There are some safety features that actually do have runtime checks.
For example, you can try to access invalid memory by reading out of the bounds of a buffer/array. Most of the time, it is impossible/impractical to solve for this at compile time. Therefore, a bounds check is done on every array access, if the check fails, the program crashes. That check is done at run time. Many times the compiler will optimize those checks, but sometimes they just cannot be optimized out.
Is rust low level?
Yes, more or less. It's generally considered a "systems" programming language. But you can really use it for anything you want
the language restriction of rust
Rust has no restriction. The restriction is in his brain high on AI.
make sure to star the github repo so that I can create more projects like these.
That's not how any of this works, he's crazy.
don't you guys pay your rent and buy food with github stars?
As someone who does a lot of freelance and occasionally gets “do it for the exposure” types of gig offers, my go-to response is usually “people die from exposure when they can’t pay their rent.”
Also, you came to me to offer me the gig. I didn’t do any extra work to get you in my inbox. You found my contact info and reached out to me, so I clearly don’t need more exposure.
All this LLM shit just gave crackpots a new tool to annoy the hell out of the rest of us.
This is the new normal, it seems. My developer colleagues are bragging about how long it has been since they wrote a line of code.
My favorite is seeking feedback on reviews on stuff we own and people not responding and being like “I’m sorry I had Claude create 500+ PRs I can’t possibly respond to everything”
You don’t think there’s a problem with that!?!?
Same.
They always say that so proudly too. "It was all the AI bros!"
me staring at the mountain of shit they just plopped in front of me
Yes, I can tell.
Devs on my team are straight up saying in the sprint retros that the code is slop and needs to be modified after AI makes the suggestion. Our repo is being flooded with garbage that works out of the gate but costs so much extra to troubleshoot when it fails.
Sometimes I lament how long it has been since I wrote a single line of code, because I had to do reviews, testing, management, etc.
I guess some of us like the aspect of coding (as in writing code), while others only like the results (be it the product or the pay)
Yes, I have always enjoyed trying to create elegant architecture and code, more than I get satisfaction from the end result. I've always found it frustrating how many colleagues were prepared to throw together any old junk as long as the right thing came out in the end. On the positive side, maybe the AI does raise the quality of what some of them contribute.
"Borrow checker?"
"Thanks bro but don't need your checker got my own"
I don't code in rust, so I had no clue what a borrow checker was before seeing this and looking it up on the side.
I wouldn't say it was borrowed
Reminds me of a disclaimer in a public domain software package: "No warranty expressed or implied. If it breaks, you get to keep both pieces."
Those are such weird responses, is that user an agent?
Instead of "yes I vibecoded X because of Y" we get the classic respond like you're trying to hit the word limit on your essay.
I also like how they claim it's completely different to KRunner and then, save for OCR and whatever "circle to search" is, these are all features in KRunner.
Sloppers spend so much time talking with their shitbots that they tend to use similar vocabularies and prose. Some of them do have AI write up their responses, too. Some of them even integrate Grok directly into their keyboard.
Nah, I'm pretty sure every LLM out there knows what Rust has a borrow checker.
"It's not entirely vibecoded but..." Mmmmhmm. Wish people could just be transparent with themselves and their audiences.
Who is this borrow checker, and why is he so judgemental?
Behold, the future of programming.
I really need to keep my (actual) programming skills up to date, because they might be worth a ton of money in some years when everyone will need to unfuck their vibe coded bs.
TBH I only occasionally do some C# and C++ for about 20 years in my spare time, but even if I were hypothetically qualified to fix the world i'm kind of just planning to sit back and watch all of the sloppers go bankrupt for ruining their companies.
Even if the pay is good - unfucking vibed code is going to be very grueling. Like fixing legacy code but so much worse - because legacy code at least used to make sense at some point in the past.
legacy code at least used to make sense at some point in the past.
That assumption doesn't hold where I work.
Bold of you to assume anyone is going to care enough to hire professionals to fix old software. They're just going to vibe code a new program with the new whizbang-5000 LLM.
if rust is too hard, cant you just use another language for your program?
'Language restriction'. More like ability and/or willingness to learn restriction.
And of course a vibe coder can't write proper sentences with punctuation. If this is what their AI coding chatbot sees, I almost pity it.
You know, this shit makes me wanna learn Rust, it has been long since I really programmed anything.
(Lack of any idea to program more than anything tbh)
I recommend you and everyone start here: https://doc.rust-lang.org/book/
(there's even an interactive version with quizzes, etc)
(Lack of any idea to program more than anything tbh)
Make a launcher. Apparently they are all the rage nowadays.
If you want an idea: just yesterday libre office writer crashed on me like 7 times. Losing all unsaved progress each time.
If someone competent wrote a good OSS alternative I would download it in a heartbeat.
I'm not sure if your comment means you're rusty (heh) or a novice who hasn't tried programming in a while, so I'm sorry if this comes across as condescending. The best advice I try to give everyone is to chase the fun. That advice applies both to people learning and hobbyists doing stuff.
I see a lot of folks argue about what's the best way to begin or where the best place to begin is. There's no best way. Everything builds into each other. You become a better programmer regardless of what language you choose.
Rust was fun! I fiddled with it a bit a few years ago. The only real frustration I had was that it complained a lot about half correct programs. Like in other languages I may have just been able to put some bad code or something in some place I didn't really care about and wasn't focusing on, but Rust is very strict. It's been long enough now that I forget exactly what specifically bothered me. It could have just as easily been that it was because I didn't know it well so the compiler was just the messenger of that lol. Other languages could have just blown up at runtime.
I'm more a novice that hasn't programmed in a while. Did a 2 year course above higschool but below uni, and worked as intern for two months, but apart from that haven't really programmed as I don't know what to do if not given a goal.
I've heard a lot of good things about the book "automate the boring stuff with Python." It focuses on practical examples more than the theory. It's also available for free since it is licensed under Creative Commons. That said, I haven't personally checked it out. Just mentioning it as something that focuses on goals and works towards accomplishing them, which sounds like what you're looking for.
Rust takes a lot of getting used to if you’re more familiar with C-derived languages but it’s very cool. I’d recommend something small and not needing asynchronous code to begin with (async Rust is… hairy)
This is funny, and I do think it's fair to take little jabs at vibe coders, but just be careful. When I was learning to play a game in the past I asked a question. People thought the answer was obvious because the rules were on the thing I was asking about, but I was so new to the game I didn't even know what those words meant. If this was any other context, I'd be hesitant to give someone flak for not knowing a technical term like that. (The context being that somebody vibe coded something.)
On the contrary, the borrow checker is basically the first thing you learn about when writing in Rust as it's the primary "gimmick" of the language. Anyone writing a non-trivial program should have at least heard the term before, even if they don't fully understand how it works.
but I was so new to the game I didn't even know what those words meant
There's nothing wrong with being new to something. But you shouldn't be new to rust and releasing an app. Normally by the time you've written such an app you would be familiar with rust, but vibe coding allows you to bypass that wall
Eh, I don't really see a problem with releasing an app before you "should" release one. I don't think the world improves by discouraging amateurs from sharing their work. Now whether they actually try to learn and grow or just keep vibe coding, who knows.
I can see that actually. I guess the post points out two things:
- the dev being a a bit deceitful, downplaying their use of AI when clearly the project is like 90% AI
- the community being frustrated by the lack of quality signals in the new world. Previously programming took a lot more effort, so just the existance of an app already meant that the dev was mildly competent. And at the very least it meant that the dev could fix and maintain the app when something broke. Now those trust signals are gone.
I do not get it. Aside from the fact that the supposed "creator" writes a bit like he processes every sentence through AI-translation software... which might as well be reddit feature.
The borrow checker is a feature of Rust's compiler which places strict constraints on ownership of data to guarantee memory safety. It adds a lot of friction to writing Rust code if you're not experienced with the language (or sometimes even if you are). OP refers to the "language restriction of Rust", seemingly talking about the borrow checker, but has never even heard of it. It's kind of like someone claiming they didn't vibecoded their C++ project but having no idea what the STL is.
Sounds like java garbage collector but backwards... perhaps I will understand it better if I ever try Rust.
Thank you for explanation, YaBoyMax
Yes, the end goal is very similar to a garbage collector. Both are advanced systems of memory management.
The most important difference being that a garbage collector runs at runtime, while the borrow checker at compile time. Which means that the borrow checker has 0 impact on the program's performance. It just takes longer to compile the program.
Which also means that, while the garbage collector says "you can do whatever you want with memory, don't worry about it, I'll handle it for you". The borrow checker says "you fucking donkey. Why did you do that? I won't compile this if you don't fix it".
So you trade programmer comfort for performance (end user comfort).
What is borrow checker?
Answered in another reply.
Can I get a link?
The amount of programmers who have no idea what the borrow checker is kinda baffles me. You don’t need to know how to write rust to know what the borrow checker is.
I wouldn't expect anyone to know about it unless they had taken an interest in Rust. It's pretty unusual.
all 99 comments