diff options
author | Azat Khuzhin <a3at.mail@gmail.com> | 2017-01-22 16:58:12 +0300 |
---|---|---|
committer | Azat Khuzhin <a3at.mail@gmail.com> | 2017-01-26 02:36:00 +0300 |
commit | 227bfe562600a1c2c6cf5aed2dbff83d43bfc16a (patch) | |
tree | 2847455982359bb151a6ef86014950f4ae48a7c9 /whatsnew-2.1.txt | |
parent | d9eb42e0822453c0b78437b00a432d3705eb86d8 (diff) | |
download | libevent-227bfe562600a1c2c6cf5aed2dbff83d43bfc16a.tar.gz |
Bump whatsnew-2.1 document
Diffstat (limited to 'whatsnew-2.1.txt')
-rw-r--r-- | whatsnew-2.1.txt | 88 |
1 files changed, 83 insertions, 5 deletions
diff --git a/whatsnew-2.1.txt b/whatsnew-2.1.txt index 0be54ae1..c1f4df8f 100644 --- a/whatsnew-2.1.txt +++ b/whatsnew-2.1.txt @@ -164,10 +164,6 @@ 1.3. Event finalization - [NOTE: This is an experimental feature in Libevent 2.1.3-alpha. Though - it seems solid so far, its API might change between now and the first - release candidate for Libevent 2.1.] - 1.3.1. Why event finalization? Libevent 2.1 now supports an API for safely "finalizing" events that @@ -320,6 +316,9 @@ evbuffer_readln() now supports an EVBUFFER_EOL_NUL argument to fetch NUL-terminated strings from buffers. + There's a new evbuffer_set_flags()/evbuffer_clear_flags() that you can use to + set EVBUFFER_FLAG_DRAINS_TO_FD. + 1.6. New functions and features: bufferevents You can now use the bufferevent_getcb() function to find out a @@ -348,6 +347,17 @@ You can manually trigger a bufferevent's callbacks via bufferevent_trigger() and bufferevent_trigger_event(). + Also you can manually increment/decrement reference for bufferevent with + bufferevent_incref()/bufferevent_decref(), it is useful in situations where a + user may reference the bufferevent somewhere else. + + Now bufferevent_openssl supports "dirty" shutdown (when the peer closes the + TCP connection before closing the SSL channel), see + bufferevent_openssl_get_allow_dirty_shutdown() and + bufferevent_openssl_set_allow_dirty_shutdown(). + + And also libevent supports openssl 1.1. + 1.7. New functions and features: evdns The previous evdns interface used an "open a test UDP socket" trick in @@ -366,6 +376,9 @@ There is a new evdns_base_clear_host_addresses() function to remove all the /etc/hosts addresses registered with an evdns instance. + Also there is evdns_base_get_nameserver_addr() for retrieve the address of + the 'idx'th configured nameserver. + 1.8. New functions and features: evconnlistener Libevent 2.1 adds the following evconnlistener flags: @@ -376,6 +389,10 @@ HTTP where the client always speaks first. On operating systems that don't support this functionality, this option has no effect. + LEV_OPT_REUSEABLE_PORT -- Indicates that we ask to allow multiple servers + to bind to the same port if they each set the option Ionly on Linux and + >=3.9) + LEV_OPT_DISABLED -- Creates an evconnlistener in the disabled (not listening) state. @@ -398,6 +415,9 @@ evhttp_connection_set_timeout_tv() to configure microsecond-granularity timeouts. + Also there is evhttp_connection_set_initial_retry_tv() to change initial + retry timeout. + There are a new pair of functions: evhttp_set_bevcb() and evhttp_connection_base_bufferevent_new(), that you can use to configure which bufferevents will be used for incoming and outgoing @@ -437,12 +457,53 @@ The evhttp_request_set_on_complete_cb() facility adds a callback to be invoked on request completion. + You can add linger-close for http server by passing + EVHTTP_SERVER_LINGERING_CLOSE to evhttp_set_flags(), with this flag server + read all the clients body, and only after this respond with an error if the + clients body exceed max_body_size (since some clients cannot read response + otherwise). + + The evhttp_connection_set_family() can bypass family hint to evdns. + + There are some flags available for connections, which can be installed with + evhttp_connection_set_flags(): + - EVHTTP_CON_REUSE_CONNECTED_ADDR -- reuse connection address on retry (avoid + extra DNS request). + - EVHTTP_CON_READ_ON_WRITE_ERROR - try read error, since server may already + close the connection. + + The evhttp_connection_free_on_completion() can be used to tell libevent to + free the connection object after the last request has completed or failed. + + There is evhttp_request_get_response_code_line() if + evhttp_request_get_response_code() is not enough for you. + + There are *evhttp_uri_parse_with_flags() that accepts + EVHTTP_URI_NONCONFORMANT to tolerate URIs that do not conform to RFC3986. + The evhttp_uri_set_flags() can changes the flags on URI. + 1.10. New functions and features: evutil There's a function "evutil_secure_rng_set_urandom_device_file()" that you can use to override the default file that Libevent uses to seed its (sort-of) secure RNG. + The evutil_date_rfc1123() returns date in RFC1123 + + There are new API to work with monotonic timer -- monotonic time is + guaranteed never to run in reverse, but is not necessarily epoch-based. Use + it to make reliable measurements of elapsed time between events even when the + system time may be changed: + - evutil_monotonic_timer_new()/evutil_monotonic_timer_free() + - evutil_configure_monotonic_time() + - evutil_gettime_monotonic() + + Use evutil_make_listen_socket_reuseable_port() to set SO_REUSEPORT (linux >= + 3.9) + + The evutil_make_tcp_listen_socket_deferred() can make a tcp listener socket + defer accept()s until there is data to read (TCP_DEFER_ACCEPT). + 2. Cross-platform performance improvements 2.1. Better data structures @@ -686,5 +747,22 @@ 5. Testing Libevent's test coverage level is more or less unchanged since before: - we still have over 80% line coverage in our tests on Linux and OSX. + we still have over 80% line coverage in our tests on Linux, FreeBSD, NetBSD, + Windows, OSX. There are some under-tested modules, though: we need to fix those. + + And now we have CI: + - https://travis-ci.org/libevent/libevent + - https://ci.appveyor.com/project/nmathewson/libevent + + And code coverage: + - https://coveralls.io/github/libevent/libevent + + Plus there is vagrant boxes if you what to test it on more OS'es then + travis-ci allows, and there is a wrapper (in python) that will parse logs and + provide report: + - https://github.com/libevent/libevent-extras/blob/master/tools/vagrant-tests.py + +6. Contributing + + From now we have contributing guide and checkpatch.sh. |