Is Ladybird Swift Yet?

Is Swift Profitable Yet?
Last updated on 04:00PM on October 18, 2025 (TZ: UTC+0000)

Individual commit stats

LibWeb: Use preferred style for swift `guard case` clause

Meta: Fixed variable typo switfc -> swiftc

CMake: Ignore invalid offset of when generating Swift interop header

AK: Update Swift test for Utf16String changes

LibTest: Move declaration of JS main target around to avoid CMake bug

CMake: Set visibility flags with add_cxx_compile_options() helper

LibWeb: Remove noisy debug messages from HTMLParser

Meta: Update swift version to 2025-06-22

CMake: Re-enable SIL verification for swift source files

Documentation: Update swift preset documentation

Meta: Support Swift_Release preset in ladybird.py

CMake: Add preset with swift interop enabled

Meta: Record desired swift toolchain version in .swift-version

Meta: Add optional cwd argument to run_command helper

LibGfx: Avoid importing FilterImpl into swift

CMake: Exclude GlobalFontConfig.h from autogenerated clang module

CMake: Set a higher default CMAKE_OSX_DEPLOYMENT_TARGET with Swift

CMake: Set macOS deployment target for vcpkg ports to match our build

CI: Bump swift toolchain to main-snapshot-2025-05-26

CI: Update alternatives for llvm-symbolizer on Ubuntu jobs

AK+CMake: Remove workaround for swiftc mishandling [[no_unique_address]]

CI: Bump swift snapshot to main-snapshot-2025-04-30

LibWeb: Add missing WebIDL/Types include to MediaCapabilities.h

LibWeb: Store a SpeculativeHTMLParser on the HTML Parser

CI: Bump swiftly toolchain version to main-snapshot-2025-04-12

CMake: Remove warning suppression for unknown attributes

AK: Annotate [[no_unique_address]] members with NO_UNIQUE_ADDRESS macro

CMake: Disable [[no_unique_address]] when Swift is enabled

AK: Add macro to switch between no_unique_address attribute forms

Documentation: Add instructions for how to enable the Swift build

CMake: Add macro to wrap C++ command line definitions for swiftc

LibGC+LibWeb+LibJS: Remove workaround for Swift boolean bitfield issue

CI: Add nightly Swift jobs for both Linux and macOS

CI: Rework Swift build to be a separate job from normal macOS builds

CI: Add setup steps to install swift toolchain from swiftly

Meta: Add swiftly .swift-version to .gitignore

CMake: Refactor FindSwiftTesting to find TestingMacros dir on macOS

LibWeb+LibGC: Import GC swift module into LibWeb and an initial user

LibGC: Teach Swift bindings about Cell and Cell::Visitor

AK: Add cxxCast template to allow Swift to perform simple checked casts

LibGC+LibJS+LibWeb: Add workaround for Swift boolean bitfield issue

AK: Mark Function as SWIFT_UNSAFE_REFERENCE

CI: Bump CI Xcode version to 16.2

LibWeb: Make named character references more spec-compliant & efficient

LibCore+Meta: Un-break Swift build on Linux

AK: Support storing blocks in AK::Function

CMake: Add find module for BlocksRuntime on non-Apple platforms

AK: Add cast using objective-c __bridge qualifier

AK: Add feature detection for -fblocks and -fobjc-arc

CMake: Allow passing test name to serenity_test

LibCore: Add swift bindings for EventLoop as an Executor and Actor

AK: Add workaround for older Xcode versions in Swift.h

Tests: Annotate configurationJSON in SwiftTestMain with noisolate

LibCore: Remove SessionManagement utilities

LibIPC: Remove socket path from IPC Client connections

CMake: Check for Swift-aware C++ compiler more robustly

Tests: Use ABI entry point for swift-testing tests

LibGC: Add Swift bindings to the GC heap

LibGC: Add a ForeignCell class for ownership of non-C++ objects

LibGC: Expose deferred state publicly, annotate DeferGC for Swift

AK: Add missing swift/bridging empty defines for non-Swift compilers

LibGC: Add missing Types.h to forwarding header

AK: Add an extension to construct an AK.String from a Swift.String

