Skip to main content

Specification Status

The ethdebug/format specification is actively evolving. Different parts of the specification are at different stages of maturity, and we want to be transparent about what tooling implementers can rely on today.

Status Levels

We use three status levels to indicate the maturity of each schema section:

In Design

Actively being developed. Expect significant changes to structure and semantics.

For implementers: Early feedback welcome, but implementations should expect breaking changes.

Implementable

Stable enough to build against. Minor changes possible but core design is settled.

For implementers: Tooling can implement against this schema with reasonable confidence.

Reference Available

Stable schema with a working reference implementation available (debugger-side and/or compiler-side).

For implementers: Reference implementation demonstrates correct behavior. Check details for which side (debugger/compiler) has implementations.

Current status by schema

SchemaStatusNotes
ethdebug/format/pointerReference Available
  • Pointer templates cannot rename their output region names, limiting composability for complex scenarios.
  • No compiler-side reference implementation yet.
ethdebug/format/typeImplementable
  • No support for generic types (e.g., parameterized types).
ethdebug/format/programIn Design
  • Context types for function calls, returns, and reverts are still being designed.
  • Broader structural changes may occur to accommodate new concerns.
ethdebug/format/dataImplementableStable
ethdebug/format/materialsImplementableStable
ethdebug/format/infoImplementableStable

Guidance for tooling implementers

All schemas have TypeScript type definitions available in @ethdebug/format, useful for both debugger and compiler implementations.

Ready to implement

The pointer and type schemas are mature enough for implementation:

  • Pointer schema: Has a working debugger-side reference implementation (@ethdebug/pointers) with comprehensive documentation. Start here if you want to build pointer dereferencing into your debugger.

  • Type schema: Stable design covering all Solidity types.

Early adopters welcome

The program schema is under active development. The core structure (programs, instructions, contexts) is defined and foundational, but context types for function calls, returns, and reverts are still being designed.

If you're interested in helping shape this part of the format, we'd love your input! However, implementations should expect breaking changes as the design evolves.

Stay informed