# Tree-sitter

Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited. Tree-sitter grammars can be reused in many different languages.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## Trailmark turns code into graphs

DevFeed: [Trailmark turns code into graphs](<https://devfeed.tech/articles/trailmark-turns-code-into-graphs-7647.md>)

Original publisher: [Read original article](<https://blog.trailofbits.com/2026/04/23/trailmark-turns-code-into-graphs/>)

Author: "Scott Arciszewski"

Published: 2026-04-23T12:00:00Z

Content type: article

Language: en

Sources: [The Trail of Bits Blog](<https://devfeed.tech/sources/the-trail-of-bits-blog.md>), [The Trail of Bits Blog](<https://devfeed.tech/sources/the-trail-of-bits-blog-2.md>)

Topics: [Graphs](<https://devfeed.tech/topics/graphs.md>), [mutation-testing](<https://devfeed.tech/topics/mutation-testing.md>), [Claude](<https://devfeed.tech/topics/claude.md>), [Code](<https://devfeed.tech/topics/code.md>), [Claude Code](<https://devfeed.tech/topics/claude-code.md>), [test-coverage](<https://devfeed.tech/topics/test-coverage.md>), [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [Python](<https://devfeed.tech/topics/python.md>)

Tags: [ai](<https://devfeed.tech/tags/ai.md>), [claude](<https://devfeed.tech/tags/claude.md>), [claude-code](<https://devfeed.tech/tags/claude-code.md>), [code](<https://devfeed.tech/tags/code.md>), [graphs](<https://devfeed.tech/tags/graphs.md>), [mutation-testing](<https://devfeed.tech/tags/mutation-testing.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [python](<https://devfeed.tech/tags/python.md>), [research-practice](<https://devfeed.tech/tags/research-practice.md>), [software](<https://devfeed.tech/tags/software.md>), [testing](<https://devfeed.tech/tags/testing.md>), [tool](<https://devfeed.tech/tags/tool.md>), [tool-release](<https://devfeed.tech/tags/tool-release.md>)

### AI overview

Trailmark is an open-source library that parses source code into queryable call graphs and exposes them through a Python API that Claude skills can call. The article explains how graph-level reasoning can help analyze codebases, triage surviving mutation-testing mutants by security relevance, and support Claude Code skills for tasks such as test vector generation and protocol diagramming.

### Source excerpt

We're open-sourcing Trailmark, a library that parses source code into a queryable call graph of functions, classes, call relationships, and semantic metadata, then exposes that graph through a Python API that Claude skills can call directly. Install it now: uv pip install trailmark "Defenders think in lists. Attackers think in graphs. As long as this is true, attackers win." John Lambert's widely cited observation about network security applies just as well to AI-assisted software analysis. When Claude reasons about a codebase, it reasons about lists: findings from static analyzers, surviving mutants from mutation testing, and line-by-line coverage reports. But the question that actually matters is a graph question: can untrusted input reach this code, and what breaks if it's wrong? We built Trailmark to answer that question. It gives Claude a graph to think with instead of a list. We're also releasing eight Claude Code skills we've built on top of it, designed for mutation triage, test vector generation, protocol diagramming, and more. When lists fall short Mutation testing is a great example of a method that benefits from graph-level reasoning. It's one of the best ways to measure test quality. It makes small changes to your source code (e.g., swapping a < for <=, replacing + with -) and checks whether your tests catch the difference. Mutants that survive reveal gaps in your test suite that code coverage metrics might miss. The downside is that a mutation testing run on a real codebase can produce hundreds of surviving mutants of varying significance. This is very much a list. Some surviving mutants are equivalent: the mutation doesn't change the program's behavior because of structural or mathematical constraints that the mutation testing tool can't see. Some are in dead code; some are in error message formatting; some are in the finite field arithmetic that underpins every cryptographic operation in your library. A flat list of surviving mutants doesn't tell you

## Building a code search engine with Turso

DevFeed: [Building a code search engine with Turso](<https://devfeed.tech/articles/building-a-code-search-engine-with-turso-5903.md>)

Original publisher: [Read original article](<https://turso.tech/blog/building-a-code-search-engine-with-turso>)

Author: Glauber Costa

Published: 2026-02-26T00:00:00Z

Content type: tutorial

Language: en

Sources: [Turso Blog](<https://devfeed.tech/sources/turso-blog.md>)

Topics: [AI-assisted coding](<https://devfeed.tech/topics/ai-assisted-coding.md>), [Local AI](<https://devfeed.tech/topics/local-ai.md>), [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [SDKs](<https://devfeed.tech/topics/sdks.md>)

Tags: [ai-agents](<https://devfeed.tech/tags/ai-agents.md>), [cli](<https://devfeed.tech/tags/cli.md>), [code](<https://devfeed.tech/tags/code.md>), [database](<https://devfeed.tech/tags/database.md>), [embeddings](<https://devfeed.tech/tags/embeddings.md>), [local](<https://devfeed.tech/tags/local.md>), [search](<https://devfeed.tech/tags/search.md>), [sqlite](<https://devfeed.tech/tags/sqlite.md>), [turso](<https://devfeed.tech/tags/turso.md>), [vector](<https://devfeed.tech/tags/vector.md>)

### AI overview

A tutorial on building a local semantic code search engine for AI agents with Turso. It indexes code chunks, generates local embeddings, and uses vector and full-text search in a single SQLite file.

### Source excerpt

Build a semantic code search engine with Turso's native vector and full-text search. One SQLite file, local embeddings, no separate vector database.

## Zed Has Rainbow Brackets

DevFeed: [Zed Has Rainbow Brackets](<https://devfeed.tech/articles/zed-has-rainbow-brackets-13528.md>)

Original publisher: [Read original article](<https://zed.dev/blog/rainbow-brackets>)

Author: Kirill Bulatov

Published: 2025-12-03T00:00:00Z

Content type: article

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [Syntax Highlighting](<https://devfeed.tech/topics/syntax-highlighting.md>), [vs-code](<https://devfeed.tech/topics/vs-code.md>), [Refactoring](<https://devfeed.tech/topics/refactoring.md>)

Tags: [build](<https://devfeed.tech/tags/build.md>), [feature](<https://devfeed.tech/tags/feature.md>), [refactoring](<https://devfeed.tech/tags/refactoring.md>), [rust](<https://devfeed.tech/tags/rust.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [vs-code](<https://devfeed.tech/tags/vs-code.md>)

### AI overview

Zed introduces rainbow brackets, a feature that colors each nesting level differently to help users follow matching brackets. The article explains how Zed implemented it using tree-sitter queries and existing language-extension query files rather than maintaining complete syntax trees in memory.

### Source excerpt

A whole new world of color comes to Zed.

## Life of a Zed Extension: Rust, WIT, Wasm

DevFeed: [Life of a Zed Extension: Rust, WIT, Wasm](<https://devfeed.tech/articles/life-of-a-zed-extension-rust-wit-wasm-13573.md>)

Original publisher: [Read original article](<https://zed.dev/blog/zed-decoded-extensions>)

Author: Thorsten Ball, Max Brunsfeld, Marshall Bowers

Published: 2024-10-21T00:00:00Z

Content type: article

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Extension](<https://devfeed.tech/topics/extension.md>), [wasm](<https://devfeed.tech/topics/wasm.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [Bevy](<https://devfeed.tech/topics/bevy.md>)

Tags: [extension](<https://devfeed.tech/tags/extension.md>), [rust](<https://devfeed.tech/tags/rust.md>), [wasm](<https://devfeed.tech/tags/wasm.md>), [webassembly](<https://devfeed.tech/tags/webassembly.md>)

### AI overview

This Zed Decoded article explains how Zed extensions work, including how they are written in Rust, compiled, run as WebAssembly modules, and integrated with Tree-sitter and language servers. It follows the installation and execution flow using the zed-metals extension as an example.

### Source excerpt

In this episode of Zed Decoded, Thorsten talks to Max and Marshall, who have built Zed's extension system, asking them to explain to him: what happens when I install an extension? How does it all work?

## Syntax-Aware Task Spawning With Tree-Sitter

DevFeed: [Syntax-Aware Task Spawning With Tree-Sitter](<https://devfeed.tech/articles/syntax-aware-task-spawning-with-tree-sitter-13577.md>)

Original publisher: [Read original article](<https://zed.dev/blog/zed-decoded-tasks>)

Author: Thorsten Ball, Piotr Osiewicz, Kirill Bulatov

Published: 2024-05-21T00:00:00Z

Content type: tutorial

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [Code](<https://devfeed.tech/topics/code.md>), [Parser](<https://devfeed.tech/topics/parser.md>)

Tags: [building](<https://devfeed.tech/tags/building.md>), [features](<https://devfeed.tech/tags/features.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [implementation](<https://devfeed.tech/tags/implementation.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

This Zed Decoded article explains how Zed Tasks let developers execute tests, linters, compilers, scripts, and shell commands from inside the editor. It covers task execution, rerunning, keybindings, context variables, and the Tree-sitter technology used for syntax-aware task spawning.

### Source excerpt

In this episode of Zed Decoded, Thorsten talks to Piotr and Kirill, who have spent the last few months building Tasks, a collection of features in Zed that allow you to execute code.

## Extensible Language Support in Zed - Part 1

DevFeed: [Extensible Language Support in Zed - Part 1](<https://devfeed.tech/articles/extensible-language-support-in-zed-part-1-13511.md>)

Original publisher: [Read original article](<https://zed.dev/blog/language-extensions-part-1>)

Author: Max Brunsfeld

Published: 2024-04-18T00:00:00Z

Content type: article

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [Extension](<https://devfeed.tech/topics/extension.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Syntax Highlighting](<https://devfeed.tech/topics/syntax-highlighting.md>), [C](<https://devfeed.tech/topics/c.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Atom](<https://devfeed.tech/topics/atom.md>), [Neovim](<https://devfeed.tech/topics/neovim.md>)

Tags: [blog-post](<https://devfeed.tech/tags/blog-post.md>), [c](<https://devfeed.tech/tags/c.md>), [compiler](<https://devfeed.tech/tags/compiler.md>), [extension](<https://devfeed.tech/tags/extension.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [programming](<https://devfeed.tech/tags/programming.md>), [source](<https://devfeed.tech/tags/source.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

This article describes the first phase of making Zed extensible, focused on language support through Tree-sitter-based syntax analysis. It explains the use of Tree-sitter grammars and queries, which are written in JavaScript and converted to C, and discusses the goal of safe plugin installation without requiring users to have a C compiler.

### Source excerpt

Read the "Extensible Language Support in Zed - Part 1" blog post.

## We Have to Start Over: From Atom to Zed

DevFeed: [We Have to Start Over: From Atom to Zed](<https://devfeed.tech/articles/we-have-to-start-over-from-atom-to-zed-13565.md>)

Original publisher: [Read original article](<https://zed.dev/blog/we-have-to-start-over>)

Author: Thorsten Ball

Published: 2024-02-12T00:00:00Z

Content type: opinion

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Rust](<https://devfeed.tech/topics/rust.md>), [rustrover](<https://devfeed.tech/topics/rustrover.md>), [Atom](<https://devfeed.tech/topics/atom.md>), [ide](<https://devfeed.tech/topics/ide.md>), [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [GPU](<https://devfeed.tech/topics/gpu.md>), [Emacs](<https://devfeed.tech/topics/emacs.md>)

Tags: [electron](<https://devfeed.tech/tags/electron.md>), [emacs](<https://devfeed.tech/tags/emacs.md>), [gpu](<https://devfeed.tech/tags/gpu.md>), [ide](<https://devfeed.tech/tags/ide.md>), [interviews](<https://devfeed.tech/tags/interviews.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

An editorialized interview with Zed co-founders Nathan, Max, and Antonio examines the vision behind Zed and the technological choices that distinguish it from their earlier work on Atom. They discuss Rust, GPU acceleration, CRDTs, extensibility, and the goal of combining a lightweight text-editor experience with IDE capabilities.

### Source excerpt

Thorsten interviews co-founders Nathan, Max, Antonio about the vision and the technological choices behind Zed, how they went from Atom and Electron to Rust and GPUs with Zed.

## Zed Weekly #22: Performance Monitoring, Vue.js Support, Collaboration, and GPUI Updates

DevFeed: [Zed Weekly #22: Performance Monitoring, Vue.js Support, Collaboration, and GPUI Updates](<https://devfeed.tech/articles/zed-weekly-22-13591.md>)

Original publisher: [Read original article](<https://zed.dev/blog/zed-weekly-22>)

Author: Max Brunsfeld

Published: 2023-10-06T00:00:00Z

Content type: article

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [cpu](<https://devfeed.tech/topics/cpu.md>), [Grafana](<https://devfeed.tech/topics/grafana.md>), [Vue.js](<https://devfeed.tech/topics/vue.md>), [Syntax Highlighting](<https://devfeed.tech/topics/syntax-highlighting.md>), [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [Design system](<https://devfeed.tech/topics/design-system.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>)

Tags: [cpu](<https://devfeed.tech/tags/cpu.md>), [dashboards](<https://devfeed.tech/tags/dashboards.md>), [monitoring](<https://devfeed.tech/tags/monitoring.md>), [performance](<https://devfeed.tech/tags/performance.md>), [rust](<https://devfeed.tech/tags/rust.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [threads](<https://devfeed.tech/tags/threads.md>), [ui](<https://devfeed.tech/tags/ui.md>), [vue](<https://devfeed.tech/tags/vue.md>)

### AI overview

Zed Weekly #22 covers work on CPU and memory monitoring, Vue.js syntax highlighting through LSP and tree-sitter, UI migration to a new GPUI version, collaboration improvements, and Metal renderer updates.

### Source excerpt

Performance monitoring, Vue.js support, docs in the autocomplete menu, fixing bugs in following, and channel status indicators

## This Week at Zed Industries: #13

DevFeed: [This Week at Zed Industries: #13](<https://devfeed.tech/articles/this-week-at-zed-industries-13-13548.md>)

Original publisher: [Read original article](<https://zed.dev/blog/this-week-at-zed-13>)

Author: Mikayla Maki

Published: 2023-07-28T00:00:00Z

Content type: article

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [Streaming](<https://devfeed.tech/topics/streaming.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Vim](<https://devfeed.tech/topics/vim.md>), [User Experience](<https://devfeed.tech/topics/user-experience.md>), [Figma](<https://devfeed.tech/topics/figma.md>), [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [figma](<https://devfeed.tech/tags/figma.md>), [streaming](<https://devfeed.tech/tags/streaming.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [ui](<https://devfeed.tech/tags/ui.md>), [user-experience](<https://devfeed.tech/tags/user-experience.md>), [vim](<https://devfeed.tech/tags/vim.md>)

### AI overview

This weekly Zed update covers work on text-based channels for code conversations and public collaboration sessions, including streaming, project editing, and read-only participation. It also discusses Vim emulation improvements, drag-and-drop experimentation, GPUI and interface design work, and dynamically styled syntax through tree-sitter queries.

### Source excerpt

Settling back into the long term.

## This Week at Zed Industries: #12

DevFeed: [This Week at Zed Industries: #12](<https://devfeed.tech/articles/this-week-at-zed-industries-12-13547.md>)

Original publisher: [Read original article](<https://zed.dev/blog/this-week-at-zed-12>)

Author: Joseph Lyons

Published: 2023-07-21T00:00:00Z

Content type: article

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [test-coverage](<https://devfeed.tech/topics/test-coverage.md>), [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [ui](<https://devfeed.tech/topics/ui.md>), [Command-line interface](<https://devfeed.tech/topics/cli.md>), [PHP](<https://devfeed.tech/topics/php.md>)

Tags: [blog-post](<https://devfeed.tech/tags/blog-post.md>), [dev](<https://devfeed.tech/tags/dev.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [terminal](<https://devfeed.tech/tags/terminal.md>), [test-coverage](<https://devfeed.tech/tags/test-coverage.md>), [time](<https://devfeed.tech/tags/time.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A weekly development update from Zed Industries covering the preview channel launch, feature stabilization, increased test coverage, feedback submission improvements, Search and Replace work, PHP LSP integration, tree-sitter lookup tables, UI and terminal improvements, and bug fixes.

### Source excerpt

Smoothing out the rough edges and exploring new territory.

## This Week at Zed: Parsing, PHP Syntax Highlighting, Tree-sitter, and UI Updates

DevFeed: [This Week at Zed: Parsing, PHP Syntax Highlighting, Tree-sitter, and UI Updates](<https://devfeed.tech/articles/this-week-at-zed-industries-11-13546.md>)

Original publisher: [Read original article](<https://zed.dev/blog/this-week-at-zed-11>)

Author: Kirill Bulatov

Published: 2023-07-14T00:00:00Z

Content type: article

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Parsing](<https://devfeed.tech/topics/parsing.md>), [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [Syntax Highlighting](<https://devfeed.tech/topics/syntax-highlighting.md>), [Code generation](<https://devfeed.tech/topics/code-generation.md>), [PHP](<https://devfeed.tech/topics/php.md>), [Ruby](<https://devfeed.tech/topics/ruby.md>), [Elixir](<https://devfeed.tech/topics/elixir.md>), [Svelte](<https://devfeed.tech/topics/svelte.md>)

Tags: [code-generation](<https://devfeed.tech/tags/code-generation.md>), [elixir](<https://devfeed.tech/tags/elixir.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [php](<https://devfeed.tech/tags/php.md>), [programming](<https://devfeed.tech/tags/programming.md>), [ruby](<https://devfeed.tech/tags/ruby.md>), [svelte](<https://devfeed.tech/tags/svelte.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [ui](<https://devfeed.tech/tags/ui.md>)

### AI overview

A weekly Zed development update covering fixes to parsing disjoint ERB and HEEx code ranges, language-specific editing behavior, PHP syntax highlighting and LSP integration, Tree-sitter code-generation improvements, and several UI updates. The update also reports reducing tree-sitter-rust compile time from 30 seconds to 6 seconds.

### Source excerpt

Quiet weeks bring fruits.

## This Week at Zed Industries: #6

DevFeed: [This Week at Zed Industries: #6](<https://devfeed.tech/articles/this-week-at-zed-industries-6-13556.md>)

Original publisher: [Read original article](<https://zed.dev/blog/this-week-at-zed-6>)

Author: Antonio Scandurra

Published: 2023-06-09T00:00:00Z

Content type: article

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Development](<https://devfeed.tech/topics/development.md>), [Elixir](<https://devfeed.tech/topics/elixir.md>), [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [telemetry](<https://devfeed.tech/topics/telemetry.md>), [Syntax Highlighting](<https://devfeed.tech/topics/syntax-highlighting.md>), [observability ai agents](<https://devfeed.tech/topics/observability-ai-agents.md>), [OpenAI](<https://devfeed.tech/topics/openai.md>), [toolchain](<https://devfeed.tech/topics/toolchain.md>), [configuration](<https://devfeed.tech/topics/configuration.md>)

Tags: [ai-assistants](<https://devfeed.tech/tags/ai-assistants.md>), [configuration](<https://devfeed.tech/tags/configuration.md>), [development](<https://devfeed.tech/tags/development.md>), [elixir](<https://devfeed.tech/tags/elixir.md>), [openai](<https://devfeed.tech/tags/openai.md>), [syntax](<https://devfeed.tech/tags/syntax.md>), [telemetry](<https://devfeed.tech/tags/telemetry.md>), [toolchain](<https://devfeed.tech/tags/toolchain.md>)

### AI overview

This weekly Zed development update covers Zed 0.89, including language server protocol support and improvements to the Assistant Panel, panic telemetry, feedback analysis, build configuration, Elixir support, syntax highlighting, and Tree-sitter query reloading.

### Source excerpt

We're working on language servers, AI assistants, and plenty more!

## Enabling low-latency, syntax-aware editing using Tree-sitter

DevFeed: [Enabling low-latency, syntax-aware editing using Tree-sitter](<https://devfeed.tech/articles/enabling-low-latency-syntax-aware-editing-using-tree-sitter-13539.md>)

Original publisher: [Read original article](<https://zed.dev/blog/syntax-aware-editing>)

Author: Max Brunsfeld

Published: 2023-03-27T00:00:00Z

Content type: tutorial

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [Parsing](<https://devfeed.tech/topics/parsing.md>), [Concrete syntax tree](<https://devfeed.tech/topics/cst.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [Open Source](<https://devfeed.tech/topics/open-source.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [incremental](<https://devfeed.tech/tags/incremental.md>), [low-latency](<https://devfeed.tech/tags/low-latency.md>), [open-source](<https://devfeed.tech/tags/open-source.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [programming](<https://devfeed.tech/tags/programming.md>), [syntax](<https://devfeed.tech/tags/syntax.md>)

### AI overview

This tutorial explains how Zed uses Tree-sitter for syntax-aware editing. It covers the challenges of parsing frequently changing and temporarily invalid source code, and describes Tree-sitter's incremental parsing, error recovery, and concrete syntax trees, including syntax-aware selection.

### Source excerpt

A tour of Zed's syntax-aware editing features, and how we use Tree-sitter to implement them efficiently.

## Introducing Zed: A high-performance, multiplayer code editor. Now in beta.

DevFeed: [Introducing Zed: A high-performance, multiplayer code editor. Now in beta.](<https://devfeed.tech/articles/introducing-zed-a-high-performance-multiplayer-code-editor-now-in-beta-13426.md>)

Original publisher: [Read original article](<https://zed.dev/blog/beta>)

Author: Nathan Sobo

Published: 2023-03-15T00:00:00Z

Content type: release

Language: en

Sources: [Zed Industries - Blog](<https://devfeed.tech/sources/zed-industries-blog.md>)

Topics: [Code](<https://devfeed.tech/topics/code.md>), [coding](<https://devfeed.tech/topics/coding.md>), [Rust](<https://devfeed.tech/topics/rust.md>), [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [real-time](<https://devfeed.tech/topics/real-time.md>), [Atom](<https://devfeed.tech/topics/atom.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [collaboration](<https://devfeed.tech/tags/collaboration.md>), [incremental](<https://devfeed.tech/tags/incremental.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [real-time](<https://devfeed.tech/tags/real-time.md>), [release](<https://devfeed.tech/tags/release.md>), [rust](<https://devfeed.tech/tags/rust.md>)

### AI overview

Zed is introduced as a high-performance, multiplayer code editor entering beta. The article describes its Rust implementation, GPU-accelerated UI framework, Tree-sitter incremental parsing, and real-time collaboration features.

### Source excerpt

Zed is now ready for your keystrokes and feedback.

## Difftastic: A Structural Diff Tool for Programming Languages

DevFeed: [Difftastic: A Structural Diff Tool for Programming Languages](<https://devfeed.tech/articles/difftastic-the-fantastic-diff-22024.md>)

Original publisher: [Read original article](<http://www.wilfred.me.uk/blog/2022/09/06/difftastic-the-fantastic-diff/>)

Author: Wilfred Hughes

Published: 2022-09-06T00:00:00Z

Content type: tutorial

Language: en

Sources: [Wilfred Hughes](<https://devfeed.tech/sources/wilfred-hughes.md>)

Topics: [Parsing](<https://devfeed.tech/topics/parsing.md>), [Tree-sitter](<https://devfeed.tech/topics/tree-sitter.md>), [Parser](<https://devfeed.tech/topics/parser.md>), [Code](<https://devfeed.tech/topics/code.md>), [Lisp](<https://devfeed.tech/topics/lisp.md>), [JavaScript](<https://devfeed.tech/topics/javascript.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [emacs](<https://devfeed.tech/tags/emacs.md>), [javascript](<https://devfeed.tech/tags/javascript.md>), [lisp](<https://devfeed.tech/tags/lisp.md>), [parsing](<https://devfeed.tech/tags/parsing.md>), [programming](<https://devfeed.tech/tags/programming.md>), [time](<https://devfeed.tech/tags/time.md>)

### AI overview

The article explains how difftastic implements structural diffs for programming languages. It describes parsing source code with tree-sitter, converting parse trees into a uniform s-expression representation, and calculating diffs as a shortest-path problem on a directed acyclic graph.

### Source excerpt

I've always wanted a structural diff tool, so I built difftastic. This has been the most fascinating, most frustrating, and most challenging program I've ever written. How Hard Could It Be? If you write Lisp code for a while, you start to see code like JSON. Everything is basically a list. json-diff example json-diff already exists, and it's pretty good. I wanted something similar for programming languages. After a huge amount of experimentation, I have something that works. In this post, I'll show you how it works. I won't show the many, many dead ends and failed designs along the way. We can pretend that I got it right first time. Parsing The Code If I want to compare two programs, I first need a parse tree for each program. I need an accurate lexer, a basic parser, and I need to preserve comments. tree-sitter was a great fit here. You define a grammar in JSON or JS, and it generates a C library that anyone can use. It's not 100% accurate (e.g. the C++ parser doesn't have preprocessor data) but it's more than good enough. list: ($) => seq("(", repeat($._sexp), ")"), vector: ($) => seq("[", repeat($._sexp), "]"), Here's an excerpt from my Emacs Lisp grammar. There's a ton of tree-sitter parsers available too. Difftastic now supports 44 different syntaxes, and adding new ones is so straightforward that my manual includes a worked example. Using difftastic with Emacs Lisp After parsing, difftastic converts the tree-sitter parse tree to an s-expression. Everything is a list or an atom. This uniform representation enables the diffing logic to work on any language that I can parse. For example, given a JavaScript program like this: foo(1, 2) tree-sitter parses it to this parse tree: expression_statement call_expression identifier "foo" arguments ( number "1" , number "2" ) difftastic then converts the tree to this s-expression representation: List { open_content: "", children: [ Atom "foo", List { open_content: "(", children: [ Atom "1", Atom ",", Atom "2", ], close_con