Ezbl version 0.3
Continuing the trend of massive upgrades, this release brings with it some of
the biggest changes yet!
* Automatically-resizing xwidgets
If you change the size of the window containing a browser window, Ezbl will
automatically resize the xwidget to fit the new size.
* Cookie handler
Ezbl is now able to honor cookie PUT and GET requests from Uzbl, using Uzbl's
(relatively) new "talk_to_socket" system. This means that it is not having to
spawn a Python process for each and every cookie on every page you visit, but
is talking over a UNIX domain socket (which is fast).
This, combined with the new event system has enabled the following:
* No more handler.py script
Ezbl is now 100% Emacs Lisp, and does not need to launch external processes
(aside from Uzbl, of course :). This is largely achieved through the new
event-manager system, which lets Uzbl notify Ezbl of changes and events over
Standard Output, making for a very quick communication.
* Much faster performance
This is largely related to the event and cookie handlers, but it bears
repeating. In a few tests of loading yahoo.com, Ezbl would take about 30
seconds to finish loading the page. That time has now shrunk to just over 2.5
seconds. By using the event manager to let Uzbl notify us of changes, rather
than querying and polling, the amount of dead-time has decreased
dramatically. One commit in particular (d99f336) is responsible for the
majority of this speedup.
* New Emacs dependency
Uzbl uses a special kind of socket type (SOCK_SEQPACKET) for its cookie
handlers, and Emacs doesn't support such sockets (before 23.2, which I helped
to add), so you will need to build a custom version of Emacs, available here:
Note that you need the "xembed" branch of that repository.
* `ezbl-inst' (formerly `ezbl-instances') is now a CL struct
ezbl-inst is now defined by a defstruct from the CL (Common Lisp)
package. This cut down on a lot of the boring and redundant checking and
Also note that in an effort to save those precious electrons, all occurrences
of `ezbl-instance' have been replaced with `ezbl-inst'.
* Restructured naming system
In order to better align with the Emacs convention of getting fake namespaces
with variable prefixes, the function and variable names have been changed to
adhere to a more "least-to-most specific" pattern. That is, what used to be
`ezbl-get-inst' is now `ezbl-inst-get', so that it shows up next to
`ezbl-inst-p' when sorted alphabetically. This is mostly a cosmetic change, so
a simple find and replace will fix any compatibility issues.
* Much less use of `ezbl-sync-request'
It was one of the biggest culprits in slowing down the operation of Ezbl,
since it has to repeatedly scan for matching regular expressions. Variables
are now handled by keeping a hashtable of the variable names