CSharpPlayground (standalone executable: FrySharp) is an interactive multi-language code studio, polyglot Jupyter-style notebook environment for .NET 10, Python, Rust, and extensible language toolchains built with Avalonia UI.
It operates both as:
- A Standalone Desktop Application (
FrySharp): Native desktop app for macOS (.dmg) and Windows (.msix/.exeinstaller) with VS Code-inspired layout. - A FryPDF Ecosystem Plugin (
com.frypdf.plugin.csharpeditor): Edge-to-edge full-viewport workspace and code automation plugin for FryPDF.
Click here to watch the FrySharp Demo on YouTube β Supports C#, Python, Rust, Go, Java, C++, JavaScript, F# & SQL
# Add the tap and install FrySharp
brew install --cask prashantunity/tap/frysharpTo update when a new version is released:
brew upgrade --cask frysharpGet FrySharp from the official Microsoft Store:
- .NET 10 SDK
- Optional: Python 3.9+ for
.pyfiles and Python notebook cells
# Clone the repository
git clone https://github.com/PrashantUnity/CSharpPlayground.git
cd CSharpPlayground
# Run standalone desktop app
dotnet run --project Runner/CSharpEditorPlugin.Runner.csproj# Run the unit tests (the real-Python ones run when Python 3.9+ is installed)
dotnet test CSharpEditorPlugin.slnxflowchart TD
subgraph Notebook UI
C1["Cell 1: var m = 10;"]
C2["Cell 2: Console.WriteLine(m * 2);"]
C3["Cell 3: Display.Image(surface.Snapshot());"]
end
subgraph "NotebookExecutionKernel (Persistent Session)"
Init["ScriptOptions\n(System Refs + NuGet Refs + Usings)"]
S0["Submission #0: ScriptState\n(Creates 'm' field, Output = 10)"]
S1["Submission #1: ScriptState.ContinueWithAsync\n(References S0, Reads 'm', Output = 20)"]
S2["Submission #2: ScriptState.ContinueWithAsync\n(References S1, Rich Media Display)"]
VarExp["Variable Inspector State\n[m : int = 10]"]
end
subgraph Rich Cell Output
Out1["Text Output / Badge"]
Out2["Console Output: 20"]
Out3["Avalonia Image Control\n(Zoom, Copy, Save PNG)"]
end
C1 -->|"Execute Cell"| S0
S0 -->|"State Chaining"| S1
C2 -->|"Execute Cell"| S1
S1 -->|"State Chaining"| S2
C3 -->|"Execute Cell"| S2
S0 --> VarExp
S1 --> VarExp
S2 --> VarExp
S0 --> Out1
S1 --> Out2
S2 --> Out3
The Scientific Sponsorship Loop:
- You Fund πΈ β 2. I Buy Food π β 3. Eat & Stay Healthy π β 4. Code & Ship Features π (Alternative timeline: No food β Dev dies π β Zero commits πͺ¦)
If you find FrySharp (CSharpPlayground) helpful, consider keeping the developer fueled and alive:
π Sponsor @PrashantUnity on GitHub
MIT License. See LICENSE for details.
