Skip to content

perf(cli): support compressing metadata#397

Merged
nhakmiller merged 1 commit intomainfrom
nhakmiller-add-config-compress-option
Aug 14, 2025
Merged

perf(cli): support compressing metadata#397
nhakmiller merged 1 commit intomainfrom
nhakmiller-add-config-compress-option

Conversation

@nhakmiller
Copy link
Contributor

@nhakmiller nhakmiller commented Aug 14, 2025

Description

To reduce CLI scan startup times, we are going to compress the scan config before sending it from the backend to the CLI. In order to be backwards compatible, we are adding an optional compress_config parameter so the CLI clients can opt in to response compression when they upgrade.

Testing

Working on a local semgrep CLI -> local Semgrep app test for this change.

  • I ran make setup && make to update the generated code after editing a .atd file (TODO: have a CI check)
  • I made sure we're still backward compatible with old versions of the CLI.
    For example, the Semgrep backend need to still be able to consume data
    generated by Semgrep 1.50.0.
    See https://atd.readthedocs.io/en/latest/atdgen-tutorial.html#smooth-protocol-upgrades
    Note that the types related to the semgrep-core JSON output or the
    semgrep-core RPC do not need to be backward compatible!
  • Any accompanying changes in semgrep-proprietary are approved and ready to merge once this PR is merged

@nhakmiller nhakmiller marked this pull request as draft August 14, 2025 21:38
@github-actions
Copy link

Backwards compatibility summary:

Checking backward compatibility of semgrep_output_v1.atd against past version v1.100.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.101.0
Skipping v1.102.0 because commit 1c82453e89e0b569630e48ddde015e201df0e5f9 has already been checked
Checking backward compatibility of semgrep_output_v1.atd against past version v1.103.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.104.0
Skipping v1.106.0 because commit 5e0c767ec323f3f2356d3bf8dbdf7c7836497d8a has already been checked
Skipping v1.107.0 because commit 5e0c767ec323f3f2356d3bf8dbdf7c7836497d8a has already been checked
Checking backward compatibility of semgrep_output_v1.atd against past version v1.108.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.109.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.110.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.111.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.112.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.113.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.114.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.116.0
Skipping v1.117.0 because commit 5c6a8f569d16845ba10c27d17eeae68e481340d6 has already been checked
Checking backward compatibility of semgrep_output_v1.atd against past version v1.118.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.119.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.120.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.121.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.122.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.123.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.124.0
Skipping v1.124.1 because commit 75ab2f389a373af38a2a29872b4fa1c654d182f0 has already been checked
Checking backward compatibility of semgrep_output_v1.atd against past version v1.125.0
Skipping v1.126.0 because commit 02c7c65f6508daac0c9d5c0c54981731a134b038 has already been checked
Checking backward compatibility of semgrep_output_v1.atd against past version v1.127.0
Skipping v1.127.1 because commit 80fa4d2466c737b570c4f363edadc2b336e5696d has already been checked
Skipping v1.128.0 because commit 80fa4d2466c737b570c4f363edadc2b336e5696d has already been checked
Skipping v1.128.1 because commit 80fa4d2466c737b570c4f363edadc2b336e5696d has already been checked
Checking backward compatibility of semgrep_output_v1.atd against past version v1.130.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.131.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.132.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.75.0
Skipping v1.76.0 because commit 9102031608aa4154e1c37f557550ec4eabc8780c has already been checked
Checking backward compatibility of semgrep_output_v1.atd against past version v1.77.0
Skipping v1.78.0 because commit dcb5d77b420ddee61f58aadd3c2c7aef38778154 has already been checked
Checking backward compatibility of semgrep_output_v1.atd against past version v1.79.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.80.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.81.0
Skipping v1.82.0 because commit 9e0f3bec26b07b4fb6753a32cb75277f45f2572c has already been checked
Skipping v1.83.0 because commit 9e0f3bec26b07b4fb6753a32cb75277f45f2572c has already been checked
Checking backward compatibility of semgrep_output_v1.atd against past version v1.84.0
Skipping v1.84.1 because commit 3daef49297ada205359cc1d2996354c94b628b0d has already been checked
Checking backward compatibility of semgrep_output_v1.atd against past version v1.85.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.86.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.87.0
Skipping v1.88.0 because commit 512c0bd97db59c48a5705b2741662a338776e438 has already been checked
Skipping v1.89.0 because commit 512c0bd97db59c48a5705b2741662a338776e438 has already been checked
Checking backward compatibility of semgrep_output_v1.atd against past version v1.90.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.91.0
Skipping v1.92.0 because commit 2351c5e528cb7430422208dc66707894c066b508 has already been checked
Checking backward compatibility of semgrep_output_v1.atd against past version v1.93.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.94.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.95.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.96.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.97.0
Checking backward compatibility of semgrep_output_v1.atd against past version v1.98.0
Skipping v1.99.0 because commit 60809032a2e39742f42910d46b3e5dd305b8b8cf has already been checked

.PHONY: setup-PYTHON
setup-PYTHON:
pip install check-jsonschema
pip install mypy
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unrelated to my change, but mypy is a python requirement and make fails if it is not installed.

@nhakmiller nhakmiller changed the title feat(cli): support compressing metadata perf(cli): support compressing metadata Aug 14, 2025
@nhakmiller nhakmiller requested a review from salolivares August 14, 2025 22:13
@nhakmiller nhakmiller marked this pull request as ready for review August 14, 2025 22:40
@nhakmiller nhakmiller merged commit 8fc7376 into main Aug 14, 2025
5 checks passed
@nhakmiller nhakmiller deleted the nhakmiller-add-config-compress-option branch August 14, 2025 22:46
nhakmiller added a commit that referenced this pull request Aug 20, 2025
### Description

Reverting #397 because
we have a better solution that does not need this parameter.

I talked with @salolivares and we think this might be fine even though
it's not backwards compatible because neither the server nor the CLI
ever actually started using this parameter. But I'm actually not 100% on
if it's ok to make a non backwards compatible change even if the
parameter was never set or read by anyone so I'd be interested to hear
from someone who could confirm that.


- [x] I ran `make setup && make` to update the generated code after
editing a `.atd` file (TODO: have a CI check)
- [x] I made sure we're still backward compatible with old versions of
the CLI.
For example, the Semgrep backend need to still be able to *consume* data
	  generated by Semgrep 1.50.0.
See
https://atd.readthedocs.io/en/latest/atdgen-tutorial.html#smooth-protocol-upgrades
	  Note that the types related to the semgrep-core JSON output or the
	  semgrep-core RPC do not need to be backward compatible!
- [ ] Any accompanying changes in `semgrep-proprietary` are approved and
ready to merge once this PR is merged
- semgrep/semgrep-app#23008
- semgrep/semgrep-proprietary#4481
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants