Lune

PLDI2021Top-tier venue

Concise, type-safe, and efficient structural diffing

Sebastian Erdweg, Tamás Szabó, André Pacak

2021Year
6Citations

Abstract

A structural diffing algorithm compares two pieces of treeshaped data and computes their difference. Existing structural diffing algorithms either produce concise patches or ensure type safety, but never both. We present a new structural diffing algorithm called truediff that achieves both properties by treating subtrees as mutable, yet linearly typed resources. Mutation is required to derive concise patches that only mention changed nodes, but, in contrast to prior work, truediff guarantees all intermediate trees are well-typed. We formalize type safety, prove truediff has linear run time, and evaluate its performance and the conciseness of the derived patches empirically for real-world Python documents. While truediff ensures type safety, the size of its patches is on par with Gumtree, a popular untyped diffing implementation. Regardless, truediff outperforms Gumtree and a typed diffing implementation by an order of magnitude.

• Software and its engineering → Software notations and tools.

Ask about this paper

Your agent reads all of it.

Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.

Questions to start from

Your agent calls

Luneget_paper_fulltext

Ask in Lune

Free to start. No credit card required.

lune papers fulltext 2180eb1c-ec31-4f9e-bb0a-c20f18a0da43

Builds on1

Related papers

Dusk over the sea between two cliffs drawn in fine vertical lines