-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add initial CHANGELOG.md for BytePack v0.1.0 release detailing featur…
…es and documentation
- Loading branch information
1 parent
6550604
commit 6c5cd5c
Showing
1 changed file
with
40 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# Changelog | ||
|
||
All notable changes to this project will be documented in this file. | ||
|
||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), | ||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||
|
||
## 0.1.0 - 2024-01-10 | ||
### Added | ||
- **Library Introduction:** BytePack, a simple C++20 header-only library for efficient and flexible binary serialization, primarily designed for network communication. | ||
- **Key Features:** | ||
- Header-only implementation, requiring just the inclusion of `bytepack.hpp`. | ||
- Configurable endianness support (default: big-endian, network byte order). | ||
- No reliance on custom encoding, such as IDL or metadata, enhancing interoperability. | ||
- Exception-free design for predictable error handling. | ||
- Avoidance of preprocessor macros, focusing on clean and maintainable code. | ||
- Flexible buffer management using a non-owning mutable buffer concept. | ||
- Cross-platform compatibility tested on Windows, GNU/Linux, and macOS. | ||
- **Data Types Support:** | ||
- Fundamental types like `char`, `int`, `double`, etc. ([more](https://en.cppreference.com/w/cpp/language/types)) | ||
- Fixed-width integer types such as `std::uint8_t`, `std::int64_t`, etc._ ([more](https://en.cppreference.com/w/cpp/types/integer)) | ||
- Enumerated types (`enum`, `enum class`). | ||
- Standard containers (`std::vector`, `std::array`). | ||
- Standard strings (`std::string`, `std::string_view`). | ||
- C-style arrays such as _`char[]`, `int[]`, `double[]`, etc._ | ||
- **Core Classes:** | ||
- `binary_stream`: Main class for serializing and deserializing data. | ||
- `buffer_view`: Non-owning mutable class for buffer management. | ||
- **Documentation:** | ||
- Motivation & design philosophy, installation & testing, user guide & API, examples using ASIO and Qt, and contribution guidelines. | ||
- **Practical Usage Examples:** | ||
- Demonstrations of serialization/deserialization in different scenarios, including using default and little-endian configurations, and handling various data types. | ||
- **Community-Driven Roadmap Draft:** | ||
- An open roadmap inviting community feedback on future development directions and feature considerations. | ||
- **License:** | ||
- MIT License for open and permissive usage. | ||
|
||
### Known Issues and Limitations | ||
- Architecture and platform-dependent type sizes for certain data types like `std::size_t` and `long int`, which can cause inconsistencies across different platforms and architectures. Recommended use of fixed-width integer types from `<cstdint>` for cross-platform compatibility. | ||
- Current lack of support for `std::wstring` and `std::wstring_view` due to variations in `wchar_t` size across platforms. Users are advised to use `std::string` and `std::string_view` for string serialization. |