Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cschladetsch/pyro
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.
https://github.com/cschladetsch/pyro
assembly csharp custom-language distributed-systems language networking remoting rpc-framework serialization unity3d unity3d-plugin
Last synced: 26 days ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/cschladetsch/pyro
- Owner: cschladetsch
- License: mit
- Created: 2018-12-17T02:24:41.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-01-07T03:32:34.000Z (12 months ago)
- Last Synced: 2024-01-08T03:34:23.167Z (12 months ago)
- Topics: assembly, csharp, custom-language, distributed-systems, language, networking, remoting, rpc-framework, serialization, unity3d, unity3d-plugin
- Language: C#
- Homepage:
- Size: 35.1 MB
- Stars: 1
- Watchers: 2
- Forks: 1
- Open Issues: 16
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Pyro ![Foo](Library/flame-small.png)
[![Build status](https://ci.appveyor.com/api/projects/status/github/cschladetsch/flow?svg=true)](https://ci.appveyor.com/project/cschladetsch/flow)
[![CodeFactor](https://www.codefactor.io/repository/github/cschladetsch/pyro/badge)](https://www.codefactor.io/repository/github/cschladetsch/pyro)
[![License](https://img.shields.io/github/license/cschladetsch/pyro.svg?label=License&maxAge=86400)](/LICENSE)## Overview
*Pyro* is a cross-platform collection of .Net libraries supporting object persistence, networking, and a coroutine
micro-kernel.Pyro 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.
The key languages used in Pyro are Pi, Rho, Tau, and Sigma.
There 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`.
Pyro 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
Check out the [wiki](../../wiki).It is based on [Flow](https://github.com/cschladetsch/Flow),
[Kai](https://github.com/cschladetsch/KAI) and
[Om](https://github.com/cschladetsch/OM) before that, dating back decades.Each major component has its own project, and its own `Readme.md` file.
*Pyro* is based on various language systems, an object [Registry](../../wiki/registry), and a generalised virtual
machine named [Executor](../../wiki/Executor).The key languages are:
* [Pi](../../wiki/PiLang). A reverse-polish double stack-based language with fast lexing and parsing.
* [Rho](../../wiki/RhoLang). An infix language that looks a lot like Python. It translates to Pi code and shares the
same *Executor*.* [Tau](../../wiki/TauLang). An IDL (Interface Definition Language) that creates code that you can derive from to
implement *Proxies* and *Agents*.* [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.
From either *Pi* or *Rho* it is trivial to access all .Net objects, and also simple to add new custom types that you can
expose to the runtime.## Installation
Installation of the software is straight-forward, with the addition of having some external submodules that must be
updated before building the solution.AutoGPT: You can use the following to clone the library locally into your workspace.
```bash
git clone [email protected]:cschladetsch/Pyro.git
cd Pyro
git submodule init
git submodule update
git lfs install
git flow init
```Can be installed as a Unity3d Package. See [package.json](package.json).
## Building
Binary assemblies are built to `Bin` folder.
Each project also copies its output assembly to the `Assemblies` folder within the sample Unity3d project.
## Applications
There are four main applications that come with the *Pyro* suite:
1. A command-line Repl interface.
1. A Gui interface written in WinForms. Yes, I'm old. Should maybe redo in WPF or other later system.
1. A network generation tool for proxies and agents (*TauGenerater*).
1. A Unity3d console with Pi, Rho, Stack and Output panels.All components support colored output and on-the-fly colored syntax highlighting.
## Window
![Window](Resources/PyroWindow2.png)
Note that 95% of the time taken to do anything is because there are events being fired whenever a data- or context-stack
changes, etc. Without the UI events, the code executes a few orders of magnitude faster.## Tutorial
Maybe one day. For the moment, you best bet are the...
## Examples
For the moment, the best place is the [unit tests](Test).
## Code Analysis
Define `CODE_ANALYSIS` for each project that uses `SuppressMessage` attribute.
```C#
[SuppressMessage("NDepend", "ND1003:AvoidMethodsTooBigTooComplex", Justification="This is practically irreducible")]
```