https://github.com/lac-dcc/angha
Angha is a framework for constructing compilable synthetic C benchmarks out of publicly available C repositories.
https://github.com/lac-dcc/angha
Last synced: 6 months ago
JSON representation
Angha is a framework for constructing compilable synthetic C benchmarks out of publicly available C repositories.
- Host: GitHub
- URL: https://github.com/lac-dcc/angha
- Owner: lac-dcc
- License: lgpl-2.1
- Created: 2020-01-13T14:51:07.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2023-07-07T00:42:17.000Z (over 2 years ago)
- Last Synced: 2025-04-05T17:43:27.280Z (9 months ago)
- Language: Python
- Size: 11.1 MB
- Stars: 22
- Watchers: 4
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Project Angha #
Project Angha provides an infrastructure for creating synthetic compilable
C benchmarks out of publicly available code repositories. Using a combination
of web-crawling, compiler frontend extension and type reconstruction, this
framework allows one to create a virtually unbounded number of compilable
programs.
This framework has three main components, whose requirements need to be met for
it to be usable. Refer to the documentation within each of these subprojects
to use them. They are:
* Web-crawler - contained within src/crawler, this Java application collects
publicly available C code using GitHub's public API.
* Psyche-C - this external project, included as a submodule in src/psychec,
is a type reconstruction engine for C. It receives as input an incomplete
program, and builds a compilable version of it through type inference.
* Function Extractor - contained within src/extractor, this tool uses a
combination of Clang frontend extensions, the aforementioned Psyche-C engine,
and Python to build a collection of compilable programs, from a corpus of raw C
repositories.
To use the project, clone the repository with the --recursive flag, then follow
the instructions to build and use each subproject.