30 open-source projects similar to ternjs/tern, ranked by how many features they have in common. Compare stars, activity and what each one does to find the best Tern alternative.
lua-language-server is a static analysis tool and type checker for the Lua language that implements the Language Server Protocol. It provides a system for detecting type mismatches, unused code, and logic errors in source files. The project features an inference-based type system that deduces variable types and supports optional annotations and meta files to enforce type safety. It allows for the definition of custom types and function signatures, including support for overloads and member visibility controls. The server provides a broad set of IDE capabilities, including real-time code auto
Tinymist is a comprehensive suite of tools for Typst document authoring, serving as a language server, document compiler, and project manager. It provides a standardized language service via the Language Server Protocol to enable editor features such as autocompletion, navigation, and semantic highlighting. The project distinguishes itself by integrating a TCP-based live preview server for real-time visual rendering and an advanced static analysis tool that utilizes abstract syntax trees and bidirectional type checking. It also includes a project management system capable of handling multi-fi
RLS is a language server that provides language intelligence for the Rust programming language. It implements the Language Server Protocol to enable a standardized communication layer between the Rust compiler and various editor clients. The project focuses on providing real-time code completions, symbol navigation, and type information. It also supports automated structural changes, such as workspace-wide symbol renaming, to maintain semantic correctness during refactoring. The system incorporates static code analysis for linting and formatting, alongside a mechanism for incremental compila
This project is an interactive programming education resource and tutorial designed for learning the Rust programming language and systems programming concepts. It provides a collection of runnable and editable code examples that serve as a practical reference for language syntax and implementation. The resource features an interactive code sandbox that allows users to execute and test code snippets in real time. It emphasizes the verification of technical accuracy by executing embedded code blocks during the build process to ensure all examples remain functional. The content covers a compre
lsp-mode is a Language Server Protocol client and IDE feature set for Emacs. It functions as a semantic code analysis tool and JSON-RPC communication layer that connects the editor to external language servers to provide intelligent code completion and real-time diagnostics. The project also serves as a Debug Adapter Protocol client, enabling interactive debugging sessions and breakpoint management. This allows for stepping through code and inspecting variables via a standardized protocol, including support for debugging within Docker containers. The system covers a broad range of developmen
TabNine is an AI-powered code completion engine that runs a deep-learning model to generate real-time code suggestions across all programming languages. It operates as an editor plugin that communicates with a backend through a JSON message-passing interface, processing code entirely on the local machine or within a private cloud to keep source code secure and private. The system provides a completion request API that accepts cursor context and returns ranked text completions, with features for configuring completion regions, prefetching files for indexing, and managing binary versions and up
This is a Visual Studio Code extension that provides framework-specific IntelliSense for Laravel projects. It acts as a project metadata provider, scanning PHP files and extracting application state to offer intelligent autocomplete for routes, views, configuration keys, and model attributes. The tool includes a specialized suggestion engine for Blade templates, providing autocomplete for directives, sections, and stacks. It supports containerized development by routing commands through virtual environments or custom paths to ensure metadata is accurately extracted from isolated project direc
gocode is a language server backend and autocompletion daemon for the Go language. It functions as a static code analyzer and symbol indexer that provides real-time identifier and symbol suggestions to text editors. The project utilizes a client-server daemon architecture to maintain a persistent background process, avoiding the overhead of reloading package metadata for every request. It employs a two-tier metadata caching system and parses compiled package binaries to enable fast symbol lookups and declaration retrieval. The system covers broad capability areas including context-sensitive
Pyrefly is a static type checker for Python that operates as a language server, delivering real-time diagnostics, completions, and navigation in any editor supporting the Language Server Protocol. It also performs static tensor shape analysis, using symbolic dimension variables and arithmetic to verify shape consistency in deep learning models without runtime execution. Beyond core type checking, Pyrefly supports gradual adoption workflows: it can generate a baseline of known errors so only new issues are reported, migrate configuration from other type checkers, and automatically suppress exi
This project is a comprehensive guide and educational resource for the TypeScript language. It covers the fundamental principles of the language, including its structural type system, static type analysis, and the process of transpiling typed source files into JavaScript. The material details how to model complex data and reusable type logic using generics, conditional types, and mapped types. It also explains the use of declaration files to provide type safety for external JavaScript libraries and the integration of type checking into existing JavaScript projects via JSDoc annotations. The
OpenRewrite is an automated refactoring engine and source-to-source migration framework. It uses a lossless semantic tree parser to represent source code as type-aware trees that preserve original whitespace and formatting, enabling precise and deterministic modifications. The project utilizes a declarative refactoring pipeline where sequences of transformations are defined in YAML to resolve breaking changes and technical debt. It features type-aware pattern matching and cross-language model mapping to apply similar refactoring patterns across different programming languages. The framework
LiteIDE is a cross-platform integrated development environment designed for writing, compiling, and debugging Go source code. It functions as both a code editor with syntax highlighting and a build tool orchestrator that manages toolchains, environment profiles, and cross-compilation targets. The environment is modular and extensible, supporting third-party plugins and custom keyboard mapping to tailor the coding workflow. It provides an integrated interface for external debuggers to inspect program execution and state. The platform covers a broad range of development capabilities, including
This project is a Go language extension for VS Code that provides a comprehensive development environment through a language server client, a debugging interface, and a test automation runner. It integrates language intelligence, formatting, and debugging capabilities to support the full Go language development lifecycle. The extension distinguishes itself by managing the Go toolchain, including the installation and configuration of external binaries required for language features. It also features a dedicated test automation interface that allows for the generation of unit test skeletons and
go-ast-book is a collection of educational and technical resources focused on abstract syntax tree analysis, compiler development, and static code verification. It provides guides and manuals for parsing, traversing, and analyzing Go source code to extract semantic meaning. The project serves as a reference for building compiler frontends, covering the translation of high-level code into intermediate representations and single static assignment forms. It also provides instructions for using these techniques to develop language tooling and perform static code analysis. The resources cover a b
This project is an exercise-based learning platform and functional programming course designed to teach Haskell through a structured curriculum of practical implementation tasks. It functions as an interactive tutorial and learning framework where students master functional programming concepts by completing a curated sequence of modules. The platform emphasizes a type-driven development workflow, utilizing type holes and compiler-integrated type querying to guide the discovery of program logic. It provides an interactive programming environment via a read-eval-print loop, allowing for real-t
gore is an interactive shell and read-eval-print loop for the Go language. It serves as a prototyping tool that allows for the evaluation of expressions, statements, and function declarations in a terminal-based interface without requiring a full build cycle. The project integrates as a language server client to provide intelligent code completion, real-time code suggestions, and automatic package import resolution. It further distinguishes itself by generating temporary module files to resolve dependencies and automatically importing remote repositories during a session. The tool includes c
kotlin-lsp is a language server implementation that integrates editors with the Kotlin compiler and build tools to provide language intelligence and code analysis. It uses the Language Server Protocol to decouple heavy language processing from the text editor user interface. The project provides static code analysis to detect issues and provide real-time diagnostics. It enables source code navigation through symbol-index based jumping to definitions and an analysis of how components interact. Additional capabilities include automated source code formatting, intelligent code completion, and s
Ruff is a high-performance static analysis and code formatting tool designed for Python. Built in Rust, it functions as a comprehensive engine that scans source code to detect programming errors, security vulnerabilities, and deviations from established coding standards. By parsing source code into a structured tree representation, it provides both automated linting and style enforcement across entire projects. The tool distinguishes itself through its speed and deep integration into the development lifecycle. It utilizes parallelized file processing to maximize throughput on large codebases
SwiftFormat is a tool for the Swift language that functions as a code formatter, linter, and refactoring utility. It automatically applies consistent style rules and visual formatting to source files to ensure a uniform appearance across a project. The project differentiates itself by providing both a command-line interface for batch processing and an Xcode extension for integration directly into the development environment. It includes specialized capabilities for modernizing legacy API usage, simplifying language constructs, and inferring formatting options by analyzing an existing codebase
This project is a high-performance static type checker and comprehensive development toolkit for Python. It functions as a core analysis engine that identifies type inconsistencies and enforces code correctness, while simultaneously providing a language server implementation to deliver real-time diagnostics and intelligence directly within development environments. The tool distinguishes itself through a parallelized execution engine that maximizes performance across large-scale codebases and monorepo structures. It supports gradual type adoption, allowing developers to integrate type checkin
Semantic is a Haskell-based library and command-line tool designed for polyglot source code analysis. It functions as a static program analysis framework and a polyglot abstract syntax tree parser that converts multiple programming languages into structured syntax trees based on grammar definitions. The system distinguishes itself through a semantic code comparison engine that detects structural and meaningful changes between code versions rather than relying on textual differences. It further enables analysis across different programming syntaxes by translating surface languages into a unifi
Deoplete.nvim is an asynchronous completion engine and framework for Neovim and Vim8. It functions as a non-blocking system for fetching and displaying text suggestions, serving as a modular extension that integrates multiple external completion sources without freezing the editor user interface. The project operates as a Language Server Protocol client, bridging the editor to external language servers to provide context-aware, type-safe completions. It further distinguishes itself by supporting intelligent text prediction through the integration of machine learning engines and language-speci
Rust-analyzer is a language server implementation that provides real-time code intelligence, static analysis, and development productivity tools for the Rust programming language. It functions as a backend engine that communicates with text editors to deliver deep structural understanding of source code, enabling features like semantic analysis, symbol navigation, and automated refactoring. The project distinguishes itself through a core engine designed for high-performance responsiveness, utilizing incremental query-based compilation and lazy demand-driven evaluation to minimize resource con
CopilotForXcode is an AI-powered coding assistant integrated directly into Xcode as a source editor extension. It functions as an agent that can automate multi-step project tasks, such as editing files, running terminal commands, and searching across the entire codebase, all while understanding the full context of the current Xcode project. The assistant provides a context-aware chat interface that answers coding questions based on open files, symbols, and recent edits. It also offers diff-based code review, analyzing changes to provide feedback on code quality and potential issues before mer
Swift is a general purpose, compiled systems programming language designed for building high-performance software. It is a strongly typed language that focuses on memory safety and type safety to prevent runtime errors. The language is designed for native code integration, allowing it to interoperate with C and Objective-C libraries to leverage existing system functions and high-performance APIs. The project covers broad capabilities in type-safe application development and cross-platform toolchain engineering. It includes infrastructure for automated language validation, compiler performanc
This repository contains a collection of code examples that demonstrate how to build extensions for Visual Studio Code using its extension API. The samples cover the core patterns for extending the editor, including implementing code actions, completions, snippets, and semantic token highlighting. The examples show how to integrate a language server to provide diagnostics, completions, and hover information, as well as how to register a source control provider with file status and commit operations. Custom task types that run shell commands or scripts are also demonstrated, along with virtual
F# is a strongly typed, functional programming language and compiler for the .NET ecosystem. It transforms functional source code into Common Intermediate Language for execution on the .NET runtime and provides a foundational core library of primitive types and functions. The language emphasizes immutability and uses a static, constraint-based type inference system to automatically determine variable types without requiring explicit user annotations. It also functions as a Language Server Protocol provider, exposing compiler logic through a service-based API to deliver real-time code analysis
Plato is a JavaScript static analysis tool and code complexity visualizer. It computes complexity metrics and runs linting checks on JavaScript source code to evaluate codebase quality, presenting the results through a static analysis dashboard. The system aggregates linting data and technical metrics into timestamped reports. It specifically calculates cyclomatic and Halstead metrics to identify overly complicated files and assess the maintainability of a project. The tool provides capabilities for source code visualization, automated quality reporting, and maintainability assessment. It in