{"id":35703131,"url":"https://github.com/vixcpp/vix","last_synced_at":"2026-07-13T19:01:02.557Z","repository":{"id":317900254,"uuid":"1068571070","full_name":"vixcpp/vix","owner":"vixcpp","description":"A modern C++ runtime for building fast and reliable applications.","archived":false,"fork":false,"pushed_at":"2026-07-12T21:00:28.000Z","size":2920,"stargazers_count":487,"open_issues_count":3,"forks_count":34,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-07-12T23:03:41.957Z","etag":null,"topics":["asio","backend","bun","cpp","cpp20","crossplatform","cxx","deno","http","http-server","modular","nodejs-alternative","offline-first","peer-to-peer","server","vix","vix-framework","vix-runtime","vixcpp","websocket"],"latest_commit_sha":null,"homepage":"https://vixcpp.com","language":"CMake","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/vixcpp.png","metadata":{"files":{"readme":"README.ja.md","changelog":"CHANGELOG.md","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":"2025-10-02T15:26:13.000Z","updated_at":"2026-07-12T13:54:25.000Z","dependencies_parsed_at":"2026-07-12T23:00:50.147Z","dependency_job_id":null,"html_url":"https://github.com/vixcpp/vix","commit_stats":null,"previous_names":["vixcpp/vix"],"tags_count":230,"template":false,"template_full_name":null,"purl":"pkg:github/vixcpp/vix","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vixcpp%2Fvix","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vixcpp%2Fvix/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vixcpp%2Fvix/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vixcpp%2Fvix/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vixcpp","download_url":"https://codeload.github.com/vixcpp/vix/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vixcpp%2Fvix/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35432821,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-13T02:00:06.543Z","response_time":119,"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":["asio","backend","bun","cpp","cpp20","crossplatform","cxx","deno","http","http-server","modular","nodejs-alternative","offline-first","peer-to-peer","server","vix","vix-framework","vix-runtime","vixcpp","websocket"],"created_at":"2026-01-06T02:11:47.160Z","updated_at":"2026-07-13T19:01:02.550Z","avatar_url":"https://github.com/vixcpp.png","language":"CMake","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd valign=\"top\" width=\"70%\"\u003e\n\n\u003ch1\u003eVix.cpp\u003c/h1\u003e\n\n\u003cp\u003e\n  \u003ca href=\"https://x.com/vix_cpp\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/X-Follow-black?logo=x\" /\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://www.youtube.com/@vixcpp\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/YouTube-Subscribe-red?logo=youtube\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch3\u003eモダン C++ で実用アプリケーションを構築する。\u003c/h3\u003e\n\n\u003cp\u003e\n  Vix.cpp は、高速で信頼性が高く、本番運用を意識したアプリケーションを構築するための、モダン C++ ランタイムおよび開発者ツールキットです。\n\u003c/p\u003e\n\n\u003cp\u003e\n  \u003ca href=\"https://vixcpp.com\"\u003e\u003cb\u003eWebsite\u003c/b\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://docs.vixcpp.com\"\u003e\u003cb\u003eDocs\u003c/b\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://rix.vixcpp.com\"\u003e\u003cb\u003eRix\u003c/b\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://registry.vixcpp.com\"\u003e\u003cb\u003eRegistry\u003c/b\u003e\u003c/a\u003e ·\n  \u003ca href=\"https://blog.vixcpp.com\"\u003e\u003cb\u003eEngineering notes\u003c/b\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003c/td\u003e\n\n\u003ctd valign=\"middle\" width=\"13%\" align=\"right\"\u003e\n\n\u003cimg\nsrc=\"https://res.cloudinary.com/dwjbed2xb/image/upload/v1778607554/vix_logo_ms5lne.png\"\nwidth=\"150\"\nstyle=\"border-radius:50%; object-fit:cover;\"\n/\u003e\n\n\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n---\n\n[English](README.md)\n\nVix.cpp は、ネイティブ性能、明示的な制御、既存の C++ エコシステムとの互換性を保ちながら、C++ プロジェクトにモダンなアプリケーション開発ワークフローを提供します。\n\nVix.cpp は単なる Web フレームワークではありません。\n\nVix.cpp は、モダン C++ のためのアプリケーションランタイムおよび開発者プラットフォームです。\n\n```txt\nC++ source code\n  -\u003e Vix.cpp workflow\n  -\u003e CMake/Ninja when needed\n  -\u003e native executable or library\n```\n\nVix.cpp は、プロジェクト作成、単一 C++ ファイルの実行、ターゲットビルド、テスト、フォーマット、依存関係管理、パッケージング、OpenAPI ドキュメント公開、本番サービス運用までを扱う統一されたコマンドサーフェスを提供します。\n\n## なぜ Vix.cpp が存在するのか\n\nC++ は強力で、移植性があり、成熟しており、高速です。\n\nしかし多くの場合、難しいのは C++ 言語そのものではありません。難しいのは、アプリケーションの周辺にある仕組みです。\n\n- プロジェクト構造\n- ビルド設定\n- 依存関係の準備\n- 開発コマンド\n- テスト実行\n- 診断\n- パッケージング\n- ランタイム設定\n- OpenAPI ドキュメント\n- デプロイ\n- 本番ログ\n- ヘルスチェック\n- サービス管理\n\n本格的な C++ プロジェクトの多くは、最終的に同じ基盤を何度も作り直すことになります。\n\nVix.cpp は、その基盤を再利用可能で一貫したものにするために存在します。\n\n目的は C++ を隠すことではありません。\n\n目的は、実用的な C++ アプリケーションを作成し、実行し、テストし、パッケージ化し、ドキュメント化し、運用しやすくすることです。\n\n## クイックスタート\n\n`server.cpp` を作成します。\n\n```cpp\n#include \u003cvix.hpp\u003e\n\nint main()\n{\n    vix::App app;\n\n    app.get(\"/\", [](vix::Request \u0026, vix::Response \u0026res) {\n        res.text(\"Hello from Vix.cpp\");\n    });\n\n    app.run();\n\n    return 0;\n}\n```\n\n実行します。\n\n```bash\nvix run server.cpp\n```\n\n開きます。\n\n```txt\nhttp://localhost:8080\n```\n\n## OpenAPI を 1 コマンドで有効化\n\nAPI ドキュメントを公開するプロジェクトでは、実行時に docs を有効化できます。\n\n```bash\nvix run api --docs\n```\n\n次を開きます。\n\n```txt\nhttp://localhost:8080/docs\n```\n\nまたは、生成された OpenAPI ドキュメントを取得します。\n\n```txt\nhttp://localhost:8080/openapi.json\n```\n\n通常実行では docs は無効です。\n\n```bash\nvix run api\n```\n\nこれにより、API ドキュメントの公開は明示的で環境を意識したものになります。\n\n## OpenAPI ルートを手動で登録する\n\nカスタムアプリケーションでは、OpenAPI とドキュメントルートをコードから登録できます。\n\n```cpp\n#include \u003cvix.hpp\u003e\n#include \u003cvix/openapi/register_docs.hpp\u003e\n\nint main()\n{\n    vix::App app;\n\n    app.get(\"/status\", [](vix::Request \u0026, vix::Response \u0026res) {\n        res.text(\"OK\");\n    });\n\n    vix::openapi::register_openapi_and_docs(\n        *app.router(),\n        \"Example API\",\n        \"1.0.0\");\n\n    app.run();\n\n    return 0;\n}\n```\n\nこれにより、次のルートが登録されます。\n\n```txt\nGET /openapi.json\nGET /docs\nGET /docs/\nGET /docs/index.html\nGET /docs/swagger-ui.css\nGET /docs/swagger-ui-bundle.js\n```\n\nドキュメント UI は、埋め込み Swagger UI アセットを使ってローカルに提供されます。\n\n## ルートにメタデータを付ける\n\nOpenAPI メタデータは、ルートドキュメントとして定義できます。\n\n```cpp\nvix::router::RouteDoc doc;\n\ndoc.summary = \"Service status\";\ndoc.description = \"Returns whether the service is running.\";\ndoc.tags = {\"system\"};\ndoc.responses[\"200\"] = {\n    {\"description\", \"OK\"}\n};\n```\n\nOpenAPI ジェネレータは、ルーターのメタデータと登録済みモジュールドキュメントからドキュメントを構築します。\n\n```txt\nrouter routes + registry docs\n  -\u003e OpenAPI 3.0.3 document\n```\n\n## プロジェクトワークフロー\n\n新しいプロジェクトを作成します。\n\n```bash\nvix new api\ncd api\nvix install\nvix dev\n```\n\nプロジェクトをビルドします。\n\n```bash\nvix build\n```\n\n実行します。\n\n```bash\nvix run\n```\n\nテストを実行します。\n\n```bash\nvix tests\n```\n\nプロジェクトを検証します。\n\n```bash\nvix check --tests\n```\n\nパッケージ化します。\n\n```bash\nvix pack\n```\n\n## Vix.cpp が提供するもの\n\nVix.cpp は 3 つのレイヤーを組み合わせています。\n\n### 1. 開発者ワークフロー\n\nVix は C++ プロジェクトに一貫したコマンドサーフェスを提供します。\n\n```bash\nvix run main.cpp\nvix new api\nvix install\nvix dev\nvix build\nvix tests\nvix fmt\nvix check\nvix pack\n```\n\nすべてのプロジェクトで手作業のスクリプトを組み直す代わりに、Vix は一般的な開発ライフサイクルに予測可能な形を与えます。\n\n### 2. ランタイムモジュール\n\nVix はアプリケーション開発のための再利用可能なランタイムモジュールを提供します。\n\n```txt\nagent        async        cache        cli          conversion\ncore         crypto       db           env          error\nfs           game         io           json         kv\nlog          middleware   net          orm          os\np2p          p2p_http     path         process      reply\nsync         template     tests        threadpool   time\nutils        validation   webrpc       websocket\n```\n\nこれらのモジュールは、小さなサンプルだけではなく、実用アプリケーションを支えるために設計されています。\n\n### 3. ネイティブ C++ 統合\n\nVix は C++ ツールチェーンを置き換えません。\n\nVix は、ネイティブ C++、CMake、Ninja、コンパイラ、リンカ、通常の実行ファイルやライブラリ出力と連携します。\n\n```txt\nC++:\n  language, performance, native binaries\n\nCMake and Ninja:\n  build system and ecosystem compatibility\n\nVix.cpp:\n  application workflow, runtime modules, CLI, diagnostics, project lifecycle\n```\n\n## 何を構築できるか\n\nVix.cpp は次のような用途に使えます。\n\n- バックエンドサービス\n- HTTP API\n- OpenAPI ドキュメント付き API\n- WebSocket アプリケーション\n- コマンドラインツール\n- 再利用可能な C++ ライブラリ\n- ローカルファーストアプリケーション\n- P2P システム\n- AI エージェントワークフロー\n- ゲーム向けプロジェクト\n- 本番サービス\n\n## インストール\n\nLinux と macOS:\n\n```bash\ncurl -fsSL https://vixcpp.com/install.sh | bash\n```\n\nWindows PowerShell:\n\n```powershell\nirm https://vixcpp.com/install.ps1 | iex\n```\n\nその他のインストール方法:\n\n```txt\nhttps://vixcpp.com/install\n```\n\n## 単一 C++ ファイルを実行する\n\n単一ファイルモードは、Vix.cpp を試す最短ルートです。\n\n`main.cpp` を作成します。\n\n```cpp\n#include \u003cvix.hpp\u003e\n\nint main()\n{\n    vix::print(\"Hello from Vix.cpp\");\n    return 0;\n}\n```\n\n実行します。\n\n```bash\nvix run main.cpp\n```\n\nVix はソースファイルを検出し、ネイティブ C++ ツールチェーンでビルドし、生成されたプログラムを実行します。\n\nこのモードは次の用途に向いています。\n\n- 実験\n- サンプル\n- 小さなツール\n- Vix API の学習\n- 短い C++ スニペットの検証\n\nコードが複数ファイル、テスト、依存関係、安定したアプリケーションへ成長したら、Vix プロジェクトへ移行します。\n\n## プロジェクトを作成する\n\n新しいアプリケーションを作成します。\n\n```bash\nvix new hello --app\ncd hello\nvix build\nvix run\n```\n\n生成されるプロジェクトは通常、次のような構造になります。\n\n```txt\nhello/\n├── src/\n│   └── main.cpp\n├── tests/\n│   └── test_basic.cpp\n├── .env.example\n├── vix.app\n├── vix.json\n└── README.md\n```\n\nこの構造は意図的に小さく保たれています。\n\n複雑な構成を最初から強制せず、アプリケーションが成長するために必要な最低限の整理を提供します。\n\n## 開発モード\n\nアクティブな開発中は `vix dev` を使います。\n\n```bash\nvix dev\n```\n\n開発ループは次のようになります。\n\n```txt\nedit\nsave\ndetect change\nrebuild\nrestart\ncontinue\n```\n\nコンパイルだけを確認したい場合:\n\n```bash\nvix build\n```\n\nアプリケーションを手動で起動したい場合:\n\n```bash\nvix run\n```\n\nコードを編集しながら開発する場合:\n\n```bash\nvix dev\n```\n\n## ビルドシステムモデル\n\nVix は 2 つのプロジェクトモデルをサポートします。\n\n```txt\nCMakeLists.txt\nvix.app\n```\n\n解決順序:\n\n```txt\n1. CMakeLists.txt\n2. vix.app\n```\n\n`CMakeLists.txt` が存在する場合、Vix はそれを使用します。\n\n`CMakeLists.txt` がなく、`vix.app` が存在する場合、Vix はマニフェストを読み込み、内部 CMake プロジェクトを生成します。\n\n```txt\nProject with CMakeLists.txt\n  -\u003e Vix uses the existing CMake project\n\nProject with vix.app\n  -\u003e Vix generates an internal CMake project\n  -\u003e Vix builds the target\n```\n\nこれにより、高度な CMake プロジェクトは主導権を保ちつつ、より単純なアプリケーションには読みやすいマニフェストワークフローを提供できます。\n\n## ビルド例\n\n現在のプロジェクトをビルドします。\n\n```bash\nvix build\n```\n\n詳細出力付きでビルドします。\n\n```bash\nvix build -v\n```\n\nRelease ビルドを行います。\n\n```bash\nvix build --preset release\n```\n\n特定ターゲットをビルドします。\n\n```bash\nvix build --build-target vix\n```\n\nすべてをビルドします。\n\n```bash\nvix build --build-target all\n```\n\n単一 C++ ファイルをビルドします。\n\n```bash\nvix build main.cpp\n```\n\n## 実行ターゲット\n\n`vix run` は Web アプリケーションに限定されません。\n\n次のものを実行できます。\n\n- 現在のプロジェクト\n- 名前付きプロジェクトまたはターゲット\n- 単一 C++ ファイル\n- `.vix` マニフェスト\n- コンパイル済みバイナリ\n- Docker イメージ\n- コンテナイメージ\n- SSH ターゲット\n- HTTP または HTTPS ターゲット\n- Vix umbrella examples\n\n例:\n\n```bash\nvix run\nvix run api\nvix run main.cpp\nvix run app.vix\nvix run ./app\nvix run docker://nginx\nvix run ssh://user@host\nvix run https://example.com\n```\n\n## コマンドマップ\n\n| Command            | Purpose                                |\n| ------------------ | -------------------------------------- |\n| `vix run main.cpp` | 単一 C++ ファイルを実行する            |\n| `vix new \u003cname\u003e`   | 新しいプロジェクトを作成する           |\n| `vix install`      | プロジェクト依存関係をインストールする |\n| `vix dev`          | 開発モードを開始する                   |\n| `vix build`        | 設定してビルドする                     |\n| `vix run`          | 必要ならビルドして実行する             |\n| `vix tests`        | テストを実行する                       |\n| `vix fmt`          | ソースファイルをフォーマットする       |\n| `vix check`        | プロジェクトを検証する                 |\n| `vix pack`         | プロジェクトをパッケージ化する         |\n| `vix registry`     | レジストリメタデータを管理する         |\n| `vix replay`       | 記録済み実行を再現する                 |\n| `vix agent`        | AI 支援開発ワークフローを実行する      |\n| `vix game export`  | ゲームプロジェクトをエクスポートする   |\n\n## アーキテクチャ\n\nVix.cpp はモジュラーなフレームワークとして構成されています。\n\n```txt\nvix/\n├── modules/\n│   ├── agent/\n│   ├── async/\n│   ├── cache/\n│   ├── cli/\n│   ├── core/\n│   ├── crypto/\n│   ├── db/\n│   ├── env/\n│   ├── error/\n│   ├── fs/\n│   ├── game/\n│   ├── io/\n│   ├── json/\n│   ├── kv/\n│   ├── log/\n│   ├── middleware/\n│   ├── net/\n│   ├── orm/\n│   ├── p2p/\n│   ├── p2p_http/\n│   ├── path/\n│   ├── process/\n│   ├── reply/\n│   ├── sync/\n│   ├── template/\n│   ├── tests/\n│   ├── threadpool/\n│   ├── time/\n│   ├── utils/\n│   ├── validation/\n│   ├── websocket/\n│   └── webrpc/\n├── docs/\n├── tests/\n└── benchmarks/\n```\n\n各モジュールは独立して進化でき、同時に同じアプリケーションプラットフォームの一部として機能します。\n\n## HTTP サーバー例\n\n```cpp\n#include \u003cvix.hpp\u003e\n\nint main()\n{\n    vix::App app;\n\n    app.get(\"/\", [](vix::Request \u0026, vix::Response \u0026res) {\n        res.text(\"Hello from Vix.cpp\");\n    });\n\n    app.get(\"/health\", [](vix::Request \u0026, vix::Response \u0026res) {\n        res.text(\"OK\");\n    });\n\n    app.run();\n\n    return 0;\n}\n```\n\n実行します。\n\n```bash\nvix run server.cpp\n```\n\nテストします。\n\n```bash\ncurl -i http://127.0.0.1:8080/\ncurl -i http://127.0.0.1:8080/health\n```\n\n## API ドキュメントワークフロー\n\nプロフェッショナルな API は、検査可能であるべきです。\n\nVix は、明示的に有効化できる OpenAPI ドキュメントルートをサポートします。\n\n開発時に docs を有効化して実行します。\n\n```bash\nvix run api --docs\n```\n\n通常実行では docs を無効にします。\n\n```bash\nvix run api\n```\n\n明示的に docs を無効化します。\n\n```bash\nvix run api --no-docs\n```\n\n環境変数でも制御できます。\n\n```bash\nVIX_DOCS=1 vix run api\nVIX_DOCS=0 vix run api\n```\n\n推奨される本番ポリシー:\n\n```txt\ndisable docs completely\nprotect /docs behind auth\nserve docs only in internal environments\nserve /openapi.json only in CI or staging\n```\n\n## レジストリとパッケージ\n\nVix は、パッケージベースの C++ プロジェクト向けにレジストリワークフローを提供します。\n\n```bash\nvix registry sync\nvix add \u003cpackage\u003e\nvix install\n```\n\nレジストリモデル:\n\n```txt\nRegistry index       -\u003e package metadata\nStore                -\u003e fetched package Git checkouts\nvix.json             -\u003e declared project dependency requirements\nvix.lock             -\u003e exact resolved dependency versions\n.vix/deps            -\u003e project-local dependency links or copies\n.vix/vix_deps.cmake  -\u003e generated dependency integration\n```\n\nレジストリは、パッケージメタデータをプロジェクトソースから分離します。\n\n## Rix\n\nRix は、Vix.cpp の統一された userland ライブラリレイヤーです。\n\nVix が提供するもの:\n\n```txt\nruntime\nCLI\nbuild workflow\nregistry integration\ncore modules\n```\n\nRix が提供するもの:\n\n```txt\noptional userland libraries\na unified facade\nindependent packages\n```\n\n統一 facade をインストールします。\n\n```bash\nvix add @rix/rix\nvix install\n```\n\n使用例:\n\n```cpp\n#include \u003crix.hpp\u003e\n\nint main()\n{\n    rix.debug.print(\"Hello\", \"Rix\");\n\n    auto table = rix.csv.parse(\"name,language\\nAda,C++\\n\");\n\n    rix.debug.log(\"loaded {} rows\", table.size());\n\n    return 0;\n}\n```\n\n## 本番ワークフロー\n\nVix は、本番サービスを検査可能で運用しやすくするために設計されています。\n\n本番向けワークフローの例:\n\n```bash\nvix build --preset release\nvix service install\nvix service start\nvix service status\nvix service logs\nvix proxy nginx check\nvix doctor production\n```\n\n目的は、本番状態を見えるようにすることです。\n\n```txt\nApp status\nBinary path\nService status\nHTTP port\nWebSocket port\nPublic URL\nProxy state\nTLS state\nHealthcheck result\nLogs\n```\n\nC++ アプリケーションは、デプロイ後にブラックボックスになるべきではありません。\n\n## 失敗した実行を再現する\n\n`vix replay` は、記録済みの実行を再現するための機能です。\n\n実行を記録します。\n\n```bash\nvix run api --replay\n```\n\n最後に記録された実行を再現します。\n\n```bash\nvix replay last\n```\n\n最後に失敗した実行を再現します。\n\n```bash\nvix replay failed\n```\n\nこれは、実行が失敗した、クラッシュした、または予期しない挙動をした場合に、同じコンテキストを再現したいときに役立ちます。\n\n## AI 支援ワークフロー\n\nVix は、ローカルプロジェクト解析や開発支援のための AI エージェントコマンドを提供します。\n\n```bash\nvix agent ask \"Explain this project\"\nvix agent analyze .\nvix agent scan .\n```\n\nエージェントは許可されたワークスペースを検査し、プロジェクト構造を要約し、開発タスクを支援できます。\n\n## ゲームプロジェクト\n\nVix は `vix game` 名前空間を通じて、ゲーム向けツールを提供します。\n\n```bash\nvix game export\n```\n\nこれにより、ゲームプロジェクトをアセットとメタデータ付きの配布用ディレクトリへエクスポートできます。\n\n## ベンチマーク\n\nVix.cpp は、性能を単なるマーケティング文句ではなく、エンジニアリング上の関心事として扱います。\n\nCore モジュールには、リリース間の性能を追跡し、マージまたはリリース前にリグレッションを検出するための公式ベンチマークスイートが含まれています。\n\nBenchmark source:\n\n- [Core benchmarks](https://github.com/vixcpp/vix/tree/main/modules/core/benchmarks)\n- [Core benchmarks README](https://github.com/vixcpp/vix/blob/main/modules/core/benchmarks/README.md)\n- [v2.6.3 benchmark baseline](https://github.com/vixcpp/vix/tree/main/modules/core/benchmarks/baselines/v2.6.3)\n- [Engineering note: Vix Core v2.6.3 benchmark baseline](https://blog.vixcpp.com/posts/vix-core/vix-core-benchmark-baseline-v263)\n\n例:\n\n```bash\nvix build --build-target benchmarks\n```\n\nCore ベンチマーク領域:\n\n```txt\nruntime.task\nruntime.queue\nruntime.scheduler\nruntime.worker\n\nexecutor.submit\nexecutor.post\nexecutor.metrics\n\nrouter.match\nrouter.registration\n\nhttp.request\nhttp.response\n\nsession.fake_transport\n\napp.route_registration\napp.group_registration\n```\n\n公式 Core benchmark baseline は次に保存されています。\n\n```txt\nmodules/core/benchmarks/baselines/v2.6.3/\n```\n\nBaseline files:\n\n```txt\ncore_app_group_registration_bench.json\ncore_app_route_registration_bench.json\ncore_executor_metrics_bench.json\ncore_executor_post_bench.json\ncore_executor_submit_bench.json\ncore_http_request_bench.json\ncore_http_response_bench.json\ncore_router_match_bench.json\ncore_router_registration_bench.json\ncore_runtime_queue_bench.json\ncore_runtime_scheduler_bench.json\ncore_runtime_task_bench.json\ncore_runtime_worker_bench.json\ncore_session_fake_transport_bench.json\n```\n\n公式ベンチマーク値は Release ビルドから生成する必要があります。\n\n```txt\ndev/debug = compile, test, debug\nrelease   = measure performance\n```\n\n`modules/core` からベンチマークスイートをビルドします。\n\n```bash\nvix build --clean --preset release --build-target all -v -- \\\n  -DVIX_CORE_BUILD_BENCHMARKS=ON \\\n  -DVIX_CORE_BUILD_TESTS=ON\n```\n\n単一ベンチマークを実行します。\n\n```bash\n./build-release/benchmarks/core/core_router_match_bench\n```\n\nCore benchmark suite 全体を実行します。\n\n```bash\n./scripts/run_core_benchmarks.sh \\\n  --bin-dir build-release/benchmarks/core \\\n  --out-dir benchmarks/results/dev \\\n  --version dev \\\n  --runner local \\\n  --machine local\n```\n\n公式 baseline と比較します。\n\n```bash\n./scripts/compare_core_benchmarks.py \\\n  benchmarks/baselines/v2.6.3 \\\n  benchmarks/results/current\n```\n\nデフォルトでは、benchmark comparison は次を使用します。\n\n```txt\nmedian_ops_per_sec\n```\n\n値が高いほど良い結果です。\n\nDefault thresholds:\n\n```txt\nWARN = -5%\nFAIL = -10%\n```\n\n## エンジニアリング原則\n\nVix.cpp は次の原則に基づいて構築されています。\n\n- ネイティブ C++ を保つ\n- ツールチェーンを隠さない\n- CMake と競合せず連携する\n- 一般的なワークフローを再利用可能にする\n- 必要なときに OpenAPI で API を公開する\n- 診断を読みやすくする\n- 本番環境を検査可能にする\n- モジュールを組み合わせ可能にする\n- 性能を推測ではなく測定する\n- 隠れた魔法より明示的な API を優先する\n- 単純なプロジェクトは簡単に、複雑なプロジェクトは可能にする\n\n## Vix.cpp ではないもの\n\nVix.cpp は C++ を置き換えません。\n\nC++ をスクリプト言語に変えるものではありません。\n\n高度なビルドシステムにおける CMake を置き換えるものではありません。\n\nすべてのプロジェクトに単一の構造を強制するものではありません。\n\nすべての環境でドキュメントをデフォルト公開するものではありません。\n\nVix.cpp は、ネイティブ制御を保ちながら、C++ アプリケーションに一貫したワークフローとモジュラーなランタイム基盤を提供します。\n\n## プロジェクト状態\n\nVix.cpp は現在も積極的に開発されています。\n\n一部の領域は安定しており、実用的なアプリケーション開発に使用できます。\n\n一部の領域はまだ進化中であり、本番利用前に慎重に評価する必要があります。\n\nこのプロジェクトは次を重視して開発されています。\n\n- 実用アプリケーションワークフロー\n- テスト\n- ベンチマーク\n- OpenAPI ドキュメント\n- 本番診断\n- モジュラー設計\n\n## ドキュメント\n\nStart here:\n\n- [Website](https://vixcpp.com)\n- [Documentation](https://docs.vixcpp.com)\n- [Registry](https://registry.vixcpp.com)\n- [Rix](https://rix.vixcpp.com)\n- [Engineering notes](https://blog.vixcpp.com)\n\nRecommended path:\n\n1. Vix.cpp をインストールする\n2. 最初の C++ ファイルを実行する\n3. 最初のプロジェクトを作成する\n4. 最初の HTTP サーバーを構築する\n5. ローカルで OpenAPI docs を有効化する\n6. CLI コマンドを学ぶ\n7. ランタイムモジュールを探索する\n8. レジストリからパッケージを追加する\n9. ローカル開発から本番運用へ進む\n\n## Vix.cpp で構築されたもの\n\n| Project            | Purpose                                              |\n| ------------------ | ---------------------------------------------------- |\n| Rix                | Vix.cpp の統一 userland ライブラリレイヤー           |\n| Cnerium            | Vix 上に構築された durable backend reliability layer |\n| Vix Game           | ゲーム向けランタイムプロジェクト                     |\n| PulseGrid          | 本番スタイルのサービス監視プロジェクト               |\n| Softadastra Runner | Vix.cpp で構築されたコマンドランナー                 |\n\n## コントリビュート\n\nコントリビューションは歓迎です。\n\nPull Request を開く前に実行してください。\n\n```bash\nvix fmt --check\nvix check --tests\nvix build --preset release\n```\n\n性能に関わるコードを変更する場合は、ベンチマークスイートを実行し、現在の baseline と比較してください。\n\n## ライセンス\n\nMIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvixcpp%2Fvix","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvixcpp%2Fvix","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvixcpp%2Fvix/lists"}