Commit Graph

164 Commits

Author SHA1 Message Date
Andrew Kaster
309ca11236 Meta: Pin highway version 1.4.0 2026-04-23 20:33:08 -06:00
Johan Dahlin
1bf03c21d1 CMake: Add GTK4 as a GUI framework option
Add GTK as a possible GUI framework alongside Qt on Linux. When the gtk
or qt vcpkg manifest feature is selected, the corresponding framework
dependencies are pulled in automatically.
2026-04-17 11:17:56 -04:00
Andreas Kling
b23aa38546 AK: Adopt mimalloc v2 as main allocator
Use mimalloc for Ladybird-owned allocations without overriding malloc().
Route kmalloc(), kcalloc(), krealloc(), and kfree() through mimalloc,
and put the embedded Rust crates on the same allocator via a shared
shim in AK/kmalloc.cpp.

This also lets us drop kfree_sized(), since it no longer used its size
argument. StringData, Utf16StringData, JS object storage, Rust error
strings, and the CoreAudio playback helpers can all free their AK-backed
storage with plain kfree().

Sanitizer builds still use the system allocator. LeakSanitizer does not
reliably trace references stored in mimalloc-managed AK containers, so
static caches and other long-lived roots can look leaked. Pass the old
size into the Rust realloc shim so aligned fallback reallocations can
move posix_memalign-backed blocks safely.

Static builds still need a little linker help. macOS app binaries need
the Rust allocator entry points forced in from liblagom-ak.a, while
static ELF links can pull in identical allocator shim definitions from
multiple Rust staticlibs. Keep the Apple -u flags and allow those
duplicate shim symbols for LibJS and LibRegex links on Linux and BSD.
2026-04-08 09:57:53 +02:00
Timothy Flynn
9f4edcfb72 Meta: Update sqlite3 to version 3.52.0 2026-03-31 17:28:21 -04:00
Rocco Corsi
1f6df1e864 Meta: Update curl to version 8.19.0 to handle reduced mtu
When mtu (maximum transmission unit) on a network interface is reduced
below expected level, this leads to packet fragmentation that is not
always handled correctly by libcurl.

Changing the mtu is often done with VPNs, ipv6 tunnels, PPPoE, and other
special situations.

fixes #8072

https://github.com/curl/curl/issues/20440
https://github.com/curl/curl/issues/20445
https://github.com/curl/curl/issues/20448
2026-03-14 08:18:08 -04:00
Timothy Flynn
e549d168ac LibUnicode: Update ICU to 78.2
Contains fixes needed for non-ISO-8601 calendars in Temporal.
2026-03-09 11:40:59 +01:00
Timothy Flynn
3355fb39ae AK+LibJS: Replace home-grown Ryu implementation with fmt's dragonbox
In the benchmark added here, fmt's dragonbox is ~3x faster than our own
Ryu implementation (1197ms for dragonbox vs. 3435ms for Ryu).

Daniel Lemire recently published an article about these algorithms:
https://lemire.me/blog/2026/02/01/converting-floats-to-strings-quickly/

In this article, fmt's dragonbox implementation is actually one of the
slower ones (with the caveat that some comments note that the article is
a bit out-of-date). I've gone with fmt here because:

1. It has a readily available recent version on vcpkg.
2. It provides the methods we need to actually convert a floating point
   to decimal exponential form.
3. There is an ongoing effort to replace dragonbox with a new algorithm,
   zmij, which promises to be faster.
4. It is one of the only users of AK/UFixedBigInt, so we can potentially
   remove that as well soon.
5. Bringing in fmt opens the door to replacing a bunch of AK::format
   facilities with fmt as well.
