https://github.com/viperproject/viperserver
HTTP server that manages verification requests to different tools from the Viper tool stack.
https://github.com/viperproject/viperserver
verification viper
Last synced: 5 months ago
JSON representation
HTTP server that manages verification requests to different tools from the Viper tool stack.
- Host: GitHub
- URL: https://github.com/viperproject/viperserver
- Owner: viperproject
- License: other
- Created: 2020-02-20T10:50:51.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-11-14T06:00:26.000Z (11 months ago)
- Last Synced: 2024-11-14T07:17:42.784Z (11 months ago)
- Topics: verification, viper
- Language: Scala
- Homepage:
- Size: 11.1 MB
- Stars: 10
- Watchers: 2
- Forks: 17
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/viperproject/viperserver/actions/workflows/scala.yml?query=branch%3Amaster)
[](./LICENSE)This is ViperServer, an HTTP server that manages verification requests to different tools from the Viper tool stack.
The main two Viper tools (a.k.a verification backends) currently are:
- [Carbon](https://github.com/viperproject/carbon), a verification condition generation (VCG) backend for the Viper language.
- [Silicon](https://github.com/viperproject/silicon), a symbolic execution verification backend.### The Purpose of ViperServer ###
1. Viper IDE: integration of Viper into Visual Studio Code (VS Code). Viper IDE provides the best user experience for Viper.
More details here: http://viper.ethz.ch/downloads/
1. Facilitate the development of verification IDEs for Viper frontends, such as:
- [Gobra](https://github.com/viperproject/gobra), the Viper-based verifier for the Go language
- [Prusti](https://github.com/viperproject/prusti-dev/), the Viper-based verifier for the Rust language
1. Avoid 1-3 second delays caused by JVM startup time. ViperServer offers a robust alternative to, e.g.,
[Nailgun](https://github.com/facebook/nailgun).
1. Develop Viper encodings more efficiently with caching.
1. Interact with Viper tools programmatically using the HTTP API. A reference client implementation (in Python) is
available via [viper_client](https://github.com/viperproject/viper_client).For more details about using Viper, please visit: http://viper.ethz.ch/downloads/
### Installation Instructions ###
* Clone **viperserver** (this repository) in your computer.
* Execute `git submodule update --init --recursive` in the cloned directory to fetch the `carbon`, `silicon`, and (transitively) the `silver` repositories. Note that both `carbon` and `silicon` have a `silver` submodule. Even though `silicon`'s `silver` repository is actually used for compilation of ViperServer, we assume that both reference the same `silver` commit.* Compile by typing: ```sbt compile```
* Other supported SBT commands are: ```sbt stage``` (produces fine-grained jar files), ```sbt assembly``` (produces a single fat jar file).
### Running Tests ###
* Set the environment variable ```Z3_EXE``` to an executable of a recent version of [Z3](https://github.com/Z3Prover/z3).
* Run the following command: ```sbt test```.
### Who do I talk to? ###
* This repository is maintained by [Linard Arquint](mailto:linard.arquint@inf.ethz.ch).