Chame 0.14.0 has been released.
Quick (re-)introduction: Chame is an HTML5 parser (implementing the WHATWG standard used by modern web browsers) that exposes low-level hooks for operating on user-provided DOM implementations. Its API design is heavily inspired by Servo's html5ever library.
The bad news for existing users is that this release completely breaks the old API. The good news is that no more significant API breakages are planned.
A migration guide from the old API can be found in the NEWS file. In general, it mostly consists of removing boilerplate, adding "Impl" to the end of hooked functions, and adapting your DOM to cooperate with Chame's string interning.
So what has changed since the last announcement?
The full documentation is available here.
What is still missing for the 1.0 version?
SVG script processing will be implemented soon, I think as an optional callback. Needs further investigation.
Parse error reporting might get left out entirely; it is neither useful nor correct in its current state, it would take plenty of effort to make it useful and correct without affecting performance, and I don't need it. If somebody really wants it, I accept patches.
Also, I have been considering some basic improvements in the usability of minidom (chunked parsing + exposing some DOM functionality), these will be present in 1.0.
Firstly, I just want to say I love this library. I've been wanting a WHATWG standard compliant HTML parser in Nim since 2020.
Secondly, I've created a CSS Selectors library for it: CSS3Selectors
So for those of you that do as much web scraping as I do, Chame and CSS3Selectors is what you want. Especially if you're a Nim purist like myself ;)