Skip to content

Releases: tudasc/MetaCG

MetaCG v0.9.0

21 Aug 12:28
a4ce289

Choose a tag to compare

What's Changed

Additions

Changes

Graph library

CMake / Build / Dependencies

  • Fix PGIS regression due to cxxopts update by @pearzt in #72
  • Update cxxopts to v3.3.1 by @pearzt in #68
  • Don't install external nlohmann-json by @pearzt in #73
  • Update to GoogleTest v1.17.0 by @pearzt in #70
  • Update to spdlog v1.15.3 by @pearzt in #69
  • [NFC] Always install spdlog, even when using an external json by @pearzt in #76

CI and Infrastructure

Various changes

  • Bump devel version to 0.9.0 by @pearzt in #64
  • [NFC] Add common Spack environment paths to .gitignore by @pearzt in #71
  • [NFC] Mention graph tools and PGIS deprecation in README, document file format update policy by @pearzt in #75
  • Use fmt::vformat in LoggerUtil to fix problem in new spdlog with C++23 by @pearzt in #77
  • MetaCG Release v0.9.0 by @pearzt in #79

Full Changelog: v0.8.0...v0.9.0

MetaCG v0.8.0

08 Aug 11:31
35763c8

Choose a tag to compare

What's Changed

Deprecation Notices

  • MetaCG file format v3 is deprecated and will be removed in a future MetaCG release
  • PGIS tool is deprecated and may be removed in a future version

Additions

CGPatch Tool

PyMetaCG

  • Implement Python bindings pymetacg by @pearzt in #32

CGConvert Tool

  • Add tool CGConvert to convert between file format versions by @pearzt in #39

Performance Tests

Changes

CGCollector now infers destructor calls

CMake / Build / Dependencies

  • [NFC] Add -DCMAKE_POLICY_VERSION_MINIMUM=3.5 to make json work with newer CMake by @sebastiankreutzer in #9
  • Improve CMake setup for linking cubelib by @pearzt in #21
  • Update nlohmann-json to version 3.12.0 by @pearzt in #25
  • Add support for LLVM 19 and 20 (not CI tested) by @sebastiankreutzer in #13
  • [NFC] Rename CGCollector_VERSION_* macros to MetaCG_VERSION_* by @pearzt in #26
  • Make headers public to help transitively dependent client programs by @TimHeldmann in #35
  • Revert "Make headers public to help transitively dependent client programs" by @TimHeldmann in #36
  • Add install rules for public dependencies by @sebastiankreutzer in #53
  • Fix CMake command for full build that is provided in our README by @pearzt in #20

Various changes

CI And Infrastructure

  • [MetaCG] Update contribution guidelines by @jplehr in #18
  • [NFC] Update contribute policy / author merge by @jplehr in #33
  • [CI] Update container file, run more tests in GitHub CI by @pearzt in #3
  • Update license 2025 by @jplehr in #4
  • [GH] Use pull_request default events by @jplehr in #11
  • [GH] Add CMake lint step by @jplehr in #12
  • Rework build_submodules.sh and handle different packaged llvm versions by @gomfol12 in #17
  • [Gitlab CI] Load LLVM for CGValidate test by @pearzt in #22
  • [GH] Ignore NFC paths to trigger CI by @jplehr in #23
  • [GHCI][NFC] Split workflow files by @jplehr in #29
  • Remove support and downstream testing for GCC 10 by @pearzt in #50
  • Remove container build from downstream CI by @pearzt in #52
  • [CI] Add install test to github CI by @sebastiankreutzer in #55
  • Fix gitlab CI for CGPatch tests by @sebastiankreutzer in #56
  • [CI] Fix downstream testing of CGPatch by @pearzt in #58
  • CGPatch Integration tests: Fix race condition in CI by @pearzt in #62
  • [NFC][PGIS] Address shellcheck errs and warns by @jplehr in #28
  • Make downstream CI more resilient against infrastructure-induced failures by @pearzt in #43

Full Changelog: v0.7.1...v0.8.0

v0.7.1

07 Nov 08:56

Choose a tag to compare

MetaCG v0.7.1

Fixes

  • Fix CMake policy to work with CMake versions older than 3.24

MetaCG v0.7.0

15 Oct 15:12

Choose a tag to compare

MetaCG v0.7.0

MetaCG v0.7.0 brings these new features and fixes

MetaCG graph library

  • Fixes compilation errors with some gcc versions
  • Implements a detection mechanism for node hash collisions
  • Implements a new callgraph format version and accompanying reader and writer facilities
  • Removes unmaintained dot-graph reading facilities
  • Removes unmaintained call-graph statistics module
  • Reorganizes namespaces throughout the whole library
  • Streamlines usage of reader and writer facilities
  • Unifies the logging usage throughout the project

PGIS

  • Fixes an error in which PIRA could not complete any runs after the first one, if load imbalance was enabled in pgis due to an export error

Infrastructure

  • Improves the docker container build times
  • Improves the CMake setup to feature a default build configuration and better dependency handling
  • Removes module that was once used to convert phasar generated callgraphs into the mcg format

MetaCG v0.6.2

07 Feb 21:27

Choose a tag to compare

Changelog

Fixes

  • Fixes an issue which caused PIRA-related metadata not being serialized correctly again.

MetaCG v0.6.1

28 Dec 22:31

Choose a tag to compare

Changelog

Fixes

  • Issues when building MetaCG on certain RHEL systems

MetaCG v0.6.0

18 Oct 19:08

Choose a tag to compare

MetaCG v0.6.0 brings these new features and fixes

  • Improved CMake that allows to use the graph library via add_link_libraries
  • Utility tool to automatically generate a call graph via CMake File API
  • Simplified and updated CMake handling of dependencies
  • General code clean up

MetaCG Graph Library

  • Removes explicit edge class
  • Metadata is now registered automatically, simplifying the use of it
  • Metadata can be attached to edges (not serialized into the file)
  • Better multigraph managing API
  • Improved implementation for json generation in MCGWriter class
  • Ability to sort edges in generated dot output
  • Ability to attach arbitrary Metadata and query its key
  • Several fixes for potential null pointer accesses

CGCollector

  • Fixes to name generation

PGIS

  • Overhead-based heuristics to work within the PIRA automatic profiler

Infrastructure

  • Ability to run all integration tests concurrently

MetaCG v0.5.0

12 Jan 09:23

Choose a tag to compare

Changelog

Functionality / Implementation

  • Significant speed improvement in MetaCG building and querying the call-graph
  • Adds MetaCG logger utility (to fix potential segmentation faults)
  • Improves the handling of Ctors/Dtors significantly (differences in mangling of symbols with internal linkage between GCC and Clang may occur)
  • Implements new and much better dot I/O functionality in separate (service) class and namespace.
  • Adds new command line option semantics for dot export
  • Removes some outdated command line options
  • Adds experimental Alias Analysis for better handling of function pointers and for enabling the handling of cross TU Calls (off by default)
  • Remove reachability fields from CgNode and related refactoring
  • Changed ownership logic from shared to unique pointer
    • Callgraph-object is uniquely owned by MCGManager
    • Nodes and Edges are uniquely owned by Callgraph object
    • Access to these now works via raw pointer
  • Fully switch from the old JSON annotation mechanism to the MCGWriter
  • Deprecation of the setGraph method: PGIS_PIRA phases are now supposed to explicitly pass a call-graph if needed
  • Changed program logic to be more conservative when dealing with questionable inputs
    • Querying existence of Metadata does not implicitly add Metadata
  • [deprecated] Explicit modelling of edges, and transfer of graph-structure knowledge from node to call-graph

Fixes

  • Fixes the reading of call counts and runtime from the cube file
  • Fixes potential nullptr dereference and segmentation fault
  • Fixes bug causing the format two tests to check the result of the format one tests
  • Fixes potential CMake issue with modern linkers
  • Fixes a bug that causes uninstantiated virtual template function to be added to the callgraph, causing clang to crash in getAllManglings()
  • Fixes build with/without optional components

Infrastructure

  • Matrix builds for GCC in version 10 and 11, and LLVM versions (10, 14) and (13, 14).
  • Removes outdated jobs / tags
  • Adds a template with our CI defaults
  • Re-enables the podman based build in Ubuntu container

Versions

  • Support for Clang/LLVM 10, 13 and 14

MetaCG v0.4.0

05 Apr 13:19

Choose a tag to compare

Changelog

Functionality

  • MCGWriter to serialize the Callgraph into a MetaCG file.
  • MetaDataHandler required value function to serialize the MetaData for MCGWriter
  • Objects to model and consolidate file format information of MetaCG file format
  • MCGManager can handle multiple call-graphs at a time

Fixes

  • MCG file format version in CGMerge now read from first non-null file content
  • Building error caused by static assert: ambigious operator
  • Explicit list all required clang/llvm libraries as new versions of ld are stricter and don't link libraries just because a symbol in them is referenced.

Infrastructure

  • Use C++17 instead of 20 to prevent build errors with GCC 11.2
  • Improved library dependencies handling in CMake (especially for pre-installed libraries)
  • Better Extra-P integration in builds

Versions

  • Bumps nlohmann-json version to 3.10.5 (other versions may/should work too)

MetaCG v0.3.0

14 Feb 16:16

Choose a tag to compare

Changes

Features are user-facing, Fixes are both user-facing and developer-facing, Refactorings are developer-facing, CI are infrastructure related notes.

Features

  • Aggregation strategies for Extra-P performance models and analysis parameter config file (PIRA II, LIDe)
  • MetaCollectors for loop depth, conditional branches, (experimental) type of statements count, when type 2 metadata is enabled
  • Add new algorithms for static filtering based on loop depth, FPAndMemOps or conditional branches
  • Add options to select the algorithm for the cutoff selection
  • Adds citation file
  • Significant refactoring of MetaCG components (for details see below)

Fixes

  • Update ToolchainOptions to explicit link required libraries. New linker versions are more strict with linking not explicit declared dependencies
  • Update spdlog
  • Fix warnings reported by clang-tidy, especially unnecessary copies
  • Run tests in Debug configuration, so that asserts are enabled
  • Remove leftover headers
  • Update detection of python include directory
  • Disable wrong asserts
  • Updates MetaCG to correct release version
  • Working on issue w.r.t. recursion and adds test for recursive function
  • Potential temporary fix for non-terminating CGCollector on some target codes

Refactorings

  • Split graph components into their own library / namespace
  • Moved top-level MetaData to own file.
  • Moved MCGReader to graph lib && removed outdated code
  • New high-level interface for callgraph construction
  • Moved MetaData basic definitions to their own respective file in graph namespace
  • Moved graph library into separate componen
  • Prefer set/map over the unordered variants to make results consistent across different systems
  • External dependencies are now put into ${METACG_REPO}/extern by default
  • Applies the source formatter to all source code files (seems that CLion in my branch messed that up)
  • cmake-format style file to be used with cmake-format
  • Removed outdated CMake resources
  • Renamed CMake to better fit overall structure

CI

  • Added container step in Gitlab CI
  • Different stages won't work on different machines. Make sure you use the right tags.
  • Updated Gitlab CI yaml config to account for new project structure
  • Improves container setup to use pre-stored base image from registry
  • CI will fail if CMakeLists and other CMake-related files do not adhere to the formatting style file
  • Enables podman builds for all branches and runs PGIS unit tests in the container
  • Uses more modern CMake commands to build and install MetaCG