Our changelog, announcements, dev posts, and anything else we think you'll find interesting.
Sourcegraph 3.38 release
Sourcegraph 3.38 is now available! In this release:
Code Insights is generally available
Code Insights transforms any search query into customizable, visual dashboards in seconds. This feature surfaces high-level information about your codebase, based on both how your code changes over time and its current state. You can learn more about why we built Code Insights in the announcement from our CEO.
Any Sourcegraph instance can create up to two code insights, even without a trial or license. Reach out to your account team to purchase access to the full version.
Notebooks are improved with a host of new features
Notebooks have several new features in 3.38 to help your team better understand your codebase:
- You can now copy any existing Notebook to your own collection of Notebooks.
- We've created a new symbol block type. This block lets you find any symbol in a repository, and the block will display that symbol no matter where it moves within a file.
- Code Intelligence is now available in Notebook blocks, making Notebooks more intuitive to be used for onboarding and learning about your codebase.
- Embedding Notebooks is here! You can now easily embed Notebooks from any Sourcegraph instance by embedding an iFrame anywhere, and setting
Improved Code Intelligence performance for large repositories
We're introducing a new backend service, Rockskip, for search-based Code Intelligence, the symbol sidebar, and symbol search. Rockskip was architected with monorepos in mind, and it can index new commits much faster than the existing SQLite backend.
From 3.38 onwards, Rockskip can be turned on for specific repositories and it will make the symbol sidebar and search-based Code Intelligence much faster. If you're interested in turning this on for your repositories, read more in the Rockskip docs or contact us.
Search your project dependencies for better incident resolution
Dependencies search is a new beta feature that lets you search through the dependency packages of your repositories. Looking into the code of your dependencies is particularly useful when you're trying to resolve incidents as fast as possible.
Dependencies search currently supports NPM, and more dependency repositories are coming soon.
Configure custom language highlighting for files & extensions
In the past, it was not possible to configure what language a file was highlighted as without sending a pull request to Sourcegraph to update our global configuration for language detection. Now, if you have specific extensions or files that you want highlighted as a particular language, you can easily configure that in the site settings. This allows you to get accurate highlighting for custom languages, for example.
To learn more and set up custom language highlight, see our documentation.
- Code InsightsCode Insights will now periodically clean up data series that are not in use. There is a one-hour grace period where the series can be reattached to a view, after which all of the time series data and metadata will be deleted. This means customers deploying their own instance won't be storing data that has no use.
- NotebooksNotebooks from private enterprise instances can now be embedded in external sites by enabling the `enable-embed-route` feature flag. This allows you to embed Notebooks within existing technical documentation to see your documentation and code side by side.
- Code IntelligenceLSIF upload pages now include a section listing the reasons and related retention policies resulting in an upload being retained and not expired.
- AdminCode monitoring now has a Logs tab enabled as a beta feature. This lets you see recent runs of your code monitors and determine if any notifications were sent or if there were any errors during the run.
- SearchSearching for the pattern `//` with regular expression search is now interpreted literally and will search for `//`. Previously, the `//` pattern was interpreted as our regular expression syntax `/<regexp>/` which would in turn be interpreted as the empty string. Since searching for an empty string is not very useful, we now instead interpret `//` as searching for its literal meaning in regular expression search.