The Dillo Web Browser The Dillo Web Browser
Index Technical overview [Page 4 of 6]
Metadescription

[Please note that the funding presentation is currently considered historical and is not updated —corvid]

What's Dillo?

  • Dillo is a web browser project completely written in C.
  • Dillo is small: source is less than 350 KB, and the binary is around 300 KB!
  • Dillo aims to be a multi-platform browser alternative that's small, stable, developer-friendly, usable, fast, and extensible.
  • Dillo is mainly based on GTK+ (GNOME is NOT required!)
  • Dillo is a free-SW project in the terms of the GNU general public license.
  • Current code uses an improved and extended version of gzilla-0.2.2's html-parser, and almost everything else was rewritten from scratch!.
  • Dillo is very fast!



Design

Dillo is a browser purely written in C; that helps to make it very fast and produces a smaller binary file than what would be achieved with normal C++ code. The trade off is that inheritance gets more complex cause it must be implemented with C code. That's a bit scary at the very beginning, but is not as bad at it seems.

Dillo internals are not of a simple nature. A Web browser is an inherently complex application. Just think of every thing that needs to be coordinated to get the job done. And at the very same time!

Dillo's main libraries are gtk+ (gimp tool kit) for widgets and glib for almost everything else (as memory management). So, if you happen to be developing new code, please try to find what glib has to offer you, and use it.

Dillo's SW-techniques include threads, callbacks, signal driven IO (input/output) and an engine that takes care of file descriptor activity (including sockets). Ah, there's also a widget abstraction layer that serves as an internal ADT (abstract data type) to gtk+; It's called Dillo widget (Dw_ within function names).



Current features

  • A very good subset of HTML 4.01 SPEC is supported (no frames yet)
  • URI parsing that's RFC-2396 compliant
  • Cookies support, RFC-2965 compliant
  • XHTML 1.0 rendering (same subset as for HTML)
  • Plain text rendering
  • Image formats support: PNG, JPEG and GIF (no animated GIFs)
  • HTTP 1.0 (not fully yet)
  • High portability among Un*x based machines
  • An extraordinary small size (around 40 times less than big browsers)
  • Innovative concurrency handling that allows for a user interface that's always responsive and that lacks busy-clock locks!
  • A simple cognitive model underlying the UI (simple to use for the newbie and expert).
  • An ordered, clean and documented code base that's easy to extend and maintain.
  • Extraordinary quick rendering!
  • Streamed rendering of tables (it doesn't require the whole table data to start rendering)
  • Multiple browsing windows can be used at the same time!
  • Start-up time that's near two seconds!
  • Snapy response even on a 75Mhz Pentium with 32 Mb
  • and much more...

Just test it!



Internal documentation

Besides the descriptions found on the web site, Dillo has several other detailed documents about its internal working, that are included within the sources distribution.

These are in the "/doc" directory within the tarball.

 --------------------------------------------------------------------------
       FILE                    DESCRIPTION                   STATE         
 --------------------------------------------------------------------------
   NC_design.txt       Naming&Coding design                 Current
   Dillo.txt           General overview of the program      Current
   IO.txt              Extensive introduction               Current
   Cache.txt           Informative description              Current
   Images.txt          Image handling and processing        Current
   HtmlParser.txt      A versatile parser                   Current
   Dw.txt              The New Dillo Widget (Overview)      Current
   DwWidget.txt        The base object of Dw                Current
   DwImage.txt         Dillo Widget image handling          Incomplete
   DwPage.txt          Dillo Widget page (shortly)          Incomplete
   DwStyle.txt         Styles of Dillo Widgets              Pending
   DwTable.txt         Tables in dillo                      Current
 --------------------------------------------------------------------------
 [This documents cover dillo's internal working. They're NOT a user manual]
 --------------------------------------------------------------------------