{"id":19141479,"url":"https://github.com/erigontech/silkoroutine","last_synced_at":"2025-07-27T07:07:09.380Z","repository":{"id":104103998,"uuid":"345835558","full_name":"erigontech/silkoroutine","owner":"erigontech","description":"C++20 coroutine framework wrapping Turbo-Geth internal interfaces","archived":false,"fork":false,"pushed_at":"2021-03-18T16:10:37.000Z","size":144,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-22T19:15:13.995Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/erigontech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2021-03-09T00:33:19.000Z","updated_at":"2021-03-18T16:10:40.000Z","dependencies_parsed_at":"2023-08-24T12:10:52.739Z","dependency_job_id":null,"html_url":"https://github.com/erigontech/silkoroutine","commit_stats":null,"previous_names":["erigontech/silkoroutine"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/erigontech/silkoroutine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erigontech%2Fsilkoroutine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erigontech%2Fsilkoroutine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erigontech%2Fsilkoroutine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erigontech%2Fsilkoroutine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/erigontech","download_url":"https://codeload.github.com/erigontech/silkoroutine/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/erigontech%2Fsilkoroutine/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267320254,"owners_count":24068527,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-27T02:00:11.917Z","response_time":82,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-09T07:23:31.910Z","updated_at":"2025-07-27T07:07:09.359Z","avatar_url":"https://github.com/erigontech.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Silkoroutine\n\nC++20 coroutine framework wrapping Turbo-Geth internal [interfaces](https://github.com/ledgerwatch/interfaces)\n\n[![CircleCI](https://circleci.com/gh/torquem-ch/silkoroutine.svg?style=shield)](https://circleci.com/gh/torquem-ch/silkoroutine)\n[![Codecov master](https://img.shields.io/codecov/c/github/torquem-ch/silkoroutine/master.svg?style=shield\u0026logo=codecov\u0026logoColor=white)](https://codecov.io/gh/torquem-ch/silkoroutine)\n![version](https://img.shields.io/github/v/release/torquem-ch/silkoroutine?sort=semver\u0026color=normal)\n[![License](https://img.shields.io/github/license/torquem-ch/silkoroutine?color=lightgrey)](https://img.shields.io/github/license/torquem-ch/silkoroutine)\n![semver](https://img.shields.io/badge/semver-2.0.0-blue)\n\n\u003cbr\u003e\n\n# Building the source\n\n## Clone the repository\n\n```\ngit clone --recurse-submodules git@github.com:torquem-ch/silkoroutine.git\n```\n\nTo update the submodules later on run \n```\ngit submodule update --init --recursive\n```\n\n## Linux \u0026 MacOS\nBuilding Silkoroutine requires\n* C++20 compiler: [GCC](https://www.gnu.org/software/gcc/) \u003e= 10.2.0 or [Clang](https://clang.llvm.org/) \u003e= 10.0.0\n* [CMake](http://cmake.org) \u003e= 3.18.4\n* [Cpplint] (https://github.com/cpplint/cpplint) (`pip3 install cpplint`)\n\nOnce the prerequisites are installed, bootstrap cmake by running\n```\nmkdir build\ncd build\ncmake ..\n```\n(BTW, you have to run `cmake ..` just the first time).\n\nGenerate the [gRPC](https://grpc.io/) Sentry interface protocol bindings\n```\ncmake --build . --target generate_sentry_grpc\n```\n\nThen run the build itself\n```\ncmake --build .\n```\n\nNow you can run the unit tests\n```\ncmd/unit_test\n```\n\nand check the code style running\n```\n./run_linter.sh\n```\n\nThere are also convenience [bash](https://www.gnu.org/software/bash/) scripts for a complete rebuild both in debug and release configurations using [GCC](https://www.gnu.org/software/gcc/) compiler:\n```\n./build_gcc_debug.sh\n./build_gcc_release.sh\n```\nand [Clang](https://clang.llvm.org/) compiler:\n```\n./build_clang_debug.sh\n./build_clang_release.sh\n```\nThe resulting build folders are `build_[gcc, clang]_[debug, release]` according to your choice.\n\n## Windows\n* Install [Visual Studio](https://www.visualstudio.com/downloads) 2019. Community edition is fine.\n* Make sure your setup includes CMake support and Windows 10 SDK.\n* Install [vcpkg](https://github.com/microsoft/vcpkg#quick-start-windows).\n* `.\\vcpkg\\vcpkg install mpir:x64-windows`\n* Add \u003cVCPKG_ROOT\u003e\\installed\\x64-windows\\include to your `INCLUDE` environment variable.\n* Add \u003cVCPKG_ROOT\u003e\\installed\\x64-windows\\bin to your `PATH` environment variable.\n* Open Visual Studio and select File -\u003e CMake...\n* Browse the folder where you have cloned this repository and select the file CMakeLists.txt\n* Let CMake cache generation complete (it may take several minutes)\n* Solution explorer shows the project tree.\n* To build simply `CTRL+Shift+B`\n* Binaries are written to `%USERPROFILE%\\CMakeBuilds\\silkoroutine\\build` If you want to change this path simply edit `CMakeSettings.json` file.\n\n# Examples\n\nUsage examples of Silkoroutine framework for [gRPC](https://grpc.io/) interface bindings can be found in the [cmd](./cmd) folder: there you can find basically more than one example for each remote Turbo-Geth internal interface:\n\n* gRPC synchronous I/F\n* gRPC asynchronous I/F\n* gRPC callback I/F\n* gRPC coroutine I/F\n\n# Code style\n\nWe use the standard C++20 programming language. We follow the [Google's C++ Style Guide](https://google.github.io/styleguide/cppguide.html) with the following differences:\n\n* `snake_case` for function names.\n* .cpp \u0026 .hpp file extensions are used for C++; .cc are used just for [gRPC](https://grpc.io/) generated C++; .c \u0026 .h are reserved for C.\n* `using namespace foo` is allowed inside .cpp files, but not inside headers.\n* Exceptions are allowed.\n* User-defined literals are allowed.\n* Maximum line length is 170, indentation is 4 spaces – see `.clang-format`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferigontech%2Fsilkoroutine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ferigontech%2Fsilkoroutine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ferigontech%2Fsilkoroutine/lists"}