Andreas Kling aka @awesomekling wrote:

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. 🤓🐞

26 points

I know some folks think this is annoying, but once again, note that if you’re the kind of user who shuns Brave because the CEO does stupid shit every once in a while, you’ll probably not look fondly upon Ladybird’s project lead and main developer being scared of pronouns.

See this issue on github.

If you don’t care about that, it’s an interesting project. Can’t say I approve, though.

Posting this to inform people and let each one decide what to do on their own. Don’t harass anyone, please.

permalink
report
reply
4 points
*

https://lemmy.ml/post/19080982/12955657

I feel like Linus has said much worse things, without much remorse (the attacks didn’t stop after he apologized), for many many years, but I have never seen anyone boycott Linux solely because of his attitude…

I think most people do not consider the Ladybird drama to be a big deal, it seems only a small vocal minority really care about it.

permalink
report
parent
reply
9 points
*

https://lemmy.ml/post/19080982/12955657

What do you want me to read here? I only saw three comments unrelated to anything I said.

I feel like Linus has said much worse things, without much remorse (the attacks didn’t stop after he apologized), for many many years,

Linus had a problem with criticizing people’s work respectfully. Rather, he’d straight up insult people, with little to no useful feedback, and people very much complained about it. Maintainers complained. It got to the point that he, thankfully, committed to taking a break from the kernel to work on improving himself. It wasn’t just an apology. He has since gotten much better. When he regresses, it’s entirely fair to criticize it.

but I have never seen anyone boycott Linux solely because of his attitude…

Then you’ll be happy to discover that many people working on Linux were quite public about their disapproval of Linus’ behavior back then. With him, with others, it was their complaints that got him to change.

I think most people do not consider the Ladybird drama to be a big deal, it seems only a small vocal minority really care about it.

Maybe. But it’s not about the size of the group, it’s about the complaints themselves. We don’t decide whether something is an issue worth caring about based on how many people think so. That’d be horrible. Racism was once the issue of a vocal minority; thank goodness people didn’t shut up about it and more eventually listened.

Andreas’ behavior reflects poorly on the project as a whole and ought to change. It pushes away folks who could be part of the community and helping the project, be it as users, developers or financial supporters. My comments aren’t intended to incentivize boycotting Ladybird because I don’t like the man, they’re meant to raise awareness of a serious issue in the hopes that, one day, perhaps he’ll grow up like Linus did.


I’d never mention this out of the blue, but since you brought up Linus, here’s my unnecessary fun opinion. I’d bet money that Andreas’ takes on inclusivity wouldn’t be appreciated by Linus, because the man’s one deranged step away from calling pronouns woke.

permalink
report
parent
reply
26 points

My idiology diverges significantly from the lemmy devs, but here we are.

permalink
report
parent
reply
2 points
*

My idiology diverges significantly from the lemmy devs, but here we are.

Would you be willing to elaborate on why that’s relevant here? As in, what do you mean by this?

Because Lemmy and Ladybird are wildly different projects, tackling completely different issues, and consequently users interact with them and their developers in very different ways. To put it a little bluntly, I think that observation sounds insightful, but it’s just silly when you dig deeper. I’d rather not waste time writing entire paragraphs based on an assumption of what you meant, though.

And I don’t know about you, but I’m keeping my eye on Sublinks. I appreciate Lemmy as a piece of software, but it doesn’t have my undying loyalty merely because I created an account on it, nor are it and its developers immune to my criticism just because I use it.

Edit: I’m worried that I might’ve been rude in my first 2 paragraphs. Sorry if it came across that way. To clear things up: I’m genuinely asking what’s the idea behind your comment, because I could see it being several things and I don’t want to have to answer all of them, or risk answering the wrong one.

permalink
report
parent
reply
11 points

I’m strongly opposed to the lemmy devs political and social views, yet I’m happily using the platform they developed.

I’m not quite sure how I can be clearer?

permalink
report
parent
reply
117 points

Really feels like a mistake. No major language exists without a major benefactor supporting it, and Swift’s only benefactor has zero interest in cross platform anything.

Good luck 5 years from now when cross platform Swift has gone the way of cross platform Safari.

permalink
report
reply
36 points

Actually, this isn’t true. Apple has a vested interest in cross platform Swift. They’ve been pushing hard for Swift on Linux because they want Swift to run on servers, and they’re right to. Look at how hard JavaScript dominates on the server-side because of one language everywhere.

permalink
report
parent
reply
19 points
*

So the Ladybird browser will have no trouble running on Linux servers? Great! Now how about platforms where people use web browsers? i.e. Android, and Windows… Apple has no vested interest in cross platform support to platforms that matter for a web browser.

