Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cmazakas/fiona
C++20 coroutine runtime built on top of io_uring
https://github.com/cmazakas/fiona
Last synced: 7 days ago
JSON representation
C++20 coroutine runtime built on top of io_uring
- Host: GitHub
- URL: https://github.com/cmazakas/fiona
- Owner: cmazakas
- License: bsl-1.0
- Created: 2023-06-07T04:19:21.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-08T20:14:07.000Z (2 months ago)
- Last Synced: 2024-09-09T20:21:40.361Z (2 months ago)
- Language: C++
- Size: 902 KB
- Stars: 11
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Fiona
Fiona is a coroutine runtime library built on top of io_uring and C++20's
coroutines. This means that Fiona is a Linux-only library.Fiona includes a vcpkg.json for easy dependency management.
## Useful Scripts for Developers
### Testing
run.sh
```bash
#!/bin/bashset -e
clear
ulimit -n 25000
ninja -C __build__ fiona_verify_interface_header_sets
ctest \
--test-dir __build__/ \
-j20 \
--output-on-failure \
--schedule-random \
"$@"
```toolchain.cmake
```cmake
include(/home/exbigboss/cpp/vcpkg/scripts/buildsystems/vcpkg.cmake)
list(APPEND CMAKE_PREFIX_PATH /home/exbigboss/cpp/__install__)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_FLAGS_INIT "-Wall -Wextra -pedantic -fsanitize=address,undefined")
```For emulating a CI setup locally, use something like:
```bash
#!/bin/#!/bin/bashexport ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolizer-18
export UBSAN_OPTIONS=print_stacktrace=1
export ASAN_OPTIONS="detect_invalid_pointer_pairs=2:strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1"set -e
clean() {
input=$1
str=${input//[^a-zA-Z0-9]/}
echo "$str"
}build_and_test() {
local cc
cc=$(clean "$1")local build_type
build_type=$(clean "$2")local build_dir
local cxx_flags_initif [ -z "$3" ]; then
build_dir=__ci_build__/${cc}/${build_type}/nosan
cxx_flags_init="-Wall -Wextra -pedantic"
else
local sanitizers
sanitizers=$(clean "$3")
build_dir=__ci_build__/${cc}/${build_type}/${sanitizers}
cxx_flags_init="-Wall -Wextra -pedantic -fsanitize=$3"
fimkdir -p "$build_dir"
mkdir -p "__ci_build__/${cc}/${build_type}/test"
cp -r test/tls "__ci_build__/${cc}/${build_type}/test"cmake \
--no-warn-unused-cli \
-DVCPKG_INSTALL_OPTIONS="--no-print-usage --only-binarycaching" \
-DBUILD_SHARED_LIBS=ON \
-DBUILD_TESTING=ON \
-DFIONA_BUILD_TESTING=ON \
-DCMAKE_PREFIX_PATH=/home/exbigboss/cpp/__install__ \
-DCMAKE_BUILD_TYPE="$2" \
-DCMAKE_EXPORT_COMPILE_COMMANDS=TRUE \
-DCMAKE_CXX_COMPILER="$1" \
-DCMAKE_CXX_STANDARD=20 \
-DCMAKE_CXX_EXTENSIONS=OFF \
-DCMAKE_CXX_FLAGS_INIT="$cxx_flags_init" \
-DCMAKE_CXX_VISIBILITY_PRESET=hidden \
-DCMAKE_TOOLCHAIN_FILE=/home/exbigboss/cpp/vcpkg/scripts/buildsystems/vcpkg.cmake \
-S/home/exbigboss/cpp/fiona \
-B/home/exbigboss/cpp/fiona/"$build_dir" \
-G Ninjacmake --build /home/exbigboss/cpp/fiona/"$build_dir" --config "$2" --target all
ulimit -n 25000
ninja -C "$build_dir" fiona_verify_interface_header_sets
ctest \
--test-dir "$build_dir" \
-j20 \
--output-on-failure \
--schedule-random \
"$@"
}clear
rm -r __ci_build__
build_and_test "clang++-18" "release" "address,undefined"
build_and_test "clang++-18" "release" "thread"
build_and_test "clang++-18" "release"build_and_test "clang++-17" "release" "address,undefined"
build_and_test "clang++-17" "release" "thread"
build_and_test "clang++-17" "release"build_and_test "clang++-16" "release" "address,undefined"
build_and_test "clang++-16" "release" "thread"
build_and_test "clang++-16" "release"build_and_test "/home/exbigboss/cpp/__install__/bin/g++" "release" "address,undefined"
build_and_test "/home/exbigboss/cpp/__install__/bin/g++" "release" "thread"
build_and_test "/home/exbigboss/cpp/__install__/bin/g++" "release"build_and_test "g++-13" "release" "address,undefined"
build_and_test "g++-13" "release" "thread"
build_and_test "g++-13" "release"build_and_test "g++-12" "release" "address,undefined"
build_and_test "g++-12" "release" "thread"
build_and_test "g++-12" "release"```