La nueva Nueva versión 12.1.0 de Twisted ya está en la calle

La nueva Nueva versión 12.1.0 de Twisted ya está en la calle
Facebook Twitter Flipboard E-mail

Thomas Hervé del equipo de desarrollo de Twisted anunciaba ayer por la mañana a través de la lista de correo de Twisted la release de la versión 12.1 de la popular librería de sockets asíncronos para Python.

Era de esperar un update del core desde que el pasado once de febrero liberaran la versión 12.0 la cual no introducía demasiados cambios y algunos eran bastante esperados como por ejemplo la recuperación del reactor kqueue para BSD y derivados (como Mac OS X). En esta release se han cerrado ciento siete tickets por lo que algunos de los cambios son importantes

Twisted Core

Los cambios más significativos al core de Twisted son los siguientes:

  • Se ha recuperado el reactor kqueue para plataformas BSD (incluido Mac OS X)

  • epoll es ahora el reactor por defecto en Linux

  • twisted.python.filepath ahora provee IFilePath, una interfaz para objetos de path de archivos

  • Los reactores para GTK y glib ahora ejecutan operaciones de E/S y eventos programados con menor prioridad para asegurar que la Interfaz de Usuario sigue respondiendo

  • IReactorTCP.connectTCP() ahora acepta literales de direccion IPv6

  • Se añade la interfaz twisted.internet.interfaces.IReactorSocket que es usada por algunos reactors para escuchar en sockets fijados por herramientas externas como systemd o launchd

  • twisted.internet.endpoints.clientFromString ahora soporta cadenas con el formato tcp:example.com:80 y ssl:example.com:443

  • twisted.python.constants.Flags ahora proveen una manera de definir colecciones de flags para uso de bitvectores

  • Ahora podemos usar twisted.python.runtime.platform.isLinux para comprobar si estamos corriendo bajo plataforma Linux

  • twisted.internet.endpoints.serverFromString ahora reconoce un 'endpoint' tipo systemd para escuchar en un puerto heredado de systemd

  • Las conexiones creadas usando twisted.internet.interfaces.IReactorUNix ahora soportan enviar y recibir descriptores de archivo entre procesos diferentes

  • twisted.internet.endpoints.clientFromString ahora soporta 'endpoints' de tipo UNIX con el argumento de ruta especificado como "unix:/foo/bar, antes era solo con "unix:path=/foo/bar"

  • twisted.protocols.amp.Descriptor es un nuevo argumento para APM que soporta que se le pasen descriptores de archivo como argumentos de comandos AMP a través de conexiones tipo UNIX

Se han solucionado bugs importantes como el que afectaba al reactor epoll en linux por el cual no se podían realizar operaciones de entrada/salida a ficheros regulares en stdin/stdout. Ahora el invocar el método .cancel() en un 'endpoint' de cliente funciona tal y como se especifica en la documentación.

Se ha abandonado el soporte para pyOpenSSL 0.9 y versiones anteriores y se han eliminado bastantes clases que estaban marcadas como "deprecated" en algunos casos desde 2006, entre ellas, twisted.python.threadpool.ThradSafeList ojo.

Twisted Web

En el módulo web nos encontramos con algunas novedades. Por ejemplo se ha añadido el método renderElement a las plantillas que renderiza un elemento para enregarlo en una respuesta y además acepta un argumento tipo doctype que por defecto es el doctype de HTML5.

Ahora twisted.web.template.XMLFile soporta objetos de tipo FilePath y twisted.web.client.Agent y ProxyAgent soportan conexiones persistentes. Asimismo se han solucionado algunos bugs menores.

PHP3Script y PHPScript han sido eliminados de twisted.web.twcgi. Como efecto colateral del soporte de XMLFile de objetos FilePath, deja de soportar objetos de tipo file y nombres de archivo.

Twisted Conch

Los cambios en el módulo conch son muchísimo más escuetos. Ahora twisted.conch.tap soporta plugins cred y se ha solucionado un bug que afectaba a twisted.conch.client.knownhosts.

Twisted Names, News, Runner y Mail

El módulo de DNSs de Twisted tampoco es un cúmulo de nuevas característica pero si que se han solucionado bastantes bugs menores y se ha añadido soporte para un servidor secundario. Queda obsoleto el uso del atributo Record_mx.exchange

Al módulo de noticias solo se le han añadido algunos tests y se ha refactorizado el código de la clase NNTPServer. En cuanto al módulo runner se han eliminado los métodos ProcessMonitor.active, consistencyDelay y consistency del módulo procmon ya que estaban obsoletos desde la versión 10.1

Conclusión

Esta nueva versión de Twisted viene a solucionar algunos de los problemas que no entendíamos por qué no habían solucionado antes de lanzar la versión 12.0, algunos bastante incómodos como el problema con los reactores en la plataforma BSD.

No sabemos si la crisis ha afectado mucho a TwistedMatrix, la empresa detrás de Twisted pero desde que lanzaran la version 11.1.0 el quince de noviembre del 2011 no ha habido ningún update realmente grande y con características importantes, esperemos que la cosa mejore y que solo sea un bache.

Más en Genbeta Dev | Introducción a la programación asíncrona con Twisted

Comentarios cerrados
Inicio