permalink
report
parent
reply
17 points

Swift already works on Android and Windows. The support for Windows is improving and on the way to being official instead of questionable. The Browser Company is already building their app on Windows with Swift.

Swift’s governance has had some bumps in the past but is improving. Apple does have a vested interest in Swift adoption outside of their platforms. The more popular it is in general, the better the community and ecosystem get.

permalink
report
parent
reply
28 points

https://swift.org/

Swift is a fast, modern, and safe language for iOS, macOS, and other Apple platforms.

permalink
report
parent
reply
4 points
*

The text you quote literally appears under the heading “Apple Platforms”. Gee, why don’t they mention anybody else in the Apple section?

Immediately below that, there is a cross-platform section where they say “SwiftArgumentParser and Swift’s growing package ecosystem make developing cross-platform command-line tools a breeze.”

So, at worst, it sounds like the main Swift project may leave you to heft some of the GUI load yourself. Except 99% of what Ladybird does is under the hood processing that creates bitmaps for display. There is hardly any GUI really. Plus, Swift offers C++ interop.

Ladybird stems from SerenityOS where they write everything themselves. They have their own networking, GUI libraries, and crypto. Since splitting, they have adopted font rendering and media libraries from other projects ( largely available as C code I believe ).

Swift is cross-platform in all the ways the Ladybird gang needs it to be. It uses LLVM ( very cross-platform ) and the Swift compiler is meant to be cross-platform. All that will evolve and improve independent of Ladybird itself. The Ladybird team does not need many libraries from the Swift ecosystem. What they will need is pretty basic and fundamental.

Think back to Rust and Mozilla. When Mozilla rewrote the CSS parser in Rust, how much GUI rework was required? None? The CSS parser fell into the space defined by “command-line tools”.

permalink
report
parent
reply
10 points

That same page lists cross-platform CLI and server as intended use cases.

permalink
report
parent
reply
6 points

Also, Safari on Windows had low usage, and was probably a pain to maintain. Swift cross platform is more about abstracting out Apple specific things (like the standard library and UI toolkit). Apple has already been investing multi-year efforts into Swift on the server for longer than Safari on Windows existed. The last couple versions of Swift (~3-4years of development) have been almost entirely focused on safe concurrency, which is intended for server-side development.

permalink
report
parent
reply
28 points

Also, Safari on Windows had low usage, and was probably a pain to maintain.

I’m 90% sure the entire reason was that it would force all web developers who wanted to target iOS to buy Macs since that’s the only place you could then test against Safari / Webkit.

Apple has already been investing multi-year efforts into Swift on the server for longer than Safari on Windows existed. The last couple versions of Swift (~3-4years of development) have been almost entirely focused on safe concurrency, which is intended for server-side development.

That doesn’t mean they’ve invested anything in getting it running on consumer operating systems.

permalink
report
parent
reply
0 points

Well that was a bad idea. I don’t test nothing for Safari and the bugs it causes on my app are always a pain in the ass for users. Gotta make them regret their choice

permalink
report
parent
reply
1 point
*

Apple is still very vested in the success of Swift overall and also friendly to the cross-platform agenda.

What significant beneficiary is backing Rust?

At a deeper level, they both heavily lean on LLVM which of course is heavily supported by many players ( including Apple ) and which is also deeply cross-platform.

permalink
report
parent
reply
18 points

It is compiled with LLVM and Clang. Where is the danger of losing cross-platform compatibility? It will be fine.

permalink
report
parent
reply
19 points

That project doesn’t deserve the hype.

permalink
report
reply
1 point

I don’t think it has that much hype, but I don’t get why you think that a browser from scratch doesn’t deserve hype. It just makes you look like a basic hater IMO

permalink
report
parent
reply
5 points

I mean it has fuck all hype except the tiniest nichey audiences, so I guess that worked out.

permalink
report
parent
reply
0 points

They probably wanted to use Rust but got frustrated by its struct and impl paradigm.

permalink
report
reply
5 points

and the community not being transphobic

permalink
report
parent
reply
-10 points

Pretty rude to Rust programmers not choosing Rust for the re write.

permalink
report
reply
6 points

Rust is a lot more niche and intimidating of a language compared to Swift. Swift is familiar to C++ devs, while modernizing the language and toolchain, and providing safety guarantees.

permalink
report
parent
reply
9 points

Rust already has Mozilla.

permalink
report
parent
reply

Programming

!programming@programming.dev

Create post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Community stats

  • 3.7K

    Monthly active users

  • 1.8K

    Posts

  • 29K

    Comments