Skip to content

Releases: fpagliughi/sockpp

Version 1.0.0

17 Dec 21:45
Compare
Choose a tag to compare

The v0.8.x line is released as v1.0

Version 0.8.3

11 Dec 22:12
Compare
Choose a tag to compare

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

06 Dec 04:51
Compare
Choose a tag to compare

Minor bug fixes.

  • #89 Fixed generator expression for older CMake
  • #91 Fixed uniform_int_distribution<> in UNIX socket example

Version 0.8.1

30 Jan 19:47
Compare
Choose a tag to compare

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 get timeval 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

18 Jan 02:58
Compare
Choose a tag to compare
  • [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 global socketpp::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

24 Jan 17:56
Compare
Choose a tag to compare

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

06 Oct 15:37
Compare
Choose a tag to compare

Version 0.7

  • Base socket class
    • shutdown() added
    • create() added
    • bind() moved into base socket (from acceptor)
  • 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() and write_n() now properly handle EINTR return.
  • to_timeval() can convert from any std::chrono::duration type.
  • socket::close() and shutdown() 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

11 Aug 13:57
Compare
Choose a tag to compare
Pre-release

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)
  • 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

06 Aug 05:39
Compare
Choose a tag to compare

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 to sock_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.
  • The acceptor and connector 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() and acceptor::listen() methods are now public.
  • CMake build now honors the CMAKE_BUILD_TYPE flag.

Version 0.4 - IPv6

30 Jun 21:42
Compare
Choose a tag to compare
Version 0.4 - IPv6 Pre-release
Pre-release

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 as sock_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) the bool address(address&) and bool peer_address(addr&) forms of getting the socket addresses have been removed in favor of the ones that simply return the address.
    Added get_option() and set_option() methods to the base socketclass.
  • The GNU Make build system (Makefile) was deprecated and removed.