3 ms·
Interesting they've got a screenshot of SerenityOS.org at the end of their home page, curious if their looking at SerenityOS's home grown LibWeb [1] C++ impleme
by mythz 6y ago
Interesting they've got a screenshot of SerenityOS.org at the end of their home page, curious if their looking at SerenityOS's home grown LibWeb [1] C++ implementation for inspiration in their Go code-base?
SerenityOS is another Indie OS effort which plans to build the entire POSIX OS, Kernel and core Apps from scratch, one of the Apps their is their LibWeb browser engine complete with their own LibJS JS VM which already passes the vast ECMAScript test suite [2]. One of its USPs of SerenityOS is being able to make changes to its code-base and instantly reboot the OS in seconds with the changes, never seen this done for an OS before, the turn around time allows for some impressive dev iteration speed.
Andreas videos on developing LibWeb/LibJS is one of the best resources I've found explaining how to implement a web browser, e.g. in this video he goes through the HTML Specs which have enough info in them to develop a HTML spec parser whose behavior is the same across all browser engines:
https://www.youtube.com/watch?v=7ZdKlyXV2vw https://www.youtube.com/watch?v=7ZdKlyXV2vw
Most of the interesting parts of LibWeb/LibJS is captured on video that has a unique skill of being able to write code really quickly whilst explaining each step. There must be close to 100 videos on implementing different parts of the Web Browser on his YouTube channel, e.g:
https://www.youtube.com/c/AndreasKling/search?query=html https://www.youtube.com/c/AndreasKling/search?query=html
https://www.youtube.com/c/AndreasKling/search?query=js https://www.youtube.com/c/AndreasKling/search?query=js
https://www.youtube.com/c/AndreasKling/search?query=css https://www.youtube.com/c/AndreasKling/search?query=css
https://www.youtube.com/c/AndreasKling/search?query=canvas https://www.youtube.com/c/AndreasKling/search?query=canvas
[1] https://github.com/SerenityOS/serenity/tree/master/Userland/Libraries/LibWeb https://github.com/SerenityOS/serenity/tree/master/Userland/...
[2] https://github.com/SerenityOS/serenity/tree/master/Userland/Libraries/LibJS/Tests https://github.com/SerenityOS/serenity/tree/master/Userland/...