xref: /libevent-2.1.12/ChangeLog (revision 40b95ae2)
1*40b95ae2SNick MathewsonChanges in version 2.1.3-alpha (?? ??? 201?)
2*40b95ae2SNick Mathewson
3*40b95ae2SNick Mathewson
4143cb613SNick MathewsonChanges in version 2.1.2-alpha (18 Nov 2012)
5143cb613SNick Mathewson
6143cb613SNick Mathewson Libevent 2.1.2-alpha includes more portable for monotonic timers,
7143cb613SNick Mathewson refactors much of Libevent's internal and external infrastructure,
8143cb613SNick Mathewson closes some longstanding gaps in the interface, makde other
9143cb613SNick Mathewson improvements.  Ths log below tries to organize features by rough area of
10143cb613SNick Mathewson effect.  It omits a few commits which were pure bugfixes on other commits
11143cb613SNick Mathewson listed below.  For more detail, see the git changelogs.  For more
12143cb613SNick Mathewson insight, see the "whatsnew-2.1.txt" document included in the Libevent
13143cb613SNick Mathewson 2.1.2-alpha distribution.
14143cb613SNick Mathewson
15143cb613SNick Mathewson Libevent 2.1.2-alpha also includes all changes made in 2.0.19-stable
16143cb613SNick Mathewson through 2.0.21-stable inclusive.
17143cb613SNick Mathewson
18143cb613SNick Mathewson Performance (core):
19143cb613SNick Mathewson   o Replace pipe-based notification with EVFILT_USER where possible. This
20143cb613SNick Mathewson     should make multithreaded programs on OSX and *BSD alert the main thread a
21143cb613SNick Mathewson     little faster. (53a07fe)
22143cb613SNick Mathewson   o Make th_base_lock nonrecursive. (9cd5acb)
23143cb613SNick Mathewson
24143cb613SNick Mathewson New/Changed API Functions:
25143cb613SNick Mathewson   o New event_get_priority() function to return an event's priority (f90e255)
26143cb613SNick Mathewson   o Add a bufferevent_get_priority() function (bd39554)
27143cb613SNick Mathewson   o Add an event_base_loopcontinue() to tell Libevent to rescan for more
28143cb613SNick Mathewson     events right away (7d6aa5e)
29143cb613SNick Mathewson   o Add a new callback to get called on evbuffer_file_segment free
30143cb613SNick Mathewson     (e9f8feb yangacer, 64051b9)
31143cb613SNick Mathewson   o Expose event_base_foreach_event() as a public API. (84fd6d7 Roman
32143cb613SNick Mathewson      Puls, 232055e, ffe1643)
33143cb613SNick Mathewson   o Add an event_remove_timer() to remove timer on an event without
34143cb613SNick Mathewson     deleting it (e3b2e08)
35143cb613SNick Mathewson   o Make bufferevent_set_timeouts(bev, NULL, NULL) have plausible
36143cb613SNick Mathewson     semantics (9dee36b)
37143cb613SNick Mathewson   o Rename event_enable_lock_debuging() to ..._debugging(). (The old name
38143cb613SNick Mathewson     should still work.) (07e132e)
39143cb613SNick Mathewson   o Add missing implementation for event_enable_debug_logging (3b3e21d)
40143cb613SNick Mathewson
41143cb613SNick Mathewson PORTABLE MONOTONIC TIMERS:
42143cb613SNick Mathewson
43143cb613SNick Mathewson   Libevent 2.1.2 includes internal support for monotonic timers on
44143cb613SNick Mathewson   (nearly) all supported platforms, including Windows, and OSX.  Libevent
45143cb613SNick Mathewson   applications should now be more resilient to jumps forwards or backwards
46143cb613SNick Mathewson   in the system clock.  Also, on Linux systems with epoll, we now
47143cb613SNick Mathewson   optionally support microsecond-level timeouts (whereas epoll only
48143cb613SNick Mathewson   supports millisecond-precision timeouts).
49143cb613SNick Mathewson
50143cb613SNick Mathewson   o Use mach_absolute_time() for monotonic clock support on OSX. (b8fd6f9)
51143cb613SNick Mathewson   o Do not track use_monotonic field when is no monotonic clock (cb653a0)
52143cb613SNick Mathewson   o EVENT_BASE_FLAG_PRECISE_TIMER indicates we want fine timer precision
53143cb613SNick Mathewson     (ddd69d3)
54143cb613SNick Mathewson   o On Linux, use CLOCK_MONOTONIC_COARSE by default (55780a7)
55143cb613SNick Mathewson   o Implement a GetTickCount-based monotonic timer for Windows (d5e1d5a)
56143cb613SNick Mathewson   o Refactor monotonic timer handling into a new type and set of
57143cb613SNick Mathewson     functions; add a gettimeofday-based ratcheting implementation (f5e4eb0)
58143cb613SNick Mathewson   o Add EVENT_PRECISE_TIMER environment var for selecting precise-but-slow
59143cb613SNick Mathewson     timer (a2598ec)
60143cb613SNick Mathewson   o Implement fast/precise monotonic clocks on Windows (2c47045)
61143cb613SNick Mathewson   o Simple unit tests for monotonic timers (630f077)
62143cb613SNick Mathewson   o Improve the monotonic-time unit test: make it check the step size (7428c78)
63143cb613SNick Mathewson   o When PRECISE_TIMERS is set with epoll, use timerfd for microsecond
64143cb613SNick Mathewson     precision (26c7582)
65143cb613SNick Mathewson   o Split out time-related evutil functions into a new evutil_time.c (c419485)
66143cb613SNick Mathewson   o Split out time-related prototypes into time-internal.h (71bca50)
67143cb613SNick Mathewson   o Add evutil_time.obj to Makefile.nmake (0ba0683)
68143cb613SNick Mathewson   o Avoid giving a spurious warning when timerfd support is unavailable
69143cb613SNick Mathewson     (1aaf9f0 Dave Hart)
70143cb613SNick Mathewson   o Make test_evutil_monotonic a little more tolerant (def3b83)
71143cb613SNick Mathewson   o Avoid unused-var warning on systems with clock_gettime but without
72143cb613SNick Mathewson     CLOCK_MONOTONIC_COARSE (9be5468)
73143cb613SNick Mathewson
74143cb613SNick MathewsonEVENT_BASE_ONCE LEAKS:
75143cb613SNick Mathewson   If a callback added by event_base_once() is never invoked, Libevent no
76143cb613SNick Mathewson   longer leaks internal memory.
77143cb613SNick Mathewson
78143cb613SNick Mathewson   o Free dangling event_once objects on event_base_free() (c17dd59)
79143cb613SNick Mathewson   o Add a unit test in which an event is created with event_base_once()
80143cb613SNick Mathewson     but never fires (4343edf)
81143cb613SNick Mathewson
82143cb613SNick MathewsonTESTING SUPPORT, FIXES AND IMPROVEMENTS:
83143cb613SNick Mathewson
84143cb613SNick Mathewson   Libevent now disables by default its unit tests that would touch the
85143cb613SNick Mathewson   network, or that tend to fail on heavily-loaded systems.  To re-enable
86143cb613SNick Mathewson   them, invoke the ./test/regress program with the @all alias.
87143cb613SNick Mathewson
88143cb613SNick Mathewson   o Simplify test.sh code significantly. (9b856fd Ross Lagerwall)
89143cb613SNick Mathewson   o Make all tests that hit the network disabled by default (f2cea87)
90143cb613SNick Mathewson   o Avoid a resource leak on error in http client benchmark (ea92fba)
91143cb613SNick Mathewson   o Update to latest tinytest (911b4f0349377) (ef7c4f7)
92143cb613SNick Mathewson   o Avoid (unlikely) overflow in bench_httpclient.c (5671033)
93143cb613SNick Mathewson   o Shave 700 msec off the persistent_timeout_jump test (21205b8)
94143cb613SNick Mathewson   o Check return value of write() in regress.c (c8009d2)
95143cb613SNick Mathewson   o Make load-dependent monotonic timer tests off-by-default (2b6fe8b)
96143cb613SNick Mathewson   o Add deferred_cb_skew to list of timing-dependent tests (34c8f31)
97143cb613SNick Mathewson   o Avoid test -e; older shs don't have one. (f1bd938)
98143cb613SNick Mathewson   o Fix renegotiation test to work around openssl 1.0.1 bug (c2f3086)
99143cb613SNick Mathewson   o Fix a couple of compile warnings in the unit tests (5a9a014)
100143cb613SNick Mathewson
101143cb613SNick MathewsonMISC:
102143cb613SNick Mathewson   o Change evutil_weakrand_() to avoid platform random() (e86af4b Nicholas
103143cb613SNick Mathewson     Marriott, 3aa4415)
104143cb613SNick Mathewson
105143cb613SNick MathewsonINFRASTRUCTURE (Active-later events):
106143cb613SNick Mathewson   As a simplification and optimization to Libevent's "deferred callback"
107143cb613SNick Mathewson   logic (introduced in 2.0 to avoid callback recursion), Libevent now
108143cb613SNick Mathewson   treats all of its deferrable callback types using the same logic it uses
109143cb613SNick Mathewson   for active events.  Now deferred events no longer cause priority
110143cb613SNick Mathewson   inversion, no longer require special code to cancel them, and so on.
111143cb613SNick Mathewson
112143cb613SNick Mathewson   o Refactor the callback part of an event into its own event_callback
113143cb613SNick Mathewson     type (cba59e5)
114143cb613SNick Mathewson   o Add "active later" event_callbacks to supersede deferred (745a63d)
115143cb613SNick Mathewson   o event_base_assert_ok: check value of event_active_count for
116143cb613SNick Mathewson     correctness (fec8bae)
117143cb613SNick Mathewson   o Replace deferred_cbs with event_callback-based implementation. (ae2b84b)
118143cb613SNick Mathewson   o Replace more deferred_cb names with event_callback (a4079aa)
119143cb613SNick Mathewson   o Give event_base_process_active a single exit path (581b5be)
120143cb613SNick Mathewson   o Restore our priority-inversion-prevention code with deferreds (c0e425a)
121143cb613SNick Mathewson   o Refactor event_persist_closure: raise and extract some common logic
122143cb613SNick Mathewson     (bec22b4)
123143cb613SNick Mathewson   o Remove the unused bits from EVLIST_ALL (9889a3d)
124143cb613SNick Mathewson
125143cb613SNick MathewsonBUILD IMPROVEMENTS:
126143cb613SNick Mathewson Libevent 2.1.2-alpha modernizes Libevent's use of autotools, and makes
127143cb613SNick Mathewson numerous other build system. Parallel builds should be faster, and all
128143cb613SNick Mathewson builds should be quieter.
129143cb613SNick Mathewson
130143cb613SNick Mathewson   o Split long lists in Makefile.am into one-item-per-line (2711cda)
131143cb613SNick Mathewson   o Remove unnecessary code in configure.in. (e65914f Ross Lagerwall)
132143cb613SNick Mathewson   o attempt to support OpenSSL in Makefile.nmake (eba0eb2 Patrick Pelletier)
133143cb613SNick Mathewson   o Use newer syntax for autoconf/automake init (7d60ba8)
134143cb613SNick Mathewson   o Enable silent build rules by default. Override with V=1 (7b18e5c)
135143cb613SNick Mathewson   o Switch to non-recursive makefiles (7092f3b)
136143cb613SNick Mathewson   o Rename subordinate Makefile.ams to include.am (6cdfeeb)
137143cb613SNick Mathewson   o Make quiet build even quieter (371a123)
138143cb613SNick Mathewson   o New --quiet option for event_rpcgen.py (aa59c1e)
139143cb613SNick Mathewson   o Be quiet when making regress.gen.[ch] (607a8ff)
140143cb613SNick Mathewson   o Fix handling of no-python case for nonrecursive make (1e3123d)
141143cb613SNick Mathewson   o We now require automake 1.9 or later. Modernize! (b7f6e89)
142143cb613SNick Mathewson   o Rename configure.in to configure.ac. (b3fea67 Ross Lagerwall)
143143cb613SNick Mathewson   o Use correct openssl libs and includes in pkgconfig file (d70af27)
144143cb613SNick Mathewson   o Use the same CFLAGS for openssl when building unit tests as with
145143cb613SNick Mathewson     libevent (1d9d511)
146143cb613SNick Mathewson
147143cb613SNick MathewsonDOCUMENTATION
148143cb613SNick Mathewson   o Note that make_base_notifiable should not be necessary (26ee5f9)
149143cb613SNick Mathewson   o Be more clear that LEV_OPT_DEFERRED_ACCEPT has tricky prereqs (371efeb)
150143cb613SNick Mathewson   o Add caveat to docs about bufferevent_free() with data in outbuf (6fab9ee)
151143cb613SNick Mathewson   o Make it more clear that NOLOCK means "I promise, no multithreading"
152143cb613SNick Mathewson    (9444524)
153143cb613SNick Mathewson   o Fix a comment in test-fdleak after 077c7e949. (3881d8f Ross Lagerwall)
154143cb613SNick Mathewson   o Make the Makefile.nmake warning slightly less dire (e7bf4c8)
155143cb613SNick Mathewson   o Fix typo : events instead of evets (05f1aca Azat Khuzhin)
156143cb613SNick Mathewson   o Additional comments about OPENSSL_DIR variable, prompted by Dave Hart
157143cb613SNick Mathewson     (6bde2ef Patrick Pelletier)
158143cb613SNick Mathewson
159143cb613SNick MathewsonEVHTTP:
160143cb613SNick Mathewson   o ignore LWS after field-content in headers (370a2c0 Artem Germanov)
161143cb613SNick Mathewson   o Clean up rtrim implementation (aa59d80)
162143cb613SNick Mathewson   o Remove trailing tabs in HTTP headers as well. (ac42519)
163143cb613SNick Mathewson   o Remove internal ws from multiline http headers correctly (c6ff381)
164143cb613SNick Mathewson   o Move evutil_rtrim_lws_ to evutil.c where it belongs (61b93af)
165143cb613SNick Mathewson   o add evhttp_request_get_response_code_line (4f4d0c9 Jay R. Wren)
166143cb613SNick Mathewson   o Use EVUTIL_SOCKET_ERROR() wrapper to save/restore errno in
167143cb613SNick Mathewson     evhttp_connection_fail_ (7afbd60)
168143cb613SNick Mathewson   o preserve errno in evhttp_connection_fail_ for inspection by the
169143cb613SNick Mathewson     callback (36d0ee5 Patrick Pelletier)
170143cb613SNick Mathewson
171143cb613SNick MathewsonBUGFIXES:
172143cb613SNick Mathewson   o Correctly handle running on a system where accept4 doesn't work. (9fbfe9b)
173143cb613SNick Mathewson   o Avoid double-free on error in evbuffer_add_file. Found by
174143cb613SNick Mathewson     coverity. (6a81b1f)
175143cb613SNick Mathewson   o Fix another possible uninitialized read in dns regression tests. Found
176143cb613SNick Mathewson     by coverity. (13525c5)
177143cb613SNick Mathewson   o Add checks for functions in test-ratelim.c; found by Coverity (aa501e1)
178143cb613SNick Mathewson   o Avoid memory leak in test_event_calloc unit test; found by coverity
179143cb613SNick Mathewson     (92817a1)
180143cb613SNick Mathewson   o Fix a shadowed variable in addfile_test_readcb; found by coverity
181143cb613SNick Mathewson     (225344c)
182143cb613SNick Mathewson   o Check return value when using LEV_OPT_DEFERRED_ACCEPT. Found by
183143cb613SNick Mathewson     coverity (6487f63)
184143cb613SNick Mathewson   o Prevent reference leak of bufferevent if getaddrinfo fails. (b757786
185143cb613SNick Mathewson     Joachim Bauch)
186143cb613SNick Mathewson   o Make event_base_getnpriorities work with old "implicit base" code
187143cb613SNick Mathewson     (c46cb9c)
188143cb613SNick Mathewson   o Simplify and correct evutil_open_closeonexec_ (0de587f)
189143cb613SNick Mathewson   o Fix event_dlist definition when sys/queue not included (81b6209
190143cb613SNick Mathewson     Derrick Pallas)
191143cb613SNick Mathewson
192143cb613SNick Mathewson
193d9a55153SNick Mathewson
1942dedff36SNick MathewsonChanges in version 2.1.1-alpha (4 Apr 2012)
19525a424fbSNick Mathewson
1962dedff36SNick Mathewson Libevent 2.1.1-alpha includes a number of new features and performance
1972dedff36SNick Mathewson improvements.  The log below tries to organize them by rough area of
1982dedff36SNick Mathewson effect.  It omits some commits which were pure bugfixes on other commits
1992dedff36SNick Mathewson listed below.  For more detail, see the git changelogs.  For more
2002dedff36SNick Mathewson insight, see the "whatsnew-2.1.txt" document included in the Libevent
2012dedff36SNick Mathewson 2.1.1-alpha distribution.
20225a424fbSNick Mathewson
2032dedff36SNick Mathewson Performance: Core
2042dedff36SNick Mathewson   o Replace several TAILQ users with LIST. LIST can be a little faster than
2052dedff36SNick Mathewson     TAILQ for cases where we don't need queue-like behavior. (f9db33d,
2062dedff36SNick Mathewson     6494772, d313c29, 974d004)
2072dedff36SNick Mathewson   o Disabled code to optimize the case where we reinsert an existing
2082dedff36SNick Mathewson     timeout (e47042f, 09cbc3d)
2092dedff36SNick Mathewson   o Remove a needless base-notify when rescheduling the first timeout (77a96fd)
2102dedff36SNick Mathewson   o Save a needless comparison when removing/adjusting timeouts (dd5189b)
2112dedff36SNick Mathewson   o Possible optimization: split event_queue_insert/remove into
2122dedff36SNick Mathewson     separate functions. needs testing (efc4dc5)
21388b4f0bbSNick Mathewson   o Make event_count maintenance branchless at the expense of an
2142dedff36SNick Mathewson     extra shift. Needs benchmarking (d1cee3b)
2152dedff36SNick Mathewson   o In the 2.1 branch, let's try out lazy gettimeofday/clock_gettime
2162dedff36SNick Mathewson     comparison (2a83ecc)
2172dedff36SNick Mathewson   o Optimization in event_process_active(): ignore maxcb & endtime
2182dedff36SNick Mathewson     for highest priority events. (a9866aa Alexander Drozdov)
2192dedff36SNick Mathewson   o Bypass event_add when using event_base_once() for a 0-sec timeout (35c5c95)
2202dedff36SNick Mathewson   o Remove the eventqueue list and the ev_next pointers. (604569b 066775e)
22177342926SNick Mathewson
2222dedff36SNick Mathewson Performance: Evbuffers
2232dedff36SNick Mathewson   o Roughly 20% speed increase when line-draining a buffer using
2242dedff36SNick Mathewson     EVBUFFER_EOL_CRLF (5dde0f0 Mina Naguib)
2252dedff36SNick Mathewson   o Try to squeeze a little more speed out of EVBUFFER_EOL_CRLF (7b9d139)
2262dedff36SNick Mathewson   o Fix a bug in the improved EOL_CRLF code (d927965)
2272dedff36SNick Mathewson   o Remove a needless branch in evbuffer_drain() (d19a326)
22877342926SNick Mathewson
2292dedff36SNick Mathewson Performance: Linux
2302dedff36SNick Mathewson   o Infrastructure for using faster/fewer syscalls when creating
2312dedff36SNick Mathewson     sockets (a1c042b)
2322dedff36SNick Mathewson   o Minimize syscalls during socket creation in listener.c (7e9e289)
2332dedff36SNick Mathewson   o Use a wrapper function to create the notification
2342dedff36SNick Mathewson     pipe/socketpair/eventfd (ca76cd9)
2352dedff36SNick Mathewson   o Use pipes for telling signals to main thread when possible (a35f396)
2362dedff36SNick Mathewson   o Save syscalls when constructing listener sockets for evhttp (af6c9d8)
2372dedff36SNick Mathewson   o Save some syscalls when creating evdns sockets (713e570)
2382dedff36SNick Mathewson   o Save some syscalls when constructing a socket for a bufferevent (33fca62)
2392dedff36SNick Mathewson   o Prefer epoll_create1 on Linuxen that have it (bac906c)
24077342926SNick Mathewson
2412dedff36SNick Mathewson Performance: Epoll backend
2422dedff36SNick Mathewson   o Use current event set rather than current pending change when
2432dedff36SNick Mathewson     deciding whether to no-op a del (04ba27e Mike Smellie)
2442dedff36SNick Mathewson   o Replace big chain of if/thens in epoll.c with a table lookup (8c83eb6)
2452dedff36SNick Mathewson   o Clean up error handling in epoll_apply_one_change() a little (2d55a19)
24677342926SNick Mathewson
2472dedff36SNick Mathewson Performance: Evport backend
2482dedff36SNick Mathewson   o evport: use evmap_io to track fdinfo status. Should save time and
2492dedff36SNick Mathewson     RAM. (4687ce4)
2502dedff36SNick Mathewson   o evport: Remove a linear search over recent events when
2512dedff36SNick Mathewson     reactivating them (0f77efe)
2522dedff36SNick Mathewson   o evport: Use portev_user to remember fdinfo struct (276ec0e)
2532dedff36SNick Mathewson   o evport: don't scan more events in ed_pending than needed (849a5cf)
2542dedff36SNick Mathewson   o evport: Remove artificial low limit on max events per getn call (c04d927)
2552dedff36SNick Mathewson   o Reenable main/many_events_slow_add for evport in 2.1 (e903db3)
2560c483170SNick Mathewson
2572dedff36SNick Mathewson Performance: Windows
2582dedff36SNick Mathewson   o Use GetSystemTimeAsFileTime to implement gettimeofday on
2592dedff36SNick Mathewson     win32. It's faster and more accurate than our old
2602dedff36SNick Mathewson     approach. (b8b8aa5)
261edc6d7d7SNick Mathewson
2622dedff36SNick Mathewson New functions and features: debugging
2632dedff36SNick Mathewson   o Add event_enable_debug_logging() to control use of debug logs (e30a82f)
264edc6d7d7SNick Mathewson
2652dedff36SNick Mathewson New functions and features: core
2662dedff36SNick Mathewson   o Add event_config function to limit time/callbacks between calls
2672dedff36SNick Mathewson     to dispatch (fd4de1e, 9fa56bd, a37a0c0, 3c63edd)
2682dedff36SNick Mathewson   o New EVLOOP_NO_EXIT_ON_EMPTY option to keep looping even when no
2692dedff36SNick Mathewson     events are pending (084e68f)
2702dedff36SNick Mathewson   o Add event_base_get_npriorities() function. (ee3a4ee Alexander Drozdov)
2712dedff36SNick Mathewson   o Make evbase_priority_init() and evbase_get_npriorities()
2722dedff36SNick Mathewson     threadsafe (3c55b5e)
2732dedff36SNick Mathewson   o New event_base_update_cache_time() to set cached_tv to current
2742dedff36SNick Mathewson     time (212533e Abel Mathew)
2752dedff36SNick Mathewson   o Add event_self_cbarg() to be used in conjunction with
2762dedff36SNick Mathewson     event_new(). (ed36e6a Ross Lagerwall, fa931bb, 09a1906, 1338e6c,
2772dedff36SNick Mathewson     33e43ef)
2782dedff36SNick Mathewson   o Add a new libevent_global_shutdown() to free all globals before
2792dedff36SNick Mathewson     exiting. (041ca00 Mark Ellzey, f98c158, 15296d0, 55e991b)
2802dedff36SNick Mathewson   o Use getifaddrs to detect our interfaces if possible (7085a45)
2812dedff36SNick Mathewson   o Add event_base_get_running_event() to get the event* whose cb we
2822dedff36SNick Mathewson     are in (c5732fd, 13dad99)
283edc6d7d7SNick Mathewson
2842dedff36SNick Mathewson New functions and features: building
2852dedff36SNick Mathewson   o Implement --enable-gcc-hardening configure option (7550267 Sebastian Hahn)
286edc6d7d7SNick Mathewson
2872dedff36SNick Mathewson New functions and features: evbuffers
2882dedff36SNick Mathewson   o Add evbuffer_add_file_segment() so one fd can be used efficiently
2892dedff36SNick Mathewson     in more than one evbuffer_add_file at a time (e72afae, c2d9884,
2902dedff36SNick Mathewson     3f405d2, 0aad014)
2912dedff36SNick Mathewson   o Fix windows file segment mappings (8254de7)
2922dedff36SNick Mathewson   o Allow evbuffer_ptr_set to yield a point just after the end of the
2932dedff36SNick Mathewson     buffer. (e6fe1da)
2942dedff36SNick Mathewson   o Allow evbuffer_ptr to point to position 0 in an empty evbuffer
2952dedff36SNick Mathewson     (7aeb2fd Nir Soffer)
29688b4f0bbSNick Mathewson   o Set the special "not found" evbuffer_ptr consistently. (e3e97ae Nir Soffer)
2972dedff36SNick Mathewson   o support adding buffers to other buffers non-destructively
2982dedff36SNick Mathewson     (9d7368a Joachim Bauch)
2992dedff36SNick Mathewson   o prevent nested multicast references, reworked locking (26041a8
3002dedff36SNick Mathewson     Joachim Bauch)
3012dedff36SNick Mathewson   o New EVBUFFER_EOL_NUL to read NUL-terminated strings from an
3022dedff36SNick Mathewson     evbuffer (d7a8b36 Andrea Montefusco, 54142c9)
3032dedff36SNick Mathewson   o Make evbuffer_file_segment_types adaptable (c6bbbf1)
3042dedff36SNick Mathewson   o Added evbuffer_add_iovec and unit tests. (aaec5ac Mark Ellzey, 27b5398)
3052dedff36SNick Mathewson   o Add evbuffer_copyout_from to copy data from the middle of a
3062dedff36SNick Mathewson     buffer (27e2225)
3076f6cebe3SNick Mathewson
3082dedff36SNick Mathewson New functions and features: bufferevents
3092dedff36SNick Mathewson   o Allow users to set allow_dirty_shutdown (099d27d Catalin Patulea)
3102dedff36SNick Mathewson   o Tweak allow_dirty_shutdown documentation (a44cd2b)
3112dedff36SNick Mathewson   o Fix two issues in the allow_dirty_shutdown code. (f3b89de)
3122dedff36SNick Mathewson   o Add a bufferevent_getcb() to find a bufferevent's current
3132dedff36SNick Mathewson     callbacks (a650394)
3142dedff36SNick Mathewson   o bufferevent: Add functions to set/get max_single_read/write
3152dedff36SNick Mathewson     values. (998c813 Alexander Drozdov)
3162dedff36SNick Mathewson   o bev_ssl: Be more specific in event callbacks. evhttp in particular gets
3172dedff36SNick Mathewson     confused without at least one of BEV_EVENT_{READING|WRITING}. (f7eb69a
3182dedff36SNick Mathewson     Catalin Patulea)
319edc6d7d7SNick Mathewson
3202dedff36SNick Mathewson New functions and features: evconnlisteners
3212dedff36SNick Mathewson   o Support TCP_DEFER_ACCEPT sockopts for listeners (5880e4a Mark Ellzey,
3222dedff36SNick Mathewson     a270728)
3232dedff36SNick Mathewson   o Add another caveat to the TCP_DEFER_ACCEPT documentation (a270728)
3242dedff36SNick Mathewson   o Allow evconnlistener to be created in disabled state. (9593a33
3252dedff36SNick Mathewson     Alexander Drozdov)
3262dedff36SNick Mathewson   o The LEV_OPT_CLOSE_ON_EXEC flag now applies to accepted listener
3272dedff36SNick Mathewson     sockets too (4970329)
328edc6d7d7SNick Mathewson
3292dedff36SNick Mathewson Evhttp:
3302dedff36SNick Mathewson   o Add new evhttp_{connection_}set_timeout_tv() functions to set
3312dedff36SNick Mathewson     finger-grained http timeouts (6350e6c Constantine Verutin)
3322dedff36SNick Mathewson   o Performance tweak to evhttp_parse_request_line. (aee1a97 Mark Ellzey)
3332dedff36SNick Mathewson   o Add missing break to evhttp_parse_request_line (0fcc536)
3342dedff36SNick Mathewson   o Add evhttp callback for bufferevent creation; this lets evhttp
3352dedff36SNick Mathewson     support SSL. (8d3a850)
3362dedff36SNick Mathewson   o Remove calls to deprecated bufferevent functions from evhttp.c (4d63758)
3372dedff36SNick Mathewson   o evhttp: Add evhttp_foreach_bound_socket. (a2c48e3 Samy Al Bahra)
338edc6d7d7SNick Mathewson
3392dedff36SNick Mathewson Build improvements:
3402dedff36SNick Mathewson   o Add AC_USE_SYSTEM_EXTENSIONS to configure.in. Requires follow on
3412dedff36SNick Mathewson     patches for correctness and robustness. (1fa7dbe Kevin Bowling)
3422dedff36SNick Mathewson   o Filter '# define' statements from autoconf and generate
3432dedff36SNick Mathewson     event-private.h (321b558 Kevin Bowling)
3442dedff36SNick Mathewson   o Remove internal usage of _GNU_SOURCE (3b26541 Kevin Bowling)
3452dedff36SNick Mathewson   o Eliminate a couple more manual internal _GNU_SOURCE defines (c51ef93
3462dedff36SNick Mathewson     Kevin Bowling)
3472dedff36SNick Mathewson   o Add AC_GNU_SOURCE to the fallback case. (ea8fa4c Kevin Bowling)
3482dedff36SNick Mathewson   o Use a Configuration Header Template for evconfig-private.h (868f888
3492dedff36SNick Mathewson     Kevin Bowling)
3502dedff36SNick Mathewson   o Fix a comment warning and add evconfig-private.h to .gitignore
3512dedff36SNick Mathewson     (f6d66bc Kevin Bowling)
3522dedff36SNick Mathewson   o Include evconfig-private.h in internal files for great good. (0915ca0
3532dedff36SNick Mathewson     Kevin Bowling)
3542dedff36SNick Mathewson   o Backport libevent to vanilla Autoconf 2.59 (as used in RHEL5)
3552dedff36SNick Mathewson     (ad03952 Kevin Bowling)
3562dedff36SNick Mathewson   o Prefer the ./configure evconfig-private.h in MinGW, just in
3572dedff36SNick Mathewson     case. (f964b72 Kevin Bowling)
3582dedff36SNick Mathewson   o Shell hack for weird mkdir -p commands (fd7b5a8 Kevin Bowling)
3592dedff36SNick Mathewson   o Add evconfig-private to remaining files (ded0a09 Kevin Bowling)
3602dedff36SNick Mathewson   o Allow use of --enable-silent-rules for quieter compilation with
3612dedff36SNick Mathewson     automake 1.11 (f1f8514 Dave Hart)
3622dedff36SNick Mathewson   o Use "_WIN32", not WIN32: it's standard and we don't need to fake it
3632dedff36SNick Mathewson     (9f560b)
3642dedff36SNick Mathewson   o In configure, test for _WIN32 not WIN32. (85078b1 Peter Rosin)
3652dedff36SNick Mathewson   o Do not define WIN32 in Makefile.nmake (d41f3ea Peter Rosin)
3662dedff36SNick Mathewson   o Provide the autoconf m4 macros for the new OpenSSL via pkg-config
3672dedff36SNick Mathewson     stuff. (674dc3d Harlan Stenn)
3682dedff36SNick Mathewson   o Use pkg-config (if available) to handle OpenSSL. (1c63860 Harlan Stenn)
3692dedff36SNick Mathewson   o We need AM_CPPFLAGS when compiling bufferevent_openssl.c (6d2613b
3702dedff36SNick Mathewson     Harlan Stenn)
3712dedff36SNick Mathewson   o Fix OSX build: $(OPENSSL_INCS) needs to be after
3722dedff36SNick Mathewson     $(AM_CPPFLAGS). (46f1769 Zack Weinberg)
3732dedff36SNick Mathewson   o Make gcc warnings on by default, and --enable-gcc-warnings only add
3742dedff36SNick Mathewson     -Werror (d46517e Sebastian Hahn)
3752dedff36SNick Mathewson   o Split up extra-long AC_CHECK_FUNCS/HEADERS lines in configure.in (88a30ad)
3762dedff36SNick Mathewson   o Move libevent 1.x headers to include/, to put all public headers in
3772dedff36SNick Mathewson     one place. (bbea8d6)
3782dedff36SNick Mathewson   o Put #ifdef around some files to support alternate build
3792dedff36SNick Mathewson     systems. (76d4c92 Ross Lagerwall)
3802dedff36SNick Mathewson   o Also make win32select.c conditional for IDE users (bf2c5a7)
381edc6d7d7SNick Mathewson
3822dedff36SNick Mathewson Debugging:
3832dedff36SNick Mathewson   o Add a magic number to debug_locks to better catch lock-coding
3842dedff36SNick Mathewson     errors. (b4a29c0 Dave Hart)
3852dedff36SNick Mathewson   o munge the debug_lock signature before freeing it: it might help us
3862dedff36SNick Mathewson     catch use-after-free (f28084d)
3872dedff36SNick Mathewson   o Added --enable-event-debugging in configure (bc7b4e4, a9c2c9a Mark Ellzey)
3882dedff36SNick Mathewson   o Debug addition for printing usec on TIMEOUT debugging. (ac43ce0 Mark Ellzey)
3892dedff36SNick Mathewson   o Added usec debug in another area for debug (3baab0d Mark Ellzey)
3902dedff36SNick Mathewson   o added timeout debug logs to include event ptr. (4b7d298 Mark Ellzey)
3912dedff36SNick Mathewson   o more event dbg updates (6727543 Mark Ellzey)
3922dedff36SNick Mathewson   o Clarify event_enable_debug_logging a little (6207826)
3932dedff36SNick Mathewson   o Make --enable-verbose-debug option match its help text (10c3450)
3942dedff36SNick Mathewson   o Add argument checks to some memory functions in `event.c'. (c8953d1
3952dedff36SNick Mathewson     Mansour Moufid)
39634045c8fSNick Mathewson
3972dedff36SNick Mathewson Testing:
3982dedff36SNick Mathewson   o More abstraction in test.sh (cd74c4e)
3992dedff36SNick Mathewson   o Add failing test for evbuffer_search_range. (8e26154 Nir Soffer)
4002dedff36SNick Mathewson   o Tweaks to return types with end-of-buf ptrs (9ab8ab8)
4012dedff36SNick Mathewson   o Add an (internal) usleep function for use by unit tests (f25d9d3)
4022dedff36SNick Mathewson   o Synchronize with upstream tinytest (6c81be7)
4032dedff36SNick Mathewson   o Make test-changelist faster (7622d26)
4042dedff36SNick Mathewson   o Reduce the timeout in the main/fork test. (ab14f7c)
4052dedff36SNick Mathewson   o New evhttp function to adjust initial retry timeout (350a3c4)
4062dedff36SNick Mathewson   o Make regression tests run over 3x faster. (67a1763)
4072dedff36SNick Mathewson   o Use test_timeval_diff_eq more consistently (b77b43f)
4082dedff36SNick Mathewson   o Allow more slop in deferred_cb_skew test; freebsd needs it (b9f7e5f)
4092dedff36SNick Mathewson   o When including an -internal.h header outside the main tree, do so
4102dedff36SNick Mathewson     early (95e2455)
4112dedff36SNick Mathewson   o Add a new test: test-fdleak which tests for fd leaks by creating many
4122dedff36SNick Mathewson     sockets. (2ef9278 Ross Lagerwall, f7af194, 1c4288f, etc)
4132dedff36SNick Mathewson   o Add a unit test for event_base_dump_events() (7afe48a, 8d08cce)
4142dedff36SNick Mathewson   o Test more bufferevent_ratelim features (c24f91a)
41534045c8fSNick Mathewson
4162dedff36SNick Mathewson Documentation:
4172dedff36SNick Mathewson   o Improve evbuffer_ptr documentation (261ba63)
41888b4f0bbSNick Mathewson   o added comments to describe refcounting of multicast chains (ba24f61
4192dedff36SNick Mathewson     Joachim Bauch)
4202dedff36SNick Mathewson   o Add doxygen for event_base_dump_events (cad5753)
42131c99bd2SNick Mathewson
4222dedff36SNick Mathewson OSX:
4232dedff36SNick Mathewson   o Use "unlimited select" on OSX so that we can have more than
4242dedff36SNick Mathewson     FD_SETSIZE fds (1fb5cc6)
42534045c8fSNick Mathewson
4262dedff36SNick Mathewson KQueue:
4272dedff36SNick Mathewson   o Use SIG_IGN instead of a do-nothing handler for signal events with
4282dedff36SNick Mathewson     kqueue (148458e Zack Weinberg)
42934045c8fSNick Mathewson
4302dedff36SNick Mathewson evprc:
4312dedff36SNick Mathewson   o event_rpcgen.py now prints status information to stdout and errors to
4322dedff36SNick Mathewson     stderr. (ffb0ba0 Ross Lagerwall)
43334045c8fSNick Mathewson
4342dedff36SNick Mathewson Code improvement and refactoring:
4352dedff36SNick Mathewson   o Make event_reinit() more robust and maintainable (272033e)
4362dedff36SNick Mathewson   o Restore fast-path event_reinit() for slower backends (2c4b5de)
4372dedff36SNick Mathewson   o Check changelist as part of checking representational integrity (39b3f38)
4382dedff36SNick Mathewson   o Fix a compile warning in event_reinit (e4a56ed Sebastian Hahn)
4392dedff36SNick Mathewson   o Refactor the functions that run over every event. (c89b4e6)
4402dedff36SNick Mathewson   o Remove the last vestiges of _EVENT_USE_EVENTLIST (a3cec90)
4412dedff36SNick Mathewson   o Make event-config.h depend on Makefile.am (2958a5c)
44234045c8fSNick Mathewson
4432dedff36SNick Mathewson Build fixes:
4442dedff36SNick Mathewson   o Don't do clang version detection when disabling some flags (083296b
4452dedff36SNick Mathewson     Sebastian Hahn)
44634045c8fSNick Mathewson
4472dedff36SNick Mathewson C standards conformance:
4482dedff36SNick Mathewson   o Check for NULL return on win32 mm_calloc, and set ENOMEM. (af7ba69)
4492dedff36SNick Mathewson   o Convert event-config.h macros to avoid reserved identifiers (68120d9)
4502dedff36SNick Mathewson   o Generate event-config.h using the correct macros. (f82c57e)
4512dedff36SNick Mathewson   o Convert include-guard macro convention to avoid reserved identifiers
4522dedff36SNick Mathewson     (3f8c7cd)
45388b4f0bbSNick Mathewson   o Make event_rpcgen.py output conform to identifier conventions (372bff1)
4542dedff36SNick Mathewson   o Stop referring to an obsolete include guard in bench_http.h (5c0f7e0)
4552dedff36SNick Mathewson   o Make the generated event-config.h use correct include guards (639383a)
4562dedff36SNick Mathewson   o Fix all identifiers with names beginning with underscore. (cb9da0b)
45788b4f0bbSNick Mathewson   o Make event_rpcgen.py output conform to identifier conventions, more
4582dedff36SNick Mathewson     (bcefd24)
4592dedff36SNick Mathewson   o Fix some problems introduced by automated identifier cleanup script
4602dedff36SNick Mathewson     (c963534)
4612dedff36SNick Mathewson   o Have all visible internal function names end with an underscore. (8ac3c4c)
4622dedff36SNick Mathewson   o Apply the naming convention to our EVUTIL_IS* functions (c7848fa)
4632dedff36SNick Mathewson   o Clean up lingering _identifiers. (946b584)
4642dedff36SNick Mathewson   o Fix doxygen to use new macro conventions (da455e9)
4657c3e0612SNick Mathewson
4662dedff36SNick Mathewson Bugfixes:
4672dedff36SNick Mathewson   o Do not use system EAI/AI values if we are not using the system
4682dedff36SNick Mathewson     getaddrinfo. (7bcac07)
4697c3e0612SNick Mathewson
4702dedff36SNick Mathewson Sample Code:
4712dedff36SNick Mathewson   o Fix up sample/event-test.c to use newer interfaces and make it
4722dedff36SNick Mathewson     actually work. (19bab4f Ross Lagerwall)
4732dedff36SNick Mathewson   o On Unix, remove event.fifo left by sample/event-test.c. (c0dacd2 Ross
4742dedff36SNick Mathewson     Lagerwall)
4752dedff36SNick Mathewson   o Rename event-test.c to event-read-fifo.c. (a5b370a Ross Lagerwall)
4762dedff36SNick Mathewson   o event-read-fifo: Use EV_PERSIST appropriately (24dab0b)
47715be0493SNick Mathewson
4781aa6826fSNiels Provos
47987bef9e9SNiels Provos
48011a0a9e4SNiels Provos
481