* Update parser interface for reentrancy.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
* Remove assertions around invoking scripts with active parser.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
* Add regression test.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
* Run test with normal and async html parser.
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
---------
Signed-off-by: Josh Matthews <josh@joshmatthews.net>
* remove from rand
Mutex<OsRng> can be initialized in compile time.
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
* remove from layout_2020
Mutex<()> can be initialize in compile time
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
* remove from media
`IS_MULTIPROCESS` doesn't be used.
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
* remove lazy_static from dependencies
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
* rewrite suppressed_leaks_for_asan.txt
For all of lazy_static was replaced with LazyLock.
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
---------
Signed-off-by: Hayashi Mikihiro <34ttrweoewiwe28@gmail.com>
* ohos: redirect stdout/stderr to logging sink
Based on the existing android `redirect_stdout_to_logcat` implementation,
but using the safe abstractions from `nix` and dumping to the `log` sink,
instead of directly writing the log.
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* android: Use new shared implementation for logcat redirection.
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* servoshell: Register cfg(production)
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* Update ports/servoshell/egl/log.rs
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
* Change info! to debug! to match original behavior on android
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
---------
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
Signed-off-by: Jonathan Schwender <55576758+jschwe@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
* Read pixels in same format (gl::RGBA) as the texture
Signed-off-by: crbrz <cristianb@gmail.com>
* Add read pixels test
Signed-off-by: crbrz <cristianb@gmail.com>
* Use patched surfman
Signed-off-by: crbrz <cristianb@gmail.com>
* Update surfman to 0.9.5
Signed-off-by: crbrz <cristianb@gmail.com>
---------
Signed-off-by: crbrz <cristianb@gmail.com>
* Update mozjs
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Fix changed readTransfer callback
https://bugzilla.mozilla.org/show_bug.cgi?id=1842713
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Use NewExternalArrayBuffer from glue
https://github.com/servo/mozjs/pull/474/commits/d33454be74ec5b8d8faf51fab3ed477b8913898b
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Fix columnorigin and filename being in latin1
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* fixup newexternalarray
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Float16 (this might require more work for codegen support)
https://bugzilla.mozilla.org/show_bug.cgi?id=1833647
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* js.strict is removed
https://bugzilla.mozilla.org/show_bug.cgi?id=1621603
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* asm options are now somewhere else
https://hg.mozilla.org/mozilla-central/rev/26045c88e3972957087d535e7f259e08857bd2a2
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Comment out offthread compilation
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Set NDK to 26
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Fix 1-origin handling
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Expect `FinalizationRegistry` interface
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Good expectations
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* more expectations
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Add `WeakRef` to interfaces expectation
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* mozjs upgrade: fixes for Android
Android NDK's layout has changed in r26 and 'lib64' no longer exists
under `toolchain/llvm/prebuilt/linux-x86_64`. The libraries that used to
be it are now present in `lib` folder itself.
This patch updates the build configuration to use the `lib` folder
instead when configuring the LIBCLANG_PATH environment variable.
This patch also updates to a newer mozjs version that includes fixes for
linker errors faced on Android (see #32769).
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* Patch libz-sys & update mozjs
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* update NDK version in README
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* Use servo/mozjs
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Update mozjs again
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
This changes updates to the new version of the `cookie` crate in Servo
which no longer uses the old `time@0.1` data types. This requires using
a new version of `time` while we transition off of the old one. This is
the first step in that process.
In addition, the overloading of the `cookie::Cookie` name was causing a
great deal of confusion, so I've renamed the Servo wrapper to
`ServoCookie` like we do with `ServoUrl`.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
* Update wgpu to c0e7c1ef94
This is few commits ahead of wgpu 22.0
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Make it compile
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Move usage checking to device timeline as per spec
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Add logging (trace) of WEBGPU messages
This is very useful when debugging
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* update wgpu again
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* set good
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* skip `webgpu:api,operation,memory_sync,texture,same_subresource` for flakyness
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* rm r.json
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* Upgrade stylo to 2024-07-16
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
* Use the new `dom` crate from stylo
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
---------
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
`jemallocator` and `jemallocator-sys` crates are same as the `tikv-*`
versions and these aliases were maintained for historical reasons, based
on crates.io documentation. For newer projects, it is recommended to use
the `tikv-` versions of the crate. Even though Servo is not a new
project, it makes sense to switch to the newer version for the sake of
clarity.
Also, more importantly, `tikv-jemallocator` has new release (0.6.0)
which includes a fix for #32720. There doesn't seem to be a
corresponding version publised for the `jemallocator` crate.
Fixes#32720
Signed-off-by: Mukilan Thiyagarajan <mukilan@igalia.com>
* Update wgpu and revamp RenderPass
* Set good expectations
* Set one bad expectation
* send_render_command
* small fixups
* docs
* doc
* Put RenderPass inside PassState
* Use Pass enum for ComputePass too
* fix docs
* Add production-stripped cargo profile
Stripping the binary significantly reduces the size
significantly (in my tests to about 1/3 of the original size).
Enabling lto and setting `codegen-units = 1` allows further size
optimizations at the cost of increased compile-time.
Probably not everyone wants a stripped binary, since it makes
backtraces less useful.
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* Move lto and cgu option to production profile
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
---------
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
* Do not wait on drop, but rather wake poller thread
* Update wgpu and render stuff
* Set some good expectations
* Update wgpu again
* handle IPC error as warning
* More good expectations
* Some more expectations
CTS does not match the spec: https://github.com/gpuweb/cts/issues/3806
* This expectations are due to other changes in servo
also happening on main
* Explain error_command_encoders and remove RefCell around it
* fixup
* store validness of passes
* More good expectations
* More docs
* this assert is wrong
* This is even more right per CTS/spec
Only Command encoder state errors are allowed here, but wgpu does not exposes them.
* More good expectations
* One bad expectation
* Fix my english
This crate only takes care of fonts now as graphics related things are
split into other crates. In addition, this exposes data structures at
the top of the crate, hiding the implementation details and making it
simpler to import them.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Mukilan Thiyagarajan <mukilan@igalia.com>
This is part of the switch from `winapi` to `windows-sys`. `windows-sys` is
maintained by Microsoft, so is more "official." More and more crates are
switching to it.
Instead of linebreaking inside each single-font text segment, linebreak
the entire inline formatting context at once. This has several benefits:
1. It allows us to use `icu_segmenter` (already in use from style),
which is written against a newer version of the Unicode spec --
preventing breaking emoji clusters.
2. Opens up the possibility of changing the way that linebreaking and
shaping work -- eventually allowing shaping across inline box
boundaries and line breaking *after* shaping.
Co-authored-by: Rakhi Sharma <atbrakhi@igalia.com>
Instead of depending on `rust-freetype`, depend directly on
`freetype-sys` which is a transitive dependency. This provides almost
everything we need (apart from one function call). This will help us
eliminate one crate in the dependency chain.
For a long time, `gfx_traits` has held a lot of things unrelated to graphics
and also unrelated to the `gfx` crate (which is mostly about fonts).
This is a cleanup which does a few things:
1. Move non `gfx` crate things out of `gfx_traits`. This is important in
order to prevent dependency cycles with a different integration between
layout, script, and fonts.
2. Rename the `msg` crate to `base`. It didn't really contain anything
to do with messages and instead mostly holds ids, which are used
across many different crates in Servo. This new crate will hold the
*rare* data types that are widely used.
Details:
- All BackgroundHangMonitor-related things from base to a new
`background_hang_monitor_api` crate.
- Moved `TraversalDirection` to `script_traits`
- Moved `Epoch`-related things from `gfx_traits` to `base`.
- Moved `PrintTree` to base. This should be widely useful in Servo.
- Moved `WebrenderApi` from `base` to `webrender_traits` and renamed it
to `WebRenderFontApi`.
Color emoji support with "Noto Color Emoji" requires two things:
1. Support for bitmap fonts in the FreeType backend. This requires
specially handling bitmap fonts which have different characteristics
in the FreeType API (such as requiring metrics scaling). This support
is generally ported from Gecko's implementation.
2. When a character is an emoji it "Noto Color Emoji" needs to be in the
fallback list. Ensure that this is high on the list -- this will be
improved in a later PR.
* Use special WGPU poller thread for poll_all_devices
* Switch to latest wgpu
This is required to fix some deadlocks.
* non-blocking poll unconditionally
* small fixes