Remix.run Logo
The Future of SCIP(sourcegraph.com)
78 points by jdorfman 21 hours ago | 22 comments
skybrian 14 hours ago | parent | next [-]

The git repo is here: https://github.com/scip-code/scip

Looks like it's defined using protocol buffers, with "rich Go and Rust bindings" and links to implementations for many other languages.

sanufar 13 hours ago | parent [-]

I can’t speak for the Go bindings, but using the Rust crate has been pretty clean. Haven’t really felt the need to dip into deserializing raw .scip file in the time that I’ve been working with SCIP.

ananthakumaran 11 hours ago | parent | prev | next [-]

I have been using https://github.com/jacktasia/dumb-jump to quickly jump to definitions. LSP is hit or miss; in some languages, it works great, while in others, the implementation is not so good. I have been thinking about a middle ground based on Tree-sitter. GitHub uses Tree-sitter to power code navigation, but unfortunately, I can't find anything good that I can use offline. Why is there no ctags equivalent powered by Tree-sitter?

jupblb 6 hours ago | parent [-]

It looks like GitHub's tree-sitter powered code navigation is no longer maintained: https://github.com/github/stack-graphs

UncleOxidant 14 hours ago | parent | prev | next [-]

Oh, not SICP.

mentalpagefault 13 hours ago | parent | next [-]

The similar acronym appears to be intentional:

> Note on the name: SCIP is pronounced the same way as “skip” and it’s a recursive acronym that stands for “SCIP Code Intelligence Protocol.”

> SCIP is also a purposeful nod to SICP (Structure and Interpretation of Programs), a book about analyzing programs.

https://sourcegraph.com/blog/announcing-scip#:~:text=SCIP%20...

bigfatkitten 13 hours ago | parent | prev | next [-]

Nor the other SCIP.

https://en.wikipedia.org/wiki/Secure_Communications_Interope...

eru 8 hours ago | parent [-]

Or the other other SCIP: https://www.scipopt.org/

dobin 7 hours ago | parent [-]

Or this SCIP https://www.scip.ch/en/

KK7NIL 13 hours ago | parent | prev | next [-]

Also not SCPI (Standard Commands for Programmable Instrumentation), widely used to control lab instruments and pronounced similarly ("skippy").

eru 8 hours ago | parent | prev | next [-]

Also not this SCIP: https://www.scipopt.org/

jamiek88 13 hours ago | parent | prev | next [-]

There IS no… wait, wrong acronym.

red_admiral 2 hours ago | parent | prev | next [-]

And also not SCP.

aleph_minus_one 14 hours ago | parent | prev | next [-]

... and not the solver for mixed integer (linear) programming (MI(L)P) and mixed integer nonlinear programming (MINLP):

> https://www.scipopt.org/

darkxanthos 12 hours ago | parent | next [-]

This is what I clicked for.

eseliger 13 hours ago | parent | prev [-]

damn that is a cute logo, what a miss for SCIP-code

yowayb 11 hours ago | parent | prev | next [-]

SCIP is a "nod" to SICP

soegaard 14 hours ago | parent | prev | next [-]

I misread it too.

groundzeros2015 11 hours ago | parent | prev [-]

Imagine working for this company where engineers don’t know about SICP

zingar 13 hours ago | parent | prev | next [-]

Something something powers go to definition… is this an implementation of an LSP server? Or a subset of what’s needed to implement LSP? A formerly proprietary alternative to LSP?

JamyDev 12 hours ago | parent [-]

In its simplest form, it's just a dump of the code intelligence information from a static copy of the code. This can power an LSP, however, without additional logic wouldn't be able to handle a project under edit, since the locations won't match between the indexed state and the edited project state; So it lends itself well for something like Sourcegraph that already displays a static copy of the codebase.

Uber uses SCIP as part of the LSP implementation for our Java monorepo (Pieces of which we've [open-sourced](https://github.com/uber/scip-lsp)). Standardizing on SCIP has helped us generalize tools to be independent of the compiler/language ecosystem (eg we could do call-stack-analysis on any project that exports valid SCIP; do feature flag cleanup; find refs/impls across a wider scope than most LSP servers can handle due to memory constraints).

s20n 7 hours ago | parent | prev [-]

Structure and Computer of Interpretation Programs