Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(267)

Side by Side Diff: third_party/libevent/whatsnew-14.txt

Issue 1531573008: move libevent into base (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix shim path Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/libevent/test/test-weof.c ('k') | tools/checklicenses/checklicenses.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 What's New In Libevent 1.4:
2
3 0. About this document
4
5 This document describes the key differences between Libevent 1.3 and
6 Libevent 1.4, from a user's point of view. It was most recently
7 updated based on features from libevent 1.4.2-rc.
8
9 1. Packaging Issues.
10
11 1.1. The great library division.
12
13 The libevent source now builds two libraries: libevent_core and
14 libevent_extra. The libevent_core library includes event loops,
15 timers, buffer code, and various small compatibility functions. The
16 libevent_extra library includes code for HTTP, DNS, RPC, and so on.
17 Thus, if you're writing software that only uses libevent's event
18 loop, you should link against only the libevent_core library,
19 whereas if you're writing software that uses libevent's protocol
20 support as well, you need to link libevent_extra as well.
21
22 For backward compatibility, libevent also builds a library called
23 "libevent" that includes everything.
24
25 1.2. The event-config.h header
26
27 Libevent configure script now builds two headers from its configure
28 script: config.h (which it uses internally) and event-config.h
29 (which it installs as a header file). All of the macros in
30 event-config.h are modified so that they're safe to include in other
31 projects. This allows libevent's header files (like event.h and
32 evutil.h) information about platform configuration.
33
34 What does this mean for you? As of 1.4.x, it should never be
35 necessary to include extra files or define extra types before you
36 include event.h (or any other libevent header); event.h can now look
37 at the information in event-config.h and figure out what it needs to
38 include.
39
40 1.3. Documentation
41
42 Libevent now includes better doxygen documentation. It's not
43 perfect or complete, though; if you find a mistake, please let us
44 know.
45
46 1.4. Libtool usage
47
48 We now use libtool's library versioning support correctly. If we
49 don't mess this up, it means that binaries linked against old
50 version of libevent should continue working when we make changes to
51 libevent that don't break backward compatibility.
52
53 1.5. Portability
54
55 Libevent now builds with MSVC again. We've only tested it with MSVC
56 2005, and the project files might not be right. Please let us know
57 if you run into any issues.
58
59 Libevent now builds on platforms where /bin/sh is not bash.
60
61 Libevent's regression test no longer requires Python to be
62 installed.
63
64 2. New and Improved APIs:
65
66 (This list includes functions that are new, functions whose behavior
67 has changed, and functions that were included in previous releases
68 but which never actually worked before.)
69
70 2.1. Utility functions are defined in evutil.h
71
72 Libevent now exposes a small set of functions for cross-platform
73 network programming in evutil.h, on the theory that they've been
74 useful enough to us that other people may likely want to use them
75 too. These are mainly workarounds for Windows issues for now: they
76 include evutil_socketpair (to fake socketpair on platforms that
77 don't have it) and evutil_make_socket_nonblocking (to make a socket
78 nonblocking in a cross-platform way. See the header for more
79 information.
80
81 2.2. In the libevent core.
82
83 The event_base_free() function now works. Previously, it would
84 crash with an assertion failure if there were events pending on a
85 base. Now, it simply deletes all the pending events and frees the
86 base. Be careful -- this might leak fds and memory associated with
87 the old events. To avoid leaks, you should still remove all the
88 events and free their resources before you delete the base.
89
90 Libevent should now work properly with fork(). Just call
91 event_reinit() on your event base after the fork call, and it should
92 work okay. Please let us know about any bugs you find.
93
94 There's a new event_base_new() function that acts just like
95 event_init(), but does not replace the default base. If you are
96 using multiple event bases in your code, you should just use
97 event_base_new() instead of event_init(), to avoid accidental bugs.
98
99 There's new event_loopbreak() function to make a current event loop
100 stop exiting and return. Unlike event_loopexit, it stops subsequent
101 pending events from getting executed. This behavior is useful for
102 scripting languages to implement exceptions from inside callbacks.
103
104 There's a new event_base_get_method() function, for use in place of
105 event_get_method() in multi-base applications.
106
107 2.3. New in HTTP.
108
109 There's an evhttp_connection_set_local_address() function you can
110 use to set the local address of an HTTP connection.
111
112 HTTP/1.1 chunking now correctly ends chunks with '\r\n'.
113
114 2.4. New in DNS
115
116 Instead of picking your method for generating DNS transaction IDs at
117 startup, you can use evdns_set_transaction_id() to provide a
118 transaction ID function at runtime.
119
120 The "class" field in evdns_server_request is now renamed to
121 dns_question_class, so that it won't break compilation under C++.
122 This uses some preprocessor hacks so that C code using the old name
123 won't break. Eventually, the old name will be deprecated entirely;
124 please don't use it.
125
126 2.5. New in RPC
127
128 There are now hooks on RPC input and output; can be used to
129 implement RPC independent processing such as compression or
130 authentication.
131
132 RPC tags can now be up to 32 bits. This is wire-compatible, but
133 changes some of the types in the APIs. Please let us know if this
134 is problematic for you.
135
136 3. Big bugfixes
137
138 We've done a lot, with help from users on different platforms, to
139 make the different backends behave more similarly with respect to
140 signals and timeouts. The kqueue and solaris backends were the big
141 offenders previously, but they should be better now. Windows should
142 be better too, though it's likely that problems remain there.
143
144 The libevent headers (though not the source files!) should now build
145 cleanly on C++.
146
147 (For more bugfixes, see the ChangeLog file. These are only the
148 biggies.)
149
150 4. Big performance improvements
151
152 Libevent now uses a min-heap rather than a red-black tree to track
153 timeouts. This means that finding the next timeout to fire is now
154 O(1) instead of (lg n).
155
156 The win32 select-based backend now uses a red-black tree to map
157 SOCKET handles to event structures. This changes the performance
158 characteristics of the event loop on win32 from O(n^2) to O(n lg n).
159 Not perfect, but better.
160
161 5. Removed code and features
162
163 The rtsig backend is now removed. It hasn't even compiled for a
164 while, and nobody seemed to miss it very much. All the platforms
165 that have rtsig seem to have a better option instead these days.
166 Please let us know if rtsig was crucial for you.
167
OLDNEW
« no previous file with comments | « third_party/libevent/test/test-weof.c ('k') | tools/checklicenses/checklicenses.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698