ionide/ionide-vscode-fsharp
52.7
Weak · 23 September 2026
9.4k
lines of production code
F#
primary language
5
measurements over time
What this system is
This system is an F\# language server and VS Code extension that provides IDE capabilities such as code completion, diagnostics, debugging, and interactive scripting. It bridges F\# tooling with JavaScript environments using Fable, managing build processes, project metadata, and real-time code analysis. The extension integrates with VS Code's interface to offer features like inline hints, reference tracking, and FSI watch windows for developers.
Features
Add Fable bindings for Node.js utilities, Semver, and XPath
New F\# modules have been added to bridge JavaScript libraries into the F\# codebase: Node.Util provides access to Node's util module and JSON parsing; Semver exposes the full semver library API for parsing, comparing, and manipulating version strings; and XPath enables querying XML documents using the xmldom and xpath libraries. These bindings allow the IDE to handle version constraints and XML-based project metadata more robustly.
src/Imports · high confidence
Introduction of new F\# IDE components
This change introduces a suite of new components for the F\# VS Code extension, including CodeLens helpers for showing references, a Debugger module for building and debugging projects, a Diagnostics module for generating issue reports, an FSI watcher with a dedicated webview panel, Gitignore management, Help integration, an HTML converter, an Info Panel for documentation, Inlay Hints configuration, Language Configuration for smart indenting, MSBuild task integration, QuickInfo status bar displays, and a Script Runner.
src/Components · high confidence
Architecture
Migrate build system to FAKE
The build process has been rewritten using the FAKE build automation tool for F\#. This change introduces a new \build/Program.fs\ script that handles project configuration, Fable compilation, VSIX packaging, and release management, replacing the previous build implementation. The build dependencies are now managed via \paket.references\, pulling in FAKE modules for targets, process execution, .NET CLI interactions, file system operations, and GitHub API access.
build · high confidence
Behavioural changes
Extract shared LineLens and PipelineHints infrastructure
The LineLens and PipelineHints components have been refactored to share a common base implementation in \LineLensShared.fs\. This change introduces a generic \LineLens\ class and a shared \DecorationUpdate\ module that handle caching, document versioning, and decoration creation, allowing both features to reuse the same logic for updating inline hints. The specific behaviors for LineLens (showing function signatures) and PipelineHints (showing type hints in pipelines) are now implemented as distinct configurations and decoration update functions that plug into this shared engine.
src/Components/LineLens · high confidence
Ionide for VSCode 7.31.1 release artifacts
This entry covers the release artifacts for Ionide for VSCode version 7.31.1. The release includes an updated CHANGELOG.md documenting the 7.31.1 update, which adds debug logs during feature activation and updates the F\# Auto Complete (FSAC) dependency to version 0.83.0. Additionally, the release package contains the language configuration file (language-configuration.json) defining F\# syntax rules such as comments and auto-closing pairs, and the snippets file (snippets.json) providing code templates for F\# constructs including literals, loops, pattern matching, types, and analyzer ignore directives. The release also includes the minified JavaScript toolkit (toolkit.min.js) used for UI components.
release · high confidence
Migrate core infrastructure from FunScript to Fable
The core module has been rewritten to use Fable instead of FunScript, replacing the previous .NET-based HTTP request implementation with Fable's JavaScript interop and introducing a new structured logging system (Logging.fs) that writes to VS Code output channels and the developer console. This change also updates the Data Transfer Object (DTO) definitions to include new fields such as document versions and file names, and replaces the old event-based communication pattern with VS Code event emitters for better integration with the language server protocol.
src/Core · high confidence
Modernized build system and added development environment configuration
The project has migrated its build process from the legacy Paket/FAKE system to a modern .NET SDK-based approach using \dotnet tool restore\ and \dotnet run\, replacing the old \build.fsx\ script with a \build.fsproj\. To support this and improve the developer experience, the repository now includes an \.editorconfig\ for consistent code formatting, a \.gitpod.yml\ for instant cloud-based development environments, and a \.tool-versions\ file to specify Node.js and Yarn versions. Additionally, the \CONTRIBUTING.md\ guide has been updated to reflect these new prerequisites and build steps, and the \README.md\ has been refreshed with current badges and feature descriptions.
(repo-wide) · high confidence
Removed FsAutoComplete.Suave.exe.config binding redirect
The FsAutoComplete.Suave.exe.config file, which previously enforced a binding redirect for FSharp.Core version 4.3.1.0, has been removed. This change eliminates the explicit constraint on the FSharp.Core assembly version for the Suave-based executable.
release/bin · high confidence
Fixes
FSI watcher now supports null-safe assembly inspection
The FSI watcher script has been updated to handle null values when inspecting assembly names and type full names. This change prevents runtime errors (such as 'no matching index' or null reference exceptions) that occurred when the FSI environment contained assemblies with null names or types without full names, ensuring stable evaluation of values in the watch window.
release/watcher · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 52 → 53 (+0.7)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 86 → 86 (-0.2)
- Architecture 100 → 100 (-0.2)
- Maturity 52 → 52 (+0.5)
- Readiness 42 → 42 (+0.0)
- Security 53 → 57 (+4.1)
Resolved (50)
- Critical CVE: [GHSA redacted] (yarn.lock)
- Critical CVE: [GHSA redacted] (yarn.lock)
- Dependency hygiene not measured — no packages were read
- Duplicated block (10 lines × 2) (src/Core/LanguageService.fs)
- Duplicated block (11 lines × 2) (src/Core/Project.fs)
- Duplicated block (12 lines × 2) (src/Components/TestExplorer.fs)
- Duplicated block (13 lines × 2) (src/Components/MSBuild.fs)
- Duplicated block (17 lines × 2) (src/Components/Fsi.fs)
- Duplicated block (7 lines × 2) (src/Components/SolutionExplorer.fs)
- Duplicated block (7 lines × 2) (src/Components/SolutionExplorer.fs)
- Duplicated block (7 lines × 3) (src/Components/Fsi.fs)
- Duplicated block (8 lines × 2) (src/Components/Fsi.fs)
- Duplicated block (9 lines × 2) (src/Components/SolutionExplorer.fs)
- Duplicated block (9 lines × 2) (src/Components/SolutionExplorer.fs)
- Duplicated block (9 lines × 2) (src/Core/LanguageService.fs)
- Duplicated block (9 lines × 2) (src/Core/Project.fs)
- FileTooLong: Components/TestExplorer.fs (src/Components/TestExplorer.fs)
- High CVE: [GHSA redacted] (yarn.lock)
- High CVE: [GHSA redacted] (yarn.lock)
- High CVE: [GHSA redacted] (yarn.lock)
- …and 30 more
New (67)
- Critical CVE: [GHSA redacted] (yarn.lock)
- Critical CVE: [GHSA redacted] (yarn.lock)
- Duplicated block (10 lines × 3) (src/Components/Diagnostics.fs)
- Duplicated block (10 lines × 3) (src/Core/LanguageService.fs)
- Duplicated block (10 lines × 3) (src/Core/Project.fs)
- Duplicated block (11 lines × 2) (src/Components/Diagnostics.fs)
- Duplicated block (11 lines × 2) (src/Components/LineLens/LineLens.fs)
- Duplicated block (11 lines × 2) (src/Core/LanguageService.fs)
- Duplicated block (12 lines × 2) (src/Core/Project.fs)
- Duplicated block (12 lines × 3) (src/Components/MSBuild.fs)
- Duplicated block (13 lines × 2) (src/Components/TestExplorer.fs)
- Duplicated block (16 lines × 2) (src/Components/MSBuild.fs)
- Duplicated block (20 lines × 2) (src/Components/Fsi.fs)
- Duplicated block (5 lines × 2) (src/Components/QuickInfo.fs)
- Duplicated block (6 lines × 2) (src/Components/SolutionExplorer.fs)
- Duplicated block (7 lines × 2) (src/Components/SolutionExplorer.fs)
- Duplicated block (7 lines × 2) (src/Core/LanguageService.fs)
- Duplicated block (7 lines × 3) (src/Core/LanguageService.fs)
- Duplicated block (8 lines × 2) (src/Core/LanguageService.fs)
- Duplicated block (8 lines × 4) (src/Core/LanguageService.fs)
- …and 47 more
Changes since last survey
- 4 commits — 4 feature/other, 0 fixes
By area
- .github/workflows — 2 commits
- (root) — 1 commit
- src/Components — 1 commit
Notable commits
- change: Bump version to 7.31.1
- change: Update FSAC to 0.84 (#2177)
- change: update repo assist
- change: update repo assist
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
ionide/ionide-vscode-fsharp was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 23 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 0dcb6de4719d20dac5f4e3ca05ddfaf59b2a42d4 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-955b9cee9818.