All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- UnsafeSegManager在free上加锁,修复可能的分配内存错误
- 增加rent0测试
- 允许发送0字节数据。与C版本保持一致。
- send返回发送字节数
- BugFix: 修复当对方发送一个data长度为0的包时rcv_queue会积压的bug
- 增加OnDeadlink虚函数。
- 增加多线程说明
- 整理代码。增加扩展函数
- 增加snd_queueLock;
- 增加多线程Send安全。
- 使用 while (true) 代替递归。
- 使用内存池优化KcpIO
- 重命名RecvAsync(IBufferWriter writer, object options = null);增加一个异步接收方法;
- 删除过时代码
- Log显示len和cmd
- Log显示len和cmd
- KcpSegment增加单元测试
- public int fastresend;
- public int fastlimit;
- 增加注释。修复默认窗口值。
- 增加 throw new NotSupportedException($"分片数大于接收窗口,造成kcp阻塞冻结。frgCount:{newseg.frg + 1} rcv_wnd:{rcv_wnd}");
- 提取Input接口
- 增加IKCP_LOG
- 使用共享数组优化List
- 统一使用Utc时间戳
- 修复KcpIO接收过程中的死锁
- 修复KcpIO,Recv异步不触发Bug。
- 修复多线程引起的空引用。#20
- 将时间类型由DateTime改为DateTimeOffset.
- 增加SimpleKcpClient,增加简单Udp例子.
- 增加PoolSegManager实现,使用Seq对象池,解决内核调用效率低问题。
- 公开了KcpSegment
- KcpSegment泛型化,可由用户自定义高性能实现。
- 标准化KCPIO API,主要提供异步API
- 一个kcpio实现,没有严格优化和测试
- 将内存租用回调分离为单独的接口,并且不是必须的参数。
从旧版本升级代码不会报错,但是会失去原租用内存的效果,请手动修改。
- new: IKCP_FASTACK_LIMIT
- 修改了output函数接口参数。增加对Span的兼容性。
- 优化了数据拷贝。
- 支持IDispose;
- 修复了析构时内存泄漏;
- 为了防止误用,隐藏了KcpSegment;
- 支持多个目标框架;
- 支持多个目标框架单元测试;