= New Plugins 

* A run_append_slash plugin has been added, which automatically uses
  "/" as the path instead of an empty path when calling rack
  applications with r.run:

    route do |r|
      r.on "a" do
        r.run App
      end
    end
    
    # without run_append_slash:
    # GET /a => App gets "" as PATH_INFO
    # GET /a/ => App gets "/" as PATH_INFO

    # with run_append_slash:
    # GET /a => App gets "/" as PATH_INFO
    # GET /a/ => App gets "/" as PATH_INFO

  By default, the path is modified directly, but if you want to
  redirect instead, you can pass a :use_redirects option when loading
  the plugin.

= New Features

* The assets plugin now supports an :sri option to enable subresource
  integrity on the link/script tags generated by the assets helper.
  This option takes either :sha256, :sha384, or :sha512 values,
  specifying the hash algorithm to use.  Roda 3 will default to using
  :sri => :sha256.

* The assets plugin now supports a :postprocessor option, which should
  be a callable object.  If the option is given, it will be called with
  the filename, type, and rendered asset output of the file (CSS/JS),
  and should return the postprocessed content to use.  This allows any
  type of custom postprocessing to be done, such as CSS autoprefixing.

* The render plugin now supports a :layout_opts=>:merge_locals option,
  which will automatically merge view template locals into layout
  template locals.  This is useful if you want to use the same local
  variable for both templates.

* The error_handler plugin now supports a :classes option, allowing
  you to override which exception classes to handle.  This allows it
  to be used with libraries which use exception classes that
  subclass from Exception instead of StandardError.

= Other Improvements

* The type_routing plugin now works correctly when using r.run.
  Previously, if the type routing plugin recognized and removed
  the file extension used in the requested path, it would not
  add the file extension back to the path when passing the request
  to another rack app.

= Backwards Compatibility

* In the assets plugin, Roda::RodaRequest.assets_matchers now uses
  symbols instead of strings as the first argument in each entry.
  This should not affect you unless you were accessing the values
  directly.
