Download


Size Date Name SHA256 Signature
1009304 2019-05-15 kore-3.3.0.tar.gz kore-3.3.0.tar.gz.sha256 Minisign signature

ChangeLog for the 3.3.0 release

This release improves the Python async/await support and introduces an asynchronous libcurl interface.

New asynchronous libcurl API

This release introduces the asynchronous libcurl API. This API provides a way for you as a developer to schedule CURL easy handles onto the Kore event loop and execute them asynchronously.

This means that making HTTP requests, FTP file transfers, IMAP inbox listing and more can all be done from your HTTP page handler, asynchronously. If libcurl supports it, you can run it in Kore.

Please see the documentation for more details or refer to the async-curl code for an example.

HTTP/net improvements

Several improvements were made to the HTTP code for this release.

  • - Added configurable timeout for receiving HTTP headers before disconnecting a client.
  • - Added configurable timeout for receiving the HTTP body before disconnecting a client.
  • - Fixed a bug where on links with smaller MTU values a TLS handshake could get stuck.

Python improvements

A lot of async/await improvements and a new httpclient based on the asynchronous libcurl API.

  • - Validators can now be coroutines.
  • - Allow quoted arguments to be passed to kore.proc.
  • - Added a new asynchronous kore.httpclient interface.
  • - Resumed coroutines are now scheduled immediately.
  • - Coroutines coming out of a suspend now resume faster.
  • - The kore.queue interface can now have multiple consumers.
  • - The import configuration option can now import modules.
  • - The recv/recvfrom can now take an optional timeout value.
  • - The kore.gather method now takes a concurrency keyword.
  • - Large speed improvements for the asynchronous sockets interface.
  • - Support AF_UNIX and abstract sockets on Linux in the asynchronous sockets interface.
  • - The req.response method now allows an iterator to be passed (eg: TemplateStream from Jinja2).
  • - The req.pgsql method now always does parameterized queries and deals with text/binary better.

Other improvements

Other improvements that were made in this release.

  • - Added a quiet flag (-q).
  • - Removed several stale examples.
  • - Kore now changes its process title on Linux/MacOS.
  • - Added a new configuration option: worker_death_policy.
  • - Added kore_pgsql_column_binary() to the PostgreSQL API.
  • - Better error messages when a Kore configuration contains errors.
  • - Worker processes now send each other messages about who has the accept lock.
  • - Worker processes no longer busy loop every 100ms but will block if there is no work.