Yet Another Concurrency Library

Overview
Issues
  • Improve docs

    Improve docs

    MAKE IT BETTER

    • [ ] ~~#108~~
    • [ ] ~~#107~~
    • [x] Fix typo, grammar, etc
    • [x] Fix undocumentated API
    • [x] Translate design doc to English and separate design/done/plan
    documentation devops 
    opened by MBkkt 3
  • Make CI better

    Make CI better

    Purpose

    Related Information

    • [ ] Design document: ...
    • [ ] Bench PR: ...

    Testing

    • [ ] This change is a trivial rework or code cleanup without any test coverage.
    • [ ] This change is already covered by existing tests.
    • [ ] This PR adds tests that were used to verify all changes.
    • [ ] There are tests in an external testing repository: ...
    opened by MBkkt 2
  • Make few tasks

    Make few tasks

    Purpose

    • Remove atomic counter in shared state (we can use our state machine to determine when we need to remove it). atomic counter increment/decrement have a big cost in some scenarios
    • Decrease size of Future shared state to make it allocation cheaper
    • Some refactoring
    • Few fixes
    • Fix macOS and Windows CI
    • Add gcc-12 to CI

    Related Information

    • [ ] Design document:
    • [ ] Bench PR: ...

    Testing

    • [ ] This change is a trivial rework or code cleanup without any test coverage.
    • [ ] This change is already covered by existing tests.
    • [ ] This PR adds tests that were used to verify all changes.
    • [ ] There are tests in an external testing repository: ...
    devops performance refactoring 
    opened by MBkkt 2
  • Another small refactoring

    Another small refactoring

    Purpose

    so lazy...

    Related Information

    • [ ] Design document: ...
    • [ ] Bench PR: ...

    Testing

    • [ ] This change is a trivial rework or code cleanup without any test coverage.
    • [ ] This change is already covered by existing tests.
    • [ ] This PR adds tests that were used to verify all changes.
    • [ ] There are tests in an external testing repository: ...
    opened by MBkkt 2
  • Small refactoring

    Small refactoring

    Purpose

    So lazy...

    Related Information

    • [ ] Design document: ...
    • [ ] Bench PR: ...

    Testing

    • [ ] This change is a trivial rework or code cleanup without any test coverage.
    • [ ] This PR adds tests that were used to verify all changes.
    • [ ] There are tests in an external testing repository: ...
    • [ ] This change is already covered by existing tests.
    opened by MBkkt 2
  • Some fixes for coverage

    Some fixes for coverage

    Purpose

    Related Information

    • [ ] Design document: ...
    • [ ] Bench PR: ...

    Testing

    • [ ] This change is a trivial rework or code cleanup without any test coverage.
    • [ ] This change is already covered by existing tests.
    • [ ] This PR adds tests that were used to verify all changes.
    • [ ] There are tests in an external testing repository: ...
    opened by MBkkt 2
  • Small fixes

    Small fixes

    opened by MBkkt 2
  • Execution of coroutine via executor

    Execution of coroutine via executor

    Purpose

    Possibility to execute coroutines via custom executors

    Details

    1. Awaitable ITask object
    2. Convenient wrapper for this

    TODO

    • [x] Fix Cancel test
    • [x] Fix TSAN error in tests
    • [x] Think about dummy test
    enhancement 
    opened by mkornaukhov03 2
  • Minor fixes and refactoring

    Minor fixes and refactoring

    • Minor changes and code style fixes
    • Implemented amazing testing system (see WhenAny tests)

    Detailed description:

    • Add branch coverage to lcov report
    • Update .clang-tidy rules to avoid stupid warnings
    • Fix stupid GCC warning
    • Make style_guide more comprehensive
    • Add MBkkt's TODO
    • Implement ranged Wait/WaitFor/WaitUntil for iterators
    • Fix Wait tests and update test/CMakeLists.txt
    • Update WhenAny implementation
    • Make ultimate WhenAny tests using cartesian product of different params
    • Add InlineCore
    • Separate WhenAll implementation from interface
    • Code style fixes
    • WaitGroup fixes
    documentation enhancement devops 
    opened by madoka-wizard 2
  • Fix data race in coroutine

    Fix data race in coroutine

    Purpose

    Fix data race in coroutine

    Related Information

    • [ ] Design document: ...
    • [ ] Bench PR: ...

    Testing

    • [ ] This change is a trivial rework or code cleanup without any test coverage.
    • [ ] This change is already covered by existing tests.
    • [ ] This PR adds tests that were used to verify all changes.
    • [ ] There are tests in an external testing repository: ...
    opened by MBkkt 1
  • Some refactoring

    Some refactoring

    Purpose

    • Improve CI
    • Add new MakeFuture implementation and tests for it
    • Add AtomicEvent also, make Event based Wait*
    • Add yaclib/config.hpp to all files
    • Small refactoring
      • Fix CMake config
      • yaclib instead of ${PROJECT_NAME}
    • Then refactor:
      • Reduce duplication
      • Make Result better
      • Use reference instead of pointer for inline_core
    • Fix compile error: we should use std namespace for typedefs that included by
    • Fix tests

    Related Information

    Testing

    • [x] This change is a trivial rework or code cleanup without any test coverage.
    • [x] This change is already covered by existing tests.
    • [x] This PR adds tests that were used to verify all changes.
    • [ ] There are tests in an external testing repository: ...
    enhancement performance refactoring 
    opened by MBkkt 1
  • Experiment with coverage

    Experiment with coverage

    Purpose

    Experiment with conditions and functions coverage:

    • Add new tests
    • Try to use other tools for collect coverage info
    • Disable coverage for some code
    • Try to find best compiler options
    • ...

    Related Information

    • [ ] Design document: ...
    • [ ] Bench PR: ...

    Testing

    • [ ] This change is a trivial rework or code cleanup without any test coverage.
    • [ ] This change is already covered by existing tests.
    • [ ] This PR adds tests that were used to verify all changes.
    • [ ] There are tests in an external testing repository: ...
    devops WIP 
    opened by MBkkt 0
