Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

https://github.com/epiqc/ScaffCC
13 May 2025, 12:21:09 UTC
  • Code
  • Branches (10)
  • Releases (1)
  • Visits
    • Branches
    • Releases
    • HEAD
    • refs/heads/ScaffCC_OSX
    • refs/heads/master
    • refs/tags/2.2
    • refs/tags/5.0
    • refs/tags/v1.0
    • refs/tags/v1.0-beta.2
    • refs/tags/v2.0
    • refs/tags/v2.1
    • refs/tags/v3.0
    • refs/tags/v4.0
    • v3.1
  • 5ed7ccf
  • /
  • docs
  • /
  • old_readme.md
Raw File Download
Take a new snapshot of a software origin

If the archived software origin currently browsed is not synchronized with its upstream version (for instance when new commits have been issued), you can explicitly request Software Heritage to take a new snapshot of it.

Use the form below to proceed. Once a request has been submitted and accepted, it will be processed as soon as possible. You can then check its processing state by visiting this dedicated page.
swh spinner

Processing "take a new snapshot" request ...

Permalinks

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
  • revision
  • snapshot
origin badgecontent badge Iframe embedding
swh:1:cnt:67b4393aafcefa377e2d549ea2d45d7517833859
origin badgedirectory badge Iframe embedding
swh:1:dir:abfbb2e2c7e17f8a30db8a93468f15b5350e31b7
origin badgerevision badge
swh:1:rev:fb0341d7eb6d3ae899a20f913e9f550f738d1bea
origin badgesnapshot badge
swh:1:snp:7eb50f12cf990a0030724453139e994df238639f
Citations

This interface enables to generate software citations, provided that the root directory of browsed objects contains a citation.cff or codemeta.json file.
Select below a type of object currently browsed in order to generate citations for them.

  • content
  • directory
  • revision
  • snapshot
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Generate software citation in BibTex format (requires biblatex-software package)
Generating citation ...
Tip revision: fb0341d7eb6d3ae899a20f913e9f550f738d1bea authored by ah744 on 22 December 2016, 07:02:43 UTC
afree patch
Tip revision: fb0341d
old_readme.md
=================================================================
                Scaffold Compiler Working Group
              https://github.com/epiqc/ScaffCC

                  Software README Document
=================================================================

Contents:
=========

Intro - About this software
Getting ScaffCC - How to get access and download from the repo
Building ScaffCC - How to build the compiler
Running the Compiler - How to compile Scaffold programs


Intro:
======

ScaffCC is a compiler and scheduler for the Scaffold programing language. It is written using the LLVM open-source infrastructure.
It is for the purpose of writing and analyzing code for quantum computing applications.

Different parts of this software have been published in the following papers:
http://www.princeton.edu/~ajavadia/ScaffCC.pdf
http://mrmgroup.cs.princeton.edu/papers/QPE_IISWC13.pdf
http://www.princeton.edu/~ajavadia/ASPLOS15.pdf

To cite this software, please use the following:
A. JavadiAbhari et al. "ScaffCC: A Framework for Compilation and Analysis of Quantum Computing Programs," Computing Frontiers, 2014


Getting ScaffCC:
=================

1. Go to https://github.com/epiqc/ScaffCC
2. Download the repository:
   % git clone https://github.com/epiqc/ScaffCC.git [dir]


Building ScaffCC:
==================
First you need to install the following dependencies. For each one, you can either install by building from source,
or use the package manager of your system ("yum" on Red Hat or "apt-get" on Ubuntu).  

1. Static libraries for libstdc++ and glibc
  
    "Ubuntu"
    Install GNU gold linker
    You can check if you have this now by doing `ld -v' and if it says 'GNU gold' you have it
    % sudo apt-get install binutils-gold

    "Red Hat"
    % sudo yum install libstdc++-static 
    % sudo yum install glibc-static

2. GCC 4.5 or higher
    NOTE: if you need to preserve an older build, consider using `update-alternatives' as system-wide method
    for preserving and maintaining these.

3. Boost 1.48
    
    "Source Build"
    Boost installation instructions are here: http://www.boost.org/doc/libs/1_48_0/doc/html/bbv2/installation.html
    % wget http://sourceforge.net/projects/boost/files/boost/1.48.0/boost_1_48_0.tar.gz
    % tar zxf boost_1_48_0.tar.gz && cd boost_1_48_0/
    % sudo ./bootstrap.sh
    % sudo ./b2 install --prefix=/usr/local


4. The GNU Multiple Precision Arithmetic Library (gmp and gmpxx)
    
    "Ubuntu"
    Use tab-completion to verify the correct packages (e.g. libgmp<tab><tab>)
    % sudo apt-get install libgmp-dev libgmpxx4ldbl

    "Source Build"
    % wget https://ftp.gnu.org/gnu/gmp/gmp-6.0.0a.tar.bz2
    % sudo ./configure --disable-shared --enable-static --enable-cxx
    % sudo make && sudo make check && sudo make install

5. The GNU MPFR Library (mpfr)
    
    "Ubuntu"
    % sudo apt-get install libmpfr-dev

    "Source Build"
    % wget http://www.mpfr.org/mpfr-current/mpfr-3.1.4.tar.bz2
    % sudo ./configure --disable-shared --enable-static
    % sudo make && sudo make check && sudo make install
      
6. Python 2.7 (or later)

Once you have all of the required libraries, simply run `make' or `make 
USE_GCC=1' at the root of the repository. The USE_GCC flag will force the 
Makefile to use GCC to compile instead, and this has been seen to be faster 
on some systems.

Running the Compiler:
=====================

Run the 'scaffold.sh' command with the path and name of the scaffold file to
compile.

Example:
% ./scaffold.sh Algorithms/Binary Welded Tree/Binary_Welded_Tree.scaffold

Scripts:
========
A number of example scripts have been provided in the ./scripts/ directory.
You can use these to do understand how to do a number of common things with the compiler,
such as generating intermediary .ll files, finding critical path lengths, and scheduling for architectures.
The README.txt file in that directory contains further instructions.

Software Heritage — Copyright (C) 2015–2025, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Contact— JavaScript license information— Web API

back to top