vast VS clangir

Compare vast vs clangir and see what are their differences.

vast

VAST is an experimental compiler pipeline designed for program analysis of C and C++. It provides a tower of IRs as MLIR dialects to choose the best fit representations for a program analysis or further program abstraction. (by trailofbits)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
vast clangir
2 2
335 277
1.5% 6.9%
9.9 10.0
7 days ago 5 days ago
C++
Apache License 2.0 GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

vast

Posts with mentions or reviews of vast. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-08-23.
  • Print(“lol”) doubled the speed of my Go function
    2 projects | news.ycombinator.com | 23 Aug 2023
    Most languages target C or LLVM, and C and LLVM have a fundamentally lossy compilation processes.

    To get around this, you'd need a hodge podge of pre compiler directives, or take a completely different approach.

    I found a cool project that uses a "Tower of IRs" that can restablish source to binary provenance, which, seems to me, to be on the right track:

    https://github.com/trailofbits/vast

    I'd definitely like to see the compilation processes be more transparent and easy to work with.

  • Compilers and IRS: LLVM IR, SPIR-V, and MLIR
    2 projects | news.ycombinator.com | 29 Oct 2022
    At Trail of Bits, we are creating a new compiler front/middle end for Clang called VAST [1]. It consumes Clang ASTs and creates a high-level, information-rich MLIR dialect. Then, we progressively lower it through various other dialects, eventually down to the LLVM dialect in MLIR, which can be translated directly to MLIR.

    Our goals with this pipeline are to enable static analyses that can choose the right abstraction level(s) for their goals, and using provenance, cross abstraction levels to relate results back to source code.

    Neither Clang ASTs nor LLVM IR alone meet our needs for static analysis. Clang ASTs are too verbose and lack explicit representations for implicit behaviours in C++. LLVM IR isn't really "one IR," it's a two IRs (LLVM proper, and metadata), where LLVM proper is an unspecified family of dialects (-O0, -O1, -O2, -O3, then all the arch-specific stuff). LLVM IR also isn't easy to relate to source, even in the presence of maximal debug information. The Clang codegen process does ABI-specific lowering takes high-level types/values and transforms them to be more amenable to storing in target-cpu locations (e.g. registers). This actively works against relating information across levels; something that we want to solve with intermediate MLIR dialects.

    Beyond our static analysis goals, I think an MLIR-based setup will be a key enabler of library-aware compiler optimizations. Right now, library-aware optimizations are challenging because Clang ASTs are hard to mutate, and by the time things are in LLVM IR, the abstraction boundaries provided by libraries are broken down by optimizations (e.g. inlining, specialization, folding), forcing optimization passes to reckon with the mechanics of how libraries are implemented.

    We're very excited about MLIR, and we're pushing full steam ahead with VAST. MLIR is a technology that we can use to fix a lot of issues in Clang/LLVM that hinder really good static analysis.

    [1] https://github.com/trailofbits/vast

clangir

Posts with mentions or reviews of clangir. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-06-08.
  • Decoding C/C++ Compilation Process: From Source Code to Binary
    5 projects | /r/cpp | 8 Jun 2023
    It could be cool to see some explanation of CFG representations or GIMPLE/LLVM here. GCC/Clang can print those out as text, or just compile to that code and not go lower if you ask them to. There are some interesting things you can do with bytecode, like Rellic, AFL++, or optview2. It seems a bit reductive imo to go straight from high-level code to disassembly without at all examining any layers in between. Especially if we use something like Polygeist or CIR.
  • Compilers and IRS: LLVM IR, SPIR-V, and MLIR
    2 projects | news.ycombinator.com | 29 Oct 2022
    I'm also curious, especially they seem to be gearing towards analysis as well.

    https://github.com/llvm/clangir/blob/main/clang/lib/CIR/Dial...

What are some alternatives?

When comparing vast and clangir you can also consider the following projects:

psychec - A compiler frontend for the C programming language

Polygeist - C/C++ frontend for MLIR. Also features polyhedral optimizations, parallel optimizations, and more!

GrayC - GrayC: Greybox Fuzzing of Compilers and Analysers for C

optview2 - User-oriented fork of LLVM's opt-viewer

thorin2 - The Higher ORder INtermediate representation - next gen

demangle-mode - Emacs minor mode that automatically demangles C++, D, and Rust symbols

dfir-orc - Forensics artefact collection tool for systems running Microsoft Windows

checkedc-llvm-project - This repo contains a version of clang that is modified to support Checked C. Checked C is an extension to C that lets programmers write C code with bounds checking and improved type-safety.

FFMpeg-Online - This repository catalogs a list of FFMpeg commands for different situations. By https://hotpot.ai.

codegena - Codegeneration tool

exo - A process manager & log viewer for dev

AFLplusplus - The fuzzer afl++ is afl with community patches, qemu 5.1 upgrade, collision-free coverage, enhanced laf-intel & redqueen, AFLfast++ power schedules, MOpt mutators, unicorn_mode, and a lot more!