As part of the collaboration between Canonical and the University of Bristol, the project will target AppArmor and snap-confine as industrial case studies. Both are critical to Ubuntu’s security posture, and provide a substantially harder test than isolated translation examples. They will help us evaluate whether the techniques can cope with the structure and constraints of mature production software.
Note that this is not a commitment to replace AppArmor or snap-confine with what is generated, rather that we have a vested interest in the software and are keen to see the results.
The most optimistic outcome would be a system capable of translating substantial C repositories into Rust with strong evidence of behavioural equivalence and relatively little manual intervention. The research could also produce better methods for decomposing repositories, stronger validation techniques, reusable translation datasets, improved program-repair tools and a more precise understanding of where automated migration stops being reliable.
-
Microsoft ships Ubuntu through WSL
-
Canonical is rewriting Ubuntu in Rust
-
Neither Canonical nor Rust are shy of permissive (re) licensing.
-
???
-
Profit
-
They haven’t got rust-utils or rust Sudo working yet.
coreutils ships with Ubunutu 26.04, albeit with a number of caveats.
Package: rust-coreutils Version: 0.8.0-0ubuntu3 Priority: required Section: utils Origin: Ubuntu Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com> Original-Maintainer: Debian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 16.0 MB Depends: libc6 (>= 2.43), libgcc-s1 (>= 4.2), libselinux1 (>= 3.1~) Conflicts: coreutils-from-uutils (<< 0.0.0~ubuntu22~) Homepage: https://github.com/uutils/coreutils Task: minimal Download-Size: 4,235 kB APT-Manual-Installed: no APT-Sources: http://archive.ubuntu.com/ubuntu resolute/main amd64 Packages Description: Universal coreutils utils, written in Rust This packages replaces the GNU coreutils package written in C. It should be a drop-in replacement but: Some options have NOT been implemented, Might have important bugs, Might be slower, Output of the binaries might be slightly different.
IMO this rust shit is just an attempt to convert a GPL licensed ecosystem into the Corpo-CHUD preferred MIT license.
Just like with Clang, the Corpo is simply intolerably offended by being asked to contribute back to the community.
Wow! What an observant smart thought.
Well, except for the fact that code conversion doesn’t give you the permission to change licenses or remove copyright. And the small matter of fact that both projects mentioned are Canonical projects, where whatever code that is not directly copyrighted by Canonical, is contributed by someone who signed an agreement with this stipulation:
(b) To the maximum extent permitted by the relevant law, You grant to Us a perpetual, worldwide, non-exclusive, transferable, royalty-free, irrevocable licence under the Copyright covering the Contribution, with the right to sublicense such rights through multiple tiers of sublicensees, to reproduce, modify, display, perform and distribute the Contribution as part of the Material; provided that this license is conditioned upon compliance with Section 2.3.
“Us” being Canonical of course. So they could actually “re-license” the projects right now, without changing a single line of code.
It’s always astonishing how condiment in their ignorance people are when it comes to these matters.
You geniuses are getting too predictable with your ignorance.
I literally wrote what’s quoted above yesterday replying to someone else.
If they’re translating GPL code to Rust, doesn’t that constitute a derived work and require the resulting code to be GPL licenced too?
Yeah, pretty sure rote translations of the same logic into a different language is considered a derivative work. This is why companies making their own version of copyrighted software often take a “clean room” approach to cover their asses where different people study the existing software and write the spec than the people implementing the spec.
Using Rust in no way requires the usage of pushover licenses. While it’s true that many devs are using pushover licenses, there are plenty of GPL Rust projects. You are just focusing on the sensationalized ones that get mentioned in news cycles.
- AGPL Rust projects on GitHub
- GPL Rust projects on GitHub
- Unfortunately, Codeberg doesn’t support filtering by license, but there are Rust projects on Codeberg, some of which will use copyleft licenses here.
- GNOME’s GitLab is also rife with GPL-licensed Rust projects.
It doesn’t require, but they use rust as an excuse to do that. Ubuntu’s attempts at rust rewrite was all license change iirc.
Which is exactly why you’re free to license your code under GPL. If corpos can use, then so can you.
Wait waddup with clang? Any sources I could read up on?
Clang seems to mainly be maintained by Apple under the Apache license
It’s the general opinion. Except if you’re a stray liberal on lemmy.ml/c/Linux
Lemmy is written in Rust. I don’t think dessalines is a stray liberal on lemmy.ml lol
You’re missing the key part of the argument: relicensing.
Converting a GPL codebase to another language creates a derivative work which, by the terms of the GPL, must be GPL-licensed.
Which speaks to my other comment: nothing about Rust necessitates using corpo licenses. The reason so many things are being rewritten in Rust is that it’s a great language and it provides tangible benefits to users. The owning class doesn’t need a special language as a pretext to de-GPL an ecosystem. They could do it with C, OCAML, or any other lang.
The language, as an inanimate object, doesn’t have an ideology, sure. However, people running the show in partnership with the ruling class have.
IMO any speech about Rust rewritings must denounce how the language can be, and it is, being used to attack software freedom.
IMO it isn’t in bad faith any speech making that apparent.
I’m not sure I understand what you meant (there may be a typo in there).
The language, as an inanimate object, doesn’t have an ideology, sure. However, people running the show in partnership with the ruling class have.
This, I agree with. It is very concerning that Rust has so much corporate buy-in. And the structure of The Rust Foundation being operated more like a business than something like the Zig Software Foundation does worry me.
But I often feel the need to chime-in and correct the common misconception that
Rust rewrite == corpo-relicense. It’sfalseand I think the conspiratorial coupling of Rust to corporate embrace-extend-extinguish only serves to discourage people from writing better software.I would love to see a community fork of Rust and its ecosystem one day, but I don’t think we get there by discouraging people from writing or using Rust software.
there’s gccrs
This is a bit of a tangent, so I didn’t include it in the above comment, but I don’t think “open source” is sufficiently anti-capitalist, so the (A)GPL was never going to save us to begin with. “Open source”, as defined by the OSI (a.k.a. a handful of megacorps in a trench coat) and the FSF, prevent “discrimination of use”. So if you want your software to be “open source” or “free software”, you have to accept that your software can be used by for-profit entities to exploit your labor, and potentially to perform heinous acts, such as military or surveillance usage. What we currently call “copyleft” is actually just copylib 😭
No open source license, not even the (A)GPL, allows you to forbid this. Unfortunately, I don’t see an alternative framework being widely adopted anytime soon. It seems that the best you can do for now is use niche licenses like this and just accept that your software can’t be considered “open source” :/
I always feel like the much bigger challenge is whether anyone can still maintain the codebase afterwards. You throw away so much institutional knowledge by doing a conversion like this…
You don’t just convert and sleep though. You convert and prune. You slowly rework parts post-conversion to use more sensible approaches/libraries. It’s not a one-and-done operation, it’s an ongoing thing that they judge the cost of investing in now is less than the long term maintaining C Ubuntu.
Well the issue is the chosen person is going to be automating the process, not doing it by hand, so there is no refactoring going on.
Look at the folks in college right now, no one can or will.
I’m not qualified about low level coding but isn’t it… useless? From what I get, Rust proposes to make low-level coding easier by forcing programmers into a certain workflow. But functioning C code is as good as functioning Rust code right?
But functioning C code is as good as functioning Rust code right?
Practically yes, but also no. The C pointer aliasing rules limit the optimizations the compiler can apply, since any
int *might point to anyintin scope. It’s even worse than that in the Linux kernel: since it has to be compiled with-fno-strict-aliasing, the compiler has to assume that any pointer can alias any variable in scope.In contrast, Rust simply disallows aliases to mutable variables and the compiler prevents them in safe code (you can write them in unsafe code but it’s instantly undefined behavior, which is why unsafe Rust is harder to write than C). Every variable that can change has one and only one name. This can sometimes allow the Rust compiler to optimize in ways that wouldn’t be possible in C.
But in practice the impact of this is pretty close to nil as long as you write smallish functions.
From what I get, Rust proposes to make low-level coding easier by forcing programmers into a certain workflow.
Yes and no. It forces programmers to a certain workflow like using a borrow checker to manage memory, but it actually makes programmer’s lives easier, because it prevents bugs from runtime. The compiler will throw a fit, over your buggy code if you try to compile, unlike C.
The funny part is that rust is actually a high level language that can do low level stuff.
But functioning C code is as good as functioning Rust code right?
Yes. I prefer C because it is easier to learn than rust, and feel like rust is more comparable to C++. I also feel like llm plus rust is a good combo, these days.
I don’t get why the rust cult mist always convert something from C to rust. Why not just make new software in rust and leave the stuff that works alone?
Because that would require competence.
It isn’t always about “new”. For example, some GNU binaries are decades old and were changed only to fix bugs.
C has major disadvantages compared to Rust, which is why even Linus Torvalds said a couple of years ago, to not write any new C code anymore for the Kernel and that old code will be transpiled steadily.
It is not about a cult. It is not about being fancy. It is quite the opposite. Choosing Rust over C is very rational.
Also, obligatory fuck Canonical. Automatic transpiling is such a stupid thing. Have fun maintaining the new code that was written by a machine, while not having any Rust experts in your team.
Because of the users that don’t want to change how they work. But still would like not to be owned by the onslaught of LLM wielding hackers









