                               USOCKET ChangeLogs

0.8.8 (Jul 23, 2024):

  * General: Exported GET-HOST-NAME (for getting the local machine hostname)
  * General: [server] upgrade server dependencies to bordeaux-threads-2
  * Bugfix: [CCL] Change default value of nodelay to T (as other backends)
  * Bugfix: [SBCL] doesn't put :windows on *features*, use :win32 instead (#124)
  * Bugfix: [SBCL] Fix default nodelay true on sbcl backend to actually work (#126)
  * Bugfix: [CCL] A patch from CCL maintainer (R. Matthew Emerson) (#113)

0.8.7 (Mar 20, 2024):

  * General: Update and supply documentation for most exported symbols (#107, patch from @tinkerttoy)
  * New feature: [SBCL] separate :connection-time and :read-time in socket-connect (#119)
  * Bugfix: [SBCL] *socket-connect-nonblock-wait* (non-blocking sockets) doesn't work on Windows, disabled by default (#106)
  * Bugfix: ip= doesn't compare properly if the first argument is a vector (#108)
  * Bugfix: [LW] NS-TRY-AGAIN-ERROR with wrong initargs (#121)

0.8.6: (Mar 1, 2023)

  * Bugfix: [SBCL/ECL] improved SOCKET-CONNECT timeout handling based on non-blocking sockets (#92, patch from @jetmonk)
  * Bugfix: [CCL] capture SOCKET-CREATION-ERROR exception in RESOLVE-ADDRESS when calling SOCKET-CONNECT (#96, patch from @jetmonk)
  * Bugfix: [SBCL, LW, etc] with-mapped-conditions no more throw unknown-error so that user can correctly capture their own conditions (#97, reported by @avodonosov (Anton Vodonosov))
  * Bugfix: [server] Permit 0-length UDP data payloads (#93, patch from @rabuf (Jared Summers))

0.8.5: (Sep 14, 2022)

  * Bugfix: [SBCL] Fix for sbcl 2.2.7+ (internal SB-ALIEN::HINSTANCE got removed) (thanks to @MrDispatch on GitHub)
  * Bugfix: [SBCL] Fix Build failure on some SBCL versions due to sb-int:broken-pipe (#81)
  * Bugfix: [CCL] When #+ipv6 also try to resolve an IPv4 address if the connection cannot be established with the IPv6 address. #75 (patch by Pascal J. Bourguignon)
  * Bugfix: [ABCL] Fix "socket-send returns NIL on ABCL" (Issue #82, patch from Kasper Galkowski)
  * Bugfix: [server/SBCL] Ignore invalid argument error for system call on sbcl (#80), by @charJe

0.8.4: (Mar 13, 2022)

  * New experimental backend: MKCL (support via sb-bsd-sockets) (thanks to @Madhu)
  * New feature: new socket options (TCP keepalive, UDP broadcast) (#70, #73) (thanks to Eugene Zaikonnikov)
  * New feature: Added IPv6-only support in host-to-hostname, get-host-by-name and get-random-host-by-name; new exported symbol: *ipv6-only-p*
  * New feature: [LW] Add UDP broadcast support for LispWorks (#70, #72)
  * Bugfix: Support (SOCKET-SHUTDOWN ... :DIRECTION :IO) as the generic function documentation advertises (#76)
  * Bugfix: "usocket leaks file descriptors on sb-int:broken-pipe conditions" (#64) (thanks to Jesse Off)
  * Bugfix: Added missing socket-error conditions used in `+unix-errno-error-map+` (#61, thanks to Yehouda Harpaz)
  * Bugfix: Use ns-try-again-error instead of ns-try-again-condition (#79) to match condition degign of SBCL and others (ns-try-again-condition is now deprecated)
  * Bugfix: [LW] socket-shutdown on stream-usocket need to pass the stream to comm:socket-stream-shutdown (rather than the socket) #59
  * Bugfix: [LW] SOCKET-ACCEPT now raises CONNECTION-ABPRTED-ERROR instead of INVALID-SOCKET-ERROR if the underlying socket got from comm::accept-connection-to-socket or comm::get-fd-from-socket is NIL. (#63)
  * Bugfix: [LW] socket-accept returns NIL if the underlying socket is NIL and the error (somehow) is not captured
  * Bugfix: [LW] SOCKET-SEND and SOCKET-RECEIVE should never return NIL (comes from raise-usock-err) (#62)
  * Bugfix: [SBCL] Add (sb-int:broken-pipe . connection-aborted-error) into +sbcl-error-map+ (#64)
  * Bugfix: [SBCL, ECL, clasp] Fix condition map for sb-bsd-sockets::host-not-found-error (ns-host-not-found-error) (#65)
  * Bugfix: [CCL] Explicitly specifying :FORMAT :TEXT to CCL:MAKE-SOCKET makes the socket monovalent. (thanks to @Madhu)

0.8.3: (Dec 23, 2019)

  * New experimental backend: Mezzano (contributed by Bruno Cichon, #51)
  * Bugfix: WAIT-FOR-INPUT fails to honor :ready-only t (#57, thanks to @Reepca for reporting this issue)
  * Bugfix: [ECL] Fix read-select in backend/sbcl.lisp to loop if interrupted (#54, #55, thanks to @thijs)
  * [CCL] Fix compiling with (readtable-case readtable-case) of :invert. (#56, patch from @genworks)
  * [Genera] added file attibutes (to all USOCKET lisp files) for Genera.

0.8.2: (June 11, 2019)

  * General: now the HOST-OR-IP slot of NS-CONDITION has been exported. (#46)
  * Bugfix: NS-HOST-NOT-FOUND-ERROR condition has unbound HOST-OR-IP slot (#46)
  * Bugfix: [SBCL/LW] WAIT-FOR-INPUT waits only in the first call (when W-F-I is called with a single usocket, introduced in 0.8.0) (#50, thanks to @Hamayama for reporting/hints/testing this issue)

0.8.1: (Feb 27, 2019)

* New backend: clasp (patch from Christian Schafmeister, #45)
* Bugfix: [SBCL] fixed loading usocket.asd in SBCL 1.5.0

0.8.0: (Feb 4, 2019)

* New backend (experimental): IOlib. (Push :USOCKET-IOLIB to *FEATURES* to enable this feature)
* New feature: Optimized WAIT-FOR-INPUT for single-socket case (one-time consing)
* New feature: Exported host-to-hostname (#42)
* Bugfix: [SBCL] more robust/thread-safe WAIT-FOR-INPUT-INTERNAL

0.7.1: (Aug 31, 2018)

* New feature: GET-(RANDOM)-HOST-BY-NAME (now exported) prefer IPv4 on mixed IPv4/IPv6 (suggested by Mark H. David)
* New backend: Symbolics Open Genera (Lisp machine) (patch from @Symbolics, #33)
* Bugfix: [CLISP] fixed issues in server sockets and error handling. (patch from @vibs29, #28, #29)
* Bugfix: [SBCL, ECL] Fix wait-for-input on Windows SBCL and ECL. (patch from Stas Boukarev, #30)
* Bugfix: [LW] fixed non-existing system calls in LW 5.0 (comm::socket-set-tcp-nodelay)

0.7.0: (Oct 25, 2016)

* General: Separated USOCKET and USOCKET-SERVER systems (only the server part depends on Portable-threads)
* General: USOCKET now depends on SPLIT-SEQUENCE (the exactly same vendor code is removed from usocket code base)
* New feature: [LW] (SOCKET-OPTION :TCP-NODELAY) and its SETF version now works on LispWorks 4/5/6/7.
* New feature: [LW] SOCKET-CONNECT now supports setting "tcp_nodelay" in version 4.x and 5.0.
* Bugfix: [CCL] fixed issues in SOCKET-SHUTDOWN
* Bugfix: [CLISP] fixed issues in WAIT-FOR-INPUT (Thanks to a patch by @vibs29, #27)
* Bugfix: [LW] fixed loading in version <= 6.0 (actually 0.6.5 only fixed loading in LW 6.1)
* Bugfix: [ECL] all compilation warnings were checked and fixed.

0.6.5: (Oct 19, 2016)

* New feature: SOCKET-OPTION and (setf SOCKET-OPTION) for :SEND-TIMEOUT (thanks to John Pallister)
* Bugfix: Let (WAIT-FOR-INPUT NIL &TIMEOUT) return NIL with respect to TIMEOUT.
* Bugfix: [LW] fixed loading in LispWorks 5.x & 6.x.
* Bugfix: [LW] fixed SOCKET-SHUTDOWN in all versions.
* Bugfix: [ABCL] Fixed incorrect IPv6 addresses (#26), patch from Elias Mårtenson (lokedhs)

0.6.4: (Mar 17, 2016)

* New feature: [SBCL] IPv6 support (patch from Guillaume LE VAILLANT, #15)
* New feature: [API] SOCKET-SHUTDOWN added (patch from Thayne McCombs #9)
* New feature: [Corman] minimal initial support of this platform
* Bugfix: [SBCL/win32] wait-for-input nil-timeout bug (patch from Michal Herda, #13)
* Bugfix: [ECL] included unistd.h for gethostname() (patch from Daniel Kochmanski, #7)
* Bugfix: [LispWorks] SOCKET-RECEIVE now updates %READ-P (patch from Frank James)

0.6.3: (May 23, 2015)

* Bugfix: [CCL] Further fixed CCL-1.11 compatibility and a typo in SOCKET-CONNECT for CCL-1.10.
* Bugfix: [ECL] Fixed build in some versions.
* Bugfix: [LispWorks] SOCKET-SEND and SOCKET-RECEIVE now throw conditions if something goes wrong.

0.6.2: (Apr 20, 2015)

* Bugfix: [CCL] Fixed CCL-1.11 compatibility.
* Bugfix: [ECL] Fixed compatibility on recent versions.
* Bugfix: [LispWorks] Added support address-in-use-error condition on LW/Win32. (patch from Sergey Katrevich).

0.6.1: (Jun 21, 2013)

* New feature: [MOCL] Initial MOCL support (TCP only, no W-F-I, patch from github.com/Wukix/usocket).
* New feature: [MCL] Initial UDP support for Macintosh Common Lisp (MCL/RMCL).
* New feature: Added TCP-NO-DELAY (TCP_NODELAY) support in SOCKET-OPTION, for TCP client
* Bugfix: [CCL] Added (:external-format ccl:*default-external-format*) to SOCKET-CONNECT, to prevent it fallback to ISO-8859-1 on NIL. (Patch from Vsevolod Dyomkin)
* Bugfix: [CCL] Performance improved WAIT-FOR-INPUT and other fixes. (patch from Faré <fahree@gmail.com>)

0.6.0: (Dec 26, 2012)

* New feature: SOCKET-OPTION and (setf SOCKET-OPTION) for seting and geting various socket options.
* New feature: SOCKET-SEND now support an CCL-like OFFSET keyword for sending only parts of the whole buffer.
* New feature: [ECL] Added support for ECL DFFI mode on Windows. (no need for C compilers now)
* Bugfix: [ECL] ECL now list sb-bsd-sockets as a dependency but relies on REQUIRE. (patched by Juanjo)
* Bugfix: [ABCL] Make USOCKET compile warning-free on ABCL again: MAKE-IMMEDIATE-OBJECT was deprecated a while ago in favor of 2 predefined constants.
* Bugfix: [LispWorks] remove redundant call to hcl:flag-special-free-action. (reported by Kamil Shakirov)
* Bugfix: [CLISP] improved HANDLE-CONDITION for more CLISP environments.

0.5.5: (Feb 27, 2012)

* Enhancement: SOCKET-CONNECT argument :nodelay can now set to :if-supported (patch from Anton Vodonosov).
* Enhancement: [Server] adding *remote-host* *remote-port* to socket-server stream handler functions (suggested by Matthew Curry)
* Bugfix: [LispWorks] Fixed UDP support for LispWorks 6.1 (patch from Camille Troillard by Martin Simmons).
* Bugfix: [LispWorks] Stop using hcl:add-special-free-action for reclaiming unused UDP socket fds to improve multi-threading stablity (suggested by Camille Troillard).
* Bugfix: [LispWorks] Fixed SOCKET-CONNECT on Windows, now LOCAL-PORT never have *auto-port* (0) as default value.

0.5.4: (Oct 1, 2011)

* Bugfix: [ECL] Fixed for ECL's MAKE-BUILD by removing some unecessary code (reported by Juan Jose Garcia-Ripoll, the ECL maintainer)
* Bugfix: [ACL] Fixed for Allegro CL modern mode.
* Bugfix: [SBCL] SOCKET-CONNECT on TCP won't call bind() when keyword arguments LOCAL-HOST or LOCAL-PORT is not set. (reported by Robert Brown)

0.5.3: (Aug 13, 2011)

* Bugfix: [MCL] Fixed SOCKET-LISTEN on vector addresses like #(0 0 0 0)
* Bugfix: [MCL] Fixed WAIT-FOR-INPUT on passive sockets (stream-server-usocket)
* Bugfix: [LispWorks] Fixed using OPEN-UDP-SOCKET in delivered applications (thanks to Camille Troillard and Martin Simmons, this fix is from LispWorks-UDP project).
* Bugfix: [SBCL] Fixed for "SBCL data flush problem", reported by Robert Brown and confirmed by Nikodemus Siivola.

0.5.2: (May 11, 2011)

* General: [SBCL] SOCKET-CONNECT's TIMEOUT argument was limited on non-Windows platforms.
* Bugfix: [CLISP] WAIT-FOR-INPUT now functions right (with/without READY-ONLY), this made Hunchentoot working on CLISP. (Thanks to Anton Vodonosov <avodonosov@yandex.ru>)
* Bugfix: [ABCL] Fix SOCKET-ACCEPT to follow the documented API so that when called without an :ELEMENT-TYPE argument. (Thanks to Mark Evenson, the ABCL developer)
* Bugfix: [LispWorks] Fixed SOCKET-ACCEPT (Windows only) on WAIT-FOR-INPUTed sockets.
* Bugfix: [SBCL, ECL] Fixed wrongly STATE set/unset for WAIT-FOR-INPUT on Windows (report by Elliott Slaughter)
* Enhancement: Additional NAME keyword argument for SOCKET-SERVER for setting the server thread name.
* Enhancement: [ABCL] GET-ADDRESS now works with underlying IPv6 addresses.
* Enhancement: [CLISP] missing GET-LOCAL-* methods for STREAM-SERVER-USOCKET was now added.

0.5.1: (Apr 2, 2011)

* New feature: [CLISP] UDP (Datagram) support based on FFI (Win/Mac/Linux), no RAWSOCK needed.
* Enhancement: SOCKET-SERVER return a second value (socket) when calling in new-thread mode.
* Enhancement: [CLISP] Full support of DNS helper functions (GET-HOST-BY-NAME, ...) added.
* Enhancement: [CLISP] Better network error type detection based on OS error code.
* Enhancement: [LispWorks] Better network error type detection based on OS error code.
* Bugfix: Fixed wrong macro expansions of {IP|PORT}-{FROM|TO}-OCTET-BUFFER functions (since 0.4.0)
* Bugfix: SOCKET-CONNECT didn't set CONNECTED-P for datagram usockets on most backends.
* Bugfix: [SBCL] Fixes for "SBCL/Win32: finalizer problem, etc", by Anton Kovalenko <anton@sw4me.com>
* Bugfix: [SBCL] Fixed SOCKET-SERVER (UDP) on SBCL due to a issue in SOCKET-CONNECT when HOST is NIL.
* Bugfix: [SBCL] SOCKET-CONNECT's TIMEOUT argument now works as a "connection timeout".
* Bugfix: [CMUCL] Fixed SOCKET-SEND on unconnected usockets under Unicode version of CMUCL.
* Bugfix: [CLISP] Fixed and confirmed UDP (Datagram) support (RAWSOCK version).

0.5.0: (Mar 12, 2011)

* New supported platform: Macintosh Common Lisp (5.0 and up, plus RMCL)
* Support for UDP (datagram-usocket) was added (for all supported platform except MCL)
* Add WAIT-FOR-INPUT support for SBCL and ECL on win32.
* Simple TCP and UDP server API: SOCKET-SERVER
* Completely rewritten full-feature ABCL backends using latest Java interfaces
* Lots of bug fixed since 0.4.1

0.4.1: (Dec 27, 2008)

* fixes for ECL, LispWorks, SBCL, SCL

0.4.0: (Oct 28, 2008)

* select()-like api: make a single thread wait for multiple sockets.
* various socket options for socket-creation with SOCKET-CONNECT.

0.3.6: (Jun 21, 2008)

* Code fixups based on advice from the ECL and OpenMCL maintainers.
* New exported symbols: WITH-MAPPED-CONDITIONS, NS-CONDITION, NS-ERROR, NS-UNKNOWN-ERROR and NS-UNKNOWN-CONDITION.

0.3.4: (Jul 25, 2007)

* Fix clisp get-host-name, multiple ECL fixes.

0.3.3: (Jun 05, 2007)

* Fix where host resolution routine was unable to resolve would return NIL instead of erroring.

0.3.2: (Mar 04, 2007)

* Fixes for many backends related to closing sockets.
* LispWorks fix for broken server sockets.
* API guarantee adjustments in preparation of porting Drakma.

0.3.1: (Feb 28, 2007)

* fixed with-server-socket; prevent creation of invalid sockets; 2 more convenience macros.

0.3.0: (Jan 21, 2007)

* Server sockets

0.2.5: (Jan 19, 2007)

* Allegro compilation fix.

0.2.4: (Jan 17, 2007)

* Various fixes for CMUCL, OpenMCL, Allegro and LispWorks.

0.2.3: (Jan 04, 2007)

* Add :element-type support to support stacking flexi-streams on socket streams for portable :external-format support.

0.2.2: (Jan 03, 2007)

* Add ECL support and a small SBCL bugfix.

0.2.1: (Dec 21, 2006)

* Remove 'open-stream' interface which is supposed to be provided by the 'trivial-usocket' package.

0.2.0: (Dec 18, 2006)

* Add support for Scieneer Common Lisp, fix issue #6 and API preparation for server side sockets (not in this release)

0.1.0: (Feb 13, 2006)

* Initial release
