Start to write Tulip 3.4.2 changelog
This commit is contained in:
		
							
								
								
									
										157
									
								
								ChangeLog
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										157
									
								
								ChangeLog
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,157 @@
 | 
			
		||||
Tulip 3.4.2
 | 
			
		||||
===========
 | 
			
		||||
 | 
			
		||||
New shiny methods like create_task(), better documentation, much better debug
 | 
			
		||||
mode, better tests.
 | 
			
		||||
 | 
			
		||||
asyncio API
 | 
			
		||||
-----------
 | 
			
		||||
 | 
			
		||||
* Add BaseEventLoop.create_task() method: schedule a coroutine object.
 | 
			
		||||
  It allows other asyncio implementations to use their own Task class to
 | 
			
		||||
  change its behaviour.
 | 
			
		||||
 | 
			
		||||
* New BaseEventLoop methods:
 | 
			
		||||
 | 
			
		||||
  - create_task(): schedule a coroutine
 | 
			
		||||
  - get_debug()
 | 
			
		||||
  - is_closed()
 | 
			
		||||
  - set_debug()
 | 
			
		||||
 | 
			
		||||
* Add _FlowControlMixin.get_write_buffer_limits() method
 | 
			
		||||
 | 
			
		||||
* sock_recv(), sock_sendall(), sock_connect(), sock_accept() methods of
 | 
			
		||||
  SelectorEventLoop now raise an exception if the socket is blocking mode
 | 
			
		||||
 | 
			
		||||
* Include unix_events/windows_events symbols in asyncio.__all__.
 | 
			
		||||
  Examples: SelectorEventLoop, ProactorEventLoop, DefaultEventLoopPolicy.
 | 
			
		||||
 | 
			
		||||
* attach(), detach(), loop, active_count and waiters attributes of the Server
 | 
			
		||||
  class are now private
 | 
			
		||||
 | 
			
		||||
* BaseEventLoop: run_forever(), run_until_complete() now raises an exception if
 | 
			
		||||
  the event loop was closed
 | 
			
		||||
 | 
			
		||||
* close() now raises an exception if the event loop is running, because pending
 | 
			
		||||
  callbacks would be lost
 | 
			
		||||
 | 
			
		||||
* Queue now accepts a float for the maximum size.
 | 
			
		||||
 | 
			
		||||
* Process.communicate() now ignores BrokenPipeError and ConnectionResetError
 | 
			
		||||
  exceptions, as Popen.communicate() of the subprocess module
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Performances
 | 
			
		||||
------------
 | 
			
		||||
 | 
			
		||||
* Optimize handling of cancelled timers
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Debug
 | 
			
		||||
-----
 | 
			
		||||
 | 
			
		||||
* Future (and Task), CoroWrapper and Handle now remembers where they were
 | 
			
		||||
  created (new _source_traceback object), traceback displayed when errors are
 | 
			
		||||
  logged.
 | 
			
		||||
 | 
			
		||||
* On Python 3.4 and newer, Task destrutor now logs a warning if the task was
 | 
			
		||||
  destroyed while it was still pending. It occurs if the last reference
 | 
			
		||||
  to the task was removed, while the coroutine didn't finish yet.
 | 
			
		||||
 | 
			
		||||
* Much more useful events are logged:
 | 
			
		||||
 | 
			
		||||
  - Event loop closed
 | 
			
		||||
  - Network connection
 | 
			
		||||
  - Creation of a subprocess
 | 
			
		||||
  - Pipe lost
 | 
			
		||||
  - Log many errors previously silently ignored
 | 
			
		||||
  - SSL handshake failure
 | 
			
		||||
  - etc.
 | 
			
		||||
 | 
			
		||||
* BaseEventLoop._debug is now True if the envrionement variable
 | 
			
		||||
  PYTHONASYNCIODEBUG is set
 | 
			
		||||
 | 
			
		||||
* Log the duration of DNS resolution and SSL handshake
 | 
			
		||||
 | 
			
		||||
* Log a warning if a callback blocks the event loop longer than 100 ms
 | 
			
		||||
  (configurable duration)
 | 
			
		||||
 | 
			
		||||
