salsa

Guide Rust developers through the Salsa incremental computation framework.

2|1|Updated Apr 27, 2026
One-click install
npx skills add https://github.com/nikomatsakis/sage-dev --skill salsa
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: salsa
Source: https://github.com/nikomatsakis/sage-dev/tree/main/.agents/skills/salsa
Command: npx skills add https://github.com/nikomatsakis/sage-dev --skill salsa

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) and references (resource) components.

What problem does it solve?

The salsa Skill Unit addresses the complexities of implementing Salsa-based databases, tracked structs, interned types, tracked functions, and accumulators by providing a comprehensive guide and operational instructions.

Core Features & Use Cases

  • Full API Coverage: From input structs to accumulators, the Skill covers the entire salsa API.
  • Incremental Computation: Offers guidance on designing and implementing Salsa-based databases for incremental computation.
  • Performance Tuning: Includes tips on optimizing performance for salsa-based applications.
  • Use Case: Ideal for software engineers working on systems requiring efficient, incremental data processing, such as version control systems or data synchronization tools.

Quick Start

Use the salsa skill to understand the basics of salsa incremental computation framework and apply it to your project.

Frequently Asked Questions about salsa

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I implement incremental computation in Rust using salsa?

To implement incremental computation in Rust using salsa, you design a database with input structs, tracked functions, and accumulators. The framework caches results and recomputes only changed data, enabling efficient incremental updates for your IR.

What is incremental computation and when do I need it for a database?

Incremental computation is a technique that only recalculates outputs when underlying inputs change, avoiding redundant processing. You need it for databases or systems like version control where data changes frequently and full recomputation is too expensive.

How do I use tracked structs and interned types in a salsa database?

You use tracked structs and interned types in a salsa database to manage state across incremental revisions. Tracked structs hold data tied to specific revisions, while interned types deduplicate equivalent values to optimize memory and lookup performance.

Can I optimize performance for salsa-based incremental computation applications?

Yes, you can optimize performance for salsa-based applications by carefully structuring tracked functions and inputs. The framework provides performance tuning guidance to minimize unnecessary recomputation and maximize incremental query efficiency in your Rust code.

Is salsa suitable for building version control systems or data synchronization tools?

Yes, salsa is ideal for building version control systems or data synchronization tools. It is designed for Rust engineers needing efficient, incremental data processing to handle complex state changes without performing full recomputations.