https://github.com/bemanproject/task

Implementation of coroutine `task` (P3552)

https://github.com/bemanproject/task

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (16.8%) to scientific vocabulary
Last synced: 10 months ago · JSON representation

Repository

Implementation of coroutine `task` (P3552)

Basic Info
  • Host: GitHub
  • Owner: bemanproject
  • License: other
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 735 KB
Statistics
  • Stars: 14
  • Watchers: 8
  • Forks: 6
  • Open Issues: 3
  • Releases: 0
Created over 1 year ago · Last pushed 10 months ago
Metadata Files
Readme Contributing License Codeowners

README.md

beman.task: Beman Library Implementation of task (P3552)

Continuous Integration Tests Target Standard Coverage

beman::execution::task<T, Context> is a class template which is used as the the type of coroutine tasks. The corresponding objects are senders. The first template argument (T) defines the result type which becomes a set_value_t(T) completion signatures. The second template argument (Context) provides a way to configure the behavior of the coroutine. By default it can be left alone.

Implements: std::execution::task proposed in Add a Coroutine Lazy Type (P3552).

Usage

The following code snippet shows a basic use of beman::task::task using sender/receiver facilities to implement version of hello, world:

```cpp

include

include

include

namespace ex = beman::execution; namespace ly = beman::task;

int main() { return std::get<0>(*ex::syncwait([]->ex::task { std::cout << "Hello, world!\n"; coreturn co_await ex::just(0); }())); } ```

Full runnable examples can be found in examples/ (e.g., ./examples/hello.cpp). For some explanation see ./docs/examples.md.

Help Welcome

There are plenty of things which need to be done. See the contributions page for some ideas how to contribute. The resources page contains some links for general information about coroutines.

Building beman.task

Dependencies

This project depends on beman::execution (which will be automatically obtained using cmake's FetchContent*).

Build-time dependencies:

  • cmake
  • ninja, make, or another CMake-supported build system
    • CMake defaults to "Unix Makefiles" on POSIX systems

How to build beman.task

This project strives to be as normal and simple a CMake project as possible. This build workflow in particular will work, producing a static libbeman.task.a library, ready to package with its headers:

```shell

Build beman.task.

$ cmake --workflow --preset gcc-debug $ cmake --workflow --preset gcc-release

Install beman.task into your system.

$ cmake --install build/gcc-release/ --prefix /opt/beman.task/ -- Install configuration: "RelWithDebInfo" -- Installing: /opt/beman.task/lib/libbeman.task.a -- Installing: /opt/beman.task/include/beman/task/task.hpp [...]

$ tree /opt/beman.task/ /opt/beman.task/ ├── include │   └── beman │   └── task │   ├── detail │   │   ├── affineon.hpp │   │   ├── ... │   │   ├── task.hpp │   │   └── witherror.hpp │   └── task.hpp └── lib ├── cmake │   └── beman │   └── task │   └── BemanTaskConfig.cmake └── libbeman.task.a

9 directories, 26 files ```

Contributing

Please do! Issues and pull requests are appreciated.

Owner

  • Name: The Beman Project
  • Login: bemanproject
  • Kind: organization

Supporting the efficient design and adoption of the highest quality C++ standard libraries

GitHub Events

Total
  • Issues event: 10
  • Watch event: 5
  • Delete event: 22
  • Issue comment event: 16
  • Push event: 120
  • Pull request review event: 75
  • Pull request review comment event: 232
  • Pull request event: 41
  • Fork event: 4
  • Create event: 24
Last Year
  • Issues event: 10
  • Watch event: 5
  • Delete event: 22
  • Issue comment event: 16
  • Push event: 120
  • Pull request review event: 75
  • Pull request review comment event: 232
  • Pull request event: 41
  • Fork event: 4
  • Create event: 24

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 9
  • Total pull requests: 25
  • Average time to close issues: 19 days
  • Average time to close pull requests: 2 days
  • Total issue authors: 6
  • Total pull request authors: 3
  • Average comments per issue: 1.33
  • Average comments per pull request: 0.36
  • Merged pull requests: 16
  • Bot issues: 3
  • Bot pull requests: 0
Past Year
  • Issues: 9
  • Pull requests: 25
  • Average time to close issues: 19 days
  • Average time to close pull requests: 2 days
  • Issue authors: 6
  • Pull request authors: 3
  • Average comments per issue: 1.33
  • Average comments per pull request: 0.36
  • Merged pull requests: 16
  • Bot issues: 3
  • Bot pull requests: 0
Top Authors
Issue Authors
  • github-actions[bot] (3)
  • neatudarius (2)
  • ednolan (1)
  • JeffGarland (1)
  • RaduNichita (1)
  • ArashPartow (1)
Pull Request Authors
  • dietmarkuehl (17)
  • ednolan (4)
  • neatudarius (1)
Top Labels
Issue Labels
Pull Request Labels

Dependencies

.github/workflows/ci_tests.yml actions
  • TheMrMilchmann/setup-msvc-dev v3 composite
  • actions/checkout v4 composite
  • lukka/get-cmake latest composite
.github/workflows/pre-commit.yml actions
  • actions/checkout v4 composite
  • actions/setup-python v5 composite
  • pre-commit/action v3.0.1 composite
  • reviewdog/action-suggester v1 composite
  • tj-actions/changed-files v45 composite
.devcontainer/Dockerfile docker
  • mcr.microsoft.com/devcontainers/cpp 1-ubuntu-22.04 build