Skip to content

Commit 3b5f3b2

Browse files
committed
Update release notes for 0.3.0
1 parent 491bddc commit 3b5f3b2

1 file changed

Lines changed: 46 additions & 0 deletions

File tree

RELEASE_NOTES.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,50 @@
11

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+
248
# Release Notes - v0.2.1
349

450
This release was focused on ease of use and API improvements. Some features were added but this was primarily

0 commit comments

Comments
 (0)