【yasio】輕量級跨平臺socket庫v3.33.0正式發佈

yasio 是一個專注於移動平臺和各種客戶端的socket庫

經歷近3個多月的研發和測試,終於發佈了v3.33.0的正式版本,此版本帶來了大量的bug修復和功能增強,詳細更新內容如下:
  • 重構UDP Transport,和TCP一樣使用發送隊列,UDP客戶端默認不使用connect綁定四元組,同時提供選項YOPT_T_CONNECT和YOPT_T_DISCONNECT來修改綁定行爲
  • 增加io_service::write_to接口用戶發送到指定地址,可作用於已綁定或未綁定的UDP Transport
  • 移除信道掩碼 : YCM_MCAST_CLIENT, YCM_MCAST_SERVER
  • 移除信道標記: YCF_MCAST_LOOPBACK
  • 添加選項: YOPT_C_ENABLE_MCAST, YOPT_C_DISABLE_MCAST用於組播支持
  • 修改定時器回調原型爲 []()->bool {},用戶可以返回false來通知service繼續調度定時器
  • 添加highp_timer::async_wait_once接口來註冊一次性定時器回調
  • 修改 YCM_XXX_[CLIENT/SERVER]爲YCK_XXX_[CLIENT/SERVER]以明確io_service::open時傳遞的應該是channle類型,而非掩碼
  • 增加API: yasio::xhighp_clock獲取納秒級時間戳
  • 修復xxsocket API send_n和recv_n未處理EINTR信號問題
  • 調整obstream/obstream API, 默認write_v/read_v使用7Bit Encoded Int編碼字符串的長度域
  • 重命名io_service的start_service/stop_service爲start/stop
  • 修復開啓c-ares非阻塞域名解析支持時超時行爲
  • 增強c-ares清理機制
  • 增強cxx17::string_view兼容性,可用於c++11的unordered_map/unordered_set容器
  • 使用shared_ptr + shared_mutex來增強io_service在未開啓c-ares情況下的析構行爲的穩定性
  • 修復DNS緩存機制無效問題
  • 簡化啓用c-ares時dns服務器列表初始化,在android平臺靜態鏈接只需要在JNI_OnLoad調用yasio__jni_onload, 動態鏈接則無需任何操作
  • 修復yasio::_strfmt字符串格式化在某些低版本編譯器,某些特殊字符輸出情況下可能crash的問題
  • 增強io_service內部當檢測到發送緩衝區已滿時驅動行爲,不再固定sleep,而是註冊可寫事件由select驅動
  • 優化UDP Transport內部對錯誤的關閉行爲,默認不會因爲發送錯誤而關閉Transport,而是由用戶在發送回調中根據錯誤碼自行決定是否關閉Transport.
  • 修改發送完成回調原型爲 std::function<void(int ec, size_t bytes_transferred)>
  • 實現cxx17::string_view在c++11標準編譯器下的字符串字面值操作符重載, 例如 “abcd”_sv;
  • 修復訪問某些https服務器SSL握手失敗問題
  • 修復在只支持c++11標準編譯器下,使用kaguya lua綁定庫,導致io_service對象不隨着lua gc析構問題
  • 增加io_service::init_globals(const print_fn_t&)接口來支持重定向初始化日誌到自定義文件(例如U3D和UE4遊戲引擎的編輯器日誌輸出窗口)
  • 增強編譯器支持,c++14,17,20均可通過編譯
  • 優化Lua綁定庫自動選擇的最低標準,編譯器支持c++14或以上,均選擇 sol2 作爲lua 綁定庫
  • 在發送中斷器socket_select_interrupter發生錯誤時,重建之
  • 更新kcp到v1.7版本,先前版本在ARM處理器下可能發生SIGBUS崩潰
  • 簡化io_service API, 去除reopen, 使用open替代,open自帶重連或重新打開信道行爲
  • 修復當af=0時yasio::inet::ip::endpoint::ip崩潰問題
  • 修改io_service::write kcp的返回值,保持和其他類型Transport一致
  • 修復KCP server不解碼KCP協議包問題
  • 增加xxsocket::disconnect以支持解除UDP socket和遠端的4元組綁定關係
  • 重命名io_service選項 YOPT_I_SOCKOPT 爲 YOPT_B_SOCKOPT
  • 其他代碼質量和穩定性優化
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章