Todo Before Release
===================

This has to be implemented before the release:

Pull Attributes Onces
---------------------

Imagine the following template::

    {% if foo.bar %}
        {{ baz(foo.bar) }}
    {% endif %}

Problem with that is that it compiles to this::

    if environment.subscribe(l_foo, 'bar'):
        if 0: yield None
        yield u'\n    %s\n' % (
            l_baz(environment.subscribe(l_foo, 'bar')),
        )

As `environment.subscribe` is more expensive then regular attribute lookups
(it tries getitem/getattr and in sandbox mode also permissions) multiple
lookups with the same parameters in the same scope should get local aliases.
The result we have is that one::

    t1 = environment.subscribe(l_foo, 'bar')
    if t1:
        if 0: yield None
        yield u'\n    %s\n' % (
            l_baz(t1),
        )

However that should only happen if the attribute is accessed multiple times
unlike locals and filters/tests which are always pulled.  We're not doing that
for filters/tests/locals as nested scopes may access it and testing is too
complicated for the tiny performance improvement but easy for attribute
lookups, keeping the complexity of the whole thing in mind.
