* many Splash HTTP UI improvements;
* better support for :ref:`binary data <binary-data>`;
* built-in :ref:`lib-json` and :ref:`lib-base64` libraries;
* more :ref:`control <lib-treat>` for result serialization
(support for JSON arrays and raw bytes);
* it is now possible to turn Private mode OFF at startup using command-line
option or at runtime using :ref:`splash-private-mode-enabled` attribute;
* :ref:`http-ping` endpoint is added;
* cookie handling is fixed;
* downloader efficiency is improved;
* request processing is stopped when client disconnects;
* logging inside callbacks now uses proper verbosity;
* sandbox memory limit for user objects is increased to 50MB;
* some sandboxing issues are fixed;
* :ref:`splash-evaljs` and :ref:`splash-jsfunc` results are sanitized better;
* it is possible to pass arguments when starting Splash-Jupyter - it means
now you can get a browser window for splash-jupyter when it is executed
from docker;
* proxy authentication is fixed;
* logging improvements: logs now contain request arguments in JSON format;
errors are logged;
There are **backwards-incompatible** changes
to :ref:`Splash Scripting <scripting-tutorial>`: previously, different
Splash methods were returning/receiving inconsistent
response and request objects. For example, :ref:`splash-http-get` response was
not in the same format as ``response`` received by :ref:`splash-on-response`
callbacks. Splash 2.0 uses :ref:`Request <splash-request>` and
:ref:`Response <splash-response>` objects consistently.
Unfortunately this requires changes to existing user scripts:
* replace ``resp = splash:http_get(...)`` and ``resp = splash:http_post(...)``
with ``resp = splash:http_get(...).info`` and
``resp = splash:http_post(...).info``. Client code also may need to be
changed: the default encoding of ``info['content']['text']`` is now base64.
If you used ``resp.content.text`` consider switching to
:ref:`splash-response-body`.
* ``response`` object received by :ref:`splash-on-response-headers` and
:ref:`splash-on-response` callbacks is changed: instead of
``response.request`` write ``response.request.info``.
Serialization of JS objects in :ref:`splash-jsfunc`, :ref:`splash-evaljs`
and :ref:`splash-wait-for-resume` **is changed**: circular objects are
no longer returned, Splash doesn't try to serialize DOM elements, and error
messages are changed.
Splash **no longer supports** QT-based disk cache; it was disable by default
and it usage was discouraged since Splash 1.0, in Splash 2.0 ``--cache``
command-line option is removed. For HTTP cache there are better options like
`Squid <http://www.squid-cache.org/>`_.
Another **backwards-incompatible** change is that Splash-as-a-proxy feature
is removed. Please use regular HTTP API instead of this proxy interface.
Of course, Splash will still support using proxies to make requests,
these are two different features.