Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

rigetti/libquil-sys

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libquil-sys

This crate provides Rust bindings to the quilc C library.

How to Build

Install SBCL from source

SBCL must be installed from source to make sure you have the libsbcl shared library available.

  1. Install sbcl from a package manager for bootstrapping purposes.
  2. Clone the repository: git clone --branch sbcl-2.2.0 git://git.code.sf.net/p/sbcl/sbcl
  • Tag sbcl-2.2.0 is known to work. These instructions have not been tested against a newer version.
  1. Inside the cloned repo: sh make.sh && sh make-shared-library.sh
  2. Uninstall the package manager version of sbcl.
  3. Run sh install.sh to install the compiled sbcl
  4. Copy src/runtime/libsbcl.so to /usr/local/lib/libsbcl.so

Set up Quicklisp

  1. Follow the official instructions to install Quicklisp.

Configure your local projects directory

Quicklisp has a local projects mechanism which we'll be using to build quilc with it's dependencies. By default, this directory is $HOME/quicklisp/local-projects. If you want to use something different, you need to make sure $HOME/.sbclrc contains the following (replace $LISP_WORKSPACE with the actual value):

;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
                                       (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
    (load quicklisp-init)))

#+quicklisp
(push "$LISP_WORKSPACE" ql:*local-project-directories*)

From here on, we'll refer to the local project directory you've chosen to use, whether it's the default or not, as $LISP_WORKSPACE.

Set up Lisp workspaces

Important: The above sbcl folder must not be in the workspace folder -- it will cause issues.

  1. Clone the following repos into $LISP_WORKSPACE

Build quilc

Note: The build commands in quilc assume you are running on MacOS and will error on other systems.

Run the following from $LISP_WORKSPACE:

make -C quilc
make -C quilc/lib

Optionally, run tests:

# Optional -- run tests
make -C quilc/tests/c  # Builds executables to manually run
cp quilc/lib/libquilc.core quilc/lib/tests/c/
# MacOS
cp quilc/lib/libquilc.dylib quilc/lib/tests/c/
# *nix
cp quilc/lib/libquilc.so quilc/lib/tests/c/
echo "H 0" | quilc/lib/tests/c/compile-quil

Build and test libquil-sys

By default, this library assumes quilc is in the default Quicklisp local projects directory ($HOME/quicklisp/local-projects). If you defined a non-default local projects directory for quilc, you need to set $QUILC_LIBRARY_PATH to the folder where you built the quilc library (the folder containing libquilc.dylib). For example,

export QUILC_LIBRARY_PATH=$LISP_WORKSPACE/quilc/lib

Then, from the root of this repository:

cp "$LISP_WORKSPACE/quilc/lib/libquilc.dylib" .
cp "$LISP_WORKSPACE/quilc/lib/libquilc.core" .
cargo test

About

Wrappers for Quil-Lang libraries

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.