• Activity
  • Votes
  • Comments
  • New
  • All activity
  • Showing only topics with the tag "open source". Back to normal view
    1. Ladybird chooses Swift as its successor language to C++

      I've copied the full tweet below (it's from August, I missed this news somehow): We've been evaluating a number of C++ successor languages for @ladybirdbrowser , and the one best suited to our...

      I've copied the full tweet below (it's from August, I missed this news somehow):

      We've been evaluating a number of C++ successor languages for @ladybirdbrowser , and the one best suited to our needs appears to be @SwiftLang 🪶

      Over the last few months, I've asked a bunch of folks to pick some little part of our project and try rewriting it in the different languages we were evaluating. The feedback was very clear: everyone preferred Swift!

      Why do we like Swift?

      First off, Swift has both memory & data race safety (as of v6). It's also a modern language with solid ergonomics.

      Something that matters to us a lot is OO. Web specs & browser internals tend to be highly object-oriented, and life is easier when you can model specs closely in your code. Swift has first-class OO support, in many ways even nicer than C++.

      The Swift team is also investing heavily in C++ interop, which means there's a real path to incremental adoption, not just gigantic rewrites.

      Strong ties to Apple?

      Swift has historically been strongly tied to Apple and their platforms, but in the last year, there's been a push for "swiftlang" to become more independent. (It's now in a separate GitHub org, no longer in "apple", for example).

      Support for non-Apple platforms is also improving, as is the support for other, LSP-based development environments.

      What happens next?

      We aren't able to start using it just yet, as the current release of Swift ships with a version of Clang that's too old to grok our existing C++ codebase. But when Swift 6 comes out of beta this fall, we will begin using it!

      No language is perfect, and there are a lot of things here that we don't know yet. I'm not aware of anyone doing browser engine stuff in Swift before, so we'll probably end up with feedback for the Swift team as well.

      I'm super excited about this! We must steer Ladybird towards memory safety, and the first step is selecting a successor language that we can begin adopting very soon. 🤓🐞


      Nitter link:

      https://nitter.poast.org/awesomekling/status/1822236888188498031

      Original post:

      https://x.com/awesomekling/status/1822236888188498031


      Some of Kling's replies in that thread are also pretty interesting:

      My general thoughts on Rust:
      - Excellent for short-lived programs that transform input A to output B
      - Clunky for long-lived programs that maintain large complex object graphs
      - Really impressive ecosystem
      - Toxic community

      In the end it came down to Swift vs Rust, and Swift is strictly better in OO support and C++ interop.


      The September monthly report for Ladybird released the day after I posted this. It provides basically the same information:

      This Month in Ladybird September 2024

      The section about Swift:

      Successor language search progress

      Over the past year, our core contributors have been exploring potential safe languages to complement or succeed C++. We evaluated several options, including Rust, Swift, Fil-C, and others. While some languages offered compelling features, many fell short in either C++ interoperability or providing the level of memory safety we needed.

      After extensive testing and discussion, Swift emerged as the top choice among our core developers, thanks to the new Swift 6 interoperability features and its growing cross-platform support. As a result, we’ve decided to adopt Swift as our C++ successor language.

      That said, this will be an incremental shift. The existing C++ codebase is deeply embedded in the project, and a complete rewrite would be impractical. Instead, we’ll be gradually introducing new components in Swift, carefully integrating them with our existing C++ code over time. Look forward to a dedicated blog post on the topic soon.

      32 votes
    2. What is a software you wish existed?

      I've been feeling pretty bored for a while and my job isn't really giving something fulfilling to do, So I want to make something. However, I don't want to make something useless. unfortunately, I...

      I've been feeling pretty bored for a while and my job isn't really giving something fulfilling to do, So I want to make something.

      However, I don't want to make something useless. unfortunately, I can't think of any software I'm in a particular need for. I would love to make something that solves a real problem for a real human.

      So, please tell me, what's something that you wish existed because it would reduce suffering in your life that little (or big) bit?


      Edit: Wow wow and wow, I didn't expect this thread that I made on a whim to blow up so much. So many idead!

      69 votes
    3. Minimalist Android launcher recommendations

      Currently, I'm using the Aero launcher, and I really like having all the names of my apps listed out, but if I could have something with a to do list and then swipe for apps, it would be kind of...

      Currently, I'm using the Aero launcher, and I really like having all the names of my apps listed out, but if I could have something with a to do list and then swipe for apps, it would be kind of neat.

      Other wish list functions:

      • Folders for Apps.
      • Able to add PWA or a URL to a list of apps.
      • Start a search from searching through all apps.
      • Corner widgets/shortcuts
      • A pony!

      Willing to poke around if there is an open source project I can add stuff too.

      24 votes
    4. “It can’t be that easy, right?” (a Linux desktop environment appreciation post)

      I daily drive Pop!_OS, which uses the GNOME desktop environment. I know that DEs are a hotly contested space among Linux users, and my use of GNOME wasn’t so much a choice as it was a default:...

      I daily drive Pop!_OS, which uses the GNOME desktop environment. I know that DEs are a hotly contested space among Linux users, and my use of GNOME wasn’t so much a choice as it was a default: it’s what came with my distro.

      I like GNOME. I don’t really understand the hate it often gets, but I also don’t really have the legacy understanding of Linux that a lot of people do, and it seems like a lot of distaste lies there. I’m as casual a user as they come — Linux for me is like a Chromebook: it “just works” in that I pretty much need it to get me online and manage some documents. (I do also play games on it, for which Steam and Proton have been a huge boon.)

      I also have a Steam Deck, and it uses KDE’s Plasma on the desktop side, so I got to see what that was like. I also like KDE. It’s very different from GNOME, but I can see the appeal. It feels more like Windows but also has a lot of little nice touches and additions. Also, no ads.

      This got me thinking: what if I tried using KDE instead of GNOME on my laptop?

      I assumed that this would be a big deal. Like, I would have to completely gut my distribution, or reinstall it fresh. Multiple hours of work. Lots of preparation. Looking up myriad terminal commands I don’t understand and hoping they do what they’re supposed to, because if they don’t I’m really screwed — as soon as something goes wrong “under the hood” I’m dead in the water when it comes to fixing it.

      But I was looking on System76’s support site and they made it seem super simple. A single terminal command to install the whole DE?

      It can’t be that easy, right?

      I am astonished to say that it WAS.

      I ran the command, had to select between gdm3 and sddm (a choice which I didn’t understand at all so I searched around a bit before just going with the default: gdm3), and then rebooted.

      I can now select between GNOME and KDE on the login screen, and both work flawlessly. It was so easy.

      I don’t know who to credit for this. Did System76 do a great job of making this easy on their distro? Did the KDE team work hard to make their DE effortlessly plug-and-play? Is this just a general product of the way Linux handles its different components?

      I don’t know but I’m willing to spread the love around to anyone and everyone who contributes to Linux and all of its facets. It’s wild to me that I can so easily reskin my entire operating system in the same way that I used to do with Winamp back in the day. I keep waiting for something to go wrong, but after a few days of this, I’ve realized that everything still “just works,” automagically.

      A big thanks here to anyone who has a hand in open-source software and making computing better for people like me, who have (mostly) no idea what they’re doing.

      56 votes