Skip to content

Releases: abin-z/inifile

v1.0.1

11 Apr 12:32

Choose a tag to compare

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.ymlcmake_windows.yml)。
  • 增强跨平台兼容性:改进了对 Linux、Windows、macOS 和各种主流编译器的支持,优化了编译器设置。
  • CMakeLists.txt 优化:简化和现代化了 CMake 配置,以更好地支持集成和安装。集成了 GNUInstallDirs 模块,用于标准化的跨平台安装路径。
  • 文档更新:改进了中英文 README 文档,提高了清晰度和可用性。

📦 功能特性(保持不变)

  • 仅头文件库:零依赖,C++11 兼容
  • 读取、修改和写入:无缝处理 INI 配置文件
  • 自动类型转换:支持多种数据类型
  • 注释保留:保留行级注释(;#
  • 大小写不敏感支持:可选的大小写不敏感操作
  • 自定义类型转换:支持用户定义的类型扩展
  • 完全测试:使用 Catch2 进行全面单元测试,使用 Valgrind 验证内存安全

🐛 缺陷修复与稳定性

  • 改进了 GCC、Clang 和 MSVC 的编译器警告
  • 更好的错误处理和标准兼容性

v1.0.0

28 Feb 15:02

Choose a tag to compare

Release Notes for v1.0.0

🛠️ Improvements

  • Fixed a bug where delimiter.empty() could cause an infinite loop.
  • Added the as_to feature.
  • Optimized CMakeLists.txt so that when inifile is used as a third-party library, tests and examples are not built, and find_package works after installation.
  • Fixed conflicts with min/max macros 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

25 May 07:56

Choose a tag to compare

Release Notes for v0.9.9

🛠️ Improvements

  • Optimize the writing of user-defined types, INIFILE_TYPE_CONVERTER uses static encode and decode functions
  • 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的encodedecode函数
  • 全局函数添加inline关键字, 避免ODR(One Definition Rule)问题
  • 优化inifile的函数, 提升效率和正确性
  • 将catch2-v2测试框架作为git submodule引入项目
  • 编写shell脚本, 方便测试内存泄漏

🔍 测试

  • 扩展了Catch2 框架单元测试,覆盖新增功能和边界情况。
  • 使用 Valgrind 验证内存安全性,确保无内存泄漏或非法访问。

📄 文档

  • 更新了 API 文档,涵盖新增功能和改进。

修改提交日志: v0.9.8...v0.9.9

v0.9.8

15 May 16:01

Choose a tag to compare

Release version v0.9.8

添加ini::comment类, 方便管理ini配置中的注释

v0.9.7

07 May 12:45

Choose a tag to compare

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

15 Apr 12:29

Choose a tag to compare

Release version 0.9.5

changes:

  • Fix: Resolved issues caused by missing header files.
  • Feature Enhancement: The ini::split function now supports using a string as a delimiter, making it easier to write custom decode functions.
  • New Feature: Introduced the ini::join utility function to simplify the implementation of custom encode functions.
  • Code Formatting: Reformatted the code for improved readability.

变化:

  • 修复:解决了头文件缺失导致的编译错误。
  • 功能扩展ini::split 函数新增支持使用字符串作为切割符,方便自定义类型的 decode 函数编写。
  • 新功能:新增 ini::join 工具函数,简化自定义类型 encode 函数的编写。
  • 代码格式化:对代码进行格式化,提升可读性。

v0.9.4

10 Apr 13:38

Choose a tag to compare

v0.9.4

changes: Add case insensitive feature

  • Support case insensitivity: Provides optional case insensitivity (for section and key)
  • use ini::case_insensitive_inifile, please Click to view details

Full Changelog: v0.9.3...v0.9.4

v0.9.3

30 Mar 08:42

Choose a tag to compare

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:

  1. Use the INIFILE_TYPE_CONVERTER macro to specialize the custom type (Must have a default constructor);
  2. Define encode function, which is used to define how to convert custom types into ini storage strings (the storage string cannot contain newlines);
  3. Define decode function, which is used to define how to convert the ini storage string into a custom type;

v0.9.2

24 Mar 13:52

Choose a tag to compare

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

21 Mar 11:03

Choose a tag to compare

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)