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.

  • SocialistVibes01@lemmy.mlOP
    link
    fedilink
    arrow-up
    2
    ·
    8 hours ago
    1. Microsoft ships Ubuntu through WSL

    2. Canonical is rewriting Ubuntu in Rust

    3. Neither Canonical nor Rust are shy of permissive (re) licensing.

    4. ???

    5. Profit

    • JAPHacake@feddit.uk
      link
      fedilink
      arrow-up
      1
      ·
      2 hours ago

      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. 
      
       
      
      
  • hackerwacker@lemmy.ml
    link
    fedilink
    arrow-up
    70
    arrow-down
    12
    ·
    edit-2
    1 day ago

    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.

    • ISO@lemmy.zip
      link
      fedilink
      arrow-up
      3
      arrow-down
      1
      ·
      6 hours ago

      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.

    • SavvyWolf@pawb.social
      link
      fedilink
      English
      arrow-up
      9
      ·
      10 hours ago

      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?

      • melfie@lemmy.zip
        link
        fedilink
        arrow-up
        3
        ·
        8 hours ago

        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.

    • trevor (any/all) @lemmy.blahaj.zone
      link
      fedilink
      English
      arrow-up
      48
      ·
      edit-2
      1 day ago

      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.

      • mexicancartel@lemmy.dbzer0.com
        link
        fedilink
        English
        arrow-up
        14
        ·
        18 hours ago

        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.

          • communism@lemmy.ml
            link
            fedilink
            arrow-up
            1
            ·
            4 hours ago

            Converting a GPL codebase to another language creates a derivative work which, by the terms of the GPL, must be GPL-licensed.

          • trevor (any/all) @lemmy.blahaj.zone
            link
            fedilink
            English
            arrow-up
            10
            ·
            1 day ago

            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.

            • SocialistVibes01@lemmy.mlOP
              link
              fedilink
              arrow-up
              7
              arrow-down
              4
              ·
              edit-2
              1 day ago

              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.

              • trevor (any/all) @lemmy.blahaj.zone
                link
                fedilink
                English
                arrow-up
                5
                ·
                edit-2
                1 day ago

                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’s false and 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.

                • trevor (any/all) @lemmy.blahaj.zone
                  link
                  fedilink
                  English
                  arrow-up
                  3
                  arrow-down
                  2
                  ·
                  edit-2
                  1 day ago

                  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” :/

  • Ephera@lemmy.ml
    link
    fedilink
    arrow-up
    51
    arrow-down
    3
    ·
    1 day ago

    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…

    • Mjb@feddit.uk
      link
      fedilink
      English
      arrow-up
      23
      ·
      1 day ago

      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.

      • Skullgrid@lemmy.world
        link
        fedilink
        arrow-up
        4
        ·
        1 day ago

        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.

  • lil_tank [any, he/him]@hexbear.net
    link
    fedilink
    English
    arrow-up
    3
    arrow-down
    1
    ·
    1 day ago

    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?

    • NonWonderDog [he/him]@hexbear.net
      link
      fedilink
      English
      arrow-up
      7
      ·
      edit-2
      19 hours ago

      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 any int in 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.

    • provectus@lemmy.ml
      link
      fedilink
      English
      arrow-up
      8
      arrow-down
      2
      ·
      edit-2
      1 day ago

      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.

  • ZkhqrD5o@lemmy.world
    link
    fedilink
    arrow-up
    8
    arrow-down
    11
    ·
    1 day ago

    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?

    • antianarchist@sopuli.xyz
      link
      fedilink
      arrow-up
      15
      ·
      edit-2
      1 day ago

      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.

    • dwt@feddit.org
      link
      fedilink
      Deutsch
      arrow-up
      3
      arrow-down
      7
      ·
      1 day ago

      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