xref: /libevent-2.1.12/ChangeLog (revision 143cb613)
1*143cb613SNick MathewsonChanges in version 2.1.2-alpha (18 Nov 2012)
2*143cb613SNick Mathewson
3*143cb613SNick Mathewson Libevent 2.1.2-alpha includes more portable for monotonic timers,
4*143cb613SNick Mathewson refactors much of Libevent's internal and external infrastructure,
5*143cb613SNick Mathewson closes some longstanding gaps in the interface, makde other
6*143cb613SNick Mathewson improvements.  Ths log below tries to organize features by rough area of
7*143cb613SNick Mathewson effect.  It omits a few commits which were pure bugfixes on other commits
8*143cb613SNick Mathewson listed below.  For more detail, see the git changelogs.  For more
9*143cb613SNick Mathewson insight, see the "whatsnew-2.1.txt" document included in the Libevent
10*143cb613SNick Mathewson 2.1.2-alpha distribution.
11*143cb613SNick Mathewson
12*143cb613SNick Mathewson Libevent 2.1.2-alpha also includes all changes made in 2.0.19-stable
13*143cb613SNick Mathewson through 2.0.21-stable inclusive.
14*143cb613SNick Mathewson
15*143cb613SNick Mathewson Performance (core):
16*143cb613SNick Mathewson   o Replace pipe-based notification with EVFILT_USER where possible. This
17*143cb613SNick Mathewson     should make multithreaded programs on OSX and *BSD alert the main thread a
18*143cb613SNick Mathewson     little faster. (53a07fe)
19*143cb613SNick Mathewson   o Make th_base_lock nonrecursive. (9cd5acb)
20*143cb613SNick Mathewson
21*143cb613SNick Mathewson New/Changed API Functions:
22*143cb613SNick Mathewson   o New event_get_priority() function to return an event's priority (f90e255)
23*143cb613SNick Mathewson   o Add a bufferevent_get_priority() function (bd39554)
24*143cb613SNick Mathewson   o Add an event_base_loopcontinue() to tell Libevent to rescan for more
25*143cb613SNick Mathewson     events right away (7d6aa5e)
26*143cb613SNick Mathewson   o Add a new callback to get called on evbuffer_file_segment free
27*143cb613SNick Mathewson     (e9f8feb yangacer, 64051b9)
28*143cb613SNick Mathewson   o Expose event_base_foreach_event() as a public API. (84fd6d7 Roman
29*143cb613SNick Mathewson      Puls, 232055e, ffe1643)
30*143cb613SNick Mathewson   o Add an event_remove_timer() to remove timer on an event without
31*143cb613SNick Mathewson     deleting it (e3b2e08)
32*143cb613SNick Mathewson   o Make bufferevent_set_timeouts(bev, NULL, NULL) have plausible
33*143cb613SNick Mathewson     semantics (9dee36b)
34*143cb613SNick Mathewson   o Rename event_enable_lock_debuging() to ..._debugging(). (The old name
35*143cb613SNick Mathewson     should still work.) (07e132e)
36*143cb613SNick Mathewson   o Add missing implementation for event_enable_debug_logging (3b3e21d)
37*143cb613SNick Mathewson
38*143cb613SNick Mathewson PORTABLE MONOTONIC TIMERS:
39*143cb613SNick Mathewson
40*143cb613SNick Mathewson   Libevent 2.1.2 includes internal support for monotonic timers on
41*143cb613SNick Mathewson   (nearly) all supported platforms, including Windows, and OSX.  Libevent
42*143cb613SNick Mathewson   applications should now be more resilient to jumps forwards or backwards
43*143cb613SNick Mathewson   in the system clock.  Also, on Linux systems with epoll, we now
44*143cb613SNick Mathewson   optionally support microsecond-level timeouts (whereas epoll only
45*143cb613SNick Mathewson   supports millisecond-precision timeouts).
46*143cb613SNick Mathewson
47*143cb613SNick Mathewson   o Use mach_absolute_time() for monotonic clock support on OSX. (b8fd6f9)
48*143cb613SNick Mathewson   o Do not track use_monotonic field when is no monotonic clock (cb653a0)
49*143cb613SNick Mathewson   o EVENT_BASE_FLAG_PRECISE_TIMER indicates we want fine timer precision
50*143cb613SNick Mathewson     (ddd69d3)
51*143cb613SNick Mathewson   o On Linux, use CLOCK_MONOTONIC_COARSE by default (55780a7)
52*143cb613SNick Mathewson   o Implement a GetTickCount-based monotonic timer for Windows (d5e1d5a)
53*143cb613SNick Mathewson   o Refactor monotonic timer handling into a new type and set of
54*143cb613SNick Mathewson     functions; add a gettimeofday-based ratcheting implementation (f5e4eb0)
55*143cb613SNick Mathewson   o Add EVENT_PRECISE_TIMER environment var for selecting precise-but-slow
56*143cb613SNick Mathewson     timer (a2598ec)
57*143cb613SNick Mathewson   o Implement fast/precise monotonic clocks on Windows (2c47045)
58*143cb613SNick Mathewson   o Simple unit tests for monotonic timers (630f077)
59*143cb613SNick Mathewson   o Improve the monotonic-time unit test: make it check the step size (7428c78)
60*143cb613SNick Mathewson   o When PRECISE_TIMERS is set with epoll, use timerfd for microsecond
61*143cb613SNick Mathewson     precision (26c7582)
62*143cb613SNick Mathewson   o Split out time-related evutil functions into a new evutil_time.c (c419485)
63*143cb613SNick Mathewson   o Split out time-related prototypes into time-internal.h (71bca50)
64*143cb613SNick Mathewson   o Add evutil_time.obj to Makefile.nmake (0ba0683)
65*143cb613SNick Mathewson   o Avoid giving a spurious warning when timerfd support is unavailable
66*143cb613SNick Mathewson     (1aaf9f0 Dave Hart)
67*143cb613SNick Mathewson   o Make test_evutil_monotonic a little more tolerant (def3b83)
68*143cb613SNick Mathewson   o Avoid unused-var warning on systems with clock_gettime but without
69*143cb613SNick Mathewson     CLOCK_MONOTONIC_COARSE (9be5468)
70*143cb613SNick Mathewson
71*143cb613SNick MathewsonEVENT_BASE_ONCE LEAKS:
72*143cb613SNick Mathewson   If a callback added by event_base_once() is never invoked, Libevent no
73*143cb613SNick Mathewson   longer leaks internal memory.
74*143cb613SNick Mathewson
75*143cb613SNick Mathewson   o Free dangling event_once objects on event_base_free() (c17dd59)
76*143cb613SNick Mathewson   o Add a unit test in which an event is created with event_base_once()
77*143cb613SNick Mathewson     but never fires (4343edf)
78*143cb613SNick Mathewson
79*143cb613SNick MathewsonTESTING SUPPORT, FIXES AND IMPROVEMENTS:
80*143cb613SNick Mathewson
81*143cb613SNick Mathewson   Libevent now disables by default its unit tests that would touch the
82*143cb613SNick Mathewson   network, or that tend to fail on heavily-loaded systems.  To re-enable
83*143cb613SNick Mathewson   them, invoke the ./test/regress program with the @all alias.
84*143cb613SNick Mathewson
85*143cb613SNick Mathewson   o Simplify test.sh code significantly. (9b856fd Ross Lagerwall)
86*143cb613SNick Mathewson   o Make all tests that hit the network disabled by default (f2cea87)
87*143cb613SNick Mathewson   o Avoid a resource leak on error in http client benchmark (ea92fba)
88*143cb613SNick Mathewson   o Update to latest tinytest (911b4f0349377) (ef7c4f7)
89*143cb613SNick Mathewson   o Avoid (unlikely) overflow in bench_httpclient.c (5671033)
90*143cb613SNick Mathewson   o Shave 700 msec off the persistent_timeout_jump test (21205b8)
91*143cb613SNick Mathewson   o Check return value of write() in regress.c (c8009d2)
92*143cb613SNick Mathewson   o Make load-dependent monotonic timer tests off-by-default (2b6fe8b)
93*143cb613SNick Mathewson   o Add deferred_cb_skew to list of timing-dependent tests (34c8f31)
94*143cb613SNick Mathewson   o Avoid test -e; older shs don't have one. (f1bd938)
95*143cb613SNick Mathewson   o Fix renegotiation test to work around openssl 1.0.1 bug (c2f3086)
96*143cb613SNick Mathewson   o Fix a couple of compile warnings in the unit tests (5a9a014)
97*143cb613SNick Mathewson
98*143cb613SNick MathewsonMISC:
99*143cb613SNick Mathewson   o Change evutil_weakrand_() to avoid platform random() (e86af4b Nicholas
100*143cb613SNick Mathewson     Marriott, 3aa4415)
101*143cb613SNick Mathewson
102*143cb613SNick MathewsonINFRASTRUCTURE (Active-later events):
103*143cb613SNick Mathewson   As a simplification and optimization to Libevent's "deferred callback"
104*143cb613SNick Mathewson   logic (introduced in 2.0 to avoid callback recursion), Libevent now
105*143cb613SNick Mathewson   treats all of its deferrable callback types using the same logic it uses
106*143cb613SNick Mathewson   for active events.  Now deferred events no longer cause priority
107*143cb613SNick Mathewson   inversion, no longer require special code to cancel them, and so on.
108*143cb613SNick Mathewson
109*143cb613SNick Mathewson   o Refactor the callback part of an event into its own event_callback
110*143cb613SNick Mathewson     type (cba59e5)
111*143cb613SNick Mathewson   o Add "active later" event_callbacks to supersede deferred (745a63d)
112*143cb613SNick Mathewson   o event_base_assert_ok: check value of event_active_count for
113*143cb613SNick Mathewson     correctness (fec8bae)
114*143cb613SNick Mathewson   o Replace deferred_cbs with event_callback-based implementation. (ae2b84b)
115*143cb613SNick Mathewson   o Replace more deferred_cb names with event_callback (a4079aa)
116*143cb613SNick Mathewson   o Give event_base_process_active a single exit path (581b5be)
117*143cb613SNick Mathewson   o Restore our priority-inversion-prevention code with deferreds (c0e425a)
118*143cb613SNick Mathewson   o Refactor event_persist_closure: raise and extract some common logic
119*143cb613SNick Mathewson     (bec22b4)
120*143cb613SNick Mathewson   o Remove the unused bits from EVLIST_ALL (9889a3d)
121*143cb613SNick Mathewson
122*143cb613SNick MathewsonBUILD IMPROVEMENTS:
123*143cb613SNick Mathewson Libevent 2.1.2-alpha modernizes Libevent's use of autotools, and makes
124*143cb613SNick Mathewson numerous other build system. Parallel builds should be faster, and all
125*143cb613SNick Mathewson builds should be quieter.
126*143cb613SNick Mathewson
127*143cb613SNick Mathewson   o Split long lists in Makefile.am into one-item-per-line (2711cda)
128*143cb613SNick Mathewson   o Remove unnecessary code in configure.in. (e65914f Ross Lagerwall)
129*143cb613SNick Mathewson   o attempt to support OpenSSL in Makefile.nmake (eba0eb2 Patrick Pelletier)
130*143cb613SNick Mathewson   o Use newer syntax for autoconf/automake init (7d60ba8)
131*143cb613SNick Mathewson   o Enable silent build rules by default. Override with V=1 (7b18e5c)
132*143cb613SNick Mathewson   o Switch to non-recursive makefiles (7092f3b)
133*143cb613SNick Mathewson   o Rename subordinate Makefile.ams to include.am (6cdfeeb)
134*143cb613SNick Mathewson   o Make quiet build even quieter (371a123)
135*143cb613SNick Mathewson   o New --quiet option for event_rpcgen.py (aa59c1e)
136*143cb613SNick Mathewson   o Be quiet when making regress.gen.[ch] (607a8ff)
137*143cb613SNick Mathewson   o Fix handling of no-python case for nonrecursive make (1e3123d)
138*143cb613SNick Mathewson   o We now require automake 1.9 or later. Modernize! (b7f6e89)
139*143cb613SNick Mathewson   o Rename configure.in to configure.ac. (b3fea67 Ross Lagerwall)
140*143cb613SNick Mathewson   o Use correct openssl libs and includes in pkgconfig file (d70af27)
141*143cb613SNick Mathewson   o Use the same CFLAGS for openssl when building unit tests as with
142*143cb613SNick Mathewson     libevent (1d9d511)
143*143cb613SNick Mathewson
144*143cb613SNick MathewsonDOCUMENTATION
145*143cb613SNick Mathewson   o Note that make_base_notifiable should not be necessary (26ee5f9)
146*143cb613SNick Mathewson   o Be more clear that LEV_OPT_DEFERRED_ACCEPT has tricky prereqs (371efeb)
147*143cb613SNick Mathewson   o Add caveat to docs about bufferevent_free() with data in outbuf (6fab9ee)
148*143cb613SNick Mathewson   o Make it more clear that NOLOCK means "I promise, no multithreading"
149*143cb613SNick Mathewson    (9444524)
150*143cb613SNick Mathewson   o Fix a comment in test-fdleak after 077c7e949. (3881d8f Ross Lagerwall)
151*143cb613SNick Mathewson   o Make the Makefile.nmake warning slightly less dire (e7bf4c8)
152*143cb613SNick Mathewson   o Fix typo : events instead of evets (05f1aca Azat Khuzhin)
153*143cb613SNick Mathewson   o Additional comments about OPENSSL_DIR variable, prompted by Dave Hart
154*143cb613SNick Mathewson     (6bde2ef Patrick Pelletier)
155*143cb613SNick Mathewson
156*143cb613SNick MathewsonEVHTTP:
157*143cb613SNick Mathewson   o ignore LWS after field-content in headers (370a2c0 Artem Germanov)
158*143cb613SNick Mathewson   o Clean up rtrim implementation (aa59d80)
159*143cb613SNick Mathewson   o Remove trailing tabs in HTTP headers as well. (ac42519)
160*143cb613SNick Mathewson   o Remove internal ws from multiline http headers correctly (c6ff381)
161*143cb613SNick Mathewson   o Move evutil_rtrim_lws_ to evutil.c where it belongs (61b93af)
162*143cb613SNick Mathewson   o add evhttp_request_get_response_code_line (4f4d0c9 Jay R. Wren)
163*143cb613SNick Mathewson   o Use EVUTIL_SOCKET_ERROR() wrapper to save/restore errno in
164*143cb613SNick Mathewson     evhttp_connection_fail_ (7afbd60)
165*143cb613SNick Mathewson   o preserve errno in evhttp_connection_fail_ for inspection by the
166*143cb613SNick Mathewson     callback (36d0ee5 Patrick Pelletier)
167*143cb613SNick Mathewson
168*143cb613SNick MathewsonBUGFIXES:
169*143cb613SNick Mathewson   o Correctly handle running on a system where accept4 doesn't work. (9fbfe9b)
170*143cb613SNick Mathewson   o Avoid double-free on error in evbuffer_add_file. Found by
171*143cb613SNick Mathewson     coverity. (6a81b1f)
172*143cb613SNick Mathewson   o Fix another possible uninitialized read in dns regression tests. Found
173*143cb613SNick Mathewson     by coverity. (13525c5)
174*143cb613SNick Mathewson   o Add checks for functions in test-ratelim.c; found by Coverity (aa501e1)
175*143cb613SNick Mathewson   o Avoid memory leak in test_event_calloc unit test; found by coverity
176*143cb613SNick Mathewson     (92817a1)
177*143cb613SNick Mathewson   o Fix a shadowed variable in addfile_test_readcb; found by coverity
178*143cb613SNick Mathewson     (225344c)
179*143cb613SNick Mathewson   o Check return value when using LEV_OPT_DEFERRED_ACCEPT. Found by
180*143cb613SNick Mathewson     coverity (6487f63)
181*143cb613SNick Mathewson   o Prevent reference leak of bufferevent if getaddrinfo fails. (b757786
182*143cb613SNick Mathewson     Joachim Bauch)
183*143cb613SNick Mathewson   o Make event_base_getnpriorities work with old "implicit base" code
184*143cb613SNick Mathewson     (c46cb9c)
185*143cb613SNick Mathewson   o Simplify and correct evutil_open_closeonexec_ (0de587f)
186*143cb613SNick Mathewson   o Fix event_dlist definition when sys/queue not included (81b6209
187*143cb613SNick Mathewson     Derrick Pallas)
188*143cb613SNick Mathewson
189*143cb613SNick Mathewson
190d9a55153SNick Mathewson
1912dedff36SNick MathewsonChanges in version 2.1.1-alpha (4 Apr 2012)
19225a424fbSNick Mathewson
1932dedff36SNick Mathewson Libevent 2.1.1-alpha includes a number of new features and performance
1942dedff36SNick Mathewson improvements.  The log below tries to organize them by rough area of
1952dedff36SNick Mathewson effect.  It omits some commits which were pure bugfixes on other commits
1962dedff36SNick Mathewson listed below.  For more detail, see the git changelogs.  For more
1972dedff36SNick Mathewson insight, see the "whatsnew-2.1.txt" document included in the Libevent
1982dedff36SNick Mathewson 2.1.1-alpha distribution.
19925a424fbSNick Mathewson
2002dedff36SNick Mathewson Performance: Core
2012dedff36SNick Mathewson   o Replace several TAILQ users with LIST. LIST can be a little faster than
2022dedff36SNick Mathewson     TAILQ for cases where we don't need queue-like behavior. (f9db33d,
2032dedff36SNick Mathewson     6494772, d313c29, 974d004)
2042dedff36SNick Mathewson   o Disabled code to optimize the case where we reinsert an existing
2052dedff36SNick Mathewson     timeout (e47042f, 09cbc3d)
2062dedff36SNick Mathewson   o Remove a needless base-notify when rescheduling the first timeout (77a96fd)
2072dedff36SNick Mathewson   o Save a needless comparison when removing/adjusting timeouts (dd5189b)
2082dedff36SNick Mathewson   o Possible optimization: split event_queue_insert/remove into
2092dedff36SNick Mathewson     separate functions. needs testing (efc4dc5)
21088b4f0bbSNick Mathewson   o Make event_count maintenance branchless at the expense of an
2112dedff36SNick Mathewson     extra shift. Needs benchmarking (d1cee3b)
2122dedff36SNick Mathewson   o In the 2.1 branch, let's try out lazy gettimeofday/clock_gettime
2132dedff36SNick Mathewson     comparison (2a83ecc)
2142dedff36SNick Mathewson   o Optimization in event_process_active(): ignore maxcb & endtime
2152dedff36SNick Mathewson     for highest priority events. (a9866aa Alexander Drozdov)
2162dedff36SNick Mathewson   o Bypass event_add when using event_base_once() for a 0-sec timeout (35c5c95)
2172dedff36SNick Mathewson   o Remove the eventqueue list and the ev_next pointers. (604569b 066775e)
21877342926SNick Mathewson
2192dedff36SNick Mathewson Performance: Evbuffers
2202dedff36SNick Mathewson   o Roughly 20% speed increase when line-draining a buffer using
2212dedff36SNick Mathewson     EVBUFFER_EOL_CRLF (5dde0f0 Mina Naguib)
2222dedff36SNick Mathewson   o Try to squeeze a little more speed out of EVBUFFER_EOL_CRLF (7b9d139)
2232dedff36SNick Mathewson   o Fix a bug in the improved EOL_CRLF code (d927965)
2242dedff36SNick Mathewson   o Remove a needless branch in evbuffer_drain() (d19a326)
22577342926SNick Mathewson
2262dedff36SNick Mathewson Performance: Linux
2272dedff36SNick Mathewson   o Infrastructure for using faster/fewer syscalls when creating
2282dedff36SNick Mathewson     sockets (a1c042b)
2292dedff36SNick Mathewson   o Minimize syscalls during socket creation in listener.c (7e9e289)
2302dedff36SNick Mathewson   o Use a wrapper function to create the notification
2312dedff36SNick Mathewson     pipe/socketpair/eventfd (ca76cd9)
2322dedff36SNick Mathewson   o Use pipes for telling signals to main thread when possible (a35f396)
2332dedff36SNick Mathewson   o Save syscalls when constructing listener sockets for evhttp (af6c9d8)
2342dedff36SNick Mathewson   o Save some syscalls when creating evdns sockets (713e570)
2352dedff36SNick Mathewson   o Save some syscalls when constructing a socket for a bufferevent (33fca62)
2362dedff36SNick Mathewson   o Prefer epoll_create1 on Linuxen that have it (bac906c)
23777342926SNick Mathewson
2382dedff36SNick Mathewson Performance: Epoll backend
2392dedff36SNick Mathewson   o Use current event set rather than current pending change when
2402dedff36SNick Mathewson     deciding whether to no-op a del (04ba27e Mike Smellie)
2412dedff36SNick Mathewson   o Replace big chain of if/thens in epoll.c with a table lookup (8c83eb6)
2422dedff36SNick Mathewson   o Clean up error handling in epoll_apply_one_change() a little (2d55a19)
24377342926SNick Mathewson
2442dedff36SNick Mathewson Performance: Evport backend
2452dedff36SNick Mathewson   o evport: use evmap_io to track fdinfo status. Should save time and
2462dedff36SNick Mathewson     RAM. (4687ce4)
2472dedff36SNick Mathewson   o evport: Remove a linear search over recent events when
2482dedff36SNick Mathewson     reactivating them (0f77efe)
2492dedff36SNick Mathewson   o evport: Use portev_user to remember fdinfo struct (276ec0e)
2502dedff36SNick Mathewson   o evport: don't scan more events in ed_pending than needed (849a5cf)
2512dedff36SNick Mathewson   o evport: Remove artificial low limit on max events per getn call (c04d927)
2522dedff36SNick Mathewson   o Reenable main/many_events_slow_add for evport in 2.1 (e903db3)
2530c483170SNick Mathewson
2542dedff36SNick Mathewson Performance: Windows
2552dedff36SNick Mathewson   o Use GetSystemTimeAsFileTime to implement gettimeofday on
2562dedff36SNick Mathewson     win32. It's faster and more accurate than our old
2572dedff36SNick Mathewson     approach. (b8b8aa5)
258edc6d7d7SNick Mathewson
2592dedff36SNick Mathewson New functions and features: debugging
2602dedff36SNick Mathewson   o Add event_enable_debug_logging() to control use of debug logs (e30a82f)
261edc6d7d7SNick Mathewson
2622dedff36SNick Mathewson New functions and features: core
2632dedff36SNick Mathewson   o Add event_config function to limit time/callbacks between calls
2642dedff36SNick Mathewson     to dispatch (fd4de1e, 9fa56bd, a37a0c0, 3c63edd)
2652dedff36SNick Mathewson   o New EVLOOP_NO_EXIT_ON_EMPTY option to keep looping even when no
2662dedff36SNick Mathewson     events are pending (084e68f)
2672dedff36SNick Mathewson   o Add event_base_get_npriorities() function. (ee3a4ee Alexander Drozdov)
2682dedff36SNick Mathewson   o Make evbase_priority_init() and evbase_get_npriorities()
2692dedff36SNick Mathewson     threadsafe (3c55b5e)
2702dedff36SNick Mathewson   o New event_base_update_cache_time() to set cached_tv to current
2712dedff36SNick Mathewson     time (212533e Abel Mathew)
2722dedff36SNick Mathewson   o Add event_self_cbarg() to be used in conjunction with
2732dedff36SNick Mathewson     event_new(). (ed36e6a Ross Lagerwall, fa931bb, 09a1906, 1338e6c,
2742dedff36SNick Mathewson     33e43ef)
2752dedff36SNick Mathewson   o Add a new libevent_global_shutdown() to free all globals before
2762dedff36SNick Mathewson     exiting. (041ca00 Mark Ellzey, f98c158, 15296d0, 55e991b)
2772dedff36SNick Mathewson   o Use getifaddrs to detect our interfaces if possible (7085a45)
2782dedff36SNick Mathewson   o Add event_base_get_running_event() to get the event* whose cb we
2792dedff36SNick Mathewson     are in (c5732fd, 13dad99)
280edc6d7d7SNick Mathewson
2812dedff36SNick Mathewson New functions and features: building
2822dedff36SNick Mathewson   o Implement --enable-gcc-hardening configure option (7550267 Sebastian Hahn)
283edc6d7d7SNick Mathewson
2842dedff36SNick Mathewson New functions and features: evbuffers
2852dedff36SNick Mathewson   o Add evbuffer_add_file_segment() so one fd can be used efficiently
2862dedff36SNick Mathewson     in more than one evbuffer_add_file at a time (e72afae, c2d9884,
2872dedff36SNick Mathewson     3f405d2, 0aad014)
2882dedff36SNick Mathewson   o Fix windows file segment mappings (8254de7)
2892dedff36SNick Mathewson   o Allow evbuffer_ptr_set to yield a point just after the end of the
2902dedff36SNick Mathewson     buffer. (e6fe1da)
2912dedff36SNick Mathewson   o Allow evbuffer_ptr to point to position 0 in an empty evbuffer
2922dedff36SNick Mathewson     (7aeb2fd Nir Soffer)
29388b4f0bbSNick Mathewson   o Set the special "not found" evbuffer_ptr consistently. (e3e97ae Nir Soffer)
2942dedff36SNick Mathewson   o support adding buffers to other buffers non-destructively
2952dedff36SNick Mathewson     (9d7368a Joachim Bauch)
2962dedff36SNick Mathewson   o prevent nested multicast references, reworked locking (26041a8
2972dedff36SNick Mathewson     Joachim Bauch)
2982dedff36SNick Mathewson   o New EVBUFFER_EOL_NUL to read NUL-terminated strings from an
2992dedff36SNick Mathewson     evbuffer (d7a8b36 Andrea Montefusco, 54142c9)
3002dedff36SNick Mathewson   o Make evbuffer_file_segment_types adaptable (c6bbbf1)
3012dedff36SNick Mathewson   o Added evbuffer_add_iovec and unit tests. (aaec5ac Mark Ellzey, 27b5398)
3022dedff36SNick Mathewson   o Add evbuffer_copyout_from to copy data from the middle of a
3032dedff36SNick Mathewson     buffer (27e2225)
3046f6cebe3SNick Mathewson
3052dedff36SNick Mathewson New functions and features: bufferevents
3062dedff36SNick Mathewson   o Allow users to set allow_dirty_shutdown (099d27d Catalin Patulea)
3072dedff36SNick Mathewson   o Tweak allow_dirty_shutdown documentation (a44cd2b)
3082dedff36SNick Mathewson   o Fix two issues in the allow_dirty_shutdown code. (f3b89de)
3092dedff36SNick Mathewson   o Add a bufferevent_getcb() to find a bufferevent's current
3102dedff36SNick Mathewson     callbacks (a650394)
3112dedff36SNick Mathewson   o bufferevent: Add functions to set/get max_single_read/write
3122dedff36SNick Mathewson     values. (998c813 Alexander Drozdov)
3132dedff36SNick Mathewson   o bev_ssl: Be more specific in event callbacks. evhttp in particular gets
3142dedff36SNick Mathewson     confused without at least one of BEV_EVENT_{READING|WRITING}. (f7eb69a
3152dedff36SNick Mathewson     Catalin Patulea)
316edc6d7d7SNick Mathewson
3172dedff36SNick Mathewson New functions and features: evconnlisteners
3182dedff36SNick Mathewson   o Support TCP_DEFER_ACCEPT sockopts for listeners (5880e4a Mark Ellzey,
3192dedff36SNick Mathewson     a270728)
3202dedff36SNick Mathewson   o Add another caveat to the TCP_DEFER_ACCEPT documentation (a270728)
3212dedff36SNick Mathewson   o Allow evconnlistener to be created in disabled state. (9593a33
3222dedff36SNick Mathewson     Alexander Drozdov)
3232dedff36SNick Mathewson   o The LEV_OPT_CLOSE_ON_EXEC flag now applies to accepted listener
3242dedff36SNick Mathewson     sockets too (4970329)
325edc6d7d7SNick Mathewson
3262dedff36SNick Mathewson Evhttp:
3272dedff36SNick Mathewson   o Add new evhttp_{connection_}set_timeout_tv() functions to set
3282dedff36SNick Mathewson     finger-grained http timeouts (6350e6c Constantine Verutin)
3292dedff36SNick Mathewson   o Performance tweak to evhttp_parse_request_line. (aee1a97 Mark Ellzey)
3302dedff36SNick Mathewson   o Add missing break to evhttp_parse_request_line (0fcc536)
3312dedff36SNick Mathewson   o Add evhttp callback for bufferevent creation; this lets evhttp
3322dedff36SNick Mathewson     support SSL. (8d3a850)
3332dedff36SNick Mathewson   o Remove calls to deprecated bufferevent functions from evhttp.c (4d63758)
3342dedff36SNick Mathewson   o evhttp: Add evhttp_foreach_bound_socket. (a2c48e3 Samy Al Bahra)
335edc6d7d7SNick Mathewson
3362dedff36SNick Mathewson Build improvements:
3372dedff36SNick Mathewson   o Add AC_USE_SYSTEM_EXTENSIONS to configure.in. Requires follow on
3382dedff36SNick Mathewson     patches for correctness and robustness. (1fa7dbe Kevin Bowling)
3392dedff36SNick Mathewson   o Filter '# define' statements from autoconf and generate
3402dedff36SNick Mathewson     event-private.h (321b558 Kevin Bowling)
3412dedff36SNick Mathewson   o Remove internal usage of _GNU_SOURCE (3b26541 Kevin Bowling)
3422dedff36SNick Mathewson   o Eliminate a couple more manual internal _GNU_SOURCE defines (c51ef93
3432dedff36SNick Mathewson     Kevin Bowling)
3442dedff36SNick Mathewson   o Add AC_GNU_SOURCE to the fallback case. (ea8fa4c Kevin Bowling)
3452dedff36SNick Mathewson   o Use a Configuration Header Template for evconfig-private.h (868f888
3462dedff36SNick Mathewson     Kevin Bowling)
3472dedff36SNick Mathewson   o Fix a comment warning and add evconfig-private.h to .gitignore
3482dedff36SNick Mathewson     (f6d66bc Kevin Bowling)
3492dedff36SNick Mathewson   o Include evconfig-private.h in internal files for great good. (0915ca0
3502dedff36SNick Mathewson     Kevin Bowling)
3512dedff36SNick Mathewson   o Backport libevent to vanilla Autoconf 2.59 (as used in RHEL5)
3522dedff36SNick Mathewson     (ad03952 Kevin Bowling)
3532dedff36SNick Mathewson   o Prefer the ./configure evconfig-private.h in MinGW, just in
3542dedff36SNick Mathewson     case. (f964b72 Kevin Bowling)
3552dedff36SNick Mathewson   o Shell hack for weird mkdir -p commands (fd7b5a8 Kevin Bowling)
3562dedff36SNick Mathewson   o Add evconfig-private to remaining files (ded0a09 Kevin Bowling)
3572dedff36SNick Mathewson   o Allow use of --enable-silent-rules for quieter compilation with
3582dedff36SNick Mathewson     automake 1.11 (f1f8514 Dave Hart)
3592dedff36SNick Mathewson   o Use "_WIN32", not WIN32: it's standard and we don't need to fake it
3602dedff36SNick Mathewson     (9f560b)
3612dedff36SNick Mathewson   o In configure, test for _WIN32 not WIN32. (85078b1 Peter Rosin)
3622dedff36SNick Mathewson   o Do not define WIN32 in Makefile.nmake (d41f3ea Peter Rosin)
3632dedff36SNick Mathewson   o Provide the autoconf m4 macros for the new OpenSSL via pkg-config
3642dedff36SNick Mathewson     stuff. (674dc3d Harlan Stenn)
3652dedff36SNick Mathewson   o Use pkg-config (if available) to handle OpenSSL. (1c63860 Harlan Stenn)
3662dedff36SNick Mathewson   o We need AM_CPPFLAGS when compiling bufferevent_openssl.c (6d2613b
3672dedff36SNick Mathewson     Harlan Stenn)
3682dedff36SNick Mathewson   o Fix OSX build: $(OPENSSL_INCS) needs to be after
3692dedff36SNick Mathewson     $(AM_CPPFLAGS). (46f1769 Zack Weinberg)
3702dedff36SNick Mathewson   o Make gcc warnings on by default, and --enable-gcc-warnings only add
3712dedff36SNick Mathewson     -Werror (d46517e Sebastian Hahn)
3722dedff36SNick Mathewson   o Split up extra-long AC_CHECK_FUNCS/HEADERS lines in configure.in (88a30ad)
3732dedff36SNick Mathewson   o Move libevent 1.x headers to include/, to put all public headers in
3742dedff36SNick Mathewson     one place. (bbea8d6)
3752dedff36SNick Mathewson   o Put #ifdef around some files to support alternate build
3762dedff36SNick Mathewson     systems. (76d4c92 Ross Lagerwall)
3772dedff36SNick Mathewson   o Also make win32select.c conditional for IDE users (bf2c5a7)
378edc6d7d7SNick Mathewson
3792dedff36SNick Mathewson Debugging:
3802dedff36SNick Mathewson   o Add a magic number to debug_locks to better catch lock-coding
3812dedff36SNick Mathewson     errors. (b4a29c0 Dave Hart)
3822dedff36SNick Mathewson   o munge the debug_lock signature before freeing it: it might help us
3832dedff36SNick Mathewson     catch use-after-free (f28084d)
3842dedff36SNick Mathewson   o Added --enable-event-debugging in configure (bc7b4e4, a9c2c9a Mark Ellzey)
3852dedff36SNick Mathewson   o Debug addition for printing usec on TIMEOUT debugging. (ac43ce0 Mark Ellzey)
3862dedff36SNick Mathewson   o Added usec debug in another area for debug (3baab0d Mark Ellzey)
3872dedff36SNick Mathewson   o added timeout debug logs to include event ptr. (4b7d298 Mark Ellzey)
3882dedff36SNick Mathewson   o more event dbg updates (6727543 Mark Ellzey)
3892dedff36SNick Mathewson   o Clarify event_enable_debug_logging a little (6207826)
3902dedff36SNick Mathewson   o Make --enable-verbose-debug option match its help text (10c3450)
3912dedff36SNick Mathewson   o Add argument checks to some memory functions in `event.c'. (c8953d1
3922dedff36SNick Mathewson     Mansour Moufid)
39334045c8fSNick Mathewson
3942dedff36SNick Mathewson Testing:
3952dedff36SNick Mathewson   o More abstraction in test.sh (cd74c4e)
3962dedff36SNick Mathewson   o Add failing test for evbuffer_search_range. (8e26154 Nir Soffer)
3972dedff36SNick Mathewson   o Tweaks to return types with end-of-buf ptrs (9ab8ab8)
3982dedff36SNick Mathewson   o Add an (internal) usleep function for use by unit tests (f25d9d3)
3992dedff36SNick Mathewson   o Synchronize with upstream tinytest (6c81be7)
4002dedff36SNick Mathewson   o Make test-changelist faster (7622d26)
4012dedff36SNick Mathewson   o Reduce the timeout in the main/fork test. (ab14f7c)
4022dedff36SNick Mathewson   o New evhttp function to adjust initial retry timeout (350a3c4)
4032dedff36SNick Mathewson   o Make regression tests run over 3x faster. (67a1763)
4042dedff36SNick Mathewson   o Use test_timeval_diff_eq more consistently (b77b43f)
4052dedff36SNick Mathewson   o Allow more slop in deferred_cb_skew test; freebsd needs it (b9f7e5f)
4062dedff36SNick Mathewson   o When including an -internal.h header outside the main tree, do so
4072dedff36SNick Mathewson     early (95e2455)
4082dedff36SNick Mathewson   o Add a new test: test-fdleak which tests for fd leaks by creating many
4092dedff36SNick Mathewson     sockets. (2ef9278 Ross Lagerwall, f7af194, 1c4288f, etc)
4102dedff36SNick Mathewson   o Add a unit test for event_base_dump_events() (7afe48a, 8d08cce)
4112dedff36SNick Mathewson   o Test more bufferevent_ratelim features (c24f91a)
41234045c8fSNick Mathewson
4132dedff36SNick Mathewson Documentation:
4142dedff36SNick Mathewson   o Improve evbuffer_ptr documentation (261ba63)
41588b4f0bbSNick Mathewson   o added comments to describe refcounting of multicast chains (ba24f61
4162dedff36SNick Mathewson     Joachim Bauch)
4172dedff36SNick Mathewson   o Add doxygen for event_base_dump_events (cad5753)
41831c99bd2SNick Mathewson
4192dedff36SNick Mathewson OSX:
4202dedff36SNick Mathewson   o Use "unlimited select" on OSX so that we can have more than
4212dedff36SNick Mathewson     FD_SETSIZE fds (1fb5cc6)
42234045c8fSNick Mathewson
4232dedff36SNick Mathewson KQueue:
4242dedff36SNick Mathewson   o Use SIG_IGN instead of a do-nothing handler for signal events with
4252dedff36SNick Mathewson     kqueue (148458e Zack Weinberg)
42634045c8fSNick Mathewson
4272dedff36SNick Mathewson evprc:
4282dedff36SNick Mathewson   o event_rpcgen.py now prints status information to stdout and errors to
4292dedff36SNick Mathewson     stderr. (ffb0ba0 Ross Lagerwall)
43034045c8fSNick Mathewson
4312dedff36SNick Mathewson Code improvement and refactoring:
4322dedff36SNick Mathewson   o Make event_reinit() more robust and maintainable (272033e)
4332dedff36SNick Mathewson   o Restore fast-path event_reinit() for slower backends (2c4b5de)
4342dedff36SNick Mathewson   o Check changelist as part of checking representational integrity (39b3f38)
4352dedff36SNick Mathewson   o Fix a compile warning in event_reinit (e4a56ed Sebastian Hahn)
4362dedff36SNick Mathewson   o Refactor the functions that run over every event. (c89b4e6)
4372dedff36SNick Mathewson   o Remove the last vestiges of _EVENT_USE_EVENTLIST (a3cec90)
4382dedff36SNick Mathewson   o Make event-config.h depend on Makefile.am (2958a5c)
43934045c8fSNick Mathewson
4402dedff36SNick Mathewson Build fixes:
4412dedff36SNick Mathewson   o Don't do clang version detection when disabling some flags (083296b
4422dedff36SNick Mathewson     Sebastian Hahn)
44334045c8fSNick Mathewson
4442dedff36SNick Mathewson C standards conformance:
4452dedff36SNick Mathewson   o Check for NULL return on win32 mm_calloc, and set ENOMEM. (af7ba69)
4462dedff36SNick Mathewson   o Convert event-config.h macros to avoid reserved identifiers (68120d9)
4472dedff36SNick Mathewson   o Generate event-config.h using the correct macros. (f82c57e)
4482dedff36SNick Mathewson   o Convert include-guard macro convention to avoid reserved identifiers
4492dedff36SNick Mathewson     (3f8c7cd)
45088b4f0bbSNick Mathewson   o Make event_rpcgen.py output conform to identifier conventions (372bff1)
4512dedff36SNick Mathewson   o Stop referring to an obsolete include guard in bench_http.h (5c0f7e0)
4522dedff36SNick Mathewson   o Make the generated event-config.h use correct include guards (639383a)
4532dedff36SNick Mathewson   o Fix all identifiers with names beginning with underscore. (cb9da0b)
45488b4f0bbSNick Mathewson   o Make event_rpcgen.py output conform to identifier conventions, more
4552dedff36SNick Mathewson     (bcefd24)
4562dedff36SNick Mathewson   o Fix some problems introduced by automated identifier cleanup script
4572dedff36SNick Mathewson     (c963534)
4582dedff36SNick Mathewson   o Have all visible internal function names end with an underscore. (8ac3c4c)
4592dedff36SNick Mathewson   o Apply the naming convention to our EVUTIL_IS* functions (c7848fa)
4602dedff36SNick Mathewson   o Clean up lingering _identifiers. (946b584)
4612dedff36SNick Mathewson   o Fix doxygen to use new macro conventions (da455e9)
4627c3e0612SNick Mathewson
4632dedff36SNick Mathewson Bugfixes:
4642dedff36SNick Mathewson   o Do not use system EAI/AI values if we are not using the system
4652dedff36SNick Mathewson     getaddrinfo. (7bcac07)
4667c3e0612SNick Mathewson
4672dedff36SNick Mathewson Sample Code:
4682dedff36SNick Mathewson   o Fix up sample/event-test.c to use newer interfaces and make it
4692dedff36SNick Mathewson     actually work. (19bab4f Ross Lagerwall)
4702dedff36SNick Mathewson   o On Unix, remove event.fifo left by sample/event-test.c. (c0dacd2 Ross
4712dedff36SNick Mathewson     Lagerwall)
4722dedff36SNick Mathewson   o Rename event-test.c to event-read-fifo.c. (a5b370a Ross Lagerwall)
4732dedff36SNick Mathewson   o event-read-fifo: Use EV_PERSIST appropriately (24dab0b)
47415be0493SNick Mathewson
4751aa6826fSNiels Provos
47687bef9e9SNiels Provos
47711a0a9e4SNiels Provos
478