Current status of the project - october 23 #174
jaytaph
announced in
Announcements
Replies: 4 comments
-
How to use website for the world with github |
Beta Was this translation helpful? Give feedback.
0 replies
-
How can help fully integrated Intel github for website to the word |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Welcome to the second status update of the Gosub Browser/Engine project!
A lot has happened in the last month. More than I was actually expecting.
First of all, we are passing almost all tokenizer tests found in the html5lib-tests suite. The ones not passing has to do with utf-16 surrogate codes which cannot be handled by Rust (they are invalid utf-8 codes and therefor cannot be read). This is just a few tests out of the thousands, so we're can be pretty confident that the tokenizer does its job for now.
Next, we have been focusing on the html5 parser. The implementation is pretty straight forward, but it's a LOT of states that have to be taken care of. We've spend a lot of time on a few tests, because of the underlying algorithms not working completely the way they should (the adoption agency algorithm is especially hard to get right). Now that we finally passed that hurdle, we are trying to get more and more parser tests passing, which takes time to get all the fine details right.
One other obstacle we had to overcome - and are still overcoming - is the lack of "real" experience with Rust. We have a few contributors that all know a lot, but have not much rust skills (but more than me). This means that we can think of what we want to build, but actually converting into rust code can be a little bit more complex. Especially things with the borrow checker is a pain to work with when you are starting with rust.
Fortunately, everybody is gaining more and more experience, and we can clean up nicely the "old" code that seems working but either isn't really rust idiomatic, or just could be done better. For example the node structure and matching on node elements is a work in progress that is currently taking place, and will be formed into a much nicer and cleaner interface to work with.
Next, there is a lot of progress made by @neuodev who basically single-handedly took on the writing of the first CSS3 tokenizer and parser. Even though we do not use this system yet (the html5 parser will need to call this css parser when a style-sheet is found, as any calls from JavaScript can access and modify the style sheets), for now it's a good progress and have a nice component ready as soon as we can connect it to the rest of the system.
Further, we are basically trying to do a lot of research (much is done by @emwalker) on how other browsers are parsing HTML, and how browsers in general should function. We are still far away from a browser, but the first steps have been taken.
For the next month, I hope to have finished the parser in such a way that we can parse (almost) all tree-construction tests, cleaned up the node tree generation (and maybe see if we can move the tree building away from the parser, like most other browsers do), and see if we can do some parsing of real HTML pages found in the wild.
Besides this, we still have to discuss and think about what we want to do with the browser itself: how would it work, what features should it have, how would the different components interact with each other. There is a lot of research that needs to take place, and a lot of discussions to figure out the best way forward.
We still trying to find our way in developing and we certainly will try and streamline the contribution process as more developers will try and contribute. This includes where and how to write documentation, where to keep discussions, where to store research and how to manage the different issues we need to do and fix. It starts to sound like a real software project :-)
Until next month!
Beta Was this translation helpful? Give feedback.
All reactions