Skip to content

uplc-opt-debugger #8

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 20 additions & 0 deletions proposals/uplc-opt-debug.md
Original file line number Diff line number Diff line change
@@ -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