Andreas Kling Profile picture
Aug 10, 2024 1 tweets 2 min read Read on X
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. 🤓🐞

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Andreas Kling

Andreas Kling Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @awesomekling

Feb 27
New "Terms of Use" from Mozilla look slightly ominous.. Image
Of course, users are predictably concerned. Image
Okay, so what's in the Privacy Notice?

Here are 3 sections that raised an eyebrow for me.

If you're a Firefox user, go read the whole thing and decide for yourself what to think. Links below! Image
Image
Image
Read 5 tweets
Feb 2, 2023
When I was 7 years old, my schooled offered me to skip a grade and I accepted. My teachers (and parents) all made a big deal about how clever I was etc.

This quickly became a chip on my shoulder that took decades for me to articulate and admit to.
In retrospect, skipping 1st grade was a big mistake. Suddenly, I was the youngest person in every group, always the least physically and mentally mature, etc.

I became insecure about this, and would often act out to show my classmates how "mature" I was..
This was a major factor in me starting to drink excessively at 14. Proving to my 1-year-older mates that I could handle as much alcohol as them (or more!) seemed super important at the time.

I was the smallest & weakest guy in class, but at least I could out-self-destruct them!
Read 5 tweets
Jul 25, 2020
🧵🐞 Since early on, the SerenityOS readme file has had a list of significant contributors (100+ commits.)

I've been adding them in chronological order as they reach the 100 commit mark, and I just added a 9th person!

This will be a thread about every person added to that list!
🦆 Robin Burchell (@w00teh)

Robin was the first major contributor and worked on all kinds of things:
- Sound card driver (SB16)
- AudioServer (mixing daemon)
- Event loops
- Thread scheduling
- Windowing system
🐰 Conrad Pankoff (@deoxxa)

Conrad was the first person to get SerenityOS running on hardware. He blogged about it here: fknsrs.biz/blog/serenity-…

Some things he has worked on:
- TCP/IP stack improvements
- RealTek NIC driver
- Gemini protocol
- PCI device identification
Read 28 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(