- Fixes an issue where invalid UTF-8 in documentation comments could lead to a crash during indexing. (#453)
- Adds initial support for indexing CUDA code, including code navigation support for CUDA kernels. (#428)
- Adds a visited set to to avoid performing member lookup in the same class repeatedly. Also hard-codes iteration limits to 10k for potentially infinite loops to avoid timeouts. (#416)
- The previous release incorrectly changed the log level of a 'trace' log line to 'warn'. This release reverts that.
- Fixes a bug where for in-tree CMake builds (i.e. no
-B
flag), with varying"directory"
keys pointing to project subfolders, no SCIP Documents would be emitted in the index (and hence precise code navigation wouldn't work). (#411)
- Adds temporary support for better debugging issues where seemingly in-project files are treated as out-of-project. (#409)
- Adds support for Find implementations for classes. (#393, #394, #401)
- Adds progress reporting to show information about how many translation units have been indexed. (#402, #405)
- Fixes a bug where hover docs would be incorrect if a forward declaration with some doc comments preceded the actual definition in lexical order after pre-processing. (#390)
- Adds automatic skipping for compilation database entries which do not correspond to translation units, such as those for header files. Some compilation database generators like grailbio's generator for Bazel can generate compilation databases where over 80% entries do not correspond to TUs. (#380)
- Fixes a bug where the base compiler was not located correctly, leading to standard library headers not being found. This bug is when using a custom LLVM toolchain for Bazel, such as grailbio/bazel-toolchain. (#375)
- Adds initial support for cross-repository code navigation. (#338)
- Landed several performance optimizations around skipping occurrence construction (#348) and using string interning with a bump allocator. (#337, #345) Depending on proportion of code in a project-external dependency vs in-project code, these together reduce indexing time by 5%-50%.
- scip-clang now forces indexing of as much code as possible in the presence of compiler errors (e.g. due to use of unknown AVX or ARM instrinsics). This should improve the code navigation experience for large files relying on templated hash map/set types that use intrinsics. (#356)
- Fixed code navigation for function-local
extern
declarations. (#362) - Added more graceful recovery when semantic analysis is not run for some reason, such as when the command-line in a compilation database entry is not fully correct. For example, the compilation database generated by grailbio/bazel-compilation-database for Bazel projects may sometimes contain unexpanded Make variables. (#368)
- Fixes a crash when indexing dependent names in templates. (#330)
DO NOT USE
- Improved code navigation for dependent names (types and methods) in templates. (#317, #321)
- Hover docs include doc comments starting with
//
and/*
syntax as well, not just///
and/**
. (#325)
- Significantly improved code navigation for code using the following language features:
- Fixed a bug where hover docs from a forward declaration would be preferred over the docs on the definition. (#298)
- The Linux release build uses ThinLTO, reducing indexing time by about 5%. (#281)
- Fixed an issue with undefined behavior in a dependency. (#271)
- Fixed an issue with an assertion being hit when emitting detailed indexing statistics. (#268)
- Fixed an issue where indexes over the size of 2GB would cause a crash in the driver. The fix has been tested against Chromium, where the SCIP index is about 6GB. (#256)
- Fixed an issue where the driver would wait for workers to exit even if the workers had already exited earlier. This removes an NCPU second delay at the end of indexing. (#262)
- Added support for tracing using Perfetto. (#260, #261)
- Fixed two issues where relative paths in a compilation database lead to standard search directories not being found. (#246 , #249)
- Assertion failures inside LLVM in dev builds (
-dev
binaries under releases) will now print a stack trace. (#244)
- Fixed an issue where using-declarations (
using X::Y::Z;
) were missing definition and reference information. (#240) - Fixed an issue where references to typedefs and alias declarations
(
using A = B
) were not emitted correctly. (#237)
- Added bulk processing for worker results. (#222)
- Fixed an incorrect assertion about worker<->job mappings. This should prevent a driver crash when many workers run into a timeout. (#222)
- The indexing summary printed at the end now includes the number of TUs which failed to be indexed. (#225)
- Some basic performance optimizations for the core driver loop, such as reusing buffers (#219) and removing wait operations for worker exits out of the core loop. (#218)
- Fixed spurious error messages showing up during shutdown, where worker and driver both wait for each other. (#214)
- We now check that the
"file"
keys in a compilation database reference files that actually exist on disk, before starting indexing. This prevents an assertion from being triggered due to indexing failure. (#209)
- Improved handling and docs for IPC-related errors, such as when the amount of space available is limited (common in Docker), as well as when a message size exceeds the IPC buffer size. (#187)
- Improved error messages when certain assertions are hit in practice. (#196, #200, #205)
- LLVM assertions are turned off in release builds.
scip-ruby's own
ENFORCE
checks are still enabled for debuggability. (#203)
- Added documentation with adoption tips, including how to troubleshoot common errors. (#186)
- JobIDs printed when running
scip-clang
with--log-level=debug
are now more informative. (#189) - (Dev builds) Added workaround for ENFORCE being hit on encountering previously unseen files during index merging. (#194)
- (Dev builds) Fixed an ENFORCE being hit around pre-processor handling. (#156)
- Adds support for automatically inferring correct include
directories for gcc/g++. This means that the indexer will
correctly find standard library headers even when a
compile_commands.json
file refers to gcc/g++ instead of clang. (#178)
- Symbols without hover docs will explicitly show "No documentation available". (#173)
- Published binaries should work on Debian Buster and Ubuntu 18.04, instead of requiring Debian Bullseye / Ubuntu 20.04 or newer. (#174)
- Initial release with code nav support for various language features like macros, #include pragmas, types, functions, methods, local variables etc.