←back to thread

Web Browser Engineering (2021)

(browser.engineering)
679 points MrVandemar | 1 comments | | HN request time: 0s | source
Show context
jm4 ◴[] No.41847720[source]
This looks awesome. About 15 years ago, I started working on a headless browser and maintained it for several years. It used SpiderMonkey as the js interpreter and had a custom DOM implementation. It ran all the modern js from the time, AJAX, etc. Later, I added a custom Flash runtime. It basically did everything but draw to the screen. That project was a lot of fun.

I'm definitely interested in going through this book.

replies(1): >>41847801 #
aitchnyu ◴[] No.41847801[source]
Umm, if you wanted/want to draw to the screen, what library will you use?
replies(3): >>41847984 #>>41848461 #>>41850947 #
skeeterbug ◴[] No.41847984[source]
I believe Chrome uses Skia
replies(1): >>41848048 #
lesuorac ◴[] No.41848048[source]
Yes [4].

> [1] The library is used as of 2023 in Google Chrome, ChromeOS, ChromiumOS, Mozilla Firefox, Mozilla Thunderbird, Android, Firefox OS, Flutter,[5] Avalonia (from Alpha 4), LibreOffice (from version 7.0) and RAD Studio[6](since version 12.0).

> [2] Changes to the Skia repository will be rolled into Chromium by the AutoRoll bot several times per day.

> [3] It serves as the graphics engine for Google Chrome and ChromeOS, Android, Flutter, and many other products.

[1]: https://en.wikipedia.org/wiki/Skia_Graphics_Engine

[2]: https://skia.org/docs/dev/chrome/

[3]: https://skia.org/

[4]: https://github.com/chromium/chromium/tree/main/skia

replies(2): >>41848692 #>>41848892 #
pmarreck ◴[] No.41848692[source]
Whoa. Somehow I have not heard of this. Can this be used to make cross-platform GUI apps?
replies(1): >>41848764 #
Rohansi ◴[] No.41848764[source]
Sure you can, it's a 2D graphics library. It's more like the JS Canvas API though instead of a UI framework.
replies(1): >>41849921 #
1. PaulDavisThe1st ◴[] No.41849921[source]
Which rather importantly means that you still need to find something else to do:

* layout

* event handling

which are not exactly trivial for a "real" application (whatever that means).