yasio-4.3.1
- Refining the resource cleanup process for io_service during the handle_stop phase, particularly when a worker thread is terminated externally
yasio-4.3.0
- Use dynamic buffer for recv
- Improve kcp, invoke
ikcp_peeksize
before invokeikcp_recv
yasio-4.2.4
- Fix yasio_ni
- Improve ohos support
yasio-4.2.3
- Update llvm to 17.0.6 for msvc14.40 support
- Remove logging duplicate new line
- Fix compile error on llvm-19
yasio-4.2.2
- Fix c++23 deprecated std::aligned_storage warning
- Ensure WSAStartup before initializing user static variables
yasio-4.2.1
- Fix #441 socket.bind always fail with EPERM when runs on macos in code signing sandbox mode
yasio-4.2.0
- Improve kcp implementation
- Fix pure udp not handle packet forward
- Improve echo_client & echo_server
- Improve ssl handshake
- Update self-signed ssl certs for ssltest
- Fix docs ci
- Fix speedtest typo
- Fix UE5 compile error with vs2022
yasio-4.1.4
- Fix destroy of object_pool with mutex not thread-safe
yasio-4.1.3
- Enable hres timer for Windows Universal Apps
- Add
YASIO_NT_XHRES_TIMER
to control whether forcing use undocumented NT API to setup high-resolution timer - Fix
yasio_ni
compile error
yasio-4.1.2
- Slice sending udp data to mtu (65507) avoid send fail
yasio-4.1.1
- Fix unpack incorrect when YOPT_C_UNPACK_STRIP > 0
- Improve pod_vector aka array_buffer, now
yasio::byte_buffer
just a alias of it
yasio-4.1.0
- Change yasio-ni API
yasio_create_service
prototype to:YASIO_NI_API void* yasio_create_service(int channel_count, void(YASIO_INTEROP_DECL* event_cb)(yasio_event_data* event), void* user);
- Prob both v4, v6, v4mapped when resolve ip address
- Add option YOPT_S_HRES_TIMER for enable high resolution timer on win32
yasio-4.0.0
- IMPORTANT: Rename
YOPT_S_DEFERRED_EVENT
toYOPT_S_NO_DISPATCH
, and the default event dispatch behavior was changed, by default, the network thread will always dispatch events at end of event loop. you must setYOPT_S_NO_DISPATCH
to1
to ensure the dispatch behavior match with previous releases - The
YOPT_S_DEFER_EVENT_CB
return check changed, returntrue
to tell io_service the event already processed, io_service will skipprocessed
event, previous releases should returnfalse
- Improve kcp transport, fix data retention problem(caused by interval too large) and update kcp to git 1.7-f2aa30e
- Add support forward packet on both send and recv stages
- Rename preprocessors
YASIO_HAVE_
toYASIO_ENABLE_XXX
,YASIO_HAVE_CARES
toYASIO_USE_CARES
- Refactor non-blocking io mode, add
epoll/wepoll
,kqueue
,evport
support byYASIO_ENABLE_HPERF_IO
, by default not enabled - Remove namespace
yasio::gc
- Improve
object_pool
andsingleton
- Migrate build scripts to powershell runs on windows,linux,macos
- Rename cmake feature options:
YASIO_BUILD_WITH_LUA
-->YASIO_ENABLE_LUA
YASIO_BUILD_WITH_CCLUA
-->YASIO_ENABLE_CCLUA
YAISO_BUILD_NI
-->YASIO_ENABLE_NI
- Auto disable
YASIO_BUILD_TESTS
andYASIO_BUILD_LUA_EXAMPLE
whenyasio
not in root directory of cmake project - Move public headers to
yasio/
which are allow include directly, likeyasio/xxx.hpp
, private header toyasio/impl/
which don't allow been included
yasio-3.39.12
- Add more kcp options setup support
- Fix vs2013 lua binding build
yasio-3.39.11
- Refactor pipe signal suppression.
- Refine fd_set_adapter as io_watcher.
yasio-3.39.10
- Improve object_pool, ensure address of allocated object from pool align with
std::max_align_t
, should fix optimized-build crash on android x86_64.
yasio-3.39.9
-
Remove unsafe option:
YOPT_S_FORWARD_EVENT
, may cause internal channel behavior incorrect. -
Add forward packet event support, new option:
YOPT_S_FORWARD_PACKET
, after enable forward packet:- Use
event->packet_view()
receive packet event - No upack
- No deferred packet
- No GC alloc
- Use
-
Fix
sort_timers
may causestd::sort
crash on sort callback when system clock slow -
Fix typo
YASIO_ENABLE_PASSIVE_EVENT
-
Fix timer queue empty check
yasio-3.39.7
-
Add forward event support fire packet event, new option:
YOPT_S_FORWARD_EVENT
, after enable forward event:- Use
event->packet_view()
receive packet event - No upack
- No deferred event
- No GC alloc
- Use
-
Refactor ssl backends, add follow new option and channel kind
YOPT_S_SSL_CERT
: to specific ssl servercert
andprivate_key
filesYCK_SSL_SERVER
: open a channel as ssl server, notes: require specific validcert
andprivate_key
file with optionYOPT_S_SSL_CERT
- Also fix crash on destructor of
io_transport_ssl
-
Improve option
YOPT_S_SSL_CACERT
, now support specific multi-certs with delimiter,
-
Improve c-ares integration
-
Improve extesion
yasio_http
, move it's dependentllhttp
tothirdparty
and managed by git submodule -
Remove
signal_blocker
when create service thread -
Fix c++20 compiler warnings
yasio-3.39.6
- Reimplement reactor backends: select, poll
- Now the default reactor backend is poll
- Add compiler flag
YASIO_DISABLE_POLL
for switching to socket.select as same with previous releases - Add
signal_blocker
when create service thread
yasio-3.39.5
- Fix no callback when resolve domain failed by
getaddrinfo
yasio-3.39.4
- Fix process order
- Fix luabinding compile issue when shared packet enabled
- Improve CMake script, output libs to same directory
yasio-3.39.3
- Improve
byte_buffer
stl compatible - Add option
YOPT_C_UNPACK_NO_BSWAP
- Add
urlEncode/urlDecode
to extensionyasio_http
- Improve extension
yasio_http
as unreal engine plugin - Fix missing retrun statement in
cxx17::string_view
hasher template - Change lua script io_event.packet(bool) to io_event:packet(bufferType)
- yasio.BUFFER_DEFAULT: take packet as native yasio::ibstream
- yasio.BUFFER_NO_BSWAP: take packet as natvie yasio::fast_ibstream without byte order convert
- yasio.BUFFER_RAW: take packet as lua string
- CMake: Set default ssl backend to mbedtls
yasio-3.39.2
- Use
byte_buffer
insteadstd::vector<char>
- Add extension
yasio_http
implementation - Fix name query will defunct when name server dirty
yasio-3.39.1
- Don't output transport object address
yasio-3.39.0
- Improve binary reader and writer, the push/pop API was broken, use -DYASIO_OBS_BUILTIN_STACK=1 for compatible with previous release
- Improve stop flow, always try do stop at io_service destructor
yasio-3.37.8
- Fix trasnport reuse problem
- Unify transport address print format
yasio-3.37.7
- Fix connnect maybe always failed with error
-26
when last domain name resolving failed - Fix
xxsocket::strerror
incorrect forMinGW
- Add
UWP
ci - Improve io_service::stop flow, thanks to @koobin
- Other code improvements
yasio-3.37.6
- Add option
YOPT_S_DNS_LIST
to set custom dns servers build with c-ares - Add OpenSSL 3.0.0 support
- Add better API
ip::endpoint::format_to
to format socket address to string - Add API
ip::endpoint::scope_id
to set or get ipv6scope_id
- Improve
ip::endpoint::as_xx
for parsingscope_id
from ipv6 string - Add MinGW build support
- Fix compile issue when build inside unreal engine with module
TraceAnalysis
- Fix timer not sort when same timer expire time changed, thanks to
@koobin
- Fix the
len
ofip::endpoint
not set when update endpoint ip withip::endpoint::ip
, will cause error10014
on windows - Make
ibstream_view
can construct withbasic_obstream_view
- Improve
xxsocket::disconnect
platform compatible for BSD-like systems and windows - Imporve
multicast
support, and the test case works on windows,linux,macOS, thanks to @wzhengsen - Add option
YOPT_C_MCAST_IF
to set multicast interface, on BSD-like system, it's required for ipv6 - Improve
io_service::stop
flow, thanks to @koobin
yasio-3.37.5
- Make
yasio::obstream
more reusable - Fix multicast behavior incorrect
- Fix ssl handle not destroy when connect timeout reached
- Mbedtls 3.0.0 support
yasio-3.37.4
- Make c++20 compatible API
starts_with/ends_wtih
more easy to use - Correct
yasio::set_thread_name
platform macro detection - Move
yasio::errc
to standalone fileerrc.hpp
- Improve
YOPT_DNS_DIRTY
behavior - Fix header only link when c-ares enabled
- Make
yasio::strfmt
more reusable - Improve Unreal Engine support
yasio-3.37.3
- Unify io_service timeout options:
XXX_TIMEOUT in seconds
andXXX_TIMEOUTMS in milliseconds
- Add io_channel user timer support
- Move
yasio:errc
toyasio.hpp
- Add
yasio_fwd.hpp
yasio-3.37.2
- Add pkg-config file.
- Improve UnrealEngine support.
- Improve cmake scripts.
- Fix bind failed not processed.
- Add passive event support for server open/close.
- Add YASIO_ENABLE_PASSIVE_EVENT to control whether generate passive event.
- Add github action docs-ci and host docs on github pages.
- Fix gcc-4.7 compile issues.
- Renable appveyor ci for build with vs2013.
- Inline namespace
yasio::inet
.
yasio-3.37.1
- Update yasio_ni to v2.
- Add
io_channel::bytes_transferred
, it's useful for client channelTraffic Statistics
. - Add
io_channel::connect_id
. - Add support build as windows dll.
- Add
YASIO_USE_SHARED_PACKET
to control whether packet could be shared on multi-threadings.
yasio-3.37.0
- Make timer object more safe, don't hold reference of io_service.
- Embed default zh_CN docs markdown sources.
- Fix compile error when YASIO_VERBOSE_LOG enabled.
- Fix
speedtest
compile error when YASIO_HAVE_KCP enabled. - Make
host_to_network
andnetwork_to_host
public atnamespace yasio
. - Add
yasio::set_thread_name
to set caller thread name. - Add
obstream::clear
for buffer reuse. - Add
ibstream::advance
to move read position fastly. - Enhance builtin
decode_len
function for transport stream unpack. - Add github action
freebsd
.
yasio-3.36.0
- Add ssl backend mbedtls support.
- Add
xxsocket::not_send_error
for check whether socket status is good when send retval < 0. - Add
xxsocket::not_recv_error
for check whether socket status is good when recv retval < 0. - Delete
xxsocket::alive
. - Delete all deprecated functions.
- Rename
xxsocket::detach
toxxsocket::release_handle
. - Rename
xxsocket::pserv
toxxsocket::pserve
.
yasio-3.35.0
- Provides normally byte order convert function templates
host_to_network
andnetwork_to_host
atnamespace yasio::endian
. - Reimplement
obstream
,ibstream
as class templatesbasic_obstream
,basic_ibstream
with convert_traits support. - Using new
yasio::endian::convert_traits<network_convert_tag>
forobstream
andibstream
with byte order convertion. - Using new
yasio::endian::convert_traits<host_convert_tag>
forfast_obstream
andfast_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;
yasio-3.34.0
- Add
7bit Encoded Int64
support for obstream/ibstream - Rename obstream/ibstream
7bit Encoded Int
APIswrite_i/read_i
towrite_ix/read_ix
- Rename obstream/ibstream
Fixed Encoded Number
APIswrite_ix/read_ix
towrite/read
yasio-3.33.9
- Fix win32 udp server implementation
- Print remote point as peer for a new udp transport
- Remove options
YOPT_IGNORE_UDP_ERROR
yasio-3.33.8
- Auto call socket.shutdown at xxsocket::close to fix blocking on socket.recv when close socket at other thread for non-win32 platforms.
yasio-3.33.7
- Unix domain socket via
SOCK_STREAM
support, defineYASIO_ENABLE_UDS
atconfig.hpp
and useYCM_UDS
combine withYCK_TCP_CLIENT
,YCK_TCP_SERVER
yaiso-3.33.6
- Reduce kcp cpu cost.
yaiso-3.33.5
- Add support to set kcp conv id, use option
YOPT_C_KCP_CONV
.
yaiso-3.33.4
- Add log level support, use option
YOPT_S_PRINT_FN2
.
yaiso-3.33.3
- Add API
xxsocket::tcp_rtt
.
yaiso-3.33.2
- Fix c-ares doesn't get system dns for ios.
- Add option
YOPT_S_DNS_DIRTY
for user to change system name servers after mobile network changed when c-ares enabled. - Refine write event register when system kernel write buffer is full.
yaiso-3.33.1
- Reduce the size of the Windows header files.
- Improve yasio::inet::ip::endpoint code style.
- Explicit socket_select_interrupter workaround code logic for borken firewalls on Windows.
- Sets and pass user data of transport through event.
- Fix KCP do_read may can't dispatch upper data to user.
- Fix behavior of yasio::wcsfmt.
yasio-3.33.0
- Refactor UDP like transport, UDP client don't establish 4-tuple with peer, and provide
YPOT_T_CONNECT
andYPOT_T_DISCONNECT
to change association. - Add
io_service::write_to
forunconnected/connected
UDP transport. - Remove unused channel masks
YCM_MCAST_CLIENT
,YCM_MCAST_SERVER
- Remove unused channel flag
YCF_MCAST_LOOPBACK
- Add new options
YOPT_C_ENABLE_MCAST
,YOPT_C_DISABLE_MCAST
for multicast support - Change
timer_cb_t
prototype to[]()->bool { }
, returntrue
for once,false
for continue. - Add
highp_timer::async_wait_once
to wait timer timeout once. - Change
YCM_XXX_[CLIENT/SERVER]
toYCK_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
use7bit encoded int
for length field. - Rename io_service
start_service/stop_service
tostart/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
atJNI_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 whencxx_std >= 14
, older requirecxx_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 useio_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.
- Rename option
YOPT_I_SOCKOPT
toYOPT_B_SOCKOPT
. - Other code quality & stable improvements.
yasio-3.31.3
yasio-3.31.2
- Optimize singleton implementation, see: #200
- Fix typo, YASIO_VERBOS_LOG to YASIO_VERBOSE_LOG.
- Explicit set socktype for
getaddrinfo
, see: #201 - Improve xxsocket send_n/recv_n implementation and behavior, see: #202
yasio-3.31.1
- Make c-ares works well on android 8 or later.
yasio-3.31.0
- Add Initial Bytes To Strip support for length field based frame decode, use YOPT_C_LFBFD_IBTS.
- Add SSL client support, use YASIO_HAVE_SSL to enable, YCM_SSL_CLIENT to open a channel with ssl client support.
- Integrate c-ares support, YASIO_HAVE_CARES to enable, make sure your build system already have c-ares.
- Refactor timeout options, use YOPT_S_CONNECT_TIMEOUT, YOPT_S_DNS_CACHE_TIMEOUT, YOPT_S_DNS_QUERIES_TIMEOUT to instead YOPT_S_TIMEOUTS.
- Optimize schedule_timer behavior, always replace timer_cb when timer exist.
- Remove deprecated functions.
- Remove tolua support.
yasio-3.30.8
- Sync optimizations from v3.31.2.
yasio-3.30.7
- Sync optimizations from v3.31.
yasio-3.30.6
- Make option enums compatible with v3.31.
- Simplify io_service state.
yasio-3.30.5
- Fix missing break at set_option for YOPT_C_REMOTE_ENDPOINT.
yasio-3.30.4
- Make normal concurrent queue more safe if SPSC queue is disabled.
- Make sure udp recv buf enough at kcp transport do_read.
- Fix io_service::write always retur 0.
yasio-3.30.3
- Optimize jsb, jsb2.0 and lua binding.
yasio-3.30.2
- Fix jsb2.0 bindings issue, see: #192
yasio-3.30.1
- Add construct channel at io_service constructor, now all options could be set before start_service if you doesn't use the start_service with channel hostents, and mark them deprecated
- Use cmake for trvis ci cross-platform build at win32, linux, osx, ios
- Sync script bindings
yasio-3.30.0
- Tidy option macros.
- Add YCF_ enums to control channel to support more features.
- Add multicast support.
- Add a workaround implementation to support win32 udp-server.
- Add io_service::cindex_to_handle.
- Add ftp sever example.
- Remove loop behavior of deadline_timer, user can schedule again when it's expired.
- Add obstream::write_byte.
- Add to_strf_v4 for ip::endpoint.
- Optimizing for file transfer, avoid high cpu occupation when system kernel send buffer is full.
- More safe to check object valid which allocated from pool.
- Add send complete callback.
- Mark io_service::dispatch_events deprecated, use dispatch to instead.
- Add YCF_REUSEPORT to control whether to enable socket can bind same port, default and previous vesion is enabled.
- Implement case insensitive starts_with, ends_with at string_view.hpp.
- Ignore SIGPIPE for tcp at non-win32 system.
- Remove reconnect timeout.