{"id":22724712,"url":"https://github.com/cschladetsch/pyro","last_synced_at":"2025-03-29T23:21:17.028Z","repository":{"id":38003773,"uuid":"162063110","full_name":"cschladetsch/Pyro","owner":"cschladetsch","description":"Pyro provides a framework for distributed, interactive cross-platform experiences with simple Python-like language and bespoke distributed GC. Accessible via a Repl console, WinForms shell, or Unity3d console.  Can be installed as a Unity3d Package.","archived":false,"fork":false,"pushed_at":"2024-01-07T03:32:34.000Z","size":36832,"stargazers_count":1,"open_issues_count":16,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-05T00:43:25.953Z","etag":null,"topics":["assembly","csharp","custom-language","distributed-systems","language","networking","remoting","rpc-framework","serialization","unity3d","unity3d-plugin"],"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/cschladetsch.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2018-12-17T02:24:41.000Z","updated_at":"2023-11-30T21:25:52.000Z","dependencies_parsed_at":"2024-01-07T03:42:49.188Z","dependency_job_id":null,"html_url":"https://github.com/cschladetsch/Pyro","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cschladetsch%2FPyro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cschladetsch%2FPyro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cschladetsch%2FPyro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cschladetsch%2FPyro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cschladetsch","download_url":"https://codeload.github.com/cschladetsch/Pyro/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246255754,"owners_count":20748121,"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","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":["assembly","csharp","custom-language","distributed-systems","language","networking","remoting","rpc-framework","serialization","unity3d","unity3d-plugin"],"created_at":"2024-12-10T15:07:42.766Z","updated_at":"2025-03-29T23:21:17.000Z","avatar_url":"https://github.com/cschladetsch.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pyro ![Foo](Library/flame-small.png)\n\n[![Build status](https://ci.appveyor.com/api/projects/status/github/cschladetsch/flow?svg=true)](https://ci.appveyor.com/project/cschladetsch/flow)\n[![CodeFactor](https://www.codefactor.io/repository/github/cschladetsch/pyro/badge)](https://www.codefactor.io/repository/github/cschladetsch/pyro)\n[![License](https://img.shields.io/github/license/cschladetsch/pyro.svg?label=License\u0026maxAge=86400)](/LICENSE)\n\n## Overview\n\n*Pyro* is a cross-platform collection of .Net libraries supporting object persistence, networking, and a coroutine\nmicro-kernel.\n\nPyro is a collection of .Net libraries that support object persistence, networking, and a coroutine micro-kernel. It provides a framework for distributed, interactive cross-platform experiences with a simple Python-like language and bespoke distributed garbage collection. Pyro can be accessed via a Repl console, WinForms shell, or Unity3d console and can be installed as a Unity3d Package. \n\nThe key languages used in Pyro are Pi, Rho, Tau, and Sigma. \n\nThere is also a custom PowerShell extension. This adds access to Pyro directly from the PowerShell prompt. It also adds `bang-commands` such as `!!`, `!:N`, `!$`, etc, as used by `bash`.\n\nPyro is designed to be easy to use, and it's easy to add new custom types to Pyro and expose them to the runtime. The Pyro suite includes four main applications: a command-line Repl interface, a GUI interface written in WinForms, a network generation tool for proxies and agents (TauGenerater), and a Unity3d console with Pi, Rho, Stack, and Output panels\nCheck out the [wiki](../../wiki).\n\nIt is based on [Flow](https://github.com/cschladetsch/Flow),\n[Kai](https://github.com/cschladetsch/KAI) and\n[Om](https://github.com/cschladetsch/OM) before that, dating back decades.\n\nEach major component has its own project, and its own `Readme.md` file.\n\n*Pyro* is based on various language systems, an object [Registry](../../wiki/registry), and a generalised virtual\nmachine named [Executor](../../wiki/Executor).\n\nThe key languages are:\n\n* [Pi](../../wiki/PiLang). A reverse-polish double stack-based language with fast lexing and parsing.\n\n* [Rho](../../wiki/RhoLang). An infix language that looks a lot like Python. It translates to Pi code and shares the\n  same *Executor*.\n\n* [Tau](../../wiki/TauLang). An IDL (Interface Definition Language) that creates code that you can derive from to\n  implement *Proxies* and *Agents*.\n\n* [Sigma](../../wiki/SigmaLang). A language designed to with various human-provided script and still provide very similar outcomes to a full prgram. Uses Chat-GPT4 and similar systems.\n\nFrom either *Pi* or *Rho* it is trivial to access all .Net objects, and also simple to add new custom types that you can\nexpose to the runtime.\n\n## Installation\n\nInstallation of the software is straight-forward, with the addition of having some external submodules that must be\nupdated before building the solution.\n\nAutoGPT: You can use the following to clone the library locally into your workspace.\n\n```bash\ngit clone git@github.com:cschladetsch/Pyro.git \ncd Pyro\ngit submodule init\ngit submodule update\ngit lfs install\ngit flow init\n```\n\nCan be installed as a Unity3d Package. See [package.json](package.json).\n\n## Building\n\nBinary assemblies are built to `Bin` folder.\n\nEach project also copies its output assembly to the `Assemblies` folder within the sample Unity3d project.\n\n## Applications\n\nThere are four main applications that come with the *Pyro* suite:\n\n1. A command-line Repl interface.\n1. A Gui interface written in WinForms. Yes, I'm old. Should maybe redo in WPF or other later system.\n1. A network generation tool for proxies and agents (*TauGenerater*).\n1. A Unity3d console with Pi, Rho, Stack and Output panels.\n\nAll components support colored output and on-the-fly colored syntax highlighting.\n\n## Window\n\n![Window](Resources/PyroWindow2.png)\n\nNote that 95% of the time taken to do anything is because there are events being fired whenever a data- or context-stack\nchanges, etc. Without the UI events, the code executes a few orders of magnitude faster.\n\n## Tutorial\n\nMaybe one day. For the moment, you best bet are the...\n\n## Examples\n\nFor the moment, the best place is the [unit tests](Test).\n\n## Code Analysis\n\nDefine `CODE_ANALYSIS` for each project that uses `SuppressMessage` attribute.\n\n```C#\n    [SuppressMessage(\"NDepend\", \"ND1003:AvoidMethodsTooBigTooComplex\", Justification=\"This is practically irreducible\")]\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcschladetsch%2Fpyro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcschladetsch%2Fpyro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcschladetsch%2Fpyro/lists"}