|
1 | 1 |
|
| 2 | +# Release Notes - v0.3.0 |
| 3 | + |
| 4 | +## New Features |
| 5 | + |
| 6 | +- **ThreadPool**: |
| 7 | + - Added `ThreadPool` class for managing a pool of worker threads. |
| 8 | + - This class simplifies the creation and management of worker threads, |
| 9 | + allowing for efficient parallel execution of tasks. |
| 10 | +- **Container Enhancements**: |
| 11 | + - `Queue` now inherits from the `Container` hierarchy, improving consistency across data structures. |
| 12 | + - Added `addMany` method to `ArrayList` and `LinkedList` to support adding elements from any generic container or iterator-compatible object. |
| 13 | +- **Smart Pointer Improvements (`sp<T>`)**: |
| 14 | + - Refactored internal control blocks to use virtual methods, ensuring correct behavior for polymorphic types (e.g., `sp<Base>` managing a `Derived` instance). |
| 15 | + - Fixed `mut()` method to work correctly when a smart pointer has been cast to a base type. |
| 16 | + - Improved constructor logic using `std::enable_if` to prevent perfect-forwarding from accidentally overriding copy/move constructors. |
| 17 | + - Added `copy()` method to create an immediate deep copy of the managed object with a specified pointer type. |
| 18 | + |
| 19 | +## Improvements |
| 20 | + |
| 21 | +- **FdHandle enhancements**: |
| 22 | + - Added `printf` and `readLine` methods to `FdHandle` for easier string formatting and stream parsing. |
| 23 | + - Improved thread-safety in `FdHandle` by using `std::mutex` and `std::atomic` for reference counting. |
| 24 | + - Refined `close()` behavior to use reference counting instead of immediate deletion. |
| 25 | +- **ArrayList Memory Management**: |
| 26 | + - Improved handling of non-trivial types during reallocations and container operations. |
| 27 | + - Added optimized `find` and `contains` methods. |
| 28 | +- **LinkedList Features**: |
| 29 | + - Added full support for copy and move constructors and assignment operators. |
| 30 | +- **Hash quality improvements**: |
| 31 | + - Improved bit mixing in `obviousHashFunction` for strings, specifically addressing quality issues for strings with lengths not divisible by 8. |
| 32 | + |
| 33 | +## Bug Fixes |
| 34 | + |
| 35 | +- **Socket IO Hang**: |
| 36 | + - Fixed an infinite busy-loop in `SocketHandleData::read` that occurred when a pipe or socket was closed by the peer (`POLLHUP`). |
| 37 | + - This issue caused some applications to hang indefinitely when reading from a closed pipe. |
| 38 | +- **FdHandle write merging fix**: |
| 39 | + - Fixed a bug in `FdHandle` where merging pending writes could result in incorrect memory moves, corrupting the write buffer. |
| 40 | +- **sp<T> construction fix**: |
| 41 | + - Fixed a regression where `sp<T>` would sometimes attempt to construct the managed object from the smart pointer itself during copy operations. |
| 42 | + |
| 43 | +## Testing |
| 44 | +- Added comprehensive edge-case tests for `FdHandle` concurrency and write merging. |
| 45 | +- Added new tests for `ArrayList` and `LinkedList` memory management and generic container integration. |
| 46 | +- Expanded `sp<T>` test suite to cover polymorphic conversions and "collapsing" constructor scenarios. |
| 47 | + |
2 | 48 | # Release Notes - v0.2.1 |
3 | 49 |
|
4 | 50 | This release was focused on ease of use and API improvements. Some features were added but this was primarily |
|
0 commit comments