Changelog for Falcon 1.3.0
==========================

Breaking Changes
----------------

(None)

Changes to Supported Platforms
------------------------------

- CPython 3.6 is now fully supported.
- Falcon appears to work well on PyPy3.5, but we are waiting until
  that platform is out of beta before officially supporting it.
- Support for both CPython 2.6 and Jython 2.7 is now deprecated and
  will be discontinued in Falcon 2.0.

New & Improved
--------------

- We added built-in resource representation serialization and
  deserialization, including input validation based on JSON Schema.
  (See also: :ref:`Media <media>`)
- URI template field converters are now supported. We expect to expand
  this feature over time. (See also:
  :ref:`Field Converters <routing_field_converters>`)
- A new method, :meth:`~falcon.Request.get_param_as_datetime`, was added to
  :class:`~falcon.Request`.
- A number of attributes were added to :class:`~falcon.Request` to
  make proxy information easier to consume. These include the
  :attr:`~falcon.Request.forwarded`, :attr:`~falcon.Request.forwarded_uri`,
  :attr:`~falcon.Request.forwarded_scheme`, :attr:`~falcon.Request.forwarded_host`,
  and :attr:`~falcon.Request.forwarded_prefix` attributes. The
  :attr:`~falcon.Request.prefix` attribute was also added as part of this
  work.
- A :attr:`~falcon.Request.referer` attribute was added to
  :class:`~falcon.Request`.
- We implemented ``__repr__()`` for :class:`~falcon.Request`,
  :class:`~falcon.Response`, and :class:`~.HTTPError` to aid in
  debugging.
- A number of Internet media type constants were defined to make it
  easier to check and set content type headers. (See also:
  :ref:`Media Type Constants <media_type_constants>`)
- Several new 5xx error classes were implemented. (See also:
  :ref:`Error Handling <errors>`)


Fixed
-----

- If even a single cookie in the request to the server is malformed,
  none of the cookies will be parsed (all-or-nothing). Change the
  parser to simply skip bad cookies (best-effort).
- :class:`~.API` instances are not pickleable. Modify the default router
  to fix this.
