The main new feature in this release is the introduction of a cache for
precompiled versions of modules in the standard library. The cache is stored
in an indexedDB database attached to the browser. A module is compiled the
first time it is used, or when the Brython version changed. This feature
dramatically improves the loading time of applications that have to import
many modules from the standard library. The implementation is documented in
the wiki page [How Brython works](https://github.com/brython-dev/brython/wiki/How-Brython-works).
Other new features :
- indexedDB cache can't be used for code run by exec(). As an alternative, a
function `browser.run_script(src[, name])` runs the Python script with source
code src and optional name using this indexedDB cache.
- a rework of asyncio has been made to be compatible with CPython, with specific
tests and an adaptation of the built-in test suite (by Jonathan Verner)
- the previous release (3.5.1) had removed the decorator syntax for event
binding. In this version, the module browser now includes a function
`bind(target, event)` that can be used as a decorator for callback functions
- `open()` on binary mode now raises an IOError (this is because browsers don't
want to set `responseType` to "arraybuffer" in blocking mode)
- clarify the disctinction between DOM _attributes_ and _properties_.
Attributes are now managed by the attribute "attrs" of DOMNode instances, a
dict-like object ; properties are managed by the dotted syntax