Skip to content
Choose a tag to compare

gngr v0.3.10

@hrj hrj released this
· 412 commits to master since this release
Choose a tag to compare

The focus of this release was on layout improvements. Layouting is now 5x faster, and the algorithm is now much more correct. This release also underwent a lot of testing against many websites, and so is more stable.

Installation instructions are here.

Layout improvements

  • Layouting is now deferred until all resources have loaded. Earlier, gngr would start layouting as soon as the HTML was parsed. This layout would then get invalidated after CSS and images were loaded. We now wait till all resources have loaded and only then begin the layouting. This saves computation and also avoids a jerky user-experience.
  • The common part of the CSS Analysis phase is now computed once for the document and then reused for each element. This gives a big speed improvement (about 5x). The benchmark page is modelled on a reddit comment thread. The time to load such a page went down from 35 seconds to about 7 seconds!
  • position:fixed elements are used to "stick" content on the screen even when scrolled. This now works correctly.
  • position:relative elements are used widely in CSS. In this release, we have attempted to properly implement relative positioning. There are still some corner cases to be addressed, but overall, the new algorithm is a huge improvement.

Regression fixes

There were two major regressions introduced in the previous release (v0.3.9), which have been fixed in this release.

  • HTML Documents with framesets were not parsed correctly in QUIRKS_MODE. Examples of such documents are javadocs.
  • HTML Documents with CDATA sections were not parsed correctly.


  • Holding Control key while clicking now opens a link or image in a new window. The same happens with a middle-click as well. #59
  • Dependencies were updated
    • H2 was updated to 1.4.188. #130
    • OkHTTP was updated to 2.5.0 #146

Other changes

  • Fix for #72 : Opening a URL in new window doesn't open a new window the second time.
  • Fix for #15 : image encoded in data-uri from ACID2 fails.
  • Added LWN to the directory.