{"id":19145516,"url":"https://github.com/romanpunia/vitex","last_synced_at":"2025-10-04T13:10:30.952Z","repository":{"id":63281450,"uuid":"264310281","full_name":"romanpunia/vitex","owner":"romanpunia","description":"👻 A cross-platform C++ application development framework","archived":false,"fork":false,"pushed_at":"2025-09-18T16:06:48.000Z","size":49357,"stargazers_count":15,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-09-18T18:35:39.481Z","etag":null,"topics":["angelscript","async","cmake","coroutines","cpp14","cpp17","cpp20","cryptography","filesystem","framework","http","mongodb","multithreading","postgresql","schedule","scheduling","smtp","sqlite","websocket"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/romanpunia.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-05-15T22:17:50.000Z","updated_at":"2025-09-18T16:06:52.000Z","dependencies_parsed_at":"2023-02-19T06:30:27.021Z","dependency_job_id":"7e4bacef-1d51-4a3b-8dd2-a3ce4d751ddd","html_url":"https://github.com/romanpunia/vitex","commit_stats":null,"previous_names":["romanpunia/vitex","romanpunia/mavi"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/romanpunia/vitex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romanpunia%2Fvitex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romanpunia%2Fvitex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romanpunia%2Fvitex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romanpunia%2Fvitex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/romanpunia","download_url":"https://codeload.github.com/romanpunia/vitex/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/romanpunia%2Fvitex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278316296,"owners_count":25966967,"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-10-04T02:00:05.491Z","response_time":63,"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":["angelscript","async","cmake","coroutines","cpp14","cpp17","cpp20","cryptography","filesystem","framework","http","mongodb","multithreading","postgresql","schedule","scheduling","smtp","sqlite","websocket"],"created_at":"2024-11-09T07:40:44.644Z","updated_at":"2025-10-04T13:10:30.933Z","avatar_url":"https://github.com/romanpunia.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cbr/\u003e\r\n\u003cdiv align=\"center\"\u003e\r\n    \u003cbr /\u003e\r\n    \u003cimg src=\"https://github.com/romanpunia/vitex/blob/master/var/assets/logo.png?raw=true\" alt=\"Vitex Logo\" width=\"300\" /\u003e\r\n    \u003ch3\u003eC++ Cross-Platform Framework\u003c/h3\u003e\r\n\u003c/div\u003e\r\n\u003cdiv align=\"center\"\u003e\r\n\r\n  [![Build Status](https://github.com/romanpunia/vitex/workflows/CMake/badge.svg)](https://github.com/eclipse-theia/theia/actions?query=branch%3Amaster+event%3Apush+event%3Aschedule)\r\n\r\n\u003c/div\u003e\r\n\r\n## About 👻\r\nVitex is a cross-platform C++17/20/23 framework targeted for sync/async/promise client/server development. Applications developed with Vitex are CPU and memory optimized for high load. In it's core, Vitex is based on the same concepts as in Node.js but made to it's extreme by utilizing powers of raw C++.\r\n\r\nThis framework introduces quite a few important features from popular game engines, languages like Rust and runtimes like Node.js, including (but not limited to): core agnostic scheduler with blocking/non-blocking/coroutine/timeout/interval tasks, optionals, expectations (no try/catch blocks ever), text serialization formats, ready-to-use coroutines and promises, control over OS level access, common networking protocols, memory tracing and management, stacktraces, logging, data compression, big numbers, high precision integers, cryptographic primitives for different purposes: hashing, symmetric/asymmetric encryption and blockchain required cryptography.\r\n\r\n## Details\r\nVitex's core is based on a worker pool that consumes and publishes tasks, there is no concept of main event loop, every thread is on it's own an event loop. Scheduler processes blocking and non-blocking tasks such as event dispatching, non-blocking IO and coroutines, CPU bound tasks and blocking IO. Vitex is made to be as scalable as possible without even thinking about scalability which in turn makes development of multithreaded or concurrent systems quite a lot easier.\r\n\r\nRule of thumb:\r\n1. Split up work into small pieces.\r\n2. Schedule those small pieces into the queue.\r\n\r\n[Game engine fork - Vengeance.](https://github.com/romanpunia/vengeance)\r\n\r\n## Documentation\r\nYou may take a look at Wiki pages.\r\n\r\n## Cross platform (tested platforms)\r\n+ Windows 7/8/8.1/10+ x64/x86 (MSVC, MSVC ClangCL, MinGW)\r\n+ Raspberian 3+ ARM (GCC)\r\n+ Solaris 9+ x64/x86 (GCC)\r\n+ FreeBSD 11+ x64/x86 (GCC)\r\n+ Debian 11+ x64/x86 (GCC, LLVM)\r\n+ Ubuntu 16.04+ x64/x86 (GCC)\r\n+ MacOS Catalina 10.15+ x64 (Xcode)\r\n\r\n## Building\r\nThere are several ways to build this project that are explained here:\r\n* [Manually performed builds](var/MANUAL.md)\r\n* [Precomposed docker builds](var/DOCKER.md)\r\n\r\n### Configuration\r\n+ **VI_CXX** is the C++ standard (17, 20, 23) which will be used, C++20 and higher will replace stateful coroutines with std coroutines, defaults to 20\r\n+ **VI_LOGGING** is a logging level (errors, warnings, default, debug, verbose), defaults to \"default\"\r\n+ **VI_PESSIMISTIC** will enable assertion statements in release mode, defaults to OFF\r\n+ **VI_BINDINGS** will enable full script bindings otherwise only essentials will be used to reduce lib size, defaults to ON\r\n+ **VI_ALLOCATOR** will enable custom allocator for all used standard containers, making them incompatible with std::allocator based ones but adding opportunity to use pool allocator, defaults to ON\r\n+ **VI_FCONTEXT** will enable internal fcontext implementation for coroutines, defaults to ON\r\n\r\n## Dependencies\r\n* [concurrentqueue (submodule)](https://github.com/cameron314/concurrentqueue)\r\n\r\n## Serialization features\r\n* [pugixml (submodule)](https://github.com/zeux/pugixml): VI_PUGIXML=ON\r\n* [rapidjson (submodule)](https://github.com/tencent/rapidjson): VI_RAPIDJSON=ON\r\n* [zlib (so)](https://github.com/madler/zlib): VI_ZLIB=ON\r\n\r\n## Networking features\r\n* [wepoll (submodule)](https://github.com/piscisaureus/wepoll): VI_WEPOLL=ON\r\n* [openssl (so)](https://github.com/openssl/openssl): VI_OPENSSL=ON\r\n* [mongo-c-driver (so)](https://github.com/mongodb/mongo-c-driver): VI_MONGOC=ON\r\n* [libpq (so)](https://github.com/postgres/postgres/tree/master/src/interfaces/libpq): VI_POSTGRESQL=ON\r\n* [sqlite (so)](https://github.com/sqlite/sqlite): VI_SQLITE=ON\r\n\r\n## Other features\r\n* Scripting [angelscript (submodule)](https://github.com/codecat/angelscript-mirror): VI_ANGELSCRIPT=ON\r\n* Debugging [backward-cpp (submodule)](https://github.com/bombela/backward-cpp): VI_BACKWARDCPP=ON\r\n\r\n## License\r\nVitex is licensed under the MIT license\r\n\r\n## Known Issues\r\nDocumentation in it's usual form is non-existant at the moment. In the nearest future that could be changed.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromanpunia%2Fvitex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fromanpunia%2Fvitex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fromanpunia%2Fvitex/lists"}