What's New There is no big change for the 2.0 (final) release. It is basically a bug fix release. The main improvement is in the non-blocking support. * New: sample module dispatch.lua implements a coroutine based dispatcher; * New: sample check-links.lua works both in blocking and non-blocking mode using coroutines (using the new dispatcher); * New: sample forward.lua implements a coroutine based forward server (using the new dispatcher); * Improved: tcp:send(data, i, j) to return (i+sent-1). This is great for non-blocking I/O, but might break some code; * Improved: HTTP, SMTP, and FTP functions to accept a new field create that overrides the function used to create socket objects; * Improved: smtp.message now supports multipart/alternative (for the HTML messages we all love so much); * Fixed: smtp.send was hanging on errors returned by LTN12 sources; * Fixed: url.absolute() to work when base_url is in parsed form; * Fixed: http.request() not to redirect when the location header is empty (naughty servers...); * Fixed: tcp{client}:shutdown() to check for class instead of group; * Fixed: The manual to stop using socket.try() in place of assert(), since it can't; * Improved: Got rid of package.loaded.base = _G kludge; * Fixed: Parts of the manual referred to require("http") instead of require("socket.http"); * Improved: Socket and MIME binaries are called 'core' each inside their directory (ex. "socket/core.dll"). The 'l' prefix was just a bad idea; * Improved: Using bundles in Mac OS X, instead of dylibs; * Fixed: luasocket.h to export luaopen_socket_core; * Fixed: udp:setpeername() so you can "disconnect" an UDP socket; * Fixed: A weird bug in HTTP support that caused some requests to fail (Florian Berger); * Fixed: Bug in socket.select() that caused sockets with descriptor 0 to be ignored (Renato Maia); * Fixed: "Bug" that caused dns.toip() to crash under uLinux (William Trenker); * Fixed: "Bug" that caused gethostbyname to crash under VMS (Renato Maia); * Fixed: tcp:send("") to return 0 bytes sent (Alexander Marinov); * Improved: socket.DEBUG and socket.VERSION became socket._DEBUGs and socket._VERSION for uniformity with other libraries; * Improved: socket.select now works on empty sets on Windows.