5 ms·
This tutorial looks amazing. I know what I'm going to be doing the next few weekends.
by chakspak 6y ago
This tutorial looks amazing. I know what I'm going to be doing the next few weekends.
- bckr 6y agoYes! Apparently it's still being written.... and I NEED them to get to the CSS bits.
- pavpanchekha 5y agoBook author here. A basic styling engine is the very next chapter, so it should be out in about two months, depending on how the writing process goes.
- bckr 5y agoIncredible, thank you! I believe expanding the simple version into a decently robust rendering engine will be the ultimate way for me to learn CSS. Thanks so much again!
- ronsor 6y agoNo doubt I'll do something crazy, that is, try to implement this in C.
- peterkos 6y agoI was going to > inb4 rust!, but, isn't Gecko built in Rust?
- ronsor 6y agoGecko is (mostly, at least) traditional C++. Servo is written in Rust.
- amelius 5y agoWould Rust be the best choice of language, given all the back pointers (previous, parent)?
- timw4mail 5y agoTrees are not that bad in Rust, it's when you have a cyclical structure that Rust is really difficult.
- amelius 5y agoYes, that's what I meant by "back pointers". In the article, every node has a parent pointer and a child pointer (or several). You can't have both of these pointers without introducing cycles.
- KwanEsq 5y agoThe style parts are in Rust, but layout is C++, I believe. servo does have an experimental layout engine (or two? layout 2020?) in Rust, but I don't think that ever reached a point where Mozilla were seriously considering replacing Gecko's with it.
- timw4mail 5y agoI think Servo is basically a proving ground for replacing components in Firefox with Rust equivalents.
- csbartus 5y agoRight! I'm working with the web since 2006 but still I find this book a must to read.
- mjgs 5y agoIt’s such a great idea for a book! I quite like Python but really I want a version all written in NodeJS, so it’s javascript all the way down :)
- pavpanchekha 5y agoHi mjgs. I'm one of the book's authors, and we debated this quite a bit. The reasoning for using Python is written up here: https://browser.engineering/blog/why-python.html https://browser.engineering/blog/why-python.html That said, it's pretty easy to follow along in JS if you really want and in fact... Stay tuned, there'll be an update in this space very soon.
- mjgs 5y agoThanks for the reply. I like that you’ve chosen a scripting language, it makes the book much more accessible. If it were in c / c++ / rust etc, I would never read it. Thanks for sending the writeup of why you chose Python. As for javascript readability issues, IMO those are non-issues and actually in some ways beneficial to have one language, no need to context switch. The web workers issue is perhaps a problem, but maybe it makes the implementation easier, even if it doesn’t look much like real browsers? I don’t understand the networking issue you highlight, you can build any networking functionality using NodeJS, it’s actually very good in networked application settings. With so many people that write code online in javascript, the book would be so much more accessible. It would be a great compliment to the Python version or any C / C++ version. I’m interested to hear your update, what’s the best way to get that automatically?
- mjgs 5y agoOne other thing...this passed by in my feeds last week, I’m not an expert in web workers or browser threads etc, but it seems like it might be relevant, so sharing it just in case: “A fast, efficient Node.js Worker Thread Pool implementation” https://github.com/piscinajs/piscina https://github.com/piscinajs/piscina
- deleted 5y ago[deleted]