* repr(CoroWrapper) and repr(Task) now contains the current status of the
 | 
			
		||||
  coroutine (running, done), current filename and line number, and filename and
 | 
			
		||||
  line number where the object was created
 | 
			
		||||
 | 
			
		||||
* Enhance representation (repr) of transports: add the file descriptor, status
 | 
			
		||||
  (idle, polling, writing, etc.), size of the write buffer, ...
 | 
			
		||||
 | 
			
		||||
* Add repr(BaseEventLoop)
 | 
			
		||||
 | 
			
		||||
* run_until_complete() doesn't log a warning anymore when called with a
 | 
			
		||||
  coroutine object which raises an exception.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Bugfixes
 | 
			
		||||
--------
 | 
			
		||||
 | 
			
		||||
* windows_utils.socketpair() now ensures that sockets are closed in case
 | 
			
		||||
  of error.
 | 
			
		||||
 | 
			
		||||
* Rewrite bricks of the IocpProactor() to make it more reliable
 | 
			
		||||
 | 
			
		||||
* IocpProactor destructor now closes it.
 | 
			
		||||
 | 
			
		||||
* _OverlappedFuture.set_exception() now cancels the overlapped operation.
 | 
			
		||||
 | 
			
		||||
* Rewrite _WaitHandleFuture:
 | 
			
		||||
 | 
			
		||||
  - cancel() is now able to signal the cancellation to the overlapped object
 | 
			
		||||
  - _unregister_wait() now catchs and logs exceptions
 | 
			
		||||
 | 
			
		||||
* PipeServer.close() (class used on Windows) now cancels the accept pipe
 | 
			
		||||
  future.
 | 
			
		||||
 | 
			
		||||
* Rewrite signal handling in the UNIX implementation of SelectorEventLoop:
 | 
			
		||||
  use the self-pipe to store pending signals instead of registering a
 | 
			
		||||
  signal handler calling directly _handle_signal(). The change fixes a
 | 
			
		||||
  race condition.
 | 
			
		||||
 | 
			
		||||
* create_unix_server(): close the socket on error.
 | 
			
		||||
 | 
			
		||||
* Fix wait_for()
 | 
			
		||||
 | 
			
		||||
* Rewrite gather()
 | 
			
		||||
 | 
			
		||||
* drain() is now a classic coroutine, no more special return value (empty
 | 
			
		||||
  tuple)
 | 
			
		||||
 | 
			
		||||
* Rewrite SelectorEventLoop.sock_connect() to handle correctly timeout
 | 
			
		||||
 | 
			
		||||
* Process data of the self-pipe faster to accept more pending events,
 | 
			
		||||
  especially signals written by signal handlers: the callback reads all pending
 | 
			
		||||
  data, not only a single byte
 | 
			
		||||
 | 
			
		||||
* Don't try to set the result of a Future anymore if it was cancelled
 | 
			
		||||
  (explicitly or by a timeout)
 | 
			
		||||
 | 
			
		||||
* CoroWrapper now works around CPython issue #21209: yield from & custom
 | 
			
		||||
  generator classes don't work together, issue with the send() method. It only
 | 
			
		||||
  affected asyncio in debug mode on Python older than 3.4.2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Misc changes
 | 
			
		||||
------------
 | 
			
		||||
 | 
			
		||||
* windows_utils.socketpair() now supports IPv6.
 | 
			
		||||
 | 
			
		||||
* Better documentation (online & docstrings): fill remaining XXX, more examples
 | 
			
		||||
 | 
			
		||||
* new asyncio.coroutines submodule, to ease maintenance with the trollius
 | 
			
		||||
  project: @coroutine, _DEBUG, iscoroutine() and iscoroutinefunction() have
 | 
			
		||||
  been moved from asyncio.tasks to asyncio.coroutines
 | 
			
		||||
 | 
			
		||||
* Cleanup code, ex: remove unused attribute (ex: _rawsock)
 | 
			
		||||
 | 
			
		||||
* Reuse os.set_blocking() of Python 3.5.
 | 
			
		||||
 | 
			
		||||
* Close explicitly the event loop in Tulip examples.
 | 
			
		||||
 | 
			
		||||
* runtests.py now mention if tests are running in release or debug mode.
 | 
			
		||||
		Reference in New Issue
	
	Block a user