From 3585ad0357e98e187123a6600aa6d103bac84f78 Mon Sep 17 00:00:00 2001 From: benjmhart Date: Mon, 5 Sep 2022 20:09:02 -0400 Subject: [PATCH] uplc-opt-debugger --- proposals/uplc-opt-debug.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 proposals/uplc-opt-debug.md diff --git a/proposals/uplc-opt-debug.md b/proposals/uplc-opt-debug.md new file mode 100644 index 0000000..e6cfb9d --- /dev/null +++ b/proposals/uplc-opt-debug.md @@ -0,0 +1,20 @@ +# Untyped Plutus Core Optimizing Debugger +Developer Experience Working Group Proposal #X + +v0.1 + +## Preamble + +Script size, cpu, and memory usage - are key concerns for cardano developers in all of the Plutus family of languages (PlutusTx, Plutarch, Helios, Imperator). Providing a tool which uses the existing plutus estimator/evaluator functions, the developer could be able to see which portions of their script create the most problems from a script budgeting perspective. + + +## Developer Experience Concerns +Optimization is a common task for the plutus developer, while automated tools such as Plutonomy acheive some optimizations, many products will acquire additional hand-tuning. Additionally, these procedures do not follow optimization patterns from most common languages (TODO:Source). + +## Proposed solution +a debugger tool that allows a user to step through their code and understand how their memory and cpu budgets get calculated will allow the most efficient use of developer time to resolve the most egregious problems first. + +This debugger could utilize the existing CEK machine operations. this would allow for a script to be optimized at the UPLC level, though most developers do not write UPLC directly. Instead, by targetting the UPLC artifact - the system can be paired with sourcemaps to aid not just PlutusTx developers, but Plutarch, Helios, Imperator, and other alternative Cardano scripting languages. + +## Additional Reading +TODO