▲ 239 ▼ Microsoft wants to replace its entire C and C++ codebase, perhaps by 2030 (www.theregister.com) submitted 10 months ago by hal_5700X@sh.itjust.works to c/technology@lemmy.world 87 comments fedilink hide all child comments
[–] tonytins@pawb.social 76 points 10 months ago (8 children) Plans move to Rust, with help from AI As if AI could handle the mountains of checks Rust has you account for. permalink fedilink source hideshow 8 child comments replies: [–] a_non_monotonic_function@lemmy.world 48 points 10 months ago AI: This is unsafe. This is also unsafe. This third one? Unsafe. permalink fedilink source parent [–] tal@lemmy.today 5 points 10 months ago* (4 children) While I agree that I don't think that an LLM is going to do the heavy lifting of making full use of Rust's type system, I assume that Rust has some way of overriding type-induced checks. If your goal is just to get to a mechanically-equivalent-to-C++ Rust version, rather than making full use of its type system to try to make the code as correct as possible, you could maybe do that. It could provide the benefit of a starting place to start using the type system to do additional checks. permalink fedilink source parent hideshow 4 child comments replies: [–] darvit@lemmy.darvit.nl 23 points 10 months ago unsafe { <the whole codebase> } permalink fedilink source parent [–] MartianSands@sh.itjust.works 8 points 10 months ago (1 child) The safety designed into Rust is suddenly foreign to the C family that I'm honestly not sure you can do that. Even "unsafe" Rust doesn't completely switch off the enforced safety permalink fedilink source parent hideshow 1 child comment replies: [–] InnerScientist@lemmy.world 3 points 10 months ago Yeah, to quote the manual: "[Unsafe Rust allows you to] Dereference a raw pointer. Call an unsafe function or method. Access or modify a mutable static variable. Implement an unsafe trait. Access fields of unions. [...] The unsafe keyword only gives you access to these five features that are then not checked by the compiler for memory safety." https://doc.rust-lang.org/book/ch20-01-unsafe-rust.html permalink fedilink source parent [–] Miaou@jlai.lu 3 points 10 months ago* If they rely on UB at all, then this won't work. At best you get a compile time error, but more likely your rust program will do weird stuff with memory. And given how much people rely on compilers "acting nice" when it comes to aliasing (something rust does not fuck around with), I wouldn't hold my breathe permalink fedilink source parent [–] vala@lemmy.dbzer0.com 2 points 10 months ago (1 child) I'm my experience, LLMs are especially bad at Rust. They really don't seem to grasp the borrow checker. permalink fedilink source parent hideshow 1 child comment replies: [–] sudoer777@lemmy.ml 1 point 10 months ago* I used Rust with Deepseek for a small project for copying and pasting snippets and it went pretty well, but I wouldn't trust it to work with and debug a codebase on its own, especially not an OS permalink fedilink source parent
[–] a_non_monotonic_function@lemmy.world 48 points 10 months ago AI: This is unsafe. This is also unsafe. This third one? Unsafe. permalink fedilink source parent
[–] tal@lemmy.today 5 points 10 months ago* (4 children) While I agree that I don't think that an LLM is going to do the heavy lifting of making full use of Rust's type system, I assume that Rust has some way of overriding type-induced checks. If your goal is just to get to a mechanically-equivalent-to-C++ Rust version, rather than making full use of its type system to try to make the code as correct as possible, you could maybe do that. It could provide the benefit of a starting place to start using the type system to do additional checks. permalink fedilink source parent hideshow 4 child comments replies: [–] darvit@lemmy.darvit.nl 23 points 10 months ago unsafe { <the whole codebase> } permalink fedilink source parent [–] MartianSands@sh.itjust.works 8 points 10 months ago (1 child) The safety designed into Rust is suddenly foreign to the C family that I'm honestly not sure you can do that. Even "unsafe" Rust doesn't completely switch off the enforced safety permalink fedilink source parent hideshow 1 child comment replies: [–] InnerScientist@lemmy.world 3 points 10 months ago Yeah, to quote the manual: "[Unsafe Rust allows you to] Dereference a raw pointer. Call an unsafe function or method. Access or modify a mutable static variable. Implement an unsafe trait. Access fields of unions. [...] The unsafe keyword only gives you access to these five features that are then not checked by the compiler for memory safety." https://doc.rust-lang.org/book/ch20-01-unsafe-rust.html permalink fedilink source parent [–] Miaou@jlai.lu 3 points 10 months ago* If they rely on UB at all, then this won't work. At best you get a compile time error, but more likely your rust program will do weird stuff with memory. And given how much people rely on compilers "acting nice" when it comes to aliasing (something rust does not fuck around with), I wouldn't hold my breathe permalink fedilink source parent
[–] darvit@lemmy.darvit.nl 23 points 10 months ago unsafe { <the whole codebase> } permalink fedilink source parent
[–] MartianSands@sh.itjust.works 8 points 10 months ago (1 child) The safety designed into Rust is suddenly foreign to the C family that I'm honestly not sure you can do that. Even "unsafe" Rust doesn't completely switch off the enforced safety permalink fedilink source parent hideshow 1 child comment replies: [–] InnerScientist@lemmy.world 3 points 10 months ago Yeah, to quote the manual: "[Unsafe Rust allows you to] Dereference a raw pointer. Call an unsafe function or method. Access or modify a mutable static variable. Implement an unsafe trait. Access fields of unions. [...] The unsafe keyword only gives you access to these five features that are then not checked by the compiler for memory safety." https://doc.rust-lang.org/book/ch20-01-unsafe-rust.html permalink fedilink source parent
[–] InnerScientist@lemmy.world 3 points 10 months ago Yeah, to quote the manual: "[Unsafe Rust allows you to] Dereference a raw pointer. Call an unsafe function or method. Access or modify a mutable static variable. Implement an unsafe trait. Access fields of unions. [...] The unsafe keyword only gives you access to these five features that are then not checked by the compiler for memory safety." https://doc.rust-lang.org/book/ch20-01-unsafe-rust.html permalink fedilink source parent
[–] Miaou@jlai.lu 3 points 10 months ago* If they rely on UB at all, then this won't work. At best you get a compile time error, but more likely your rust program will do weird stuff with memory. And given how much people rely on compilers "acting nice" when it comes to aliasing (something rust does not fuck around with), I wouldn't hold my breathe permalink fedilink source parent
[–] vala@lemmy.dbzer0.com 2 points 10 months ago (1 child) I'm my experience, LLMs are especially bad at Rust. They really don't seem to grasp the borrow checker. permalink fedilink source parent hideshow 1 child comment replies: [–] sudoer777@lemmy.ml 1 point 10 months ago* I used Rust with Deepseek for a small project for copying and pasting snippets and it went pretty well, but I wouldn't trust it to work with and debug a codebase on its own, especially not an OS permalink fedilink source parent
[–] sudoer777@lemmy.ml 1 point 10 months ago* I used Rust with Deepseek for a small project for copying and pasting snippets and it went pretty well, but I wouldn't trust it to work with and debug a codebase on its own, especially not an OS permalink fedilink source parent