For Guillotine
ReleaseFast is fast
ReleaseSmall is small
But why should you not use them?
Because the coolest mode is ReleaseSafe mode:
The Tracer is currently a zero-cost abstraction for plugging into the EVM, but it’s about to become a full sidecar and event system. Soon, every EVM action will emit events you can:
- Log for tracing and visibility
- Pause/modify state at runtime (debuggers)
- Understand optimizations like opcode fusion
- Independently validate execution
- Add safety features (e.g. loop limits)
The new DefaultTracer will go beyond simple traces. It will independently validate execution in real time, ensuring:
- PC advances correctly
- Gas estimates match expectations
- Stack, memory, and storage update correctly
- System Memory allocation is in reasonable ranges for the bytecode size
All with zero performance cost in ReleaseSmall and ReleaseFast.
As you run guillotine in the wild in ReleaseSafe mode, you will literally be executing unit tests in real time giving us confidence Guillotine is doing what we expect. This will give Guillotine the visibility, safety, and debuggability it needs to move from alpha to beta.