2026-02-23 18:30:40 +01:00
Timothy Flynn
721c05802c Meta: Add missing vcpkg pinned versions 2026-02-23 18:30:40 +01:00
Timothy Flynn
be86b80f2a Meta: Sort vcpkg alphabetically 2026-02-23 18:30:40 +01:00
Rocco Corsi
0b1c794e93 Meta: Update curl to version 8.18.0#1 to fix happy eyeballs
When a firewall/router between a client and a host server silently drops
traffic for HTTP/3 or QUIC that utilizes UDP/443 (instead of the more
traditional TCP/443 (HTTPS) or TCP/80 (HTTP) used in HTTP/1.1 and
HTTP/2), the connection will be broken with the host as curl before
8.18.0 has a bug with the TCP fallback mechanism that will not allow the
communication to proceed, resulting in a connection time out after 90
seconds (Ladybird's current timeout value).

Problem is with the Happy Eyeballs algorithm that tries to use IPv6 and
IPv4 to establish communications with the host server.

Fixes: #7574

From curl bug: https://github.com/curl/curl/issues/19740

Alt-Svc breaks Happy Eyeballs v2: Both ballers use QUIC instead of
QUIC+TCP fallback
2026-02-19 20:03:41 +01:00
Rocco Corsi
2408e602ac Meta: Update vcpkg baseline to provide access to curl 8.18.0#1 2026-02-19 20:03:41 +01:00
Zaggy1024
0734a37e24 Meta: Patch nghttp2 to ignore DATA frames after a stream is half-closed
Otherwise, stopping downloads repeatedly will result in the reused
connection to the server being closed by nghttp2 with a GOAWAY frame
with a code of 0xB (ENHANCE_YOUR_CALM).

For more information: https://github.com/nghttp2/nghttp2/issues/2597
2026-01-29 05:22:27 -06:00
Undefine
6c6cfce580 Meta: Build angle on all BSD systems 2026-01-16 11:07:37 -07:00
Undefine
3851e0489a Meta: Don't build libproxy on all BSD systems 2026-01-16 11:07:37 -07:00
Undefine
8fc95089d1 Meta: Replace freebsd | openbsd in vcpkg.json with bsd
This makes the file just a little bit cleaner and makes the work for
supporting future BSD systems simpler.
2026-01-16 11:07:37 -07:00
Undefine
844bdb8af3 Meta: Update icu to 78.1#1 2026-01-16 10:59:50 -07:00
Undefine
5a76cb9dff Meta: Update qtbase to 6.10.0#1 2026-01-16 10:59:50 -07:00
Undefine
08c27f5e7d Meta: Update SDL3 to 3.2.28 2026-01-16 10:59:50 -07:00
Ali Mohammad Pur
ea65181444 Meta+LibJS: Upgrade simdjson to the latest version
5e0ee26e8b pulls in an old version of
simdjson, this commit upgrades to the latest release.
This commit also pins `dav1d` to the version it was before this change.
2026-01-16 13:11:05 +01:00
Andreas Kling
5e0ee26e8b LibJS: Use simdjson for JSON.parse
Replace the custom AK JSON parser with simdjson for parsing JSON in
LibJS. This eliminates the intermediate AK::JsonValue object graph,
going directly from JSON text to JS::Value.

simdjson's on-demand API parses at ~4GB/s and only materializes values
as they are accessed, making this both faster and more memory efficient
than the previous approach.

The AK JSON parser is still used elsewhere (WebDriver protocol, config
files, etc.) but LibJS now uses simdjson exclusively for JSON.parse()
and JSON.rawJSON().
2026-01-12 13:53:28 -05:00
Jan Koudijs
80133665f7 Meta: Bring Flatpak dependency versions in line with vcpkg versions 2025-12-19 13:16:47 +01:00
ayeteadoe
ee3aa865af Meta+LibGfx+LibWeb: Update skia to 144 and remove overlay port
Skia deprecated some non-span versions of their API, but they provided
SK_SUPPORT_UNSPANNED_APIS to expose the legacy versions.

SkFontMgr_New_FontConfig now requires a font scanner to be passed in.

There were a few screenshot tests that visibily looked the same but skia
must've changed some rendering infrastructure as the PNGs were not
matching anymore so I rebaselined those and adjusted the fuzzy matching
config to allow them to pass on both macOS and Linux.

The empty-radial-gradient-crash Ref test started to fail as we were
setting the horizontal scale factor to inf in when the height = 0. It
looks like something changed to make doing that not valid anymore.

The overlay port is removed as the issues, mainly skcms symbol import
and export were resolved upstream in skia and utilized in the new port
version.
2025-12-17 12:00:33 +01:00
Andreas Kling
2577c5ce67 Revert "Meta+LibGfx+LibWeb: Update skia to 144 and remove overlay port"
This reverts commit ac9688ea1e.

Broke the build on arm64 Linux.
2025-12-15 14:12:34 -06:00
ayeteadoe
ac9688ea1e Meta+LibGfx+LibWeb: Update skia to 144 and remove overlay port
Skia deprecated some non-span versions of their API, but they provided
SK_SUPPORT_UNSPANNED_APIS to expose the legacy versions.

SkFontMgr_New_FontConfig now requires a font scanner to be passed in.

There were a few screenshot tests that visibily looked the same but skia
must've changed some rendering infrastructure as the PNGs were not
matching anymore so I rebaselined those and adjusted the fuzzy matching
config to allow them to pass on both macOS and Linux.

The empty-radial-gradient-crash Ref test started to fail as we were
setting the horizontal scale factor to inf in when the height = 0. It
looks like something changed to make doing that not valid anymore.

The overlay port is removed as the issues, mainly skcms symbol import
and export were resolved upstream in skia and utilized in the new port
version.
2025-12-15 10:56:27 +01:00
Zaggy1024
65c0be66e4 LibMedia: Implement audio conversion in AudioDataProvider 2025-12-13 08:58:26 +01:00
Marcos Del Sol Vives
77cab84620 LibUnicode: Update ICU to 78.1
Updated also IdnaTestV2 for Unicode 17.0.0
2025-12-08 11:29:12 -05:00
Aliaksandr Kalenik
e217380d0d Meta: Lock libxml2 version in vcpkg.json 2025-12-04 08:51:59 -05:00
Marcos Del Sol Vives
9b4d9966da Meta: Update libavif to version 1.3.0#1
To update to ICU 78.1, a bump to the Vcpkg baseline is required.
However, for some reason 1.3.0#0 fails to compile on the newer
baseline. Updating to 1.3.0#1 fixes the issue.
2025-12-03 19:43:12 -05:00
ayeteadoe
59c963f98f Meta+LibGfx: Remove fontconfig dependency on Windows
Previously when launching a UI process and/or a WebContent process on
Windows, the following message would be output to the console:

Fontconfig error: Cannot load default config file: No such file: (null)

Apparently on Windows, you have to provide a font .conf file to
fontconfig explicitly. Since we are not doing that, the default fonts
that are backed off to are not ideal.

Similar to how we aren't using fontconfig on Android, Windows also has
native font infrastructure in terms of both a collection of System
installed fonts as well as skia support for font managers that use
native Windows APIs. With that, we can remove the usage of fontconfig
entirely and improve the fonts used on websites like ladybird.org or
google.com.
2025-11-22 07:51:55 -05:00
Zaggy1024
9f44fcbded Everywhere: Remove AudioCodecPlugin and Qt Multimedia
These are no longer needed now that audio is played through
PlaybackManager.
2025-10-27 17:28:49 -07:00
Undefine
bd8c6c1431 Meta: Add the dbus feature to qtbase
D-Bus is needed for Qt to build its accessibility support and since we
build D-Bus regardless it doesn't add any overhead.
2025-10-22 13:54:54 +02:00
Undefine
5fd0586125 Meta: Build dbus on FreeBSD 2025-10-22 13:54:54 +02:00
R-Goc
24ace9f183 Vcpkg: Disable cpptrace for freeBSD
Cpptrace is not supported on freeBSD, so until that changes it will not
be built from vcpkg.
2025-10-10 12:46:20 +02:00
R-Goc
3c7bad32cd AK: Clean up backtraces
This commit replaces the default backtrace logic with cpptrace, for
nicer, colored backtraces. Cpptrace runs on all of our supported
platforms excpet android. As such backtrace.h is left in place.

All the backtrace functions are made noinline to have a consistent
number of frames. A maximum depth parameter is added to dump_backtrace
with a default of 100. This should be enough, and can be easily
changed, and allows for limiting the maximum depth.

Setting the LADYBIRD_BACKTRACE_SNIPPETS environment variable enables
surrouding code snippets in the backtrace. Specifically 2 lines above
and below. This number can be changed by calling snippet_context on the
formatter. For the whole list of options of what can be done with
formatting see the cpptrace repository.

On Windows we skipped frames when verification fails and when
dump_backtrace was added the logic was wrong and would have skipped
frames we care about.

This commit also implements skipping frames on Linux.
The only time where this does not skip all frames is when the call to
backtrace gets intercepted. Then we will end up skipping one frame less
than needed.

To keep delayload on Windows a patch and overlay port is used. When
upstream accepts these changes and vcpkg bumps the version the patch
could be removed to have just the cmake define.
2025-10-08 07:07:57 +02:00
Johannes Gustafsson
0ea519c539 LibWeb: Implement XPath functionality using libxml2 2025-10-03 13:16:11 +02:00
InvalidUsernameException
a405d6df67 Meta: Update sdl to version 3.2.22 2025-09-25 21:14:29 -04:00
InvalidUsernameException
e12ae7c7c2 Meta: Update openssl to version 3.5.3 2025-09-25 21:14:29 -04:00
InvalidUsernameException
237b2a76e1 Meta: Update libwebp to version 1.6.0#1 2025-09-25 21:14:29 -04:00
InvalidUsernameException
e3a81d520d Meta: Update ffmpeg to version 7.1.1#5 2025-09-25 21:14:29 -04:00
InvalidUsernameException
2dd1918b10 Meta+Tests: Update fast-float to version 8.1.0
This release comes with a fix for a bug where certain unicode emoji
characters encoded in UTF-16 were mistakenly parsed as integers. This
manifested in keys of an JS object being coerced into integers, i.e.
`{ "⤵️": 42 }` would become `{ "5": 42 }`.

Relevant upstream PR: https://github.com/fastfloat/fast_float/pull/325
2025-09-25 21:14:29 -04:00
InvalidUsernameException
c6ece554ba Meta: Update dirent to version 1.26.0 2025-09-25 21:14:29 -04:00
InvalidUsernameException
7f5d694853 Meta: Update dbus to version 1.16.2#2 2025-09-25 21:14:29 -04:00
InvalidUsernameException
5917c7f6fa Meta: Update curl to version 8.16.0 2025-09-25 21:14:29 -04:00
InvalidUsernameException
a975988f9c Meta: Update vcpkg baseline 2025-09-25 21:14:29 -04:00
Luke Wilde
50dcd8fc85 Meta+WebContent+LibWeb: Add, link and initialize SDL3 2025-09-01 21:10:47 +02:00
Timothy Flynn
6634100914 Meta: Update sqlite3 to version 3.50.4 2025-08-27 13:25:03 +02:00
Timothy Flynn
9f26495988 Meta: Update simdutf to version 7.4.0 2025-08-27 13:25:03 +02:00
Timothy Flynn
f2dbe267ee Meta: Update openssl to version 3.5.2 2025-08-27 13:25:03 +02:00
Timothy Flynn
57bd5baff4 Meta: Update libwebp to version 1.6.0 2025-08-27 13:25:03 +02:00
Timothy Flynn
ca4ac66543 Meta: Update libpng to version 1.6.50 2025-08-27 13:25:03 +02:00