Science Score: 67.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 2 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.7%) to scientific vocabulary
Keywords
Repository
Temporal code analyses at scale
Basic Info
- Host: GitHub
- Owner: HyperAST
- License: gpl-3.0
- Language: Rust
- Default Branch: main
- Homepage: https://hyperast.github.io
- Size: 62.7 MB
Statistics
- Stars: 32
- Watchers: 2
- Forks: 19
- Open Issues: 5
- Releases: 5
Topics
Metadata Files
README.md
HyperAST
Book
Getting Started
Compute code Metrics(GUI)
Track Code(GUI)
GUI
Doc
Summary
HyperAST is an AST structured as a Direct Acyclic Graph (DAG) (similar to MerkleDAG used in Git). An HyperAST is efficiently constructed by leveraging Git and TreeSitter.
It reimplements the Gumtree algorithm in Rust while using HyperAST as the underlying AST structure.
It implements a use-def solver, that uses a context-free indexing of references present in subtrees (each subtree has a bloom filter of contained references).
How to use
You can use the dedicated GUI in your browser. However, in order to use any of the GUI features, you will need to launch/connect to the REST API server.
Launch server with Nix (A package manager for reproducible, declarative and reliable systems)
Look there for instruction on how to install Nix on your system.
sh
nix run .#hyperast-webapi // similar to the prev. mentioned cargo run
nix run github:HyperAST/HyperAST#hyperast-webapi // here nix handles everything, no need to clone!
This will download all dependencies and build locally.
It can work on any *NIX system (Linux, WSL, MACOSX, ...), but the CPU architecture can be a problem e.g. I could not make it work on an M1.
There is also a development shell provided with all the necessary dependencies installed in a healthy environment to develop and build the project. You can enter the environment with:
sh
nix develop # from the project root dir
Launch our server with Cargo (You have to handle system dependencies yourself, such as, rustc, openssl )
sh
cargo run -p backend --release # from the project root dir, after having cloned the repository
Note: Currently HyperAST uses features from the nightly channel, so you should definitely use rustup, the Rust version manager.
How to Cite
If you use HyperAST and/or HyperDiff in an academic purpose, please cite the following papers:
bibtex
@inproceedings{ledilavrec:hal-03764541,
TITLE = {{HyperAST: Enabling Efficient Analysis of Software Histories at Scale}},
AUTHOR = {Le Dilavrec, Quentin and Khelladi, Djamel Eddine and Blouin, Arnaud and J{\'e}z{\'e}quel, Jean-Marc},
URL = {https://hal.inria.fr/hal-03764541},
BOOKTITLE = {{ASE 2022 - 37th IEEE/ACM International Conference on Automated Software Engineering}},
PUBLISHER = {{IEEE}},
PAGES = {1-12},
YEAR = {2022}
}
bibtex
@inproceedings{ledilavrec:hal-04189855,
TITLE = {{HyperDiff: Computing Source Code Diffs at Scale}},
AUTHOR = {Le Dilavrec, Quentin and Khelladi, Djamel Eddine and Blouin, Arnaud and J{\'e}z{\'e}quel, Jean-Marc},
URL = {https://inria.hal.science/hal-04189855},
BOOKTITLE = {{ESEC/FSE 2023 - 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering}},
PUBLISHER = {{ACM}},
PAGES = {1-12},
YEAR = {2023}
}
Owner
- Name: HyperAST
- Login: HyperAST
- Kind: organization
- Repositories: 1
- Profile: https://github.com/HyperAST
Citation (CITATION.cff)
cff-version: 1.2.0
message: "If you use this software, please cite it using the metadata from this file."
title: "HyperAST"
authors:
- family-names: Le Dilavrec
given-names: Quentin
preferred-citation:
title: "HyperAST: Enabling Efficient Analysis of Software Histories at Scale"
url: "https://hal.inria.fr/hal-03764541v1/document"
year: "2022"
type: conference-paper
collection-title: "ASE 2022 - 37th IEEE/ACM International Conference on Automated Software Engineering"
authors:
- family-names: Le Dilavrec
given-names: Quentin
- family-names: Khelladi
given-names: Djamel Eddine
- family-names: Blouin
given-names: Arnaud
- family-names: Jézéquel
given-names: Jean-Marc
GitHub Events
Total
- Create event: 20
- Issues event: 3
- Release event: 8
- Watch event: 12
- Delete event: 11
- Member event: 2
- Issue comment event: 5
- Push event: 43
- Pull request review event: 7
- Pull request event: 81
- Fork event: 3
Last Year
- Create event: 20
- Issues event: 3
- Release event: 8
- Watch event: 12
- Delete event: 11
- Member event: 2
- Issue comment event: 5
- Push event: 43
- Pull request review event: 7
- Pull request event: 81
- Fork event: 3
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 3
- Total pull requests: 37
- Average time to close issues: over 1 year
- Average time to close pull requests: 3 days
- Total issue authors: 3
- Total pull request authors: 3
- Average comments per issue: 0.67
- Average comments per pull request: 0.0
- Merged pull requests: 29
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 1
- Pull requests: 37
- Average time to close issues: N/A
- Average time to close pull requests: 3 days
- Issue authors: 1
- Pull request authors: 3
- Average comments per issue: 0.0
- Average comments per pull request: 0.0
- Merged pull requests: 29
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- quentinLeDilavrec (2)
- pauladam94 (1)
- Tol0kk (1)
- monperrus (1)
- garandria (1)
- Comfident (1)
Pull Request Authors
- quentinLeDilavrec (44)
- Tol0kk (4)
- Ort1e (2)
- fitz35 (1)
- garandria (1)
Top Labels
Issue Labels
Pull Request Labels
Dependencies
- pretty_assertions 1.0.0 development
- atomic-counter 1.0.1
- bitvec 0.22.3
- cfg-if 1.0
- controlled-option 0.4.1
- enumset 1.0.8
- env_logger 0.9.0
- fasthash 0.4.0
- hashbrown 0.11.2
- legion 0.4.0
- libc 0.2
- log 0.4.6
- num 0.4.0
- stack-graphs =0.3.0
- string-interner 0.14.0
- tree-sitter 0.20.0
- tuples =1.4.1
- zerocopy 0.6.1
- pretty_assertions 1.0.0 development
- legion 0.4.0
- libc 0.2
- tree-sitter 0.20.0
- tuples =1.4.1
- pretty_assertions 1.0.0 development
- heck 0.3.3
- quote 1.0.10
- serde 1.0.130
- serde_json 1.0.72
- env_logger 0.9.0 development
- git2 0.16.1
- log 0.4.6
- pommes 0.0.2
- serde 1.0.130
- serde-xml-rs 0.5.1
- tree-sitter 0.20.0
- tuples =1.4.1
- env_logger 0.9.0 development
- bitvec 1.0.1
- cfg-if 1.0
- controlled-option 0.4.1
- hashbrown 0.11.2
- legion 0.4.0
- libc 0.2
- log 0.4.6
- num 0.4.0
- stack-graphs =0.3.0
- string-interner 0.14.0
- strum 0.23.0
- strum_macros 0.23.1
- criterion 0.4 development
- bitvec 1.0.1
- enum-map 2.4.1
- env_logger 0.9.0
- hungarian 1.1.1
- log 0.4.6
- logging_timer 1.1.0
- num-traits 0.2.14
- specs 0.17.0
- str-distance 0.1.0
- strum 0.23.0
- strum_macros 0.23.1
- reqwest 0.11 development
- automerge 0.4.0
- autosurgeon 0.7.1
- average 0.13.1
- axum 0.6.7
- axum-extra 0.7.4
- axum-macros 0.3.4
- base64 0.13
- clap 3.0
- dashmap 5.4.0
- enumset 1.0.12
- env_logger 0.9.0
- futures 0.3
- futures-util 0.3
- hashbrown 0.12.3
- headers 0.3
- http 0.2.6
- hyper 0.14.17
- log 0.4.6
- nohash-hasher 0.2.0
- num 0.4.0
- once_cell 1.10.0
- rhai 1.12.0
- self_cell 0.10.2
- serde 1.0.136
- serde-aux 4.1.2
- serde_json 1.0.79
- syn 2
- tokio 1.17.0
- tower 0.4.12
- tower-http 0.3.0
- tower-layer 0.3.2
- tracing 0.1.32
- tracing-subscriber 0.3.9
- tree-sitter 0.20.9
- tree-sitter-cli 0.20.7
- env_logger 0.9.0 development
- pretty_assertions 1.0.0 development
- atomic-counter 1.0.1
- bitvec 1.0.1
- cfg-if 1.0
- controlled-option 0.4.1
- enumset 1.0.8
- hashbrown 0.13.2
- legion 0.4.0
- libc 0.2
- log 0.4.6
- num 0.4.0
- serde 1.0.130
- string-interner 0.14.0
- tree-sitter 0.20.9
- tuples =1.4.1
- zerocopy 0.6.1
- env_logger 0.9.0 development
- pretty_assertions 1.0.0 development
- atomic-counter 1.0.1
- bitvec 1.0.1
- cfg-if 1.0
- controlled-option 0.4.1
- enumset 1.0.8
- hashbrown 0.13.2
- legion 0.4.0
- libc 0.2
- log 0.4.6
- num 0.4.0
- serde 1.0.130
- string-interner 0.14.0
- tree-sitter 0.20.9
- tuples =1.4.1
- zerocopy 0.6.1
- reqwest 0.11 development
- ahash 0.8
- bytemuck 1.11
- chrono 0.4
- eframe 0.20.1
- egui 0.21.0
- egui_extras 0.21.0
- image 0.24.5
- serde 1
- slotmap 1.0.6
- smallvec 1.10
- uuid 1.1
- 605 dependencies
- env_logger 0.9.0 development
- hyper_ast_gen_ts_cpp 0.1.0 development
- pretty_assertions 1.0.0 development
- atomic-counter 1.0.1
- bitvec 1.0.1
- cfg-if 1.0
- controlled-option 0.4.1
- enumset 1.0.8
- hashbrown 0.13.2
- legion 0.4.0
- libc 0.2
- log 0.4.6
- num 0.4.0
- serde 1.0.130
- string-interner 0.14.0
- tree-sitter 0.20.9
- tree-sitter-query 0.1.0
- tuples =1.4.1