Remove the unused SANITIZE_PTRS destructor poisoning blocks from AK
pointer wrappers. Also drop the stale Qt Creator configuration define
that referenced this old mode.
Problem: “configure: error: libncurses, libcurses, libtermcap or
libtinfo is required!” local-build failure in vcpkg libedit compilation.
Cause: dfb2656 replaced the in-tree LibLine with libedit, which vcpkg
builds, and libedit’s configure needs system ncurses (or termcap/tinfo).
Fix: Add the ncurses dev package to dependency lists for distros that
ship it separately: libncurses-dev on Debian/Ubuntu, and ncurses-devel
on Fedora/openSUSE/Void — and into the dev-container install scripts.
(Arch and macOS already ship the necessary headers.)
Fixes https://github.com/LadybirdBrowser/ladybird/issues/9946
`<media-feature>` and the upcoming `<size-feature>` from `@container`,
share the same syntax and almost all of their behaviour. To avoid a lot
of duplication, pull as much as possible into a FeatureQuery template
class that they will both inherit from.
MediaFeatureValue is renamed FeatureValue as it's also shared by both.
No behaviour change.
Allow the WebIDL parser to accept files without a top-level interface,
and have the exposed-interface generator skip those modules.
With that in place, register support IDLs through
libweb_js_bindings() as well, including generated CSS IDLs from the
build directory, and remove the separate support-idl plumbing.
This is enabled now that the IDL generator rules have been simplified
so that every IDL file produces a corresponding header and cpp file.
In the future we should switch to using a better file format for this,
i.e. one that supports directly pasting CSS grammar production blocks
(https://drafts.csswg.org/css-values-4/#css-grammar-production-block)
and has support for inline comments, but we use JSON for now for
simplicity's sake.
Per-request and per-connection logging that surfaces enough detail
to diagnose where time goes when a page load misbehaves. Gated by a
new REQUESTSERVER_WIRE_DEBUG cmakedefine.
Documentation/RequestServerWireLogging.md describes each label
(wire/wire+/wire++/wire^, wire-batch, wire-stall, wire-burst,
wire-pipe-pressure, LibDNS wire-dns, UI wire-cookie) and how to read
them.
The idea is that scripts directly under Meta are meant to be run by
people. Scripts that are only imported or run by other scripts are
moved to a subdirectory.
This script:
1. Hasn't get up with our build directory structure.
2. Only works on macOS due to the way it invokes sed.
3. Arguably takes longer to figure out how to run the script than it
does to just edit .clangd's build path.
After b1d708dd16, the Toolchain directory
was removed from the repository. Some documentation and scripts still
referenced it, so this commit removes those references. The only
remaining references are in the gitignore file, to prevent bisections
from being polluted by the presence of a Toolchain directory in the
working copy.
Add GTK4/libadwaita build instructions alongside Qt.
Add Documentation/GtkFrontend.md with GTK-specific coding style
rules and a manual test checklist.
We've had some impressive efforts going into setting up and maintaining
GN as an alternative to CMake, but as of today we're still using CMake
and the GN files have bitrotted quite severely.
We've found no convincing reason to keep maintaining two build systems
in parallel - so let's remove GN and make life a bit simpler for us.
The 'CMake --preset default' examples are now invalid, because the
'default' preset no longer exists.
Update all examples to use 'Release' preset.
Update the wording at line 305 to Release preset.
`@function` descriptors are the only ones that support ASFs, while most
descriptors enforce this through their syntaxes implicitly disallowing
ASFs, this wasn't the case for `@property/initial-value`.
We now explictly disallow ASFs unless they are marked as allowed within
`Descriptors.json`.
This allows us to get rid of the annoying Build/.../Lagom directory
and helps to deduplicate a bunch of logic while also drastically
simplifying everything.
This is largely based of off the work done by Andrew Kaster in #5918.
Having this toggle makes much more sense, especially if there will be
more UIs in the future.
Co-authored-by: Andrew Kaster <andrew@ladybird.org>
Some at-rules (i.e. `@function`) require us to support custom
descriptors (e.g. `--foo`).
We do this by adding `DescriptorID::Custom` and using a new
`DescriptorNameAndID` class in a bunch of places where we previously
just used `DescriptorID`
* It is required for more than LibJS, so let's just remove that note.
* Only recommend using rustup to install the toolchain. System package
managers have been found to be too out of date.
Vulkan Validation Layers provides diagnostic feedback about Vulkan API
usage while live testing Ladybird. It is possible to enable this
diagnostic output without changing the code (using the Vulkan SDK),
but having it built into the code makes it very easy to enable whenever
required.
Co-authored-by: Rocco Corsi <5201151+rcorsi@users.noreply.github.com>
There's now an ENABLE_RUST CMake option (on by default).
Install Rust via rustup in devcontainer scripts, document the
requirement in build instructions, and add Cargo's target/ directory
to .gitignore.
After installing Arch Linux 2026.02.01 and following the instructions
in Documentation/BuildInstructionsLadybird.md to install the
dependencies, using git command will fail due to missing pager less.
- Remove automake: base-devel already depends directly on it.
- Remove qt6-wayland: QT 6.10 added Wayland support to qt6-base.
- Add Python and Git: Not part of base or base-devel and are listed for
Ubuntu.
Starting with CMake 3.30 and CMakePresets version 9, the include field
supports interesting macro expansions. We can now define platform
specific presets in separate files and include them in the top-level
CMakePresets.json, while keeping the same preset names across all
platforms. This avoids some preset explosion at the cost of some mostly
empty json files for each unix platform.
The CMake minimum required in the top-level and Lagom CMakeLists.txt
have not been adjusted in this patch, as that would have the effect of
changing the default policy versions and is a bit out of scope.