ANN: pyftpdlib 1.0.0 released

G

Giampaolo Rodolà

Hi there guys,
After 1 year of development and refinements I'm pleased to announce a
release of pyftpdlib which appears to be the fastest FTP server out
there (on UNIX at least)! See:
http://code.google.com/p/pyftpdlib/wiki/Benchmarks

1.0.0 release introduces serious improvements amongst which python 3
support (finally!) and full Unicode support. Here's the major ones.


=== New IO loop and epoll() / kqueue() support ===

The IO loop, originally relying on asyncore, has been rewritten from
scratch (http://code.google.com/p/pyftpdlib/source/browse/trunk/pyftpdlib/ioloop.py)
and now supports epoll() on Linux and kqueue() on OSX/BSD.
Also select() (Windows) and poll() pollers have been rewritten
resulting in pyftpdlib being an order of magnitude faster and more
scalable than ever. Read the full story here:
http://code.google.com/p/pyftpdlib/issues/detail?id=203

=== Alternative concurrency model ===

It is now possible to change the default concurrency model from async
(non blocking) to multiple processes / threads based, meaning you are
now free to block as long as you want and support particularly slow
filesystems.
Switching is as easy as changing an import. More information are here:
http://code.google.com/p/pyftpdlib/wiki/Tutorial#4.6_-_Changing_the_concurrency_model

=== Python 3 porting + full Unicode support ===

Finally!

=== Logging ===

logging module is now used for logging as replacement for log(),
logline() and logerror() functions which are now deprecated. Also, the
whole logging infrastructure has been refactored and it is more
compact and consistent. Also by default pyftpdlib logs will have
colors.

=== Other improvements ===

* a new FilesystemError exception class is available in order send
custom error strings to client from an AbstracteFS subclass.

* on_connect() and on_disconnect() callbacks

* FTPHandler.ftp_* methods implementing filesystem-related commands
now return a meaningful value on success (tipically the path name).

* FTPServer.serve_forever() has a new handle_exit parameter which
can be set to False in order to avoid handling SIGTERM/SIGINT signals.

=== Backward compatibility breakage ===

A lot of backward incompatible changes have been introduced amongst
which the different import system, the different
validate_authentication() signature and the fact that the filesystem
class now expects Unicode strings rather than bytes. HISTORY file
enlists all of them and also provides a guide on how to port your
existent to this new version.
http://code.google.com/p/pyftpdlib/source/browse/trunk/HISTORY?spec=svn1175&r=1172#85


=== Some links ===

Home: http://code.google.com/p/pyftpdlib/
Download: http://code.google.com/p/pyftpdlib/list/downloads
Tutorial: http://code.google.com/p/pyftpdlib/wiki/Tutorial
Complete list of changes:
http://code.google.com/p/pyftpdlib/source/browse/trunk/HISTORY


That should be all folks.
I hope you'll enjoy this new version,

Giampaolo Rodola'
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,764
Messages
2,569,564
Members
45,041
Latest member
RomeoFarnh

Latest Threads

Top