解决MySql布尔型新旧版本兼容问题,采用枚举来表示布尔型的数据表。由正向工程赋值
|
# NewLife.Core 版本更新记录
## v11.19.2026.0901 (2026-09-01)
### 新增功能
- **向量存储接口**:新增 `IVectorStore`/`VectorRecord` 向量存储接口及数据结构,对标 Microsoft.Extensions.VectorData 做非泛型简化,支持 Top-K 相似度检索,为 AI 应用提供向量检索基础设施
- **Murmur128 哈希增强**:增强 Murmur128 哈希算法实现并补充完整单元测试覆盖
- **GeoPoint 功能增强**:增强 GeoPoint 地理位置处理能力并补充完整单元测试
### 配置与日志
- **SysConfig 注解完善**:为 SysConfig 属性补充 Description 注解并优化命名
- **日志文件命名统一**:日志文件命名统一为下划线分隔,移除 UTC 时间校正
### Bug 修复
- **[fix]** 修复 DSAHelper 对 PgenCounter/Counter 节点解析兼容性及标签不对称问题
- **[fix]** 修复 Crc16/Crc32 边界校验绕过、索引越界、Modbus 偏移与大流计数回绕
- **[fix]** 修复 PerfCounter 采样间隔异常配置除零与数组越界(Interval=0 或 Duration<Interval 时)
- **[fix]** RaceLoadBalancer 自定义探测委托异常击穿竞速调用兜底;XmlGeneral Decimal 经 Double 中转丢精度修正
- **[fix]** JwtBuilder 算法注册表并发安全、签名失败出参消息补齐;WebClientX 并发创建 HttpClient 泄漏防护
- **[fix]** PinYin 对 GB2312 未收录汉字编码越界崩溃补长度防护;SplitByFixedSize 补负偏移防护
- **[fix]** NetServer 随机端口落入系统保留段导致 UDP 绑定失败时清理并重新分配端口(有界重试 3 次)
- **[fix]** 修复 CacheLock 零超时空闲锁无法获取、MemoryCache 持久化过期竞态、CommandParser/JsonConfigProvider 越界、HttpConfigProvider 字符串锁失效、FileConfigProvider 非 Windows 原子写入崩溃
- **[fix]** ProcessHelper.Execute returnError 未重定向 stderr 导致死功能;BitHelper Byte 重载负位置破坏数据
- **[fix]** 修复 PKCS7 多块拷贝偏移、Rand 取绝对值溢出、Asn1 空缓冲越界
### 测试与质量
- 补充 Murmur128、GeoPoint、PinYin 越界防护等回归测试
---
## v11.18.2026.0801 (2026-08-01)
### HTTP 服务增强
- **HTTP 中间件机制**:引入中间件管道,支持 CORS 跨域与统一错误处理
- **参数化路由**:支持 `{param}` 参数化路由与多方法注册,完善路由体系
- **Controller 注入增强**:支持 `IHttpContext`/DI 容器多方式注入,支持作用域内动态注册服务实例(`IServiceRegistry`)
- **静态文件服务**:支持内嵌资源作为 HTTP 静态文件服务
- **参数绑定重构**:抽取 `ParameterBinder`,统一 MIME 类型处理,`FormFile` 保存原子化,优化 GET/DELETE 参数拼接
- **TokenHttpFilter 并发安全**:防止重复申请刷新令牌
### 连接池与对象池
- **连接池架构升级**:支持池满阻塞与生命周期回收,`Max`/`Min` 语义对齐主流
- **ObjectPool 信号量限流**:重构信号量限流,健壮性增强
### 网络层优化
- **WebSocket 掩码与心跳**:完善掩码与心跳机制实现
- **ProcessHelper 增强**:宿主进程识别与文档说明完善
### 工具类
- **24 位无符号整数读写**:新增 UInt24 读写方法
- **GeoPoint 值类型优化**:改为 `readonly record struct`,优化为值类型
- **接口清理**:移除过时的 `GetEventBus`、`IncrementWithTtl`/`DecrementWithTtl` 接口
### Bug 修复
- **[fix]** 完成 `MachineInfo` 分部类迁移,消除 70 个编译错误(重复定义与缺失 `partial` 修饰符);修复 Windows 路径 `LoadHardwareFromRegistry` 的平台标注(消除 22 个 CA1416 警告)
- **[fix]** `PKCS7PaddingTransform` 整倍块长明文缺失完整填充块,与 .NET/Java 标准填充互通;`SM4.GenerateKey` 误设 IV、`ProtectedKey` Hex 分支误用 Base64、`Crc16/Crc32` 偏移量校验错误
- **[fix]** JSON 数组/列表解析丢弃 null 元素导致位置错位;`JsonComposite.Write` 误调用 `Read` 方法
- **[fix]** `MemoryCache` 持久化过期时间截断,已过期条目加载后复活为永不过期(持久化格式升级至 v2)
- **[fix]** `IReflect` JsonIgnore 条件语义反转、静态属性字典并发写、数组深拷贝越界
- **[fix]** `Cron` 步进值为 0 时死循环挂死;XML/配置空文件解析死循环
- **[fix]** `XmlConfig` 字符串锁对象失效导致并发保存冲突;`Actor` Stop 后 `Tell` 崩溃
- **[fix]** `WebSocket` Ping 回显使用已释放缓冲;`SessionBase`/`UdpSession` 池化对象泄漏;`HttpServer` 路径缓存并发安全
- **[fix]** `CacheLock` 分布式锁引入持有者令牌,避免锁超时被接管后误删新持有者的锁
- **[fix]** `ConsoleLog`/`NetworkLog` 异步写日志丢失唤醒竞态,日志永久滞留队列
- **[fix]** `HttpRouter` 可选参数 `{param?}` 死代码;`ApiHttpClient` 释放节点 HttpClient;`ObjectPool` 创建失败无限循环等 40+ 处缺陷
- **[fix]** `ObjectContainer` 新增线程安全查询 `ContainsService`/`FindServices`,消除 `ServiceProvider.GetService` 与 `ModelExtension.GetServices` 无锁遍历在启动期与并发注册抛集合修改异常
- **[fix]** `Asn1` 补 `0x83` 三字节长格式支持(长度超过 65535 的 TLV 原解析错位),`0x80` BER 不定长由静默错解改为显式抛错
- **[fix]** `Rand.NextBytes` 在 net45/netstandard2.0 改用加密安全随机数生成器,与 `Next()` 保持一致(原 `new Random()` 非加密安全)
- **[fix]** `ReadStringUni` 按实际长度读取字符串;`BitConverter` 越界与 `PathHelper` 写入偏移问题
- **[fix]** `ToDictionary`/`ApiHelper` 错误转换数组和列表;流读取不完整及 `ToBase64` 返回值问题
- **[fix]** 优化 `DeferredQueue` 并发安全与性能、`ArrayPacket` 解包数据安全性、`BinaryGeneral`/`Normal` 内存池归还与解码逻辑
### 测试与质量
- 全量测试 2558 项全部通过(含 MachineInfo 39 项、PKCS7 9 项)
- 测试代码迁移新 API(`ArrayPacket`/`JsonOptions`/`SearchAsync`),消除 CS0618 与 xUnit 分析器警告
- 新增 `Rand.NextBytes`、`Asn1` 长格式(0x83/0x80)测试;修复 `SnowflakeTests` 全局 WorkerId 测试随机到 0 的偶发失败(0 表示未设置,应排除)
- 新增 `ICache`/`IProducerConsumer`/`TimeProvider`/`PluginManager` 契约测试,补充 `XTrace`/`Config`/`JsonReader`/`Cache`、`XmlParser`/`TypeConverter`、`PluginHelper`、`ConsoleLog`、HTTP 中间件等核心类型测试
- 创建需求文档/功能清单/架构设计三件套文档,功能清单测试覆盖 55/74
## v11.17.2026.0701 (2026-07-01)
### JSON 增强
- **IDictionarySource 序列化支持**:System.Text.Json 支持 `IDictionarySource` 接口序列化及多种时间格式
- **DateTime ISO 8601 优化**:优化 `DateTime` 序列化为 ISO 8601 格式,增强字符串转义与注释处理
### 配置系统
- **原子写入**:`XmlConfig` 与 `JsonConfig` 支持原子写入,避免文件损坏
- **并发安全增强**:`FileConfigProvider` 原子写入增强多线程安全性,提升文件配置写入兼容性
### 网络优化
- **HttpContent 埋点增强**:优化 HTTP 内容埋点标签提取逻辑,提升链路追踪健壮性
### Bug 修复
- **[fix]** 修复 `SystemJson.Parse` 解析对象类型错误
- **[fix]** 修复数组序列化时错误忽略 null 元素
### 测试与质量
- **测试并发控制**:统一测试并发控制,移除 `xunit.runner.ci.json` 简化配置
---
## v11.16.2026.0601 (2026-06-01)
### 事件总线增强
- **EventHub 全面异步化**:重构 EventHub 分发机制,统一异步入口为 `OnReceiveAsync`,支持委托订阅与扩展,提升事件处理的并发能力与可扩展性
- **EventBus 异步广播**:EventBus 支持异步事件接收与广播,与 EventHub 异步架构对齐
### JSON 增强
- **自定义序列化选项**:支持传入自定义 `JsonSerializerOptions`,精细控制序列化行为
### 网络层优化
- **WebSocket 粘包分包**:WebSocket 完整支持粘包/分包处理,增强健壮性并通过高吞吐性能验证
- **HTTP 参数默认值**:HTTP 服务支持参数默认值绑定,优化参数解析健壮性
- **集成测试全面增强**:覆盖 TCP/UDP/WebSocket 多场景的高吞吐集成测试体系
### 多框架兼容性
- **ValueTask 统一**:统一异步接口为 `ValueTask`,移除多余条件编译,简化跨框架代码
- **IAsyncEnumerable / IAsyncDisposable 兼容**:兼容旧版 .NET 的异步枚举与异步释放接口
- **类型转发增强**:高版本框架补充类型转发消除类型冲突;支持 `CsvFile` 等异步接口类型转发
### Bug 修复
- **[fix]** 修复 `UdpClient` 并发绑定竞态条件,优化关闭处理逻辑
---
## v11.15.2026.0501 (2026-05-01)
### 序列化增强
- **SpanWriter/SpanReader WriteValue/ReadValue**:新增对所有基础类型的通用 `WriteValue`/`ReadValue` 方法,完整单元测试覆盖,零分配读写更易用
- **字符串截断方法统一命名**:重构字符串截断扩展方法,统一命名规范,提升 API 一致性
### JSON 增强
- **PropertyNaming 统一命名策略**:引入 `PropertyNaming` 枚举,支持驼峰、下划线、帕斯卡等多种 JSON 属性命名策略,可全局配置
- **Json 命名策略序列化增强**:增强序列化/反序列化对命名策略的完整应用,覆盖更多边界场景
- **ExtendableConverter 属性忽略增强**:增强 `ExtendableConverter` 对 `ShouldIgnore` 忽略条件的支持,灵活控制字段序列化
### 网络与 HTTP
- **集成测试增强**:统一集成测试客户端,增强用例覆盖;优化 `ApiHttpClient` 参数传递逻辑
### Bug 修复
- **[fix]** 修复 `AssemblyResolve` 事件递归触发配置初始化,导致栈溢出的问题
- **[fix]** 修复对象 `Copy` 时,目标 `string?` 字段为 null 导致的空指针异常
- **[chore]** 程序集解析异常时写入 Trace 调试信息,便于排查加载失败问题
---
## v11.14.2026.0402 (2026-04-02)
### 序列化增强
- **SpanWriter 流模式**:SpanWriter 支持 Stream 写入,OwnerPacket/SpanSerializer 支持 Stream 零拷贝双路径,优化大数据序列化
- **ISpanSerializable 增强**:增强 `ISpanSerializable` 支持,编码器可直接处理 `ISpanSerializable` 接口对象,提升序列化性能
- **DbTable Span 序列化**:支持 DbTable 的 Span 序列化与反序列化
- **长度前缀读写**:支持长度前缀数据/字符串读写,优化 `WriteEncodedInt` 空间分配
- **序列化配置重构**:重构序列化配置,新增 `Apply` 方法支持配置复用
- **高级二进制序列化**:零拷贝能力增强
### JSON 增强
- **JsonElement 类型转换**:支持 `JsonElement` 的类型转换扩展
- **ExtendableConverter 重构**:重构并增强 `ExtendableConverter`,提升兼容性
- **属性名映射优化**:优化 JSON 属性名映射,支持多特性叠加与命名策略
- **成员忽略特性**:剔除标记了 `IgnoreDataMember`/`XmlIgnore` 特性的属性,与 .NET 标准行为对齐
### 网络层优化
- **LengthFieldCodec 增强**:功能增强,测试覆盖完善
- **IPacket 多包链**:优化 IPacket 多包链操作性能与接口规范
- **SplitDataCodec 修复**:修复发送数据时未追加分割字节的 Bug
### 对象池增强
- **异步借出**:引入对象池 `GetAsync` 能力,支持高并发场景下的异步资源等待
### 反射与性能
- **Reflect 全面优化**:反射性能全面优化,缓存委托路径,热点路径零反射
- **内存池优化**:数组初始化现代化,使用内存池减少 GC 压力
- **TarFile 性能**:Span 化头部读写与补零复用,提升压缩处理性能
### 配置与服务
- **IServiceResolver**:新增服务解析器 `IServiceResolver` 接口及配置实现,支持多源服务发现
### 工具类
- **DefaultUserAgent**:支持对非 ASCII 字符进行 URL 编码,避免请求头异常
- **深拷贝优化**:调整数组、字典的深拷贝逻辑
- **StringHelper.TrimStart 标记过期**:标记 `TrimStart(String, String)` 为过时,迁移至标准 API;优化 `PathHelper` 路径分隔符处理
### Bug 修复
- **[fix]** 在 SqlServer 批量写入时,`fields` 可能为空数组导致异常
---
## v11.12.2026.0301 (2026-03-01)
### 序列化增强
- **SpanSerializer**:新增高性能 Span 二进制序列化器,支持零分配读写,性能全面优于传统方式
- **SpanReader/SpanWriter**:新增对 `byte[]` 的直接构造支持
- **字符串读取优化**:优化字符串读取时的内存分配策略,减少堆分配
### IPacket 重构与性能优化
- **OwnerPacket**:重构为 `sealed` 类,优化内存管理与生命周期
- **切片性能**:优化 IPacket 切片逻辑,减少装箱,完善测试
- **PacketHelper.AsPacket**:新增快捷转换方法,简化 Packet 操作
- **释放机制**:完善 IPacket 与 IMessage 的释放文档与测试
### 网络层性能优化
- **SendMessageAsync**:重构为非异步路径,降低 Task 分配开销
- **PooledValueTaskSource**:增强池化 ValueTask 源,提升并发吞吐
- **编解码器池化**:对编解码器与事件参数进行池化,Echo 场景性能大幅提升
- **NetServer 实测**:压测跑出 23.4 Gbps 带宽、1.4 亿 pkt/s 吞吐
### 配置系统热加载重构
- **事件驱动**:FileConfigProvider 从低效轮询改为 FileSystemWatcher 事件驱动热更新
- **双重保险**:Watcher 可用时定时器周期延长为 60 秒作为兜底,保持 Period 属性向后兼容
### IO 工具增强
- **IOHelper**:新增异步精确读取(`ReadExactlyAsync`)与最少读取(`ReadAtLeastAsync`)方法及测试
- **MaxSafeArraySize**:新增安全最大数组尺寸常量
### 其他优化
- **DeferredQueue**:支持运行时动态修改处理周期
- **MemoryCache**:`Remove` 单键路径实现零分配优化
- **文件操作**:增强异常处理与哈希校验链路追踪
### 性能基准测试
- 新增 Benchmark 基准测试项目(net10.0),覆盖 IPacket、MemoryCache、TCP Echo、NetServer 等核心场景
- 发布 IPacket、NetServer、MemoryCache 等性能测试报告
### 文档与 Copilot 指令
- 新增 NewLife.Net 开发规范文档与 Copilot 协作指令
- 新增 AI 开发流程指令及自治批处理规范
- 优化 Copilot 指令文档结构与基准测试规范
---
## v11.11.2026.0201 (2026-02-01)
### 核心功能
#### ApiHttpClient 增强
- **多服务竞速与负载均衡**:支持多地址竞速下载,自动选择最快节点
- **哈希校验**:支持文件下载时的哈希校验功能
- **负载均衡器重构**:新增 `RaceLoadBalancer`、`PeerEndpointSelector` 等负载均衡组件
- **节点管理**:自动屏蔽失败节点,支持可配置的启动延迟步长
- **性能追踪**:为竞速调度和下载过程增加 Tracer 埋点
#### 依赖注入(DI)增强
- **ObjectContainer 优化**:增强文档与核心功能,支持延迟 DI 集成
- **Token 模型扩展**:引入 `IToken` 接口,提升令牌模型的扩展性
- **TokenModel 扩展**:新增 Scope 属性支持,改为 partial 类提高扩展容错
### 网络层优化
- **NetClient 重构**:完善文档与注释,补充单元测试
- **会话/服务器增强**:增强 Net 会话与服务器注释及单元测试
- **消息处理统一**:统一 `IMessage` 处理逻辑,简化消息提取代码,支持原始内容追踪
- **UdpServer 修复**:修正监听 0 端口后没有自动回填到 NetServer 的问题
- **并发性能优化**:优化消息队列并发性能,完善编码器注释
### 工具类新增与增强
- **UriInfo 增强**:新增 `ToUri` 方法,增强对 IPv6 及多格式 URL 的解析支持
- **Span 扩展**:新增 `Span<byte> Trim` 扩展方法及单元测试
- **配置支持**:`Config<T>` 支持泛型字典(修复 [#172](https://github.com/NewLifeX/X/issues/172))
- **序列化优化**:如果属性定义了 `DataObjectFieldAttribute`,让它们排在前面
### 文档与协作
- **使用手册**:为主要功能模块编写使用手册(ApiHttpClient、网络库等)
- **Copilot 指令优化**:
- 新增 Markdown 文档规范
- 完善主动优化原则及细化规范
- 新增防御性注释与日志规范
- 新增集合表达式与 Null 条件运算符指引
- 优化 XCode/Cube 指令读取与 XML 检测策略
- 自动分发 Copilot 指令文件及 MSBuild 支持
### 测试与质量
- **单元测试大幅增强**:为网络库核心功能、UriInfo、PeerEndpointSelector、ApiHttpClient 等新增大量单元测试
- **测试健壮性提升**:优化测试用例健壮性与时区兼容性,提升 CI 兼容性
### 其他优化
- **日志优化**:简化线程池和长任务在日志里的名字,让应用启动时的日志更整齐
- **AddServer 改进**:添加服务地址时返回服务节点
---
## 历史版本
### v11.10.2026.0101 (2026-01-01)
- 重构 IEventBus,支持 EventHub
- ApiHttpClient 支持文件下载
---
**说明**:
- 正式版发布周期:每月月初
- 测试版发布周期:提交代码到 GitHub 时自动发布
- 版本号格式:正式版 `{主版本}.{子版本}.{年}.{月日}`,测试版 `{主版本}.{子版本}.{年}.{月日}-beta{时分}`
|