1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title> Dillo Web Browser ::
Funding Presentation :: Technical Overview
</title>
<style type="text/css">
body {margin: 0}
.sidebar .items {background: #f8f8f8}
.sidebar h3 {font-size: 1em; margin: 0.4em 0 0.2em 0}
h1 {color: #67f; margin-top: 0.25em; margin-bottom: 0.25em}
h3 {color: #56f; background: #f0f0f0}
.section {background: #f8f8f8; border-color: #e8e8e8; border-style: solid; border-width: 1px; margin-bottom: 0.5em}
.section h3 {margin-top: 0; margin-bottom: 0.2em}
ul li {list-style-type: square}
</style>
</head>
<body text="black" link="blue" vlink="#403090" bgcolor="white"
style="line-height: 1.3">
<table width="100%" cellspacing="0" cellpadding="0"><tr>
<td><img src="../db1.png" alt="The Dillo Web Browser">
<td width="100%">
<img src="../db2.png" alt="The Dillo Web Browser" height="124" width="100%">
</table>
<table border="0" cellpadding="15" cellspacing="5" width="100%">
<tr valign="top">
<td class="sidebar">
<h3>Dillo</h3>
<div class="items">
<a href="../index.html">Home</a><br>
<a href="../screenshots/index.html">Screenshots</a><br>
<a href="../download.html">Download</a><br>
<a href="../FAQ.html" title="Frequently asked questions">FAQ</a><br>
<a href="../Compatibility.html">Compatibility</a><br>
<a href="http://hg.dillo.org/dillo/raw-file/default/ChangeLog">
Changelog</a><br>
<a href="../Plans.html">Current Plans</a><br>
<a href="../MList.html">Mailing List</a><br>
<a href="../conferences.html">Conferences</a><br>
<a href="../donations.html">Donate</a><br>
</div>
<h3>Users</h3>
<div class="items">
<a href="../dillo3-help.html">Help</a><br>
<a href="../Icons/index.html">Icons</a><br>
<a href="../help/bug_meter.html">Bug meter</a><br>
<br>
</div>
<h3>Bug Tracker</h3>
<div class="items">
<small>[currently broken]</small><br>
<!--
<a href="/bugtrack/Dbugtrack.html">Bug Track Intro</a><br>
<a href="/bugtrack/Dquery.html">View Entries</a><br>
<a href="/bugtrack/Dinsert.html">Bug Insertion</a><br>
<a href="/bugtrack/Dvolunteer.html">Volunteering</a><br>
-->
</div>
<h3>Developers</h3>
<div class="items">
<a href="../developer.html">New Developer</a><br>
<a href="../documentation.html">Documentation</a> *<br>
<a href="../NC_design.html">Naming&Coding</a><br>
<a href="../source.html">Source repository</a><br>
<a href="../dpi1.html">Dpi1 Spec</a><br>
<a href="../CSS.html">CSS Spec</a><br>
<a href="../D_authors.html">Authors</a><br>
<a href="../authors/jcid-email.html">Security contact</a><br>
</div>
<h3>Related</h3>
<div class="items">
<a href="../press.html">Dillo in the Press!</a><br>
<a href="../interview.html">Interview</a><br>
<a href="../interview.es.html">Entrevista</a>
<img src="../chile.png" alt="*"><br>
<a href="../Links.html">Links</a><br>
<a href="../logos/logos.html">Art</a><br>
</div>
<p>
<a href="../authors/webmaster-email.html">Webmaster</a>
<p>
<a href="http://www.anybrowser.org/campaign/">
<img src="../abblue.gif" width="80" height="15"
alt="anybrowser"></a>
<td valign="top" align="left" width="100%">
<table width="100%" bgcolor="#70A0C0">
<tr><td>
<table width="100%" bgcolor="#70A0C0">
<tr>
<td><a href="funding.html">
<img src="logo1s.png" title="Top page" alt="Index"></a></td>
<td width="90%" align="center">
<b><big><big><big>Technical overview</big></big></big></b>
</td>
<td><small>[Page 4 of 6]</small></td>
</tr>
</table>
</td></tr>
<tr>
<td>
<table width="100%" cellpadding="4" border="0" cellspacing="0">
<tr>
<td width="100%" bgcolor="#818181">
<font color="white"><big><b>Metadescription</b></big></font>
</td>
</tr>
<tr>
<td width="100%" bgcolor="#70A0C0">
<br>
<b>[Please note that the funding presentation is currently considered
historical and is not updated —corvid]</b>
<p>
What's Dillo?
<ul>
<li> Dillo is a web browser project completely written in C. </li>
<li> Dillo is small: source is less than 350 KB, and the binary is around
<strong> 300 KB! </strong> </li>
<li>Dillo aims to be a multi-platform browser alternative that's small,
stable, developer-friendly, usable, fast, and extensible. </li>
<li>Dillo is mainly based on GTK+ (GNOME is NOT required!)</li>
<li>Dillo is a free-SW project in the terms of the GNU general public
license. </li>
<li>Current code uses an improved and extended version of gzilla-0.2.2's
html-parser, and almost everything else was rewritten from scratch!.</li>
<li>Dillo is <strong>very fast!</strong></li>
</ul>
<br>
<hr>
</td>
</tr>
</table>
<hr>
</td>
</tr>
<tr>
<td>
<table width="100%" cellpadding="4" border="0" cellspacing="0">
<tr>
<td width="100%" bgcolor="#818181">
<font color="white"><big><b><a name="des"></a>Design</b></big></font>
</td>
</tr>
<tr>
<td width="100%" bgcolor="#70A0C0">
<br>
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.
<p>
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!
<p>
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.
<p>
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).
<br><br>
<hr>
</td>
</tr>
</table>
<hr>
</td>
</tr>
<tr>
<td>
<table width="100%" cellpadding="4" border="0" cellspacing="0">
<tr>
<td width="100%" bgcolor="#818181">
<font color="white"><big><b><a name="fea"></a>Current features</b></big></font>
</td>
</tr>
<tr>
<td width="100%" bgcolor="#70A0C0">
<br>
<ul>
<li>A very good subset of HTML 4.01 SPEC is supported (no frames yet)
<li>URI parsing that's
<a href="http://www.ietf.org/rfc/rfc2396.txt">RFC-2396</a> compliant
<li>Cookies support,
<a href="http://www.ietf.org/rfc/rfc2965.txt">RFC-2965</a> compliant
<li>XHTML 1.0 rendering (same subset as for HTML)
<li>Plain text rendering
<li>Image formats support: PNG, JPEG and GIF (no animated GIFs)
<li>HTTP 1.0 (not fully yet)
<li>High portability among Un*x based machines
<li>An extraordinary small size (around 40 times less than big browsers)
<li>Innovative concurrency handling that allows for a user interface
that's always responsive and that lacks busy-clock locks!
<li>A simple cognitive model underlying the UI (simple to use for
the newbie and expert).
<li>An ordered, clean and documented code base that's easy to extend
and maintain.
<li>Extraordinary quick rendering!
<li>Streamed rendering of tables (it doesn't require the whole table data
to start rendering)
<li>Multiple browsing windows can be used at the same time!
<li>Start-up time that's near two seconds!
<li>Snapy response even on a 75Mhz Pentium with 32 Mb
<li>and much more...
</ul>
<p>
Just test it!
<br><br>
<hr>
</td>
</tr>
</table>
<hr>
</td>
</tr>
<tr>
<td>
<table width="100%" cellpadding="4" border="0" cellspacing="0">
<tr>
<td width="100%" bgcolor="#818181">
<font color="white"><big><b><a name="doc"></a>Internal documentation</b></big></font>
</td>
</tr>
<tr>
<td width="100%" bgcolor="#70A0C0">
<br>
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.
<p>
These are in the "/doc" directory within the tarball.
<pre>
--------------------------------------------------------------------------
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]
--------------------------------------------------------------------------
</pre>
<hr>
</td>
</tr>
</table>
<hr>
</td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
|