AK: Include missing StdLibExtras from NeverDestroyed

LibWeb: Add remaining states to the Swift tokenizer

AK: Skip test for StringView's CxxSequence conformance for now

Meta+LibGfx: Exclude Metal and Vulkan headers from Clang module map

CMake: Enable no-as-needed hack for all link languages, not just C++

AK: Add a Swift helper for StringView::ends_with

CI: Upgrade to macOS 15

LibWeb: Add missing include to CSS/Parser/Types.h

LibWeb: Add support for parsing comments in the Swift HTML tokenizer

Tests: Use Swift.String extension instead of manual conversion

LibWeb: Add more HTML tokenization states to Swift implementation

Meta: Add swift-format linter script

CI: Convert lint job to macOS and install swift-format

Tests: Run swift-format on TestLibWebSwiftBindings

CMake: Pull swift-testing from the Swift toolchain

CMake: Enable finding the Swift -target flag in more cases

LibWeb: Implement the Data state for the Swift tokenizer

AK: Tell Swift how to construct AK.StringView from string literals

AK+Swift: Remove Foundation.Data footgun for AK.StringView

Tests: Convert Swift tests to use Testing module where possible

CMake: Add find module for swift-testing

Meta: Apply cxx-interop settings to swift targets directly

Meta+Libraries+AK: Append Cxx to imported library module names in swift

CMake: Always use a target for linking skia

LibWeb: Add an HTML tokenizer re-implementation in swift

CMake: Add script to FetchContent the swift-collections library

LibGfx: Use new AK+Swift extensions to simplify parseHexString

AK+Meta: Add SwiftAK module to add helpers to construct swift Strings

LibWeb: Add CustomStringConvertible extension for HTMLToken types

LibWeb: Add start of HTML Tokenizer in Swift

Tests: Add first test for LibWeb Swift bindings

AK+LibGfx+LibWebView: Add wrapper header around swift/bridging

LibWeb: Generate a clang module map file, including generated headers

LibWeb: Add missing Page.h include to SVGDecodedImageData

LibWeb: Remove circular include NavigatorBeacon.h <-> Navigator.h

LibCore: Don't wrap `` in extern "C" on Darwin

Libraries+Ladybird: Rename LibProtocol -> LibRequests

Tests: Add test to verify CxxSequence protocol conformance of containers

CMake: Add helper to swiftify imported properties from dependencies

AK: Conform SimpleIterator to the random access iterator requirements

AK+LibGfx: Only generate clang module map if ENABLE_SWIFT

Meta: Add a script and CMake function to generate a clang module map

LibGfx: Include implicit header files from EdgeFlagPathRasterizer

CMake: Silence the loudest warnings for generating Swift interop headers

CMake: Apply C++ compile options to Swift compilations

AK: Disable -Wunqualified-std-cast-call explicitly in CMake

Meta: Let Wasm test pass without INCLUDE_WASM_SPEC_TESTS

CMake: Work around two upstream CMake issues for Swift files

LibGfx: Add an implementation of #rrggbb color parsing in Swift

AK: Add a clang modules module map

CMake: Add proper sanitizer options for Swift files

Meta: Create a common Swift settings flow

CMake: Move GenerateSwiftHeader.cmake to Meta/CMake

Everywhere: Remove AK_DONT_REPLACE_STD macro

Ladybird: Reformat AppKit UI Swift files

Meta: Add swift-format configuration

LibGfx: Factor out #rrggbb Color parsing into its own helper function

CMake: Enable policy 0157 for more control over Swift compile mode

Ladybird/AppKit: Port TaskManager window to Swift

CMake: Ensure C/C++ compile options only applied when compiling C/C++


-- Total Swift changes: 3330 insertions, 381 deletions

-- Total Non-Swift Code changes: 1761 insertions, 2724 deletions

-- Total Non-code changes: 4166 insertions, 505 deletions

-- Total New Swift ratio: 63.77595155709342%


Lines of Code

-- Swift Adoption Rate: 0.6481389785100361%


More Swift than Churn? NO (Churn: code[963] + non-swift[3661] = 4624, Swift: 2949)