{"id":35703131,"url":"https://github.com/vixcpp/vix","last_synced_at":"2026-04-05T15:00:53.690Z","repository":{"id":317900254,"uuid":"1068571070","full_name":"vixcpp/vix","owner":"vixcpp","description":"The offline-first C++ runtime for building high-performance real-world systems.","archived":false,"fork":false,"pushed_at":"2026-04-01T21:58:18.000Z","size":1175,"stargazers_count":384,"open_issues_count":14,"forks_count":30,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-02T07:40:36.558Z","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_TESTS.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-04-01T21:57:50.000Z","dependencies_parsed_at":"2025-12-19T13:01:29.950Z","dependency_job_id":null,"html_url":"https://github.com/vixcpp/vix","commit_stats":null,"previous_names":["vixcpp/vix"],"tags_count":190,"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":31439442,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T13:13:19.330Z","status":"ssl_error","status_checked_at":"2026-04-05T13:13:17.778Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-04-05T15:00:53.565Z","avatar_url":"https://github.com/vixcpp.png","language":"CMake","readme":"# Vix.cpp\n\n\u003cp align=\"center\" style=\"margin:0;\"\u003e\n  \u003cimg\n    src=\"https://res.cloudinary.com/dwjbed2xb/image/upload/v1762524350/vixcpp_etndhz.png\"\n    alt=\"Vix.cpp Banner\"\n    width=\"100%\"\n    style=\"\n      display:block;\n      height:auto;\n      max-width:900px;\n      margin:auto;\n      object-fit:cover;\n      border-radius:8px;\n    \"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eVix.cpp\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/C++20-Standard-blue\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-green\"\u003e\n\u003c/p\u003e\n\n---\n\n# 🌍 Vix とは？\n\n**Vix** は、次世代の **オフラインファースト・ピアツーピア・超高速 C++ モダンランタイム**です。\n\n[English](README.md)\n\n目標は明確です。\n\n\u003e **Node / Deno / Bun のようなアプリを実行でき、\n\u003e しかも不安定で低品質な「現実世界のネットワーク」を前提に設計されたランタイム**\n\nVix は単なるバックエンドフレームワークではありません。\nこれは **モジュラー構成のランタイム**であり、分散アプリケーション、エッジシステム、オフラインデバイス、そして従来のクラウド前提フレームワークが機能しない環境向けに設計されています。\n\n**FastAPI**, **Vue.js**, **React**、最新のランタイムに着想を得つつ、\n**C++20 によってゼロから再設計**され、圧倒的な速度と完全な制御性を実現しています。\n\n---\n\n# ⚡ ベンチマーク（更新版 — 二〇二五年 十二月）\n\nすべてのベンチマークは **wrk** を使用して実行されました。\n**八スレッド / 八百接続 / 三十秒**、同一マシンで測定しています。\n\n**環境**\nUbuntu 二十四点〇四 — Intel Xeon — C++20 最適化ビルド — ログ無効\n\n結果は `\"OK\"` を返すシンプルなエンドポイントでの **定常状態スループット**です。\n\n---\n\n## 🚀 秒間リクエスト数\n\n| フレームワーク                  | Requests/sec                          | 平均レイテンシ          | 転送量/秒            |\n| ------------------------------- | ------------------------------------- | ----------------------- | -------------------- |\n| ⭐ **Vix.cpp (v 一・一二・三)** | **約 九万八千九百四十二**（CPU 固定） | **七・三〜一〇・八 ms** | **約 一三・八 MB/s** |\n| **Vix.cpp（通常実行）**         | 八万一千三百                          | 九・七〜一〇・八 ms     | 約 一一・三 MB/s     |\n| Go（Fiber）                     | 八万一千三百三十六                    | 〇・六七 ms             | 一〇・一六 MB/s      |\n| **Deno**                        | 約 四万八千八百六十八                 | 一六・三四 ms           | 約 六・九九 MB/s     |\n| Node.js（Fastify）              | 四千二百二十                          | 一六・〇〇 ms           | 〇・九七 MB/s        |\n| PHP（Slim）                     | 二千八百四                            | 一六・八七 ms           | 〇・四九 MB/s        |\n| Crow（C++）                     | 一千百四十九                          | 四一・六〇 ms           | 〇・三五 MB/s        |\n| FastAPI（Python）               | 七百五十二                            | 六三・七一 ms           | 〇・一一 MB/s        |\n\n\u003e 🔥 **新記録**\n\u003e 単一コアに固定（`taskset -c 2`）した場合、\n\u003e **約 九万九千 req/s** に到達し、Go を上回り、最速クラスの C++ マイクロフレームワークに並びました。\n\n---\n\n## 📝 補足\n\n### ✔ Vix.cpp が Go レベルの性能を出せる理由\n\n- ゼロコスト抽象化\n- HTTP ワークロード向けに最適化された独自 ThreadPool\n- 最適化された HTTP パイプライン\n- 高速パスルーティング\n- Beast ベースの I/O\n- 最小限のメモリアロケーション\n- 予測可能なスレッドモデル\n\n---\n\n## 🦕 Deno ベンチマーク（参考）\n\n```bash\nwrk -t8 -c800 -d30s --latency http://127.0.0.1:8000\nRequests/sec: 48,868.73\n```\n\n### ✔ Vix.cpp 推奨ベンチマークモード\n\nVix.cpp リポジトリ内（ビルトイン例を使用）でベンチマークを行う場合：\n\n```bash\ncd ~/vixcpp/vix\nexport VIX_LOG_LEVEL=critical\nexport VIX_LOG_ASYNC=false\n\n# 最適化されたサンプルサーバーを起動\nvix run example main\n```\n\n次に、別のターミナルで実行します：\n\n```bash\nwrk -t8 -c800 -d30s --latency http://127.0.0.1:8080/bench\n```\n\nより安定した結果を得たい場合は、CPU コアを固定してください：\n\n```bash\ntaskset -c 2 ./build/main\nwrk -t8 -c800 -d30s --latency http://127.0.0.1:8080/bench\n```\n\n#### 🏁 結果：約 98,942 req/s\n\n✔ Fast-path ルーティングにより 1〜3% の性能向上\n✔ /fastbench を使用すると RequestHandler のオーバーヘッドを回避できます\n\n---\n\n# 🧭 クイック例\n\n```cpp\n#include \u003cvix.hpp\u003e\nusing namespace vix;\n\nint main() {\n    App app;\n\n    app.get(\"/\", [](auto\u0026, auto\u0026 res) {\n        res.json({ \"message\", \"Hello world\" });\n    });\n\n    app.run(8080);\n}\n```\n\n### QueryBuilder ORM\n\n```cpp\nQueryBuilder qb;\nqb.raw(\"UPDATE users SET age=? WHERE email=?\")\n  .param(29)\n  .param(\"zoe@example.com\");\n```\n\n### 最小構成の HTTP + WebSocket サーバー\n\nこの例は 完全に動作する最小の **HTTP + WebSocket ハイブリッドサーバーを示しています。**\n\n### 特徴\n\n- 基本的な GET ルート\n- シンプルな WebSocket 接続処理\n- サーバーの自動起動\n\n### サンプルコード（要約）\n\n```cpp\n#include \u003cvix.hpp\u003e\n#include \u003cvix/websocket/AttachedRuntime.hpp\u003e\n\nusing namespace vix;\n\nint main()\n{\n  // Use default config path \"config/config.json\" and port 8080\n  vix::serve_http_and_ws([](auto \u0026app, auto \u0026ws)\n                         {\n        // Minimal HTTP route\n        app.get(\"/\", [](auto\u0026, auto\u0026 res) {\n            res.json({\n                \"message\",   \"Hello from Vix.cpp minimal example 👋\",\n                \"framework\", \"Vix.cpp\"\n            });\n        });\n\n        // Minimal WebSocket handler: log and echo chat.message\n        ws.on_typed_message(\n            [\u0026ws](auto\u0026 session,\n                  const std::string\u0026 type,\n                  const vix::json::kvs\u0026 payload)\n            {\n                (void)session;\n\n                if (type == \"chat.message\") {\n                    ws.broadcast_json(\"chat.message\", payload);\n                }\n            }); });\n\n  return 0;\n}\n```\n\n## 最小 WebSocket クライアント\n\n```cpp\nauto client = Client::create(\"localhost\", \"9090\", \"/\");\n\nclient-\u003eon_open([] {\n    std::cout \u003c\u003c \"Connected!\" \u003c\u003c std::endl;\n});\n\nclient-\u003esend(\"chat.message\", {\"text\", \"Hello world!\"});\n```\n\n## 1. Hello World (JSON)\n\n```cpp\napp.get(\"/\", [](Request req, Response res) {\n    return json::o(\"message\", \"Hello from Vix\");\n});\n```\n\n---\n\n## 2. ルートパラメータ\n\n```cpp\napp.get(\"/users/{id}\", [](Request req, Response res) {\n    auto id = req.param(\"id\");\n    return json::o(\"user_id\", id);\n});\n```\n\n---\n\n## 3. クエリパラメータ\n\n```cpp\napp.get(\"/search\", [](Request req, Response res) {\n    auto q = req.query_value(\"q\", \"none\");\n    auto page = req.query_value(\"page\", \"1\");\n\n    return json::o(\n        \"query\", q,\n        \"page\", page\n    );\n});\n```\n\n---\n\n## 4. ステータス + ペイロード自動返却（FastAPI 風）\n\n```cpp\napp.get(\"/missing\", [](Request req, Response res) {\n          res.status(404).json({\"error\", \"Not found\"});\n});\n```\n\n---\n\n## 5. リダイレクト\n\n```cpp\napp.get(\"/go\", [](Request req, Response res) {\n    res.redirect(\"https://vixcpp.com\");\n});\n```\n\n---\n\n## 6. ステータスメッセージのみ返却\n\n```cpp\napp.get(\"/forbidden\", [](Request req, Response res) {\n    res.status(403).send();\n});\n```\n\n---\n\n## 7. POST JSON ボディ\n\n```cpp\napp.post(\"/echo\", [](Request req, Response res) {\n    return json::o(\n        \"received\", req.json()\n    );\n});\n```\n\n---\n\n## 8. 型付き JSON パース\n\n```cpp\nstruct UserInput {\n    std::string name;\n    int age;\n};\n\napp.post(\"/users\", [](Request req, Response res) {\n    UserInput input = req.json_as\u003cUserInput\u003e();\n\n    return std::pair{\n        201,\n        json::o(\n            \"name\", input.name,\n            \"age\", input.age\n        )\n    };\n});\n```\n\n---\n\n## 9. ヘッダー操作\n\n```cpp\napp.get(\"/headers\", [](Request req, Response res) {\n    res.header(\"X-App\", \"Vix\")\n       .type(\"text/plain\")\n       .send(\"Hello headers\");\n});\n```\n\n---\n\n## 10. リクエストスコープの状態管理\n\n```cpp\napp.get(\"/state\", [](Request req, Response res) {\n    req.set_state\u003cint\u003e(42);\n\n    return json::o(\n        \"value\", req.state\u003cint\u003e()\n    );\n});\n```\n\n---\n\n## 11. Void ハンドラ\n\n```cpp\napp.get(\"/manual\", [](Request req, Response res) {\n    res.status(200)\n       .json(json::o(\"ok\", true));\n});\n```\n\n---\n\n## 12. Params マップへのアクセス\n\n```cpp\napp.get(\"/items/{id}\", [](Request req, Response res) {\n    const auto\u0026 params = req.params();\n    return json::o(\"id\", params.at(\"id\"));\n});\n```\n\n---\n\n## 13. 204 No Content\n\n```cpp\napp.delete(\"/items/{id}\", [](Request req, Response res) {\n    res.status(204).send();\n});\n```\n\n---\n\n# 🧱 なぜ Vix が存在するのか\n\nクラウドファーストなフレームワークは次を前提としています。\n\n- 安定したネットワーク\n- 予測可能なレイテンシ\n- 常時オンライン接続\n\n**しかし、世界の多くの環境ではそれは現実ではありません。**\n\nVix は次のために設計されています。\n\n### ✔ オフラインファースト\n\nインターネットがなくてもアプリは動作し続けます。\n\n### ✔ ピアツーピア\n\n中央サーバーなしで、ノード同士がローカル同期・通信可能。\n\n### ✔ 超高速ネイティブ実行\n\nC++20 + Asio + ゼロオーバーヘッド抽象化。\n\n---\n\n# 🧩 主な特徴\n\n- 🌍 オフラインファーストランタイム\n- 🔗 P2P 対応通信モデル\n- ⚙️ 非同期 HTTP サーバー\n- 🧭 表現力の高いルーティング\n- 💾 MySQL / SQLite 用 ORM\n- 🧠 ミドルウェアシステム\n- 📡 WebSocket エンジン\n- 🧰 モジュラー設計\n- 🚀 Node / Deno / Bun に近い開発体験\n- ⚡ 秒間 80,000 件超の処理性能\n\n---\n\n## 🚀 はじめ方\n\nVix.cpp をお使いの環境にセットアップするには、以下の手順を実行してください：\n\n```bash\ngit clone https://github.com/vixcpp/vix.git\ncd vix\ncmake -S . -B build -DCMAKE_BUILD_TYPE=Release\ncmake --build build -j\n./build/hello_routes\n```\n\n---\n\n## 🧰 CLI プロジェクト例\n\nインストールが完了したら、CLI を使用して新しいプロジェクトを作成できます：\n\n```bash\nvix new myapp\ncd myapp\nvix build\nvix run\n\nvix dev file.cpp\nvix run file.cpp\nvix orm migrate\n```\n\n---\n\n# 🎯 スクリプトモード — `.cpp` を直接実行\n\nVix は、単一の `.cpp` ファイルを スクリプトのように 実行できます。\n\n```bash\nvix run file.cpp\nvix dev file.cpp\n```\n\n### 仕組み\n\n- `./.vix-scripts/\u003cファイル名\u003e/` に一時 CMake プロジェクトを生成\n- `.cpp` を単体実行ファイルとしてコンパイル\n- 即座に実行\n- Ctrl+C でクリーンに終了（gmake のノイズなし）\n\n### 実行例\n\n```bash\n~/myapp/test$ vix run server.cpp\nScript mode: compiling server.cpp\nUsing script build directory:\n  • .vix-scripts/server\n\n✔ Build succeeded\n[I] Server running on port 8080\n^C\nℹ Server interrupted by user (SIGINT)\n```\n\n---\n\n## 📚 ドキュメント\n\n- 🧭 [Introduction](docs/introduction.md)\n- ⚡ [Quick Start](docs/quick-start.md)\n- 🧱 [Architecture \u0026 Modules](docs/architecture.md)\n- 💾 [ORM Overview](docs/orm/overview.md)\n- 📈 [Benchmarks](docs/benchmarks.md)\n- 🧰 [Examples](docs/examples/overview.md)\n- 🛠️ [Build \u0026 Installation](docs/build.md)\n- ⚙️ [CLI Options](docs/options.md)\n\n## 📦 モジュールドキュメント一覧\n\n- 🧩 **Core Module** — [docs/modules/core.md](docs/modules/core.md)\n- 📡 **WebSocket Module** — [docs/modules/websocket.md](docs/modules/websocket.md)\n- 🗃️ **ORM Module** — [docs/modules/orm.md](docs/modules/orm.md)\n- 🔧 **JSON Module** — [docs/modules/json.md](docs/modules/json.md)\n- 🛠️ **Utils Module** — [docs/modules/utils.md](docs/modules/utils.md)\n- 🧰 **CLI Module** — [docs/modules/cli.md](docs/modules/cli.md)\n- ⚙️ **Rix Library (Essential C++ utilities)** — [docs/modules/rix.md](docs/modules/rix.md)\n\n📊 サマリー\n\nVix.cpp は、Go Fiber に匹敵、あるいはそれを超える性能を持ち、\nDeno、Node、PHP、Python、さらには Crow などの複数の C++ フレームワークをも上回る\nモダンバックエンドランタイムの最前線に位置しています。\n\nVix.cpp = 境界を押し広げる C++ ランタイム\n\n---\n\n## 🤝 コントリビュート\n\nコントリビューションは歓迎です。\n詳細はコントリビューティングガイドをご覧ください。\n\n## 🪪 ライセンス\n\n**MIT License** で提供されています。\n","funding_links":[],"categories":[],"sub_categories":[],"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"}