Fix gdb pretty-printer compatibility with libc++.
Add gdb pretty printing for any_executor and io_context executors.
Currently the awaitable_backtrace command only supports programs compiled using clang.
https://github.com/chriskohlhoff/asio-debugger-extensions/blob/5ece4d040b1654c8208c246b16fc0f36f9c2a3da/lldb/awaitable_backtrace.py#L26
(lldb) abt
Traceback (most recent call last):
File "/Users/xxx/.lldb/scripts/awaitable_backtrace.py", line 44, in awaitable_backtrace
walk_awaitable_frames(target, awaitable_frame)
File "/Users/xxx/.lldb/scripts/awaitable_backtrace.py", line 35, in walk_awaitable_frames
print_coro(target, frame.GetChildMemberWithName("coro_"), depth)
File "/Users/xxx/.lldb/scripts/awaitable_backtrace.py", line 26, in print_coro
address = coro_data.deref.GetValueAsAddress()
AttributeError: 'SBValue' object has no attribute 'GetValueAsAddress'
fix it with: address = int(coro_data.deref.GetValue(), base=16)
Fix error in clion bundled lldb
Add support for coroutines that use gcc and libstdc++.
Revision history.
Regenerate documentation.
Switch to 'pax' tar file format.
asio version 1.27.0 released
Fix doc generation for literal operators.
Fix deferred interoperability with multiple completion signatures.
Fix channels to support C++14 and (partially) C++11.
C++11 support is limited to channels with a single completion signature, or channels with a void() signature (plus the error signature added by the channel traits).
Remove spurious comment.
Add interoperability between channels and associated_immediate_executor.
Fix shadowed variable name.
Add more signal_set_base::flags_t constants
This commit only adds useful POSIX constants that don't conflict with asio's signal handling strategy (e.g. SA_SIGINFO would break asio interface, so it's avoided). Non-POSIX constants specific to certain operating systems (e.g. Linux's SA_UNSUPPORTED) are ignored.
Fix use of nullptr.
Ensure buffered messages can still be received when channel is closed.
Fix any_completion_handler assignment operator.
Prevent accidental copying of any_completion_handler.
Suppress spurious 'potential null dereference' warnings.
Fix spurious operator precedence warning with MSVC.
Use uint64_t for OpenSSL options.
Expose sigaction() flags via optional argument to signal_set::add.
When registering a signal, it is now possible to pass flags that specify the behaviour associated with the signal. These flags are specified as an enum type in a new class, signal_set_base, and are passed to the underlying sigaction() call. For example:
asio::signal_set sigs(my_io_context); sigs.add(SIGINT, asio::signal_set::flags::restart);
Specifying flags other than flags::dont_care will fail unless sigaction() is supported by the target operating system. Since signal registration is global, conflicting flags (multiple registrations that pass differing flags other than flags::dont_care) will also result in an error.
Reset timer_thread_ in win_iocp_io_context::shutdown().
Resets timer_thread in shutdown for the case when shutdown is called more than once.
Add any_completion_handler to the documentation.
Fix execution context overloads of get_associated_executor and get_associated_immediate_executor.
Regenerate documentation.
Fix doc generation for literal operators.
Fix deferred interoperability with multiple completion signatures.
Fix channels to support C++14 and (partially) C++11.
C++11 support is limited to channels with a single completion signature, or channels with a void() signature (plus the error signature added by the channel traits).
Remove spurious comment.
Add interoperability between channels and associated_immediate_executor.
Fix shadowed variable name.
Add more signal_set_base::flags_t constants
This commit only adds useful POSIX constants that don't conflict with asio's signal handling strategy (e.g. SA_SIGINFO would break asio interface, so it's avoided). Non-POSIX constants specific to certain operating systems (e.g. Linux's SA_UNSUPPORTED) are ignored.
Regenerate documentation.
Fix deferred interoperability with multiple completion signatures.
Fix channels to support C++14 and (partially) C++11.
C++11 support is limited to channels with a single completion signature, or channels with a void() signature (plus the error signature added by the channel traits).
Remove spurious comment.
Add interoperability between channels and associated_immediate_executor.
Fix shadowed variable name.
Add more signal_set_base::flags_t constants
This commit only adds useful POSIX constants that don't conflict with asio's signal handling strategy (e.g. SA_SIGINFO would break asio interface, so it's avoided). Non-POSIX constants specific to certain operating systems (e.g. Linux's SA_UNSUPPORTED) are ignored.
Regenerate documentation.
Revision history.
Version bump.
Fix channels to support C++14 and (partially) C++11.
C++11 support is limited to channels with a single completion signature, or channels with a void() signature (plus the error signature added by the channel traits).
Remove spurious comment.
Add interoperability between channels and associated_immediate_executor.
Fix shadowed variable name.
Add more signal_set_base::flags_t constants
This commit only adds useful POSIX constants that don't conflict with asio's signal handling strategy (e.g. SA_SIGINFO would break asio interface, so it's avoided). Non-POSIX constants specific to certain operating systems (e.g. Linux's SA_UNSUPPORTED) are ignored.
Fix doc generation for literal operators.
Fix use of nullptr.
Ensure buffered messages can still be received when channel is closed.
Fix any_completion_handler assignment operator.
Prevent accidental copying of any_completion_handler.
Suppress spurious 'potential null dereference' warnings.
Fix spurious operator precedence warning with MSVC.
Use uint64_t for OpenSSL options.
Expose sigaction() flags via optional argument to signal_set::add.
When registering a signal, it is now possible to pass flags that specify the behaviour associated with the signal. These flags are specified as an enum type in a new class, signal_set_base, and are passed to the underlying sigaction() call. For example:
asio::signal_set sigs(my_io_context); sigs.add(SIGINT, asio::signal_set::flags::restart);
Specifying flags other than flags::dont_care will fail unless sigaction() is supported by the target operating system. Since signal registration is global, conflicting flags (multiple registrations that pass differing flags other than flags::dont_care) will also result in an error.
Reset timer_thread_ in win_iocp_io_context::shutdown().
Resets timer_thread in shutdown for the case when shutdown is called more than once.
Add missing file model_dox.txt.
Add any_completion_handler to the documentation.
Fix execution context overloads of get_associated_executor and get_associated_immediate_executor.
Fix use of nullptr.
Ensure buffered messages can still be received when channel is closed.
Fix any_completion_handler assignment operator.
Prevent accidental copying of any_completion_handler.
Suppress spurious 'potential null dereference' warnings.
Fix spurious operator precedence warning with MSVC.
Use uint64_t for OpenSSL options.
Expose sigaction() flags via optional argument to signal_set::add.
When registering a signal, it is now possible to pass flags that specify the behaviour associated with the signal. These flags are specified as an enum type in a new class, signal_set_base, and are passed to the underlying sigaction() call. For example:
asio::signal_set sigs(my_io_context); sigs.add(SIGINT, asio::signal_set::flags::restart);
Specifying flags other than flags::dont_care will fail unless sigaction() is supported by the target operating system. Since signal registration is global, conflicting flags (multiple registrations that pass differing flags other than flags::dont_care) will also result in an error.
Reset timer_thread_ in win_iocp_io_context::shutdown().
Resets timer_thread in shutdown for the case when shutdown is called more than once.
Add any_completion_handler to the documentation.
Fix execution context overloads of get_associated_executor and get_associated_immediate_executor.
Regenerate documentation.
Expose sigaction() flags via optional argument to signal_set::add.
When registering a signal, it is now possible to pass flags that specify the behaviour associated with the signal. These flags are specified as an enum type in a new class, signal_set_base, and are passed to the underlying sigaction() call. For example:
asio::signal_set sigs(my_io_context); sigs.add(SIGINT, asio::signal_set::flags::restart);
Specifying flags other than flags::dont_care will fail unless sigaction() is supported by the target operating system. Since signal registration is global, conflicting flags (multiple registrations that pass differing flags other than flags::dont_care) will also result in an error.
Reset timer_thread_ in win_iocp_io_context::shutdown().
Resets timer_thread in shutdown for the case when shutdown is called more than once.
Add missing file model_dox.txt.
Add any_completion_handler to the documentation.
Fix execution context overloads of get_associated_executor and get_associated_immediate_executor.
Use uint64_t for OpenSSL options.
Add optional flags argument to signal_set::add.
When registered for a signal, it is now possible to pass flags that specify the behaviour associated with the signal. These flags are specified as an enum type in a new class, signal_set_base. For example:
asio::signal_set sigs(my_io_context); sigs.add(SIGINT, asio::signal_set::flags::restart);
Specifying flags other than flags::dont_care will fail unless sigaction() is supported by the target operating system. Since signal registration is global, conflicting flags (multiple registrations that pass differing flags other than flags::dont_care) will also result in an error.
Reset timer_thread_ in win_iocp_io_context::shutdown().
Resets timer_thread in shutdown for the case when shutdown is called more than once.
Fix spurious operator precedence warning with MSVC.
Fix any_completion_handler assignment operator.
Prevent accidental copying of any_completion_handler.
Suppress spurious 'potential null dereference' warnings.
Update copyright notices.
Move dispatch, post and defer initiation objects to detail headers.
Add associated_immediate_executor associator.
Add bind_immediate_executor function and immediate_executor_binder adapter.
Change allocator_binder to support detection of unspecialised associators.
Change executor_binder to support detection of unspecialised associators.
Change cancellation_slot_binder to support detection of unspecialised associators.
Support immediate completion with reactor-based sockets and descriptors.
Fix ambiguity of associated_cancellation_slot<reference_wrapper>::get().
Add user-defined literals for asio buffer types.
The _buf literal suffix, defined in namespace asio::buffer_literals, may be used to create const_buffer objects from string, binary integer, and hexadecimal integer literals. These buffer literals may be arbitrarily long. For example:
using namespace asio::buffer_literals;
asio::const_buffer b1 = "hello"_buf; asio::const_buffer b2 = 0xdeadbeef_buf; asio::const_buffer b3 = 0x01234567'89abcdef'01234567'89abcdef_buf; asio::const_buffer b4 = 0b1010101011001100_buf;
The memory associated with a buffer literal is valid for the lifetime of the program. This means that the buffer can be safely used with asynchronous operations:
async_write(my_socket, "hello"_buf, my_handler);
Add protocol for AF_UNIX+SOCK_SEQPACKET.
Fix awaitable exception pointer check typos.
Fix experimental::channel try_send failure after cancel.
Fix thread_pool::join() deadlock when pool has no internal threads.
Fix pipe release() when using io_uring.
Fix initialization of sqe->user_data for reuse by io_uring_service.
The value of user_data in a submission queue entry is only initialized with with the ring itself, remaining unchanged after use and even through calls to io_uring_get_sqe(3). Many submission paths apply io_uring_sqe_set_data(3) but the remainder are submitted with stale values that can apply completion operations on the wrong queues with the wrong results, causing obscure bugs.
Fix execution context overload of get_associated_executor.
Explicitly shutdown in io_context and thread_pool destructor.
Fixes a use-after destroy when shutdown() is called from the base class execution_context destructor, and this in turns triggers the destruction of outstanding work objects.
Merge asio from 'develop'.
Revision history.
asio version 1.26.0 released
Update copyright notices.
Move dispatch, post and defer initiation objects to detail headers.
Add associated_immediate_executor associator.
Add bind_immediate_executor function and immediate_executor_binder adapter.
Change allocator_binder to support detection of unspecialised associators.
Change executor_binder to support detection of unspecialised associators.
Change cancellation_slot_binder to support detection of unspecialised associators.
Support immediate completion with reactor-based sockets and descriptors.
Fix ambiguity of associated_cancellation_slot<reference_wrapper>::get().
Add user-defined literals for asio buffer types.
The _buf literal suffix, defined in namespace asio::buffer_literals, may be used to create const_buffer objects from string, binary integer, and hexadecimal integer literals. These buffer literals may be arbitrarily long. For example:
using namespace asio::buffer_literals;
asio::const_buffer b1 = "hello"_buf; asio::const_buffer b2 = 0xdeadbeef_buf; asio::const_buffer b3 = 0x01234567'89abcdef'01234567'89abcdef_buf; asio::const_buffer b4 = 0b1010101011001100_buf;
The memory associated with a buffer literal is valid for the lifetime of the program. This means that the buffer can be safely used with asynchronous operations:
async_write(my_socket, "hello"_buf, my_handler);
Add protocol for AF_UNIX+SOCK_SEQPACKET.
Fix awaitable exception pointer check typos.
Fix experimental::channel try_send failure after cancel.
Fix thread_pool::join() deadlock when pool has no internal threads.
Fix pipe release() when using io_uring.
Fix initialization of sqe->user_data for reuse by io_uring_service.
The value of user_data in a submission queue entry is only initialized with with the ring itself, remaining unchanged after use and even through calls to io_uring_get_sqe(3). Many submission paths apply io_uring_sqe_set_data(3) but the remainder are submitted with stale values that can apply completion operations on the wrong queues with the wrong results, causing obscure bugs.
Fix execution context overload of get_associated_executor.
Explicitly shutdown in io_context and thread_pool destructor.
Fixes a use-after destroy when shutdown() is called from the base class execution_context destructor, and this in turns triggers the destruction of outstanding work objects.
Update copyright notices.
Move dispatch, post and defer initiation objects to detail headers.
Add associated_immediate_executor associator.
Add bind_immediate_executor function and immediate_executor_binder adapter.
Change allocator_binder to support detection of unspecialised associators.
Change executor_binder to support detection of unspecialised associators.
Change cancellation_slot_binder to support detection of unspecialised associators.
Support immediate completion with reactor-based sockets and descriptors.
Fix ambiguity of associated_cancellation_slot<reference_wrapper>::get().
Add user-defined literals for asio buffer types.
The _buf literal suffix, defined in namespace asio::buffer_literals, may be used to create const_buffer objects from string, binary integer, and hexadecimal integer literals. These buffer literals may be arbitrarily long. For example:
using namespace asio::buffer_literals;
asio::const_buffer b1 = "hello"_buf; asio::const_buffer b2 = 0xdeadbeef_buf; asio::const_buffer b3 = 0x01234567'89abcdef'01234567'89abcdef_buf; asio::const_buffer b4 = 0b1010101011001100_buf;
The memory associated with a buffer literal is valid for the lifetime of the program. This means that the buffer can be safely used with asynchronous operations:
async_write(my_socket, "hello"_buf, my_handler);
Add protocol for AF_UNIX+SOCK_SEQPACKET.
Fix awaitable exception pointer check typos.
Fix experimental::channel try_send failure after cancel.
Fix thread_pool::join() deadlock when pool has no internal threads.
Fix pipe release() when using io_uring.
Fix initialization of sqe->user_data for reuse by io_uring_service.
The value of user_data in a submission queue entry is only initialized with with the ring itself, remaining unchanged after use and even through calls to io_uring_get_sqe(3). Many submission paths apply io_uring_sqe_set_data(3) but the remainder are submitted with stale values that can apply completion operations on the wrong queues with the wrong results, causing obscure bugs.
Fix execution context overload of get_associated_executor.
Explicitly shutdown in io_context and thread_pool destructor.
Fixes a use-after destroy when shutdown() is called from the base class execution_context destructor, and this in turns triggers the destruction of outstanding work objects.
Add protocol for AF_UNIX+SOCK_SEQPACKET.
Fix awaitable exception pointer check typos.
Fix experimental::channel try_send failure after cancel.
Fix thread_pool::join() deadlock when pool has no internal threads.
Fix pipe release() when using io_uring.
Fix initialization of sqe->user_data for reuse by io_uring_service.
The value of user_data in a submission queue entry is only initialized with with the ring itself, remaining unchanged after use and even through calls to io_uring_get_sqe(3). Many submission paths apply io_uring_sqe_set_data(3) but the remainder are submitted with stale values that can apply completion operations on the wrong queues with the wrong results, causing obscure bugs.
Fix execution context overload of get_associated_executor.
Explicitly shutdown in io_context and thread_pool destructor.
Fixes a use-after destroy when shutdown() is called from the base class execution_context destructor, and this in turns triggers the destruction of outstanding work objects.
Add associated_immediate_executor associator.
Add bind_immediate_executor function and immediate_executor_binder adapter.
Change allocator_binder to support detection of unspecialised associators.
Change executor_binder to support detection of unspecialised associators.
Change cancellation_slot_binder to support detection of unspecialised associators.
Support immediate completion with reactor-based sockets and descriptors.
Fix ambiguity of associated_cancellation_slot<reference_wrapper>::get().
Add user-defined literals for asio buffer types.
The _buf literal suffix, defined in namespace asio::buffer_literals, may be used to create const_buffer objects from string, binary integer, and hexadecimal integer literals. These buffer literals may be arbitrarily long. For example:
using namespace asio::buffer_literals;
asio::const_buffer b1 = "hello"_buf; asio::const_buffer b2 = 0xdeadbeef_buf; asio::const_buffer b3 = 0x01234567'89abcdef'01234567'89abcdef_buf; asio::const_buffer b4 = 0b1010101011001100_buf;
The memory associated with a buffer literal is valid for the lifetime of the program. This means that the buffer can be safely used with asynchronous operations:
async_write(my_socket, "hello"_buf, my_handler);