mkljczk
79c22e0d86
LibWeb: Use font with space in range for first_available_computed_font
2025-04-09 12:14:04 +01:00
Tim Ledbetter
55769be9c6
LibWeb: Don't resolve color components when serializing color functions
...
Previously, we were incorrectly replacing color components with `None`
values with 0.
2025-04-09 12:11:33 +01:00
Tim Ledbetter
a97fe3123d
LibWeb: Don't convert color functions to RGB when resolving color values
2025-04-09 12:11:33 +01:00
Tim Ledbetter
02d34dd021
LibWeb: Rename CSSColor
to ColorFunctionStyleValue
...
This gives a better idea of what the class represents.
2025-04-09 12:11:33 +01:00
Gingeh
972547635f
LibWeb: Dispatch pointer events to ::backdrop originating element
2025-04-09 12:10:42 +01:00
Gingeh
4b9f5c6fb8
LibWeb: Generate ::backdrop pseudo-elements
2025-04-09 12:10:42 +01:00
Tim Ledbetter
2a17d6d449
LibWeb: Set clip-path
animation type to by-computed-value
2025-04-09 09:02:59 +01:00
Andreas Kling
4e9bc0a437
LibJS: Use a premade shape for NativeFunction with length and name
...
CI / Lagom (x86_64, Fuzzers_CI, false, ubuntu-24.04, Linux, Clang) (push) Waiting to run
CI / Lagom (arm64, Sanitizer_CI, false, macos-15, macOS, 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
~2% of the Speedometer 2.1 profile was just repeatedly performing the
shape transitions to add these two properties. We can avoid all that
work by caching a premade shape.
2025-04-09 07:22:01 +02:00
Andreas Kling
dbf6f7944e
LibJS: Remove unused prototype parameter for NativeFunction::create()
2025-04-09 07:22:01 +02:00
Andreas Kling
b2779ad9f7
AK: Shrink Utf16View from 40 bytes to 32 bytes
...
This ends up making RegexStringView smaller, which means less stuff to
copy when forking in the regex engine.
Thanks to Leon for suggesting the [[no_unique_address]] trick!
2025-04-09 07:22:01 +02:00
Andreas Kling
697e87b7bd
AK: Make ""_string and ""_fly_string literals skip UTF-8 validation
...
We still validate in an ASSERT, but let's not bother with this in
release builds.
2025-04-09 07:22:01 +02:00
Timothy Flynn
f070264800
Everywhere: Remove sv
suffix from format string literals
...
This prevents the compile-time checks that would catch errors in the
format invocation (which would usually lead to a runtime crash).
2025-04-08 20:00:18 -04:00
Timothy Flynn
917537b449
AK: Enable compile-time check of a format test string
...
Our implementation seems to parse this string just fine now.
2025-04-08 20:00:18 -04:00
Timothy Flynn
d5222e9bba
LibJS: Do not generate a format string in Number.prototype.toFixed
...
We can use the placeholder syntax to specify the precision dynamically.
Note that `fraction_digits` is a double, which we do not support as a
precision argument. It's safe to cast to an integer here because we
guaranteed above that the value is in the range [0, 100], and is not
fractional.
2025-04-08 20:00:18 -04:00
Timothy Flynn
64d290447c
LibCore+LibJS+LibWasm: Always use a real format string
...
It's generally considered a security issue to use non-format string
literals. We would likely just crash in practice, but let's avoid the
issue altogether.
2025-04-08 20:00:18 -04:00
Luke Wilde
cd72e788e9
LibWeb: Append style sheet to ShadowRoot's list if link el is in one
...
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 were handling removing the style sheet from the shadow root, but not
appending to it. Fixing this also revealed a bug that a removed link
element would always try to remove from the document's list, as the
root is no longer the shadow root it's in. The fix is to use the passed
in old root to remove the style sheet from.
Fixes the cookie banner on https://nos.nl/
2025-04-08 23:20:54 +02:00
Aliaksandr Kalenik
14bac7b287
LibIPC: Move send thread from IPC connection to the transport layer
...
By doing this we also make MessagePort, that relies on IPC transport,
to send messages from separate thread, which solves the problem when
WebWorker and WebContent could deadlock if both were trying to post
messages at the same time.
Fixes https://github.com/LadybirdBrowser/ladybird/issues/4254
2025-04-08 21:09:24 +02:00
Aliaksandr Kalenik
af2dae63d1
Tests: Rearrange message order in Messaging-post-channel-over-channel
...
The way this test was written didn't guarantee a deterministic message
order, resulting in different output in Chromium and Firefox. This
change slightly rearranges the message order to make it deterministic.
This change is necessary as a prepartion for upcoming change that makes
MessagePort post messages from a separate thread, which would've
revealed the non-deterministic message order.
2025-04-08 21:09:24 +02:00
Aliaksandr Kalenik
ab35325003
LibIPC: Move early fd deallocation workaround to the transport layer
...
Reimplements c3121c9d
at the transport layer, allowing us to solve the
same problem once, in a single place, for both the LibIPC connection and
MessagePort. This avoids exposing a workaround for a macOS specific Unix
domain socket issue to higher abstraction layers.
2025-04-08 21:09:24 +02:00
Aliaksandr Kalenik
3525467e56
LibIPC: Join send thread instead of detaching in ~ConnectionBase()
...
By doing this we ensure that sending thread won't try to write into a
closed socket.
2025-04-08 21:09:24 +02:00
Andreas Kling
6362ec6f3d
LibJS: Stop passing StringView literals as format strings
...
This was preventing the format string checks from running, which would
have caught a bug I was about to introduce.
2025-04-08 18:52:35 +02:00
Andreas Kling
4593e19bcf
LibJS: Make class-specific members of ESFO lazily allocated
...
We don't need the [[Fields]] and [[PrivateMethods]] slots for most ESFO
instances, so let's reduce their impact on class size!
This shrinks ESFO from 200 bytes to 160 bytes, allowing more allocations
before we have to collect garbage.
2025-04-08 18:52:35 +02:00
Andreas Kling
2a9b6f1d97
LibJS: Move computation out of the ECMAScriptFunctionObject constructor
...
We were doing way too much computation every time an ESFO was
instantiated. This was particularly sad, since the results of these
computations were identical every time!
This patch adds a new SharedFunctionInstanceData object that gets
shared between all instances of an ESFO instantiated from some kind of
AST FunctionNode.
~5% speedup on Speedometer 2.1 :^)
2025-04-08 18:52:35 +02:00
Andreas Kling
4209b18b88
LibJS: Add ECMAScriptFunctionObject::create_from_function_node() helper
...
This gives us a shared entry point for every situation where we
instantiate a function based on a FunctionNode from the AST.
2025-04-08 18:52:35 +02:00
Andreas Kling
ef4e7b7945
LibJS: Make JS parser emit accurate this
insights for constructors
...
This way we don't have to handle it when instantiating the constructor.
2025-04-08 18:52:35 +02:00
Andreas Kling
9c0b185ab8
LibJS: Don't track "last result" of ScopeNode if we don't need it
...
This prevents unnecessary bytecode register allocation.
2025-04-08 18:52:35 +02:00
Andreas Kling
c845c90e98
LibJS: Avoid GC::RootVector allocations in {Super,}CallWithArgumentArray
...
We can use the Interpreter::allocate_argument_values() mechanism for
this and avoid creating a temporary RootVector for every such call.
2025-04-08 18:52:35 +02:00
Andreas Kling
5cdbb8b140
LibJS: Remove unused this
value from CallConstruct instruction
...
There's no `this` value prior in the caller context, and this was never
actually used by CallConstruct.
2025-04-08 18:52:35 +02:00
Ali Mohammad Pur
6b883c5ccb
Meta: Disable -Warray-bounds and -Wstringop-overflow on GCC
...
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
These generate what seems to be nonsense warnings on Function and
ByteBuffer; they *should* be investigated at some point, but they don't
provide anything useful at this point.
2025-04-08 14:01:28 +02:00
Ali Mohammad Pur
0a958c8e16
Meta: Add an option to disable LTO for Release builds
2025-04-08 14:01:28 +02:00
Ali Mohammad Pur
fac2ee4452
Meta: Add a link job pool with a configurable size
...
Parallel linking (esp. with bfd) uses a huge chunk of memory, make it
possible for users to limit the number of link jobs to at least
limit the pain.
2025-04-08 14:01:28 +02:00
Timothy Flynn
ccf03316fa
LibJS: Convert FilterLocales and CoerceOptionsToObject to GC::Ref
...
These never return nullptr.
2025-04-08 06:50:40 -04:00
Timothy Flynn
2729c88154
LibJS: Migrate remaining Intl objects to use ResolveOptions
...
This is an editorial change in the ECMA-402 spec. See:
75e67db
2025-04-08 06:50:40 -04:00
Timothy Flynn
3f55240a8e
LibJS: Migrate Intl.DisplayNames to use ResolveOptions
...
This is an editorial change in the ECMA-402 spec. See:
5eafacd
2025-04-08 06:50:40 -04:00
Timothy Flynn
636e214326
LibJS: Migrate Intl.Collator to use ResolveOptions
...
This is an editorial change in the ECMA-402 spec. See:
f822dc1
2025-04-08 06:50:40 -04:00
Timothy Flynn
e40881ebb8
LibJS: Migrate Intl.DateTimeFormat to use ResolveOptions
...
This is an editorial change in the ECMA-402 spec. See:
9e4c922
2025-04-08 06:50:40 -04:00
Timothy Flynn
d3332d51b5
LibJS: Add an AO to implement Intl constructor locale resolution
...
This is an editorial change in the ECMA-402 spec. See:
9e4c922
2025-04-08 06:50:40 -04:00
Timothy Flynn
62793b1bd8
LibJS: Define constructor slots for describing how to read options
...
This is an editorial change in the ECMA-402 spec. See:
a2beb66
We implement this change by introducing a virtual interface that all
Intl "service" objects must implement. A future patch will make use of
the virtualized RelevantExtensionKeys and ResolutionOptionDescriptors
accessors, and we will need to be able to use those slots from a generic
instance type.
2025-04-08 06:50:40 -04:00
Timothy Flynn
19ce186f97
LibJS: Define Intl.Locale's LocaleExtensionKeys more declaratively
...
This is an editorial change in the ECMA-402 spec. See:
3898acf
2025-04-08 06:50:40 -04:00
Timothy Flynn
75fce14f09
LibJS: Rename Intl.Locale's RelevantExtensionKeys to LocaleExtensionKeys
...
This is an editorial change in the ECMA-402 spec. See:
e2a5747
2025-04-08 06:50:40 -04:00
Timothy Flynn
680f028bb8
LibJS: Simplify Intl.Collator sensitivity / ignorePunctuation defaults
...
This is an editorial change in the ECMA-402 spec. See:
23e2e92
2025-04-08 06:50:40 -04:00
Timothy Flynn
b81d0d3261
LibJS: Ensure Intl.Collator instances have [[Numeric]] and [[CaseFirst]]
...
This is an editorial change in the ECMA-402 spec. See:
243ec38
2025-04-08 06:50:40 -04:00
Timothy Flynn
0f1fa38442
LibJS: Update spec link for FormatNumericToString AO
...
This is an editorial change in the ECMA-402 spec. See:
e3f7260
Note the other changes in this commit do not apply to our implementation
as we defer to ICU for the affected steps.
2025-04-08 06:50:40 -04:00
Andreas Kling
be70f8d345
LibGC: Avoid excessive bitfield use in GC::Cell
...
We didn't actually save any space by making the Cell flags bitfields.
In fact, it just forced us to do bit twiddling when accessing them.
2025-04-08 12:09:42 +02:00
Sam Atkins
a80408fea6
LibWeb/CSS: Store @property
initial value as a style value
...
For now, it's the "raw" UnresolvedStyleValue. Later, we'll need to try
to parse it into a "real" style value using the property's syntax.
2025-04-08 09:59:41 +01:00
Sam Atkins
9292b769ef
LibWeb/CSS: Use descriptor parsing for @property
2025-04-08 09:59:41 +01:00
rmg-x
514233008b
Meta+LibCore: Stop linking against LibCrypt
...
This was only be used by "Account.cpp" which was removed in:
d8c36ed458
2025-04-08 09:13:33 +02:00
rmg-x
92f5183ced
AK+Meta: Remove unused class RecursionDecision
2025-04-08 09:13:33 +02:00
rmg-x
fcf3abd19c
AK: Remove unused class DOSPackedTime
2025-04-08 09:13:33 +02:00
rmg-x
f39d14fa8a
RequestServer: Remove check for square brackets in websocket_connect
...
This is no longer necessary since commit:
6480e1a3fe
2025-04-08 09:13:33 +02:00