Add new options YOPT_C_ENABLE_MCAST, YOPT_C_DISABLE_MCAST for multicast support
Change timer_cb_t prototype to []()->bool { }, return true for once, false for continue.
Add highp_timer::async_wait_once to wait timer timeout once.
Change YCM_XXX_[CLIENT/SERVER] to YCK_XXX_[CLIENT/SERVER].
Add yasio::xhighp_clock to retrive nanoseconds timestamp.
Fix xxsocket APIs connect_n, recv_n doesn’t handle signal EINTR.
Tidy obstream/ibstream API, by default write_v/read_v use 7bit encoded int for length field.
Rename io_service start_service/stop_service to start/stop.
Fix c-ares timeout behavior.
Improve c-ares cleanup behavior, now destruct io_service more stable with c-ares enabled.
Make cxx17::string_view support unordered set/map on compilers which only support c++11 standard.
Use shared_ptr + shared_mutex to ensure destruct io_service safe without side affect for concurrency of name resolving.
Fix dns cache timeout mechanism doesn’t work.
Simplify c-ares dns-server setup on android, when use yasio as static library, you need call yasio__jni_onload at JNI_OnLoad.
Fix yasio::_strfmt may crash on some incorrect use, now it’s more stable on all platforms.
Improve behavior when kernel send buffer is full, don’t sleep a fixed time, just drived by select.
Optimize udp transport close behavior, by default, udp transport will never close except user request, still can use io_service’s option YOPT_S_IGNORE_UDP_ERROR to change this behavior.
Change write completion handler prototype to: std::function<void(int ec, size_t bytes_transferred)>.
Implement literals for cxx17::string_view.
Fix ssl handshake failed with certificate verify failed when cacert file provided and flag SSL_VERIFY_PEER was set.
Fix doesn’t call io_service destructor when use lua binding library kaguya on compiler without c++14 support.
Add io_service::init_globals(const print_fn_t&) to support redirect initialization log to custom file(U3D/UE4 Console).
Improve compiler support, now support c++14, c++17, c++20.
Auto choose library sol2 for lua binding when cxx_std >= 14, older require cxx_std >= 17.
Recreate the socket_select_interrupter’s sockets on error.
Update kcp to v1.7, the kcp older version may cause SIGBUS on mobile ARM.
Simplify API, remove unnecessary API io_service::reopen, please use io_service::open instead.
Fix crash at yasio::inet::ip::endpoint::ip() when af=0.
Make io_service::write to a kcp return value same as other channel.
Fix kcp server doesn’t decode packet header.
Add xxsocket::disconnect to dissolve the 4-tuple association.
Provides normally byte order convert function templates host_to_network and network_to_host at namespace yasio::endian.
Reimplement obstream, ibstream as class templates basic_obstream, basic_ibstream with convert_traits support.
Using new yasio::endian::convert_traits<network_convert_tag> for obstream and ibstream with byte order convertion.
Using new yasio::endian::convert_traits<host_convert_tag> for fast_obstream and fast_ibstream without byte order convertion.
Add io_service::cleanup_globals It’s useful to clear custom print function object when you unload the module
(usually .dll or .so) which contains the function object.
Fix socket reuse_address behavior since v3.33.7
Add YOPT_S_DEFER_EVENT_CB. a. User can do custom packet resolve at network thread, such as decompress and crc check. b. Return true, io_service will continue enque to event queue. c. Return false, io_service will drop the event. d. Callback prototype is: typedef std::function<bool(event_ptr& event)> defer_event_cb;