# Quil SDK Overview

Quil is the language you'll use to write quantum programs and the Quil SDK is a suite of software to help you build and run Quil programs. See [quil](https://docs.rigetti.com/qcs/guides/quil/quil "mention") to learn more about Quil the programming language. Here, we'll cover the tools in the Quil SDK available to you.

### pyQuil

pyQuil is Rigetti's flagship library for building and running quantum programs written in Quil. It provides high level tools for writing, compiling, and running Quil programs against the QVM or Rigetti QPUs. pyQuil is the primary tool most users will use to interact with QCS. However, it's important to note that pyQuil joins multiple related tools and libraries together.

In the previous step you installed `quilc` and the QVM. We run both of these tools in the background as servers so that pyQuil can use them to compile programs for a target QPU and simulate programs against the QVM, respectively. Without them, pyQuil is limited in functionality.

{% embed url="<https://pyquil-docs.rigetti.com/en/stable/>" %}
See the pyQuil documentation for more information
{% endembed %}

### quilc

For most programs, compilation with`quilc` is an essential step in preparing the program to be run. It both optimizes and nativizes your program for the target QPU by using information about its architecture. See [how-programs-are-built-and-run](https://docs.rigetti.com/qcs/guides/how-programs-are-built-and-run "mention") for a more in-depth dive on `quilc` and the other steps involved in preparing a program to be run.

{% embed url="<https://github.com/quil-lang/quilc>" %}
See quilc on GitHub for more information
{% endembed %}

### QVM

The Quantum Virtual Machine is a state-vector simulator that executes Quil programs on a virtual machine that can model a real QPU or generic quantum system. The number of qubits it can simulate in a single program is typically limited by the amount of system memory available to it. In addition to a limited qubit count when compared to a flagship Rigetti QPU, there are other important differences to keep in mind. See [qpus-vs-qvms](https://docs.rigetti.com/qcs/guides/qpus-vs-qvms "mention") for a detailed guide on the differences between the simulator and a real QPU.

{% embed url="<https://github.com/quil-lang/qvm>" %}
See QVM on GitHub for more information
{% endembed %}

***

Now that you know all of the essential tools, head to [running-your-first-quantum-program](https://docs.rigetti.com/qcs/getting-started/running-your-first-quantum-program "mention")!&#x20;
