Date: 2024-07-26
- Using the new lifecycle management method, it is now necessary to explicitly call detach to switch lifecycles.
- This avoids the additional mental overhead caused by implicit lifecycle transitions.
- Change error exception name.
E_EAGAIN
->E_AGAIN
E_EADDRINUSE
->E_ADDRINUSE
E_EBADF
->E_BADF
E_ENOTSOCK
->E_NOTSOCK
Date: 2024-07-02
- Add
callback
method on handles.- Use
callback
method to directly obtain callback for such asasync
,check
ortimer
. - Use
listen_callback
method to obtain the callback for stream'slisten
. - You can set up handling functions independently before performing any work.
- This can be very useful when operations may involve multiple starts and stops.
- Use
- Add examples.
pipe
,tcp
change state todetached
afterconnected
.- This is an experimental feature and may be adjusted before the official release.
- Add
uvcxx/cxx/sockaddr.h
to load/dumpsockaddr_*
.
- Fix the variable usage error in the
lib_t::open(string)
method. - Fix
pipe_connect
forgot set data field. - Fix some cases where header files are not included.
- Change return value of
signal_t::start_oneshot
.callback<int>
->promise<int>
- Remove
acceptable_stream
abstract class layer.- Practical experience proves that this abstraction layer does not significantly solve the problem of usability, but also introduces some unnecessary complexity.
- Remove
stream_t::accept
.- Overload the function in specific subtypes to avoid ambiguous semantics inherent in it.
- Remove meaningless
accpt
implementations in some stream subclasses.
Date: 2024-07-01
- Add CI workflows.
- Test latest ubuntu/windows gcc, clang and cl.
- Test classic GCC 4.8.5 with libuv 1.44.2.
- Test GCC 5, 6, 7, 8, 9, 10, 11, 12, latest.
- Test GCC with -std=11, 14, 17.
- Test MacOS with Xcode(Clang).
- Test MinGW.
- Test MSVC with /std:11, 14, 17.
- Test single header.
- Fix the issue that the generated single header file may vary in different environments,
- which leads to compilation errors.
Date: 2024-06-28
- Tested and passed on gcc
4.8.5
withlibuv
v1.44.2
. - Enhanced the capabilities of
promise/callback
.- It can properly handle movable but non-copyable objects.
- It supports passing references.
- Add
merge.py
to merge the code of uvcxx into a single header file.- You can find
uvcxx-single.h
in the release package.
- You can find
- Fix std::async UB with no policy in early C++ standard.
- Add
std::launch::async
.
- Add
-
The release of associated resources, such as
uv_fs_req_cleanup
, will be called before thefinally
of thepromise
.- This adjustment is necessary for compilation on gcc
4.8.x
. - Except for the deprecated usage, this modification has no impact in most scenarios.
- Bote: do not save related resources in the
then
function and use infinally
.
- This adjustment is necessary for compilation on gcc
-
Add
status
check onhandle
callback and change callback type.fs_event
start returncallback<const char *, uv_fs_event>
.fs_poll
start returncallback<const uv_stat_t *, const uv_stat_t *>
.poll
start returncallback<int>
.stream
listen returncallback<>
.- Handle status issue with
except<uvcxx::errcode>(...)
.
Date: 2024-06-27
- Cover about all APIs of
libuv
.- Add
uv::os
wrapper foruv_os_xxx
. - Add most of miscellaneous utilities.
- Add
- Downwards to C++11, while keep compatibility to C++14 and C++17.
- The minimum GCC version tested is 5.4.
- CMAKE_CXX_STANDARD in (11 14 17), have passed the tests on MSVC (19.34), GCC (11), and Clang (15).
- More compatibility tests are pending.
- Fixed known issues that caused double free of resources when moving wrapper objects.
- Rename
uvcxx::buffer_like
touvcxx::buffer
. - Rename
uvcxx::mutable_buffer_like
touvcxx::mutable_buffer
.
Date: 2024-06-24
- Add
uvcxx::string
,uvcxx::string_view
anduvcxx::buffer_like
to simplify the type conversion.
- Fix
req
not set data field problem.
- Removed some overloaded versions of
fs::read
andfs::write
. Simplified by usingbuffer_like
type.
Date: 2024-06-23
- Cover about
[97%]
APIs oflibuv
.- Add
thread
,cond
,mutex
,rwlock
,sem
,once
andbarrier
. - Add
process
. - Finish
fs
.
- Add
- Add scripts to calculate coverage and compatibility of
libuv
. - Designed and implemented a more secure resource lifecycle management.
- Verified compilation in latest ubuntu
gcc
andclang
, windowsmsvc
andmingw
. - Verified compilation in GCC
9
,10
,11
,12
. - Verified compilation in libuv
>= 1.0.0, <= 1.48.0
.
uv::timer_t::get_due_in
implementation error.- fix
uv::signal_t::start
parameter.
- Add more basic usage examples.
- Finish "Miscellaneous utilities" part.
Date: 2024-06-16
- The inheritance relationship of objects is basically stable, but there are still some interfaces that need to be encapsulated, and the details of encapsulation may also change.
- Encapsulate some necessary classes and add usage examples.