Releases(v2022.07.30)
  • v2022.07.30(Jul 30, 2022)

    What's Changed

    • refactor fault by @myannyax in https://github.com/YACLib/YACLib/pull/174
    • Mutex for coroutines by @mkornaukhov03 in https://github.com/YACLib/YACLib/pull/177
    • Fix promise type for awaiters & Apple Clang TSAN error by @mkornaukhov03 in https://github.com/YACLib/YACLib/pull/179
    • fault fibers 1thread by @myannyax in https://github.com/YACLib/YACLib/pull/173
    • Async wait group by @mkornaukhov03 in https://github.com/YACLib/YACLib/pull/181
    • Create issue template by @kononovk in https://github.com/YACLib/YACLib/pull/97

    Make few tasks by @MBkkt in https://github.com/YACLib/YACLib/pull/184:

    • Remove atomic counter in shared state (we can use our state machine to determine when we need to remove it). atomic counter increment/decrement have a big cost in some scenarios
    • Decrease size of Future shared state to make it allocation cheaper
    • Some refactoring
    • Few fixes
    • Fix macOS and Windows CI
    • Add gcc-12 to CI
    • Make CI better by @MBkkt in https://github.com/YACLib/YACLib/pull/185

    Full Changelog: https://github.com/YACLib/YACLib/compare/v2022.04.24...v2022.07.30

    Source code(tar.gz)
    Source code(zip)
  • v2022.04.24(Apr 24, 2022)

    What's Changed

    • Labels instead of emoji in the PR description by @MBkkt in https://github.com/YACLib/YACLib/pull/154
    • Fix schedule time by @MBkkt in https://github.com/YACLib/YACLib/pull/153
    • Reduce the size of allocation to the shared state by @MBkkt in https://github.com/YACLib/YACLib/pull/152
    • Coroutine support for Future by @mkornaukhov03 in https://github.com/YACLib/YACLib/pull/136
    • Remove redundant header by @mkornaukhov03 in https://github.com/YACLib/YACLib/pull/158
    • fault injection based on std::thread's by @myannyax in https://github.com/YACLib/YACLib/pull/132
    • Fix data race in coroutine by @mkornaukhov03 in https://github.com/YACLib/YACLib/pull/163
    • Some refactoring by @MBkkt in https://github.com/YACLib/YACLib/pull/160
    • Small fixes by @MBkkt in https://github.com/YACLib/YACLib/pull/167
    • Some fixes for coverage by @MBkkt in https://github.com/YACLib/YACLib/pull/168
    • Small refactoring by @MBkkt in https://github.com/YACLib/YACLib/pull/170
    • Remove unnecessary IncRef also make Submit unconditional by @MBkkt in https://github.com/YACLib/YACLib/pull/169
    • Another small refactoring by @MBkkt in https://github.com/YACLib/YACLib/pull/172

    Full Changelog: https://github.com/YACLib/YACLib/compare/v1.0.0...v2022.04.24

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Feb 16, 2022)

    What's Changed

    • Add WhenAny examples #85 by @Ri7ay in https://github.com/YACLib/YACLib/pull/86
    • Big refactoring by @MBkkt in https://github.com/YACLib/YACLib/pull/88
    • Mbkkt fixes by @MBkkt in https://github.com/YACLib/YACLib/pull/89
    • WIP Waits for Futures by @kononovk in https://github.com/YACLib/YACLib/pull/90
    • Delete useless namespaces by @kononovk in https://github.com/YACLib/YACLib/pull/95
    • Better README by @kononovk in https://github.com/YACLib/YACLib/pull/96
    • Better test coverage by @kononovk in https://github.com/YACLib/YACLib/pull/101
    • Make YACLib build faster by @MBkkt in https://github.com/YACLib/YACLib/pull/100
    • Add WaitGroup #81 by @Ri7ay in https://github.com/YACLib/YACLib/pull/99
    • Update Discord invite link by @MBkkt in https://github.com/YACLib/YACLib/pull/110
    • Update style_guide.md by @myannyax in https://github.com/YACLib/YACLib/pull/111
    • Small refactoring ¯_(ツ)_/¯ by @MBkkt in https://github.com/YACLib/YACLib/pull/112
    • Remove unnecessary allocation for Then(<Future(T)>) by @MBkkt in https://github.com/YACLib/YACLib/pull/114
    • Improve When(Any/All) #115 by @Ri7ay in https://github.com/YACLib/YACLib/pull/117
    • WIP Fix docs by @kononovk in https://github.com/YACLib/YACLib/pull/120
    • Fix Counter by @kononovk in https://github.com/YACLib/YACLib/pull/122
    • Minor fixes and refactoring, part 2 by @kononovk in https://github.com/YACLib/YACLib/pull/123
    • Rename Serial into Strand by @kononovk in https://github.com/YACLib/YACLib/pull/125
    • add typename in style guide by @myannyax in https://github.com/YACLib/YACLib/pull/127
    • Improve CI by @MBkkt in https://github.com/YACLib/YACLib/pull/130
    • add yaclib_std headers & replace corresponding std usages in project files with them by @myannyax in https://github.com/YACLib/YACLib/pull/131
    • Some fixes and add more CI configuration by @MBkkt in https://github.com/YACLib/YACLib/pull/134
    • Fix CI and some other shit by @MBkkt in https://github.com/YACLib/YACLib/pull/138
    • Some improvements by @MBkkt in https://github.com/YACLib/YACLib/pull/139
    • Patch AtomicCounter by @mkornaukhov03 in https://github.com/YACLib/YACLib/pull/151
    • Fix clang CI and some performance improvements by @MBkkt in https://github.com/YACLib/YACLib/pull/149

    New Contributors

    • @mkornaukhov03 made their first contribution in https://github.com/YACLib/YACLib/pull/151

    Full Changelog: https://github.com/YACLib/YACLib/compare/v1.0.0-rc2...v1.0.0

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0-rc2(Sep 12, 2021)

  • v1.0.0-rc1(Aug 31, 2021)

OOX: Out-of-Order Executor library. Yet another approach to efficient and scalable tasking API and task scheduling.

OOX Out-of-Order Executor library. Yet another approach to efficient and scalable tasking API and task scheduling. Try it Requirements: Install cmake,

Intel Corporation 17 Mar 10, 2022
The C++ Standard Library for Parallelism and Concurrency

Documentation: latest, development (master) HPX HPX is a C++ Standard Library for Concurrency and Parallelism. It implements all of the corresponding

The STE||AR Group 1.9k Jul 31, 2022
A header-only C++ library for task concurrency

transwarp Doxygen documentation transwarp is a header-only C++ library for task concurrency. It allows you to easily create a graph of tasks where eve

Christian Blume 586 Jul 29, 2022
HPX is a C++ Standard Library for Concurrency and Parallelism

HPX is a C++ Standard Library for Concurrency and Parallelism. It implements all of the corresponding facilities as defined by the C++ Standard. Additionally, in HPX we implement functionalities proposed as part of the ongoing C++ standardization process. We also extend the C++ Standard APIs to the distributed case.

The STE||AR Group 1.9k Aug 1, 2022
The RaftLib C++ library, streaming/dataflow concurrency via C++ iostream-like operators

RaftLib is a C++ Library for enabling stream/data-flow parallel computation. Using simple right shift operators (just like the C++ streams that you wo

RaftLib 805 Aug 5, 2022
Async++ concurrency framework for C++11

Async++ Async++ is a lightweight concurrency framework for C++11. The concept was inspired by the Microsoft PPL library and the N3428 C++ standard pro

Amanieu d'Antras 1.1k Aug 5, 2022
Concurrency Kit 2.1k Aug 2, 2022
The libdispatch Project, (a.k.a. Grand Central Dispatch), for concurrency on multicore hardware

Grand Central Dispatch Grand Central Dispatch (GCD or libdispatch) provides comprehensive support for concurrent code execution on multicore hardware.

Apple 2.2k Aug 3, 2022
Go-style concurrency in C

LIBMILL Libmill is a library that introduces Go-style concurrency to C. Documentation For the documentation check the project website: http://libmill.

Martin Sustrik 2.6k Jul 21, 2022
Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all

concurrencpp, the C++ concurrency library concurrencpp is a tasking library for C++ allowing developers to write highly concurrent applications easily

David Haim 993 Jul 28, 2022
Complementary Concurrency Programs for course "Linux Kernel Internals"

Complementary Programs for course "Linux Kernel Internals" Project Listing tpool: A lightweight thread pool. tinync: A tiny nc implementation using co

null 223 Jul 25, 2022
Task System presented in "Better Code: Concurrency - Sean Parent"

task_system task_system provides a task scheduler for modern C++. The scheduler manages an array of concurrent queues A task, when scheduled, is enque

Pranav 28 Jun 30, 2022
Laughably simple Actor concurrency framework for C++20

Light Actor Framework Concurrency is a breeze. Also a nightmare, if you ever used synchronization techniques. Mostly a nightmare, though. This tiny li

Josip Palavra 94 Jun 21, 2022
Deadlockempire.github.io - The Deadlock Empire: Slay dragons, learn concurrency!

The Deadlock Empire A game that teaches locking and concurrency. It runs on https://deadlockempire.github.io. Contributing We gladly welcome all contr

null 795 Aug 7, 2022
Libgo - Go-style concurrency in C++11

libgo libgo -- a coroutine library and a parallel Programming Library Libgo is a stackful coroutine library for collaborative scheduling written in C+

null 2.7k Aug 9, 2022
Another NSP/XCI Installer

TinWoo A No-Bullshit-No-Bullshit NSP, NSZ, XCI, and XCZ Installer for Nintendo Switch Features Installs NSP/NSZ/XCI/XCZ files and split NSP/XCI files

null 141 Aug 6, 2022
Bolt is a C++ template library optimized for GPUs. Bolt provides high-performance library implementations for common algorithms such as scan, reduce, transform, and sort.

Bolt is a C++ template library optimized for heterogeneous computing. Bolt is designed to provide high-performance library implementations for common

null 355 Jun 27, 2022
oneAPI DPC++ Library (oneDPL) https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/dpc-library.html

oneAPI DPC++ Library (oneDPL) The oneAPI DPC++ Library (oneDPL) aims to work with the oneAPI DPC++ Compiler to provide high-productivity APIs to devel

oneAPI-SRC 632 Aug 7, 2022
ArrayFire: a general purpose GPU library.

ArrayFire is a general-purpose library that simplifies the process of developing software that targets parallel and massively-parallel architectures i

ArrayFire 3.9k Jul 31, 2022