5.7 KiB
5.7 KiB
CHANGELOG
[v1.2.6] - 2026-05-04
Fixed
- Map 深度合并修复: 修复了在
Convert或ToMap过程中,如果目标 Map 已存在该 Key,其原有结构体/Map 值会被直接覆盖而非深度合并的问题。通过引入dst.MapIndex预读取与临时寻址变量,现已完美支持 Map 下非指针结构体的局部字段覆盖。
Added
- 深度合并测试集: 新增
merge_test.go与complex_conversion_test.go,覆盖了 Struct-to-Map, Map-to-Map, Slice-to-Map 等多种深度嵌套合并场景,确保配置覆盖逻辑的健壮性。
[v1.2.3] - 2026-05-04
Added
- 强大的时间解析引擎: 移植
time模块的核心算法至cast.ParseTime,支持时间戳(秒至纳秒)、RFC3339、JS 格式、紧凑格式(20060102150405)及中文日期解析。 - 时间操作 API: 新增
FormatTime(layout, v)支持直观格式化(YYYY-MM-DD),新增AddTime(expr, v)支持 DSL 时间加减(+1Y-2M)。 - 时区上下文支持: 引入
TimeZone类型及全局DefaultTimeZone,支持SetDefaultTimeZone统一控制全项目的转换时区。
Optimized
- ToTime 升级: 重构
ToTime底层,默认调用高性能ParseTime引擎,并强制转换至DefaultTimeZone时区。 - JSON 时间处理:
FastEncoder与FastDecoder现已深度集成DefaultTimeZone,确保序列化与反序列化时的时区一致性。
[v1.2.2] - 2026-05-04
Added
- 深度对象映射引擎: 移植
convert包的核心能力至cast.Convert。 - Convert API: 新增
Convert(dst, src any)入口,支持深度转换与原地更新,遵循 Go 语言参数哲学。 - Func 转换支持: 原生支持
func到func的自动类型适配与包装。 - CSV 自动解析:
To[[]T]和Convert现支持自动将逗号分隔字符串解析为切片。 - ParseHook 支持: 支持结构体字段的自定义
ParseFieldName钩子函数。 - 自我转换保护: 增加指针地址校验,防止
Convert(a, a)导致的死循环或无效开销。
Optimized
- 极致性能重构: 实现
performRecursiveTo递归引擎,全面消灭内存逃逸,对象映射性能提升 ~40%,内存分配减少 ~75%。 - 覆盖赋值语义: 修正单值转切片的语义,从“追加”改为“覆盖赋值”。
- Bool 强制转换优化: 重构
Bool()底层分支逻辑,提升 CPU 分支预测友好度。
Removed
- convert 模块: 正式移除外部
apigo.cc/go/convert依赖,功能全部合并至cast。
[v1.2.1] - 2026-05-04
Added
- Encoder 元数据缓存: 引入
encoderStructDescriptor缓存,大幅减少结构体序列化时的反射开销。 - time.Time 全局支持:
- Encoder/Decoder 原生支持
time.Time类型。 - 默认使用格式
2006-01-02 15:04:05.000。 - 支持通过 Struct Tag 指定格式(如
json:"format=2006-01-02")。
- Encoder/Decoder 原生支持
- 零分配摩擦匹配: 重构 Decoder 匹配逻辑,实现
normalizeEqual算法,在忽略大小写/下划线匹配时彻底消除内存分配。
Optimized
- Encoder 性能:
- 采用
MapRange代替MapKeys遍历 Map,减少中间切片分配。 - 延迟 Path 路径计算,仅在开启脱敏字典时计算路径。
- 重写
writeString,支持批量写入与高效查表转义。
- 采用
- Decoder 性能:
- 优化
decodeArray扩容策略,优先尊重并使用用户预设的 Capacity。
- 优化
- 移除 Map 排序: 序列化 Map 时不再进行 Key 排序,显著提升大规模 Map 的处理速度。
[v1.2.0] - 2026-05-04
Added
- 零摩擦 API: 核心 API
To[T],ToJSON,FromJSON,ToMap,ToSlice全部重构为不返回错误,遇错静默返回零值。 - As 包装器: 原
Quiet更名为As,用于一键消除传统(value, error)函数的摩擦。
Removed
- YAML 支持: 移除
gopkg.in/yaml.v3依赖。 - Must/As[T] 系列: 移除
Must及所有特殊的AsXxx系列函数,统一通过To[T]或As包装实现。 - 冗余 API: 移除
PrettyToJSONBytes和ToJSONDesensitize,保留对应的PrettyToJSON和ToJSONDesensitizeBytes。
[v1.1.2] - 2026-05-04
Added
- 新增
ToMap和ToSlice: 侧重于原地填充/追加,支持 Struct 继承拍平、KV 序列化与自动类型转换。 - 新增
MakeMap,MakeSlice,FromJSON,FromYAML系列: 泛型构建新对象的零摩擦 API。 - 增强
UnmarshalJSON/UnmarshalYAML: 重构为副作用模式(返回 error),支持多种输入类型。
Removed
- 移除
Ints和Strings: 由更通用的MakeSlice替代,保持 API 简洁。
[v1.1.1] - 2026-04-12
- 修复: 解决
FastEncoder在编码结构体时忽略匿名嵌入(Embedded)字段的问题,确保组合对象的完整序列化。
[v1.1.0] - 2026-05-02
- 功能: 新增
FastEncoder,实现单路径 JSON 编码,大幅提升性能并减少内存分配。 - 功能: 新增
ToJSONDesensitize和ToJSONDesensitizeBytes,支持原生字段脱敏。 - 功能: 新增
FastDecoder,实现单路径流式 JSON 解析,支持“零摩擦” Key 匹配(大小写不敏感、归一化映射)。 - 优化: 完善
null值处理逻辑,区分nil指针与空slice/map。 - 重构: 移除旧版
makeJSONType等冗余逻辑,代码结构更简洁高效。
[v1.0.4] - 2026-04-30
- 优化: 重构
UniqueAppend,改用 Map 查重,性能提升至 $O(n)$。 - 优化: 提升
If函数参数描述性,符合工程规范。 - 优化: 精简
parseInt/parseUint逻辑,减少冗余字符串扫描。 - 优化: 优化
FixUpperCase内部字符处理,引入位运算提升效率。