Releases: fpagliughi/sockpp
Version 1.0.0
The v0.8.x line is released as v1.0
Version 0.8.3
Cherry-picked the upcoming v0.9 support for Catch2 v3.x back into the v0.8.x line of code.
- #64 Added support for Catch2 v3.x for unit tests. (v2.x still supported)
- Fixed a
Connector
unit test on windows
Version 0.8.2
Version 0.8.1
This release attempts to fix some of the outstanding build issues on Windows with MSVC and resolve some old issues and PR commits.
- Cherry picked most of the non-TLS commits in PR #17
- Connector timeouts
- Stateless reads & writes for streaming sockets w/ functions returning
ioresult
- Some small bug fixes
- No shutdown on invalid sockets
- #38 Made system libs public for static builds to fix Windows
- #73 Clone a datagram (UDP) socket
- #74 Added
<sys/time.h>
to properly gettimeval
in *nix builds. - #56 handling unix paths with maximum length (no NUL term)
- Fixed outstanding build warnings on Windows when using MSVC
Version 0.8.0 - CMake Updates
- [Breaking] Library initializer now uses a static singleton created via
socket_initializer::initialize()
call, which can be called repeatedly with no ill effect. Also added globalsocketpp::initialize()
function as shortcut. - Improvements to CMake to better follow modern standards.
- CMake required version bumped up to 3.12
- Generating CMake files for downstream projects (config, target, version)
- Windows builds default to shared DLL, not static library
- Lots of cleanup
Version 0.7.1 - Minor fixes and start of SocketCAN
This is a minor update to merge in a number of long-standing Pull Requests and other fixes. It also contains some new, experimental, support for SocketCAN on Linux.
- [Experimental] SocketCAN, CAN bus support on Linux
- #37 socket::get_option() not returning length on Windows
- #39 Using SSIZE_T for ssize_t in Windows
- #53 Add Conan support
- #55 Fix Android strerror
- #60 Add missing move constructor for connector template.
- Now
acceptor::open()
uses the SO_REUSEPORT option instead of SO_REUSEADDR on non-Windows systems. Also made reuse optional.
Version 0.7 - Non-blocking and Scatter/Gather I/O
Version 0.7
- Base
socket
classshutdown()
addedcreate()
addedbind()
moved into base socket (fromacceptor
)
- Unix-domain socket pairs (stream and datagram)
- Non-blocking I/O
- Scatter/Gather I/O
stream_socket
cloning.- Set and get socket options using template types.
stream_socket::read_n()
andwrite_n()
now properly handle EINTR return.to_timeval()
can convert from anystd::chrono::duration
type.socket::close()
andshutdown()
check for errors, set last error, and return a bool.- tcpechomt.cpp: Example of a client sharing a socket between read and write threads - using
clone()
. - Windows enhancements:
- Implemented socket timeouts on Windows
- Fixed bug in Windows socket cloning.
- Fixed bug in Windows
socket::last_error_string
. - Unit tests working on Windows
- More unit tests
Version 0.6 - UDP/datagram support
Added improved support for UDP, including implementation on Windows.
- UDP support
- The base
datagram_socket
added to the Windows build - The
datagram_socket
cleaned up for proper parameter and return types. - New
datagram_socket_tmpl
template class for defining UDP sockets for the different address families. - New datagram classes for IPv4 (
udp_socket
), IPv6 (udp6_socket
), and Unix-domain (unix_dgram_socket
)
- The base
- Windows support
- Windows support was broken in release v0.5. It is now fixed, and includes the UDP features.
- Proper move semantics for stream sockets and connectors.
- Separate tcp socket header files for each address family (
tcp_socket.h
,tcp6_socket.h
, etc). - Proper implementation of Unix-domain streaming socket.
- CMake auto-generates a version header file, version.h
- CI dropped tests for gcc-4.9, and added support for clang-7 and 8.
Version 0.5 - Refactored network address classes
Version 0.5 refactored the network address classes with an abstract base class and reduced redundant code with templates to create implementations for the different address families.
- (Breaking change) Updated the hierarchy of network address classes, now derived from a common base class.
- Removed
sock_address_ref
class. Now a C++ reference tosock_address
will replace it (i.e.sock_address&
). sock_address
is now an abstract base class.- All the network address classes now derive from
sock_address
- Consolidates a number of overloaded functions that took different forms of addresses to just take a
const sock_address&
- Adds a new
sock_address_any
class that can contain any address, and is used by base classes that need a generic address.
- Removed
- The
acceptor
andconnector
classes are still concrete, generic classes, but now a template derives from each of them to specialize. - The connector and acceptor classes for each address family (
tcp_connector
,tcp_acceptor
,tcp6_connector
, etc) are now typedef'ed to template specializations. - The
acceptor::bind()
andacceptor::listen()
methods are now public. - CMake build now honors the
CMAKE_BUILD_TYPE
flag.
Version 0.4 - IPv6
Version 0.4 added support for IPv6 and refactored the class hierarchies to better support the different address families without so much redundant code.
- IPv6 support:
inet6_address
,tcp6_acceptor
,tcp_connector
, etc. - (Breaking change) The
sock_address
class is now contains storage for any type of address and follows copy semantics. Previously it was a non-owning reference class. That reference class now exists assock_addresss_ref
. - Generic base classses are being re-implemented to use sock_address and sock_address_ref as generic addresses.
- (Breaking change) In the
socket
class(es) thebool address(address&)
andbool peer_address(addr&)
forms of getting the socket addresses have been removed in favor of the ones that simply return the address.
Addedget_option()
andset_option()
methods to the basesocket
class. - The GNU Make build system (Makefile) was deprecated and removed.