{"id":14967008,"url":"https://github.com/golemfactory/capnp-playground","last_synced_at":"2026-01-17T07:27:19.057Z","repository":{"id":86423466,"uuid":"173303434","full_name":"golemfactory/capnp-playground","owner":"golemfactory","description":null,"archived":false,"fork":false,"pushed_at":"2019-03-15T10:35:19.000Z","size":36,"stargazers_count":2,"open_issues_count":1,"forks_count":2,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-03T22:45:21.083Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/golemfactory.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-03-01T13:07:23.000Z","updated_at":"2022-10-27T06:55:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"9e2b33c6-5399-4204-9fed-535b9fd8b22a","html_url":"https://github.com/golemfactory/capnp-playground","commit_stats":{"total_commits":10,"total_committers":1,"mean_commits":10.0,"dds":0.0,"last_synced_commit":"66d763715a3c3cd513e1f24e36692caee39f58d2"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/golemfactory/capnp-playground","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/golemfactory%2Fcapnp-playground","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/golemfactory%2Fcapnp-playground/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/golemfactory%2Fcapnp-playground/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/golemfactory%2Fcapnp-playground/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/golemfactory","download_url":"https://codeload.github.com/golemfactory/capnp-playground/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/golemfactory%2Fcapnp-playground/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28504137,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-17T06:57:29.758Z","status":"ssl_error","status_checked_at":"2026-01-17T06:56:03.931Z","response_time":85,"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":[],"created_at":"2024-09-24T13:37:17.286Z","updated_at":"2026-01-17T07:27:19.032Z","avatar_url":"https://github.com/golemfactory.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Cap'n Proto Playground\n\n## Features\n\n1. Made by former gRPC developer with better performance in mind\n1. \"Infinitely faster\" than Protobuf (no serialization needed)\n1. Data types: void, bool, int, float, string, bytes, list, structs, enums, **interfaces**, **generics**\n1. Promise pipelining -- multiple RPC calls in one network round trip\n1. No encryption or authentication\n\n## Python\n\n`pycapnp`: [GitHub](https://github.com/capnproto/pycapnp), [Docs](http://jparyani.github.io/pycapnp/)\n\nIt's a wrapper around C++ library which uses its own event loop.\n\n#### Pycapnp installation on Windows:\n1. You're gonna need:\n    * Visual Studio 2017 with the following build tools:\n        * Windows 10 SDK (10.0.17763.0)\n        * Visual C++ Tools for CMake\n    * CMake (version \u003e= 3.1)\n1. Download and unzip https://capnproto.org/capnproto-c++-win32-0.7.0.zip\n1. Go to `capnproto-c++-0.7.0` directory\n1. Run `cmake -G \"Visual Studio 15 2017\" -A x64 .`\n1. Run Visual Studio **as admin** and open`Cap'n Proto.sln`\n1. Select `Release` build type\n1. Build `BUILD_ALL` solution\n1. Build `INSTALL` solution\n1. Create a new Python virtual environment (further referred to as `venv`)\n1. Clone or download [Pycapnp](https://github.com/capnproto/pycapnp)\n1. Modify `extensions` in `setup.py` (lines 138--143) to look like this:\n\n    ```python\n    extensions = [Extension(\"capnp.lib.capnp\", [\"capnp/lib/capnp.cpp\"],\n                            include_dirs=[\".\", \"C:\\Program Files (x86)\\Cap'n Proto\\include\"],\n                            library_dirs=[\"C:\\Program Files (x86)\\Cap'n Proto\\lib\"],\n                            language='c++',\n                            extra_compile_args=['--std=c++11'],\n                            libraries=['capnpc', 'capnp-rpc', 'capnp', 'kj-async', 'kj', 'ws2_32', 'Advapi32'])]\n    ```\n1. Activate the virtual env and run `python setup.py install --force-system-libcapnp`\n1. Good luck!\n\n---\n\nNo code generation is needed, pycapnp does it on the fly.\n\nTo start non-encrypted server run:\n```\npython python/server.py 127.0.0.1 \u003cPORT\u003e\n```\nTo start SSL server run:\n```\npython python/ssl_server.py 127.0.0.1 \u003cPORT\u003e ./keys/server.crt ./keys/server.key\n```\nTo start non-encrypted client run:\n```\npython python/client.py 127.0.0.1 \u003cPORT\u003e\n```\nTo start SSL client run:\n```\npython python/ssl_client.py 127.0.0.1 \u003cPORT\u003e ./keys/server.crt\n```\n\n## Rust\n\n`capnproto-rust`: [GitHub](https://github.com/capnproto/capnproto-rust/), [Docs](https://docs.capnproto-rust.org/capnp/)\n\nThe library is future-based and tokio-compatible.\n\nSSL support is provided by [tokio-tls](https://docs.rs/tokio-tls/0.2.1/tokio_tls/) or [tokio-openssl](https://docs.rs/tokio-openssl/0.3.0/tokio_openssl/).\n\nTo build the project you need OpenSSL installed. For Windows use [this distribution](https://slproweb.com/products/Win32OpenSSL.html).\nBefore running `cargo build` set `OPENSSL_DIR` variable to point to your OpenSSL installation directory.\n\nTo re-generate Rust definitions you need `capnp` binary ([install instruction](https://capnproto.org/install.html)) and `capnpc` crate installed. Once you have these run:\n```\ncapnp compile -orust:./rust/helloworld/src/ helloworld.capnp\n```\nTo start non-encrypted server run:\n```\n./rust/helloworld/target/debug/server.exe 127.0.0.1:\u003cPORT\u003e\n```\nTo start native SSL server run:\n```\n./rust/helloworld/target/debug/native_ssl_server.exe 127.0.0.1:\u003cPORT\u003e ./keys/server.p12\n```\nTo start OpenSSL server run:\n```\n./rust/helloworld/target/debug/openssl_server.exe 127.0.0.1:\u003cPORT\u003e ./keys/server.crt ./keys/server.key \n```\nTo start non-encrypted client run:\n```\n./rust/helloworld/target/debug/client.exe 127.0.0.1:\u003cPORT\u003e\n```\nTo start native SSL client run:\n```\n./rust/helloworld/target/debug/client.exe 127.0.0.1:\u003cPORT\u003e ./keys/server.crt\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgolemfactory%2Fcapnp-playground","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgolemfactory%2Fcapnp-playground","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgolemfactory%2Fcapnp-playground/lists"}