1Release Notes
2=============
3
4PycURL 7.44.1 - 2021-08-15
5--------------------------
6
7This release repairs incorrect Python thread initialization logic which
8caused operations to hang.
9
10PycURL 7.44.0 - 2021-08-08
11--------------------------
12
13This release reinstates best effort Python 2 support, adds Python 3.9 and
14Python 3.10 alpha support and implements support for several libcurl options.
15
16Official Windows builds are currently not being produced.
17
18PycURL 7.43.0.6 - 2020-09-02
19----------------------------
20
21This release improves SSL backend detection on various systems, adds support
22for libcurl's multiple SSL backend functionality and adds support for several
23libcurl options.
24
25PycURL 7.43.0.5 - 2020-01-29
26----------------------------
27
28This release fixes a build issue on recent Pythons on CentOS/RHEL distributions.
29
30It also brings back Windows binaries. Special thank you to Gisle Vanem for
31contributing the nghttp2 makefile.
32
33
34PycURL 7.43.0.4 - 2020-01-15
35----------------------------
36
37This release improves compatibility with Python 3.8 and removes support for
38Python 2 and Python 3.4. It also adds wolfSSL support and thread safety of
39the multi interface.
40
41
42PycURL 7.43.0.3 - 2019-06-17
43----------------------------
44
45This release primarily fixes an OpenSSL-related installation issue, and
46repairs the ability to use PycURL with newer libcurls compiled without FTP
47support. Also, mbedTLS support has been contributed by Josef Schlehofer.
48
49
50PycURL 7.43.0.2 - 2018-06-02
51----------------------------
52
53Highlights of this release:
54
551. Experimental perform_rs and perform_rb methods have been added to Curl
56   objects. They return response body as a string and a byte string,
57   respectively. The goal of these methods is to improve PycURL's usability
58   for typical use cases, specifically removing the need to set up
59   StringIO/BytesIO objects to store the response body.
60
612. getinfo_raw and errstr_raw methods have been added to Curl objects to
62   return transfer information as byte strings, permitting applications to
63   retrieve transfer information that is not decodable using Python's
64   default encoding.
65
663. errstr and "fail or error" exceptions now replace undecodable bytes
67   so as to provide usable strings; use errstr_raw to retrieve original
68   byte strings.
69
704. There is no longer a need to keep references to Curl objects when they
71   are used in CurlMulti objects - PycURL now maintains such references
72   internally.
73
745. Official Windows builds now include HTTP/2 and international domain
75   name support.
76
776. PycURL now officially supports BoringSSL.
78
797. A number of smaller improvements have been made and bugs fixed.
80
81
82PycURL 7.43.0.1 - 2017-12-07
83----------------------------
84
85This release collects fixes and improvements made over the past two years,
86notably updating Windows dependencies to address DNS resolution and
87TLS connection issues.
88
89
90PycURL 7.43.0 - 2016-02-02
91--------------------------
92
93Highlights of this release:
94
951. Binary wheels are now built for Windows systems.
96
972. setopt_string method added to Curl objects to permit setting string libcurl
98   options that PycURL does not know about.
99
1003. curl module can now be imported on Windows again.
101
1024. OPENSOCKETFUNCTION callback is now invoked with the address as bytes on
103   Python 3 as was documented.
104
1055. Support for many libcurl options and constants was added.
106
107
108PycURL 7.21.5 - 2016-01-05
109--------------------------
110
111Highlights of this release:
112
1131. Socket callbacks are now fully implemented (``CURLOPT_OPENSOCKETFUNCTION``,
114   ``CURLOPT_SOCKOPTFUNCTION``, ``CURLOPT_CLOSESOCKETFUNCTION``). Unfortunately
115   this required changing ``OPENSOCKETFUNCTION`` API once again in a
116   backwards-incompatible manner. Support for ``SOCKOPTFUNCTION`` and
117   ``CLOSESOCKETFUNCTION`` was added in this release. ``OPENSOCKETFUNCTION``
118   now supports Unix sockets.
119
1202. Many other libcurl options and constants have been added to PycURL.
121
1223. When ``pycurl`` module initialization fails, ``ImportError`` is raised
123   instead of a fatal error terminating the process.
124
1254. Usability of official Windows builds has been greatly improved:
126
127   * Dependencies are linked statically, eliminating possible DLL conflicts.
128   * OpenSSL is used instead of WinSSL.
129   * libcurl is linked against C-Ares and libssh2.
130
131
132PycURL 7.19.5.3 - 2015-11-03
133----------------------------
134
135PycURL 7.19.5.2 release did not include some of the test suite files in
136its manifest, leading to inability to run the test suite from the sdist
137tarball. This is now fixed thanks to Kamil Dudka.
138
139
140PycURL 7.19.5.2 - 2015-11-02
141----------------------------
142
143Breaking change: DEBUGFUNCTION now takes bytes rather than (Unicode) string
144as its argument on Python 3.
145
146Breaking change: CURLMOPT_* option constants moved from Easy to Multi
147class. They remain available in pycurl module.
148
149SSL library detection improved again, --libcurl-dll option to setup.py added.
150
151Options that required tuples now also accept lists, and vice versa.
152
153This release fixes several memory leaks and one use after free issue.
154
155Support for several new libcurl options and constants has been added.
156
157
158PycURL 7.19.5.1 - 2015-01-06
159----------------------------
160
161This release primarily fixes build breakage against libcurl 7.19.4 through
1627.21.1, such as versions shipped with CentOS.
163
164
165PycURL 7.19.5 - 2014-07-12
166--------------------------
167
168PycURL C code has been significantly reorganized. Curl, CurlMulti and
169CurlShare classes are now properly exported, instead of factory functions for
170the respective objects. PycURL API has not changed.
171
172Documentation has been transitioned to Sphinx and reorganized as well.
173Both docstrings and standalone documentation are now more informative.
174
175Documentation is no longer included in released distributions. It can be
176generated from source by running `make docs`.
177
178Tests are no longer included in released distributions. Instead the
179documentation and quickstart examples should be consulted for sample code.
180
181Official Windows builds now are linked against zlib.
182
183
184PycURL 7.19.3.1 - 2014-02-05
185----------------------------
186
187This release restores PycURL's ability to automatically detect SSL library
188in use in most circumstances, thanks to Andjelko Horvat.
189
190
191PycURL 7.19.3 - 2014-01-09
192--------------------------
193
194This release brings official Python 3 support to PycURL.
195Several GNU/Linux distributions provided Python 3 packages of PycURL
196previously; these packages were based on patches that were incomplete and
197in some places incorrect. Behavior of PycURL 7.19.3 and later may therefore
198differ from behavior of unofficial Python 3 packages of previous PycURL
199versions.
200
201To summarize the behavior under Python 3, PycURL will accept ``bytes`` where
202it accepted strings under Python 2, and will also accept Unicode strings
203containing ASCII codepoints only for convenience. Please refer to
204`Unicode`_ and `file`_ documentation for further details.
205
206In the interests of compatibility, PycURL will also accept Unicode data on
207Python 2 given the same constraints as under Python 3.
208
209While Unicode and file handling rules are expected to be sensible for
210all use cases, and retain backwards compatibility with previous PycURL
211versions, please treat behavior of this versions under Python 3 as experimental
212and subject to change.
213
214Another potentially disruptive change in PycURL is the requirement for
215compile time and runtime SSL backends to match. Please see the readme for
216how to indicate the SSL backend to setup.py.
217
218.. _Unicode: doc/unicode.html
219.. _file: doc/files.html
220