Version History

0.4.9

  • Update externals: Catch2 (2.7.1).
  • Interface of http_header_fields_t class updated.
  • Fix: usage of CreateFileA on Windows instead of CreateFile.
  • Fix: sendfile operation on Windows closes the file twice.
  • Fix: tracking beacon in URL wasn’t handled properly.
  • Fix: sendfile operation on Windows opens a file in exclusive mode.
  • Semicolon is now supported as parameters separator in URI.

0.4.8.4 (including 0.4.8.1-0.4.8.7)

  • Update externals: asio (1.12.2), Catch2 (2.5.0), Sobjectizer (5.5.24), fmtlib (5.3.0), http_parser (2.9.0).
  • Use Clara for argument parsing.
  • Fix: string_view and express router under VC++ and C++17.
  • Fix: race condition in notificators unit-test.
  • Fix: headers order for msvc.
  • Fix: library version in cmake file.
  • Fix: make restinio::websocket::basic::activate() function inline.
  • Make restinio::websocket::basic::activate() function inline.
  • Introduce enum restinio::websocket::basic::final_frame_flag_t to be used as a flag for ws-frames, that is more self explaining than bool.
  • New method remote_endpoint for requests and WS-handles.
  • Updates for async_handling_with_sobjectizer and websocket_detailed examples.

0.4.8

  • Add notificators for tracking status of written response data (see Notificators).
  • Add trace messages for response status line.
  • Improve response builders interfaces with rvalue qualified versions of setters.
  • Add support for arbitrary datasizeable types as buffers (see Types with datasizeable interface).

0.4.7

  • Add support for header fields in Provisional Message Header Field Names (from here).
  • Introduce safer interface for http_header_field_t using getters/setters. This involves a little incompatibility with prior versions if previously data members were accessed directly because now they a private.
  • Add base_response_builder_t::append_header( http_header_field_t http_header_field ) header field setter.
  • Enhance sendfile_t with file meta information (see File meta).
  • Add restinio::make_date_field_value() functions to format Date header fields (e.g. Fri, 15 Jun 2018 13:58:18 GMT).
  • Introduce restinio::http_status_line_t and a bunch of accompanying stuff, so now a standard response code and reason phrase can be set easily (see Status line).
  • Switch to fmtlib 5.1.0.

0.4.6

  • Switch to fmtlib 5.0.0.
  • Error description for absent key in a key-value container changed.
  • Make restinio::request_t streamable to std::ostream.

0.4.5.1

0.4.4

0.4.3

  • Add facilities for working with files. See details: File support (sendfile).
  • Minor improvements:
    • make request id publicly available;
    • use asio::executor_work_guard instead of asio::work (deprecated).

0.4.2

0.4.1

  • Boost::ASIO supported. RESTinio can optionally use Boost version of ASIO. See details: ASIO Support, Notes on building with Boost::ASIO.
  • Support Boost::Regex as regex engine for express-router.
  • Fix issue. Only path part of the request target must be a subject for doing match.
  • Add request target structure accessor to request header interface: http_request_header_t::path(), http_request_header_t::query(), http_request_header_t::fragment().

0.4.0

  • Express router: regex engine. Introduce a concept of regex engine, so express router can run on pcre/pcre2 engines or the one provided by user (Regex engines).
  • Express router: route DSL. Update route to regex processing in order to stick with path-to-regexp project.
  • Express router: route params using string_view. Getting rid of using strings for storing parameters keys and values in route_params_t and using string_view (std::string_view if available).
  • Express router: route params casting. Introducing functions for converting route parameters to a specific type if the conversion is available (Casting parameters).
  • Express router: non matched request handler. A handler for non matched request can be set (Non matched request handler).
  • Express router: benchmark. Add a benchmark for testing performance on a given set of routes (described in file).
  • Improve query string params. Parsed parameters stored as string_view objects, thus requiring less space and less allocations.
  • Add cmake support for SObjectizer. Test and samples that depend on SObjectizer included to cmake scripts.
  • Add benchmarks. Add restinio benchmarks to repository.
  • Timer manager concept. Redesign timers. Introduce a concept of timer manager, that substitutes former timer factory concept.

0.3.0

  • Running server simplification. Add functions to deal with boilerplate code to run the server in simple cases.
  • Improve internal design. Redesign server start/stop logic.
  • Web Sockets. Basic support for Web Sockets.
  • Acceptor options. Custom options for socket can be set in settings.
  • Separate accept and create connection. Creating connection instance that involves allocations and initialization can be done in a context that is independent to acceptors context.
  • Concurrent accept. Server can accept several client connections concurrently.
  • Add uri helpers. A number of functions to work with query string see uri_helpers.hpp.

0.2.2

  • Improve header fields API. Type/enum support for known header fields and their values.
  • TLS support. Sopport for HTTPS with OpenSSL.
  • External buffers. Support external (constant) buffers support for body and/or body parts.

0.2.1

  • Routers for message handlers. Support for a URI dependent routing to a set of handlers (express-like router).
  • Bind localhost aliases. Accept “localhost” and “ip6-localhost” as address parameter for server to bound to.

0.2.0

  • Chunked transfer encoding. Support for chunked transfer encoding. Separate responses on header and body chunks, so it will be possible to send header and then body divided on chunks.
  • HTTP pipelining. HTTP pipelining support. Read, parse and call a handler for incoming requests independently. When responses become available send them to client in order of corresponding requests.

0.1.0

  • Address binding. Bind server to specific ip address.
  • Timeout control. Enable timeout guards for operations of receiving request (read and parse complete request), handling request, write response.
  • Logging. Support for logging of internal server work.
  • ASIO thread pool. Support ASIO running on a thread pool.
  • IPv6 support.