← Back
Home › Systems › CI/CD and developer tooling

language-server

language server

rust-analyzer

SystemTechniques · 8Primitives · 29 language-server Code symbol indexingcompilers · medium: Extract definitions and references per file, give each symbol a stable string id, and store symbol to occurrences, re-indexing only files whose content hash changed.›Incremental parsingcompilers · medium: Reparse only the region an edit damaged and splice the new subtrees into the old tree, sharing everything else; O(edit) instead of O(file).›Type inference hindley milnercompilers · medium: Algorithm W and J: unification-based inference with let-polymorphism and generalizationIncremental computationsystems · medium: Dependency graph of derived values recomputed only when inputs change (reactive cells, spreadsheets)Language server protocolcompilers · medium: One JSON-RPC conversation over a pipe lets any editor drive any language's analysis server; the cost is keeping a live, edited document in sync and answering before it changes.›Lossless syntax treescompilers · medium: Concrete syntax trees with trivia, green/red node split (Roslyn, rowan) for tools that rewrite codeParser error recoverycompilers · medium: Recover from syntax errors via synchronization tokens and error nodes to keep a full treeName resolutioncompilers · low: Bind every use of a name to its declaration with a scope stack, handling shadowing, hoisting and closure capture in one AST walk.›Ropegraphics · low: A balanced tree of small string chunks with cached byte and newline counts, so seek, insert, delete and snapshot cost O(log n) instead of O(n).›Text position encodingcompilers · low: Store byte offsets, convert to (line, column) on demand with a line-start table and binary search, and count columns in the unit the peer negotiated.›String interningdata-structures · low: Store each distinct string once and refer to it by idFile system watchinghardware-os · low: Treat OS change notices as hints, debounce them, and rescan and diff a snapshot whenever notices overflow or may be lost.›Json rpcnetworking · low: JSON-RPC 2.0 requests, notifications and batchingLength-prefix framingnetworking · low: Split a byte stream (TCP, TLS, pipes) into messages by writing each message's length before it; O(1) boundary detection with no escaping.›Fuzzy finder scoringsearch-sort · low: Subsequence matching with gap/position scoring (fzf-style)Arena allocatorsystems · low: Allocate by bumping a pointer through big chunks and free everything at once: a few instructions per allocation for objects sharing a lifetime.›Protobuf wire formatnetworking · low: Protocol Buffers wire format: tags, varints, length-delimited fields and schema evolutionRecursive-descent parsingcompilers · low: Hand-written top-down parser with one function per grammar rule; simple, fast, with full control over error messages and recovery.›Unificationcompilers · low: First-order unification with union-find and occurs check; basis of type inference and logic programmingUnion-findgraphs · low: Disjoint-set forest with union by size and path compression; merges sets and answers same-set queries in effectively constant time.›Hash consingdata-structures · low: Intern structurally equal immutable terms so equality is pointer comparison and sharing is maximalSwiss tabledata-structures · low: Open-addressing hash table that filters 8-16 slots at once with 1-byte hash tags and SIMD, giving fast lookups at 87.5 % load.›Topological sortgraphs · low: Order the vertices of a DAG so every edge points forward; the core of build systems, schedulers and dependency resolution, with cycle detection for free.›+ 1 more techniques+ 13 more primitives

Similar systems

Share the most building blocks with this one.