Releases: abin-z/inifile
v1.0.1
Release v1.0.1
🎉 What's New in v1.0.1
This release focuses on improving cross-platform compatibility, build infrastructure, and documentation.
✨ Improvements
- CI/CD Pipeline: Added GitHub Actions workflows for automated testing and validation on Unix and Windows platforms (
cmake_unix.yml,cmake_windows.yml). - Enhanced Cross-Platform Compatibility: Improved support for Linux, Windows, macOS, and various mainstream compilers with optimized compiler settings.
- CMakeLists.txt Optimization: Streamlined and modernized CMake configuration for better integration and installation support. Integrated GNUInstallDirs module for standardized cross-platform installation paths.
- Documentation Update: Improved README documentation in both English and Chinese for better clarity and usability.
📦 Features (Unchanged from v1.0.0)
- Header-Only Library: Zero dependencies, C++11 compatible
- Read, Modify & Write: Seamlessly handle INI configuration files
- Automatic Type Conversion: Support for multiple data types
- Comment Retention: Preserve line-level comments (
;or#) - Case Insensitivity Support: Optional case-insensitive operations
- Custom Type Conversion: Extend with user-defined types
- Fully Tested: Comprehensive unit tests with Catch2 and memory safety verified with Valgrind
🐛 Bug Fixes & Stability
- Compiler warning improvements for GCC, Clang, and MSVC
- Better error handling and standard compliance
🎉 v1.0.1 新增内容
本版本主要关注改进跨平台兼容性、构建基础设施和文档。
✨ 改进内容
- CI/CD 管道:添加了 GitHub Actions 工作流,在 Unix 和 Windows 平台上实现自动化测试和验证(
cmake_unix.yml、cmake_windows.yml)。 - 增强跨平台兼容性:改进了对 Linux、Windows、macOS 和各种主流编译器的支持,优化了编译器设置。
- CMakeLists.txt 优化:简化和现代化了 CMake 配置,以更好地支持集成和安装。集成了 GNUInstallDirs 模块,用于标准化的跨平台安装路径。
- 文档更新:改进了中英文 README 文档,提高了清晰度和可用性。
📦 功能特性(保持不变)
- 仅头文件库:零依赖,C++11 兼容
- 读取、修改和写入:无缝处理 INI 配置文件
- 自动类型转换:支持多种数据类型
- 注释保留:保留行级注释(
;或#) - 大小写不敏感支持:可选的大小写不敏感操作
- 自定义类型转换:支持用户定义的类型扩展
- 完全测试:使用 Catch2 进行全面单元测试,使用 Valgrind 验证内存安全
🐛 缺陷修复与稳定性
- 改进了 GCC、Clang 和 MSVC 的编译器警告
- 更好的错误处理和标准兼容性
v1.0.0
Release Notes for v1.0.0
🛠️ Improvements
- Fixed a bug where
delimiter.empty()could cause an infinite loop. - Added the
as_tofeature. - Optimized CMakeLists.txt so that when inifile is used as a third-party library, tests and examples are not built, and
find_packageworks after installation. - Fixed conflicts with
min/maxmacros in Windows headers. - Fixed known issues and improved code structure.
🔍 Testing
- Expanded unit tests using the Catch2 framework to cover new features and edge cases.
- Verified memory safety with Valgrind, ensuring no leaks or invalid accesses.
📄 Documentation
- Updated API documentation to include new features and improvements.
Full Changelog: v0.9.9...v1.0.0
🛠️ 改进
- 修复
delimiter.empty()会死循环的bug. - 添加
as_to功能. - 优化CMakeLists, 当inifile作为三方库时不编译test和example, 并支持安装后使用
find_package. - 修复与Windows头文件中
min/max宏冲突问题. - 修复已知问题, 优化代码结构.
🔍 测试
- 扩展了Catch2 框架单元测试,覆盖新增功能和边界情况。
- 使用 Valgrind 验证内存安全性,确保无内存泄漏或非法访问。
📄 文档
- 更新了 API 文档,涵盖新增功能和改进。
修改提交日志: v0.9.9...v1.0.0
v0.9.9
Release Notes for v0.9.9
🛠️ Improvements
- Optimize the writing of user-defined types, INIFILE_TYPE_CONVERTER uses static
encodeanddecodefunctions - Add inline keywords to global functions to avoid ODR (One Definition Rule) problems
- Optimize inifile functions to improve efficiency and correctness
- Introduce catch2-v2 test framework into the project as a git submodule
- Write shell scripts to facilitate memory leak testing
🔍 Testing
- Expanded Catch2 framework unit testing to cover new features and edge cases.
- Use Valgrind to verify memory safety to ensure no memory leaks or illegal access.
📄 Documentation
- Updated API documentation to cover new features and improvements.
Modified commit log: v0.9.8...v0.9.9
🛠️ 改进
- 优化用户自定义类型写法, INIFILE_TYPE_CONVERTER 使用static的
encode和decode函数 - 全局函数添加inline关键字, 避免ODR(One Definition Rule)问题
- 优化inifile的函数, 提升效率和正确性
- 将catch2-v2测试框架作为git submodule引入项目
- 编写shell脚本, 方便测试内存泄漏
🔍 测试
- 扩展了Catch2 框架单元测试,覆盖新增功能和边界情况。
- 使用 Valgrind 验证内存安全性,确保无内存泄漏或非法访问。
📄 文档
- 更新了 API 文档,涵盖新增功能和改进。
修改提交日志: v0.9.8...v0.9.9
v0.9.8
v0.9.7
Release Notes for v0.9.7
🛠️ Improvements
- Improved floating point precision to ensure that precision is not truncated when working with floating point numbers.
- Hand-write move and copy semantic functions to ensure cross-platform consistency
- Ensure that the content of any class object is cleared after moving it
🐞 Fixes
- Resolve bug where self-moving assignments would result in double free.
🔍 Testing
- Extend unit tests with the Catch2 framework to cover new features and edge cases.
- Verify memory safety using Valgrind to ensure no memory leaks or illegal accesses.
📄 Documentation
- Updated API documentation to cover new features and improvements.
Full Changelog: v0.9.5...v0.9.7
🛠️ 改进
- 提升浮点精度, 保证处理浮点数时不截断精度
- 手写move和copy语义函数, 保证跨平台一致性
- 确保任何类对象被move后, 类中内容将被清空
🐞 修复
- 解决自移动赋值会导致double free的缺陷。
🔍 测试
- 使用 Catch2 框架扩展了单元测试,覆盖新增功能和边界情况。
- 使用 Valgrind 验证内存安全性,确保无内存泄漏或非法访问。
📄 文档
- 更新了 API 文档,涵盖新增功能和改进。
修改提交日志: v0.9.5...v0.9.7
v0.9.5
Release version 0.9.5
changes:
- Fix: Resolved issues caused by missing header files.
- Feature Enhancement: The
ini::splitfunction now supports using a string as a delimiter, making it easier to write customdecodefunctions. - New Feature: Introduced the
ini::joinutility function to simplify the implementation of customencodefunctions. - Code Formatting: Reformatted the code for improved readability.
变化:
- 修复:解决了头文件缺失导致的编译错误。
- 功能扩展:
ini::split函数新增支持使用字符串作为切割符,方便自定义类型的decode函数编写。 - 新功能:新增
ini::join工具函数,简化自定义类型encode函数的编写。 - 代码格式化:对代码进行格式化,提升可读性。
v0.9.4
v0.9.4
changes: Add case insensitive feature
- Support case insensitivity: Provides optional case insensitivity (for
sectionandkey) - use
ini::case_insensitive_inifile, please Click to view details
Full Changelog: v0.9.3...v0.9.4
v0.9.3
Release version v0.9.3
Support custom type conversion function(支持自定义类型转换功能)
Custom type conversion: You can customize type conversion, inifile will automatically convert according to the definition you wrote (reduce duplication)
The following are custom rules:
- Use the
INIFILE_TYPE_CONVERTERmacro to specialize the custom type (Must have a default constructor); - Define
encodefunction, which is used to define how to convert custom types into ini storage strings (the storage string cannot contain newlines); - Define
decodefunction, which is used to define how to convert the ini storage string into a custom type;
v0.9.2
Release version v0.9.2
Biggest changes: Support ini comment function(支持ini注释功能)
Support Comment: Supports [section] and key=value line comments (; or #) (end-of-line comments are not supported), and can retain the comment information in the data source.
- add
set_comment()function, Set section or key-value pairs comment, overwrite mode. - add
add_comment()function, Add section or key-value pairs comment, append mode. - add
clear_comment()function, clear section or key-value pairs comment.
v0.9.1
Release version v0.9.1
Better support for iterator functions(更好的支持迭代器功能)
Added the following features:
- add
empty()function: Determines whether there is no element, returns true if there is no element - add
count()function: Returns how many elements have the specified key - add
find()function: Find the iterator of the specified element, if it does not exist, return the end iterator - add
erase()fucction: Deletes the section or key-value of the specified iterator (including all its elements)