All notable changes to the "function-graph-overview" extension will be documented in this file.
Check Keep a Changelog for recommendations on how to structure this file.
- Added the
Function Graph Overview: Show Graph Overview
command to VSCode to show the graph
- In VSCode, the extension will now show in the activity bar by default
- All development-related docs moved to the
docs
directory to avoid confusing users
- Added JetBrains frontend for use in JetBrains IDE plugin
- Demo: Added a link to the JetBrains plugin page
- Demo learned to change font-size
- Documented the process of adding a new language
- Biome has been added as an additional linter
- Oxlint has been added to auto-fix some common issues
- The
generate-parsers.ts
script has been updated to support copying existing.wasm
files from tree-sitter grammar packages - Initial support for C++
- A basic typedoc configuration was added, to help in rendering docs
- A utility script for running CFG builders on a complete codebase (
scan-codebase.ts
)
- Adding a new language now requires less wiring code, as many language declarations were merged.
- In C and C++,
if-else
statements without curly braces no longer break the CFG builder (#32)
- Dark-mode and custom color schemes
- Default light/dark mode based on VSCode theme
- Color-scheme creation in the interactive demo
- Documented the color-scheme options
- Nodes for empty blocks now map correctly to the empty block, instead of doing nothing when clicked.
- Clicking a node in the graph now places the cursor on the matching line.
- The demo has a
debug
URL parameter to enable some debug features.
- Backlinks are now using the
dir=back
DOT attribute to improve graph layouts.
- The CFG view now highlights (in black) the node matching the cursor position.
- Basic CFG caching for tests, making them twice as fast.
- The extension learned to only generate a CFG on code or config changes. If the cursor just moves inside the same function, we don't regenerate the CFG.
- Rendering of
select
blocks in Go was broken. - Empty case clauses in
switch
statements no longer cause crashes. - Last case of a Python
match
statement no longer assumed to match.
- Massive refactoring of
CFGBuilder
classes. New design now uses the sameGenericCFGBuilder
class for all languages, and takes statement handlers as arguments. This reduces code duplication and makes it easier to add new languages in the future. - Flat switches now generate nodes for the conditions, and not only the consequence.
- The CodeMirror editor in the demo got it's own Svelte component now,
Editor.svelte
. This allows better state management and handling/dispatching events.
- Initial support for Python.
- Support for node clusters. This is used heavily in Python, for context-managers and exception-handling.
- A "share" feature to the demo
- A "save SVG" option to the demo
- Enable live-testing with the web viewer. Requires that you run both
bun web-tests --watch
andbun web
at the same time. - By default,
bun web
only shows failing tests bun web
color-codes tests to note which are failingbun lint
addedtsc --noEmit
- DOT output in
bun web
is not pretty-printed, and can be automatically opened in GraphvizOnline
- Switch-like structures in flatSwitch now show an alternative edge from the head to the exit node. This was previously missing.
- Thick-backlinks (for loops) are now generated correctly based on loop detection.
- Improved comment-test framework to allow writing tests for multiple languages
- Added comment-test in-browser rendering to allow better debugging
- Add basic support for C
- Learned Go's
fallthrough
keyword - Learned an option to draw flat-switches (where all cases are direct descendants of the switch head)
- Added utilities for basic reachability testing
- Expose
simplify
andflat switch
settings in demo - Expose
flat switch
setting in extension
- Interactive demo website, use
bun demo
to run. - Publish demo via Github Pages
- Updated readme to point to the demo
- Automatically publish releases
- Basic, complete extension.