ORCSolver-CHI2020
Servo
ORCSolver-CHI2020 | Servo | |
---|---|---|
1 | 136 | |
26 | 26,337 | |
- | 1.2% | |
10.0 | 9.9 | |
about 4 years ago | 3 days ago | |
Python | HTML | |
Mozilla Public License 2.0 | Mozilla Public License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
ORCSolver-CHI2020
-
What will a Chromium-only Web look like?
Layout engines are difficult to write and adapt. Especially adapt as they're so complicated.
I read part of the ORC Solver paper and there is algorithms in that paper for writing a layout engine and there's code on GitHub.
https://github.com/YueJiang-nj/ORCSolver-CHI2020
I would like to adapt this approach but write the code myself but it is obviously a challenging area.
I am yet to write a branch and bound optimisation algorithm. But from my understanding you greedily try a number of rows or columns and try arrange objects preferred width and preferred height into the space available. ORCSolver uses intervals and eliminates attempts that are not viable. ORCSolver uses Z3 for the final step to actually get coordinates when the system has been constrained. I plan to use ORTools.
For simplicity I plan to break up text into letters and try place them all in a flowing horizontal then vertical layout. I can use GetTextExtents of WX widgets to predict size of a rendered letter. It shall be slow but then how else do you begin writing a layout engine? I would need to read TeX or the Art of Computer Programming.
Layout is expensive especially for grid based layouts with flowing. I wonder if website authors could prerender at different resolutions and provide start point sizes and coordinates for speed. Generally everybody reaches the same numbers on everyone's machines and we don't need to try a lot of aborted work to relayout.
I am the author of additive GUIs which is a declarative rendering approach for bootstrap layouts. https://GitHub.com/samsquire/additive-guis
Servo
-
I'm forking Ladybird and stepping down as SerenityOS BDFL
Actually Servo development has accelerated greatly since 2023: https://github.com/servo/servo/graphs/contributors
-
Mozilla Corporation Org Changes to Accelerate Our Path to the Future
https://servo.org/ is seeing new development alongside https://tauri.app/ which seems like it could replace Electron, getting them a little closer to native speed and memory usage.
It'd be nice to see more and more of Servo integrated into Firefox. Web pages rendered at 120fps and fewer memory leaks in long-lived many-tabbed browser sessions would be lovely.
-
GitHub Sponsor the Servo Rust project!
Servo, the embeddable, independent, memory-safe, modular, parallel web rendering engine
- Bringing Exchange Support to Thunderbird
-
CSS for Printing to Paper
> Is there any easy to use/hack HTML layouting engine where I could experiment with custom CSS attributes and bridge that gap? Would anything from Servo be suitable?
Servo could be used for this. You'd want to add support for parsing the CSS properties themselves to the style crate in https://github.com/servo/stylo and then the layout implementation to the layout2020 crate in https://github.com/servo/servo. You do effectively get a whole browser though.
I'm currently working on building a lighter weight / hackable layout engine based on a combination of https://github.com/servo/stylo (for css parsing and selector resolution), https://github.com/DioxusLabs/taffy (for box-level layout) and https://github.com/pop-os/cosmic-text (for flow/inline layout). I expect to have something decent in around 6 months
Neither of these setups currently have any support for pagination though.
-
The Ladybird Browser Project
Great to see some competition still alive in browser engine development. See also Servo (previously part of Mozilla) https://servo.org/ - that and Ladybird are still very underdeveloped compared to every day browsers.
It's a huge shame that there are no nightly builds of ladybird to try out but I assume that's because they just don't want the bug reports (if everything doesn't work it's pointless getting random bugs filed).
-
Mozilla's Abandoned Web Engine 'Servo' Project Is Getting a Well-Deserved Reboot
I haven't messed with it yet but from looking into it, this should absolutely work.
https://github.com/servo/servo/wiki/Building-on-ARM-desktop-...
-
An open-source browser engine written in Rust
don't know, there was a downtime in 2021 and 22 but since 2023, contributions look back to where it was before .. https://github.com/servo/servo/graphs/contributors
-
Modern Java/JVM Build Practices
The world has moved on though to opinionated tools, and Rust isn't even the furthest in that direction (That would be Go). The equivalent of those two lines in Cargo.toml would be this example of a basic configuration from the jacoco-maven-plugin: https://www.jacoco.org/jacoco/trunk/doc/examples/build/pom.x... - That's 40 lines in the section to do the "defaults".
Yes, you could add a load of config for files to include/exclude from coverage and so on, but the idea that that's a norm is way more common in Java projects than other languages. Like here's some example Cargo.toml files from complicated Rust projects:
Servo: https://github.com/servo/servo/blob/main/Cargo.toml
rust-gdext: https://github.com/godot-rust/gdext/blob/master/godot-core/C...
ripgrep: https://github.com/BurntSushi/ripgrep/blob/master/Cargo.toml
socketio: https://github.com/1c3t3a/rust-socketio/blob/main/socketio/C...
-
Top 10 Rusty Repositories for you to start your Open Source Journey
1. Servo
What are some alternatives?
tauri - Build smaller, faster, and more secure desktop applications with a web frontend.
webview - Tiny cross-platform webview library for C/C++. Uses WebKit (GTK/Cocoa) and Edge WebView2 (Windows).
qtwebengine - Qt WebEngine
xsv - A fast CSV command line toolkit written in Rust.
xi-editor - A modern editor with a backend written in Rust.
Fractalide - Reusable Reproducible Composable Software
qutebrowser - A keyboard-driven, vim-like browser based on Python and Qt.
wry - Cross-platform WebView library in Rust for Tauri.
uBlock-for-firefox-legacy - uBlock Origin for Firefox legacy-based browsers.
caniuse - Raw browser/feature support data from caniuse.com
trust-dns - A Rust based DNS client, server, and resolver [Moved to: https://github.com/hickory-dns/hickory-dns]
System76 Power Management - System76 Power Management