# CHANGELOG ## v1.0.8 (2026-05-08) - **性能优化 (Memory Efficiency)**: - 重构 `Multipart` 处理逻辑,采用 `io.Pipe` 实现流式上传,彻底解决大文件上传时的内存撑爆问题。 - 引入 `writeMultipartPart` 与 `writeMultipartFile` 辅助函数,优化分块写入逻辑。 - **功能增强 (Unified Type Handling)**: - 统一 `do` 方法内部逻辑,通过类型分组消除冗余代码。 - 将 `map[string][]any` 提升为 `Multipart` 处理,确保复杂/混合数据类型的正确流式发送。 - 完善对 `url.Values`, `map[string][]string`, `Form` 的统一表单编码支持。 - 优化 `Multipart` 对多值字段的支持,允许在 `Multipart` 映射中使用 `[]string` 或 `[]any` 发送同名多参数。 - **基础设施对齐**: - 更新 `go/encoding` 至 v1.0.6。 - 移除 `bufferPool` 在 `Multipart` 中的使用,转向更高效的流式 IO。 ## v1.0.6 (2026-05-07) - 内部版本,优化 Header 自动透传逻辑。 ## v1.0.5 (2026-05-06) - 内部版本,增强对 H2C 场景下的连接池管理。 ## v1.0.4 (2026-05-05) - **基础设施对齐**: - 更新 `go/file` 至 v1.0.5, `go/log` 至 v1.1.1, `go/config` 至 v1.0.5。 - `PostMultipart` 现在通过 `go/file` API 透明支持物理文件与内存文件系统的读取。 - **鲁棒性增强**: - 优化 `doByRequest` 中对 `X-Forwarded-For` 的处理,增强 `RemoteAddr` 解析的健壮性。 - **代码规范**: - 统一变量命名规范,重命名冗余的单字母变量,提升代码可读性。 ## v1.0.3 (2026-05-03) - **API 变更**: 将泛型解析函数 `Bind[T]` 重命名为 `To[T]`,以保持与全局 API 风格一致。 - **文档优化**: 移除冗余的 `AI.md`,更新 `README.md` 中的 API 示例。 ## v1.0.2 (2026-05-03) - **Breaking Changes & API Renames**: - `ToT` 重命名为 `Bind` (泛型解析)。 - `Result.Arr` 重命名为 `Result.Slice`。 - `MPost` 重命名为 `PostMultipart`。 - `GlobalHeaders` 字段私有化,改为通过 `SetGlobalHeader` / `GetGlobalHeader` 进行线程安全操作。 - **New Features**: - **并行下载**: `Download` 方法现在支持并行分段下载,可通过 `client.MaxConnsPerHost` 控制并发度。 - **性能优化**: 引入 `sync.Pool` 复用 `bytes.Buffer`,降低高并发下的内存分配开销。 - **Improvements**: - 优化 `PostMultipart` 实现,支持更清晰的错误处理。 - 统一内部 Header 透传逻辑,采用更高效的 slice 追加方式。 ## v1.0.1 (2026-05-03) - 重构 `Download` 逻辑,使用 `offsetWriter` 解决重试场景下的数据偏移风险。 - 迁移测试至 `http_test` 独立包。 ## v1.0.0 (2026-05-02) - 从 `github.com/ssgo/httpclient` 迁移完成。