libunifex/0.4.0

A prototype implementation of the C++ sender/receiver async programming model
Recipe info
LLVM-exception, Apache-2.0
2024-01-20

Available packages
Linux
Windows
macOS
macOS Apple Silicon

Install
Add the following line to your conanfile.txt:
[requires]
libunifex/0.4.0

Using libunifex

Note

If you are a new Conan user, we recommend reading the how to consume packages tutorial.

If you need additional assistance, please ask a question in the Conan Center Index repository.

Simplest use case consuming this recipe and assuming CMake as your local build tool:

[requires]
libunifex/0.4.0
[generators]
CMakeDeps
CMakeToolchain
[layout]
cmake_layout
from conan import ConanFile
from conan.tools.cmake import cmake_layout


class ExampleRecipe(ConanFile):
    settings = "os", "compiler", "build_type", "arch"
    generators = "CMakeDeps", "CMakeToolchain"

    def requirements(self):
        self.requires("libunifex/0.4.0")

    def layout(self):
        cmake_layout(self)

Now, you can run this Conan command to locally install (and build if necessary) this recipe and its dependencies (if any):

$ conan install conanfile.txt --build=missing

Useful information to take into account to consume this library:


These are the main declared targets:

  • CMake package name(s): unifex
  • CMake target name(s): unifex::unifex
  • unifex => unifex::unifex
    
  • pkg-config file name(s): unifex.pc
  • unifex => libunifex-unifex.pc
    

A simple use case using the CMake file name and the global target:

# ...
find_package(unifex REQUIRED)
# ...
target_link_libraries(YOUR_TARGET unifex::unifex)

These are all the available headers. Some of these ones might be non-public; make sure of it by visiting the libunifex homepage listed above:

#include "unifex/adapt_stream.hpp"
#include "unifex/allocate.hpp"
#include "unifex/any_object.hpp"
#include "unifex/any_ref.hpp"
#include "unifex/any_scheduler.hpp"
#include "unifex/any_sender_of.hpp"
#include "unifex/any_unique.hpp"
#include "unifex/async_auto_reset_event.hpp"
#include "unifex/async_manual_reset_event.hpp"
#include "unifex/async_mutex.hpp"
#include "unifex/async_scope.hpp"
#include "unifex/async_trace.hpp"
#include "unifex/at_coroutine_exit.hpp"
#include "unifex/await_transform.hpp"
#include "unifex/bind_back.hpp"
#include "unifex/blocking.hpp"
#include "unifex/bulk_join.hpp"
#include "unifex/bulk_schedule.hpp"
#include "unifex/bulk_transform.hpp"
#include "unifex/cleanup_adapt_stream.hpp"
#include "unifex/config.hpp"
#include "unifex/connect_awaitable.hpp"
#include "unifex/continuations.hpp"
#include "unifex/coroutine.hpp"
#include "unifex/coroutine_concepts.hpp"
#include "unifex/create.hpp"
#include "unifex/defer.hpp"
#include "unifex/delay.hpp"
#include "unifex/dematerialize.hpp"
#include "unifex/detach_on_cancel.hpp"
#include "unifex/detail/any_heap_allocated_storage.hpp"
#include "unifex/detail/atomic_intrusive_queue.hpp"
#include "unifex/detail/concept_macros.hpp"
#include "unifex/detail/debug_async_scope.hpp"
#include "unifex/detail/epilogue.hpp"
#include "unifex/detail/intrusive_heap.hpp"
#include "unifex/detail/intrusive_list.hpp"
#include "unifex/detail/intrusive_queue.hpp"
#include "unifex/detail/intrusive_stack.hpp"
#include "unifex/detail/prologue.hpp"
#include "unifex/detail/type_erasure_builtins.hpp"
#include "unifex/detail/unifex_fwd.hpp"
#include "unifex/detail/vtable.hpp"
#include "unifex/detail/with_abort_tag_invoke.hpp"
#include "unifex/detail/with_forwarding_tag_invoke.hpp"
#include "unifex/detail/with_type_erased_tag_invoke.hpp"
#include "unifex/done_as_optional.hpp"
#include "unifex/exception.hpp"
#include "unifex/execution_policy.hpp"
#include "unifex/file_concepts.hpp"
#include "unifex/filesystem.hpp"
#include "unifex/finally.hpp"
#include "unifex/find_if.hpp"
#include "unifex/for_each.hpp"
#include "unifex/fused_stop_source.hpp"
#include "unifex/get_allocator.hpp"
#include "unifex/get_execution_policy.hpp"
#include "unifex/get_stop_token.hpp"
#include "unifex/indexed_for.hpp"
#include "unifex/inline_scheduler.hpp"
#include "unifex/inplace_stop_token.hpp"
#include "unifex/into_variant.hpp"
#include "unifex/invoke.hpp"
#include "unifex/io_concepts.hpp"
#include "unifex/just.hpp"
#include "unifex/just_done.hpp"
#include "unifex/just_error.hpp"
#include "unifex/just_from.hpp"
#include "unifex/just_void_or_done.hpp"
#include "unifex/let_done.hpp"
#include "unifex/let_error.hpp"
#include "unifex/let_value.hpp"
#include "unifex/let_value_with.hpp"
#include "unifex/let_value_with_stop_source.hpp"
#include "unifex/let_value_with_stop_token.hpp"
#include "unifex/linux/io_epoll_context.hpp"
#include "unifex/linux/io_uring_context.hpp"
#include "unifex/linux/mmap_region.hpp"
#include "unifex/linux/monotonic_clock.hpp"
#include "unifex/linux/safe_file_descriptor.hpp"
#include "unifex/manual_event_loop.hpp"
#include "unifex/manual_lifetime.hpp"
#include "unifex/manual_lifetime_union.hpp"
#include "unifex/materialize.hpp"
#include "unifex/memory_resource.hpp"
#include "unifex/nest.hpp"
#include "unifex/never.hpp"
#include "unifex/new_thread_context.hpp"
#include "unifex/next_adapt_stream.hpp"
#include "unifex/null_receiver.hpp"
#include "unifex/on.hpp"
#include "unifex/on_stream.hpp"
#include "unifex/overload.hpp"
#include "unifex/pipe_concepts.hpp"
#include "unifex/range_stream.hpp"
#include "unifex/receiver_concepts.hpp"
#include "unifex/reduce_stream.hpp"
#include "unifex/repeat_effect_until.hpp"
#include "unifex/retry_when.hpp"
#include "unifex/schedule_with_subscheduler.hpp"
#include "unifex/scheduler_concepts.hpp"
#include "unifex/scope_guard.hpp"
#include "unifex/sender_concepts.hpp"
#include "unifex/sender_for.hpp"
#include "unifex/sequence.hpp"
#include "unifex/single.hpp"
#include "unifex/single_thread_context.hpp"
#include "unifex/socket_concepts.hpp"
#include "unifex/span.hpp"
#include "unifex/spawn_detached.hpp"
#include "unifex/spawn_future.hpp"
#include "unifex/spin_wait.hpp"
#include "unifex/static_thread_pool.hpp"
#include "unifex/std_concepts.hpp"
#include "unifex/stop_if_requested.hpp"
#include "unifex/stop_immediately.hpp"
#include "unifex/stop_token_concepts.hpp"
#include "unifex/stop_when.hpp"
#include "unifex/stream_concepts.hpp"
#include "unifex/swap.hpp"
#include "unifex/sync_wait.hpp"
#include "unifex/tag_invoke.hpp"
#include "unifex/take_until.hpp"
#include "unifex/task.hpp"
#include "unifex/then.hpp"
#include "unifex/then_execute.hpp"
#include "unifex/this.hpp"
#include "unifex/thread_unsafe_event_loop.hpp"
#include "unifex/timed_single_thread_context.hpp"
#include "unifex/trampoline_scheduler.hpp"
#include "unifex/transform_stream.hpp"
#include "unifex/type_erased_stream.hpp"
#include "unifex/type_index.hpp"
#include "unifex/type_list.hpp"
#include "unifex/type_traits.hpp"
#include "unifex/typed_via.hpp"
#include "unifex/typed_via_stream.hpp"
#include "unifex/unstoppable.hpp"
#include "unifex/unstoppable_token.hpp"
#include "unifex/upon_done.hpp"
#include "unifex/upon_error.hpp"
#include "unifex/v0/async_scope.hpp"
#include "unifex/v1/async_scope.hpp"
#include "unifex/v1/debug_async_scope.hpp"
#include "unifex/v2/async_scope.hpp"
#include "unifex/v2/debug_async_scope.hpp"
#include "unifex/variant_sender.hpp"
#include "unifex/via.hpp"
#include "unifex/via_stream.hpp"
#include "unifex/when_all.hpp"
#include "unifex/when_all_range.hpp"
#include "unifex/win32/detail/ntapi.hpp"
#include "unifex/win32/detail/safe_handle.hpp"
#include "unifex/win32/detail/types.hpp"
#include "unifex/win32/filetime_clock.hpp"
#include "unifex/win32/low_latency_iocp_context.hpp"
#include "unifex/win32/windows_thread_pool.hpp"
#include "unifex/with_allocator.hpp"
#include "unifex/with_query_value.hpp"
#include "unifex/with_scheduler_affinity.hpp"