Ashton
73159fe2ce
Meta: Add run command to ladybird.py
2025-05-21 11:35:20 -06:00
Ashton
c51abfb2ca
Meta: Add test command to ladybird.py
2025-05-21 11:35:20 -06:00
ayeteadoe
c9624d5118
Meta: Add build command to ladybird.py
2025-05-21 11:35:20 -06:00
Shannon Booth
579730d861
LibWeb: Prefer using equals_ignoring_ascii_case
...
Which has an optmization if both size of the string being passed
through are FlyStrings, which actually ends up being the case
in some places during selector matching comparing attribute names.
Instead of maintaining more overloads of
Infra::is_ascii_case_insensitive_match, switch
everything over to equals_ignoring_ascii_case instead.
2025-05-21 13:45:02 +01:00
ayeteadoe
a11242f3de
CMake: Expose Windows CI utilities
...
This will allow us to gradually build up official support for Windows,
as only targets we have explicitly marked as supported on windows will
be built and ran during CI.
2025-05-20 10:58:43 -06:00
Andrew Kaster
f66c55138b
Utilities: Move install rules for js repl to Utilities
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
2025-05-19 18:37:15 -04:00
Andrew Kaster
6548f9b6dd
CMake: Move library subdirectory inclusion to Libraries/CMakeLists.txt
2025-05-19 18:37:15 -04:00
Andrew Kaster
e4fb3a86a1
Tests: Move Tests CMake rules to Tests/CMakeLists.txt
...
Get this logic out of Meta/Lagom/CMakeLists.txt, in the hope that we
can eventually remove the Lagom CMakeLists.txt file entirely.
2025-05-19 18:37:15 -04:00
Andrew Kaster
26c76a8347
Tests: Move test-wasm build rules to Tests/LibWasm
2025-05-19 18:37:15 -04:00
Andrew Kaster
da106177b4
AK: Move install rules into AK's CMakeLists
2025-05-19 18:37:15 -04:00
Andrew Kaster
5418165690
Tests: Move LibJS test rules to Tests/LibJS
2025-05-19 18:37:15 -04:00
Andrew Kaster
72ca813b6b
CMake: Handle CMP0174 in Lagom CMake functions, and support CUSTOM_MAIN
2025-05-19 18:37:15 -04:00
Andrew Kaster
432bc0f638
LibTLS+Tests: Build LibTLS tests from their test directory
...
Instead of building them from Lagom, build them here and use lagom_test.
Also remove second download of cacert.pem.
2025-05-19 18:37:15 -04:00
Andrew Kaster
1878ed10d2
CMake: Move Utilities build rules to Utilities directory
2025-05-19 18:37:15 -04:00
Andrew Kaster
94a20f6706
Tests+Utilities: Move test262-runner to Utilities
...
This is a utility more than it is a test in itself. We use it to run
test262 tests, which are external to this repo. The test-js runner is
still private test infrastructure though, so it stays where it is.
2025-05-19 18:37:15 -04:00
Andrew Kaster
52efd90445
CMake: Remove old gcc version check
...
We require newer than gcc 12 at this point, so this check is no longer
needed.
2025-05-19 18:37:15 -04:00
Sam Atkins
6e45d8ba6c
LibWeb/CSS: Set enum sizes for PropertyID and Keyword
...
The effect of this is hard to measure, but reducing them from 4 bytes
each to 2 bytes can't hurt. :^)
2025-05-20 10:14:21 +12:00
Sam Atkins
3add623f22
LibWeb/CSS: Use underlying_type_for_enum() for Enums.json generator
...
Replacing the duplicate implementation.
2025-05-20 10:14:21 +12:00
Sam Atkins
c4bcbff59a
LibWeb/CSS: Set enum sizes for media query types
...
This reduces `MediaFeature` from 112 to 104 bytes.
2025-05-20 10:14:21 +12:00
Daniel Bertalan
2058fb1144
CMake: Set CMAKE_POSITION_INDEPENDENT_CODE
instead of manual -fPIC
...
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
If we are doing a statically linked build, there is no need for full
`-fPIC`, just `-fpie` is enough (which lets the compiler assume that
global variables can be accessed directly without the GOT, etc.). CMake
does the right thing already when we set the `POSITION_INDEPENDENT_CODE`
property.
2025-05-16 17:40:49 -06:00
ayeteadoe
656586a0e5
Meta: Enforce symbol annotation for EXPLICIT_SYMBOL_EXPORT on Windows
2025-05-16 14:33:04 -06:00
ayeteadoe
d35486cb74
LibTest: Explicitly export symbols
2025-05-16 13:23:32 -06:00
Tim Ledbetter
2903defcfc
Revert "LibJS+LibWeb: Return Vector<PropertyKey> from…
...
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
internal_own_property_keys"
This reverts commit 5ee810f772
.
2025-05-16 06:33:09 +01:00
Aliaksandr Kalenik
5ee810f772
LibJS+LibWeb: Return Vector<PropertyKey> from internal_own_property_keys
...
By doing that we avoid lots of `PropertyKey` -> `Value` -> `PropertyKey`
transforms, which are quite expensive because of underlying
`FlyString` -> `PrimitiveString` -> `FlyString` conversions.
10% improvement on MicroBench/object-keys.js
2025-05-15 14:12:18 -04:00
Andrew Kaster
a01d6ba246
CMake: Clear CMAKE_REQUIRED_LIBRARIES after blocks and arc tests
...
This is better CMake hygiene to avoid leaking our try_compile specific
library requirements into the rest of the build.
2025-05-15 07:20:20 -06:00
Tim Ledbetter
7f4916b806
Meta: Ensure wptreport browser_version
field is always populated
...
This was previously done by passing the `LADYBIRD_GIT_VERSION`
environment variable to `wpt`, but this doesn't work in chunked mode.
2025-05-15 14:02:48 +02:00
Tim Ledbetter
e2db9790b0
Meta: Use human readable timestamp in WPT run folder name
...
This makes it easier to figure out when a given run started.
2025-05-15 12:11:20 +02:00
Sam Atkins
3a235e9050
LibWeb/CSS: Parse @page bleed, marks, page-orientation
descriptors
...
These don't have WPT tests so I've added some myself.
2025-05-15 09:53:29 +01:00
Sam Atkins
9415bffd9b
LibWeb/CSS: Parse @page size
descriptor
2025-05-15 09:53:29 +01:00
ayeteadoe
0061c64ee6
CMake: Remove duplicate sanitizer configuration
...
Root had identical copy of what was being done in Meta/Lagom
so now we ensure this is still included globally but is
isolated to its own cmake module to make sanitizer
config easier to discover
2025-05-14 02:05:12 -06:00
ayeteadoe
c4f08bc268
CMake: Add LibDiff to TEST_DIRECTORIES
...
Not sure if it has always been this way, but Tests/LibDiff has
not actually been running in CI at all.
2025-05-14 02:05:12 -06:00
ayeteadoe
11bca38f91
CMake: Build LibRegex tests in Tests/LibRegex not Meta/Lagom
...
As LibRegex was not specified in TEST_DIRECTORIES, the existing
Tests/LibRegex subdirectory was not actually included during
configuration. Also the RegexLibC test has not been needed
since migration away from Serenitys LibC was done, so
that test has been fully removed. I also renamed the
Regex.cpp test to TestRegex.cpp to match the naming
convention of most test targets.
2025-05-14 02:05:12 -06:00
ayeteadoe
8864b3e9d1
CMake: Build LibCore tests in Tests/LibCore not Meta/Lagom
...
As LibCore was not specified in TEST_DIRECTORIES, the existing
Tests/LibCore subdirectory was not actually included during
configuration.
2025-05-14 02:05:12 -06:00
ayeteadoe
d44ac0874f
CMake: Build LibTest[Main] in Libraries/LibTest not Meta/Lagom
...
As LibTest was not specified in TEST_DIRECTORIES, the existing
Libraries/LibTest subdirectory was not actually included during
configuration.
2025-05-14 02:05:12 -06:00
Timothy Flynn
7280ed6312
Meta: Enforce newlines around namespaces
...
This has come up several times during code review, so let's just enforce
it using a new clang-format 20 option.
2025-05-14 02:01:59 -06:00
Timothy Flynn
d30f6f1b11
Meta: Switch to clang-format-20 as the standard formatter
2025-05-14 02:01:59 -06:00
Timothy Flynn
313e490fb6
Meta: Extract the required clang-format version to a variable
...
Rather than writing the version N times in this script, let's extract it
to a variable for easier use.
2025-05-14 02:01:59 -06:00
Timothy Flynn
70d2b0b6f3
CI: Update the Clang pipeline to Clang 20
2025-05-14 02:01:59 -06:00
Andrew Kaster
c7cfd3cb1e
CI: Disable LTO by default for static GCC builds
...
lto1 uses more memory than exists in the known universe when building
ladybird, so disable LTO for static GCC builds.
2025-05-14 02:01:50 -06:00
stelar7
296d9d74d8
LibWeb/IDB: Implement IDBCursorWithValue interface
2025-05-13 10:48:40 -06:00
Aliaksandr Kalenik
bb53485dea
LibJS+LibWeb: Add fast path for builtin iterators in iterator_step()
...
We already have fast path for built-in iterators that skips `next()`
lookup and iteration result object allocation applied for `for..of` and
`for..in` loops. This change extends it to `iterator_step()` to cover
`Array.from()`, `[...arr]` and many other cases.
Makes following function go 2.35x faster on my computer:
```js
(function f() {
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
for (let i = 0; i < 1000000; i++) {
let [a, ...rest] = arr;
}
})();
```
2025-05-13 15:14:25 +03:00
Psychpsyo
31301ef08b
LibWeb: Add support for trees of pseudo-elements
...
This is needed for CSS view transitions.
2025-05-13 12:38:42 +01:00
Andrew Kaster
0402179331
CMake: Disable C++20 module scanning
...
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
We don't use C++20 modules, and CMake will look for clang-scan-deps in
clang builds if this setting is not disabled. This is a problem when
clang-scan-deps is not installed, as it will cause CMake to fail to link
hidden visibility libraries properly.
2025-05-12 23:43:59 -06:00
Andrew Kaster
a6d9e8acd8
CMake: Only find pthread and mman on Windows once
...
This reduces a lot of CMake spam when configuring
2025-05-12 03:22:23 -06:00
ayeteadoe
8f670950e2
Meta: Add opt-in explicit symbol export for libraries
...
On Windows, `set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)` is currently
used. But that will need to change as LibWeb exceeds the maximum
symbols that can be exported from a single executable/dll
(See LNK1189 error). So to prevent bitrot and Unix/Windows getting
out of sync, this function that generates the export header for the
target also sets the symbol visibility to hidden on Unix to ensure
Link errors also occur on Unix if the the required library components
are not annotated with the FOO_API macro.
2025-05-12 03:22:23 -06:00
Andrew Kaster
f0004fa690
AK+CMake: Remove workaround for swiftc mishandling [[no_unique_address]]
2025-05-09 23:14:27 -06:00
Ali Mohammad Pur
43defa90cc
Meta: Make WPT.sh log args relative to cwd as of script invocation
...
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
This restores the behaviour from before adding parallel instance
support.
2025-05-08 23:50:04 +01:00
Sam Atkins
f0ce4f43a6
LibWeb: Make unknown webkit pseudo-elements safe to dump
...
This fixes a couple of crashes when dumping the style sheets on
ladybird.org
2025-05-08 16:21:32 +01:00
Ali Mohammad Pur
fbfd3e2538
IDLGenerators: Add an 'WithInitializer' attribute for an init hook
...
This is needed for WebAssembly.*Error (at least), which apparently
cannot be defined in webidl.
2025-05-08 03:35:11 -06:00
Ali Mohammad Pur
011982c501
Meta: Make WPT.sh run nproc/2 testrunners in parallel
...
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, Clang) (push) Waiting to run
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, false, ubuntu-24.04, Linux, GNU) (push) Waiting to run
CI / Lagom (x86_64, Sanitizer_CI, true, ubuntu-24.04, Linux, Clang) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (arm64, macos-15, macOS, macOS-universal2) (push) Waiting to run
Package the js repl as a binary artifact / build-and-package (x86_64, ubuntu-24.04, Linux, Linux-x86_64) (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run
This is the "intended" way of parallelism with wpt, but instead of
requiring N different systems (or VMs), this does it all on one system
with the power of namespaces.
2025-05-07 15:48:21 +01:00