Releases: tudasc/MetaCG
Releases · tudasc/MetaCG
MetaCG v0.9.0
What's Changed
Additions
- CGFormat by @sebastiankreutzer in #65
- File format v4 and big graph lib re-write by @sebastiankreutzer in #49
- Add support for global metadata by @sebastiankreutzer in #67
Changes
Graph library
- [NFC] Rename MetaCGReader to MCGReader by @silas-martens in #74
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
- Add graph formatting check to CI by @sebastiankreutzer in #66
- [Graph] Enable ctest testing by @jplehr in #78
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
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
- CGPatch runtime component by @silas-martens in #40
- CGPatch instrumentation component by @silas-martens in #44
PyMetaCG
CGConvert Tool
Performance Tests
- Performance testing by @sebastiankreutzer in #48
Changes
CGCollector now infers destructor calls
- Infer destructor calls in CGC by @sebastiankreutzer in #19
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
- [Tools] Update README by @jplehr in #5
- Correctly install generated custom MD header by @sebastiankreutzer in #6
- Add missing metadata by @sebastiankreutzer in #8
- Remove unnecessary error reporting in cgvalidate tests; fix typo from cgverify to cgvalidate by @TimHeldmann in #16
- Streamline format conversion and remove deprecation spam on compile by @pearzt in #15
- [NFC] Fix two README errors by @jplehr in #24
- [NFC] Update AUTHORS file by @jplehr in #31
- Favor -G parameter to use Ninja over envar by @jplehr in #30
- Add unique logging output capability with tests by @TimHeldmann in #14
- Extend CGValidate to detect all transitive overrides in the call graph by @silas-martens in #37
- Change json and spdlog into public dependencies of the graphlib by @sebastiankreutzer in #46
- Replaced error with warning when CGPatch is built with llvm < 15 by @silas-martens in #47
- [NFC] Remove superfluous semicolons in LoggerUtil by @sebastiankreutzer in #54
- Bump devel version to 0.8.0 by @pearzt in #60
- MetaCG Release v0.8.0 by @pearzt in #63
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
MetaCG v0.7.0
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
Changelog
Fixes
- Fixes an issue which caused PIRA-related metadata not being serialized correctly again.
MetaCG v0.6.1
Changelog
Fixes
- Issues when building MetaCG on certain RHEL systems
MetaCG v0.6.0
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
edgeclass - 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
MCGWriterclass - Ability to sort edges in generated dot output
- Ability to attach arbitrary
Metadataand 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
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
Callgraphobject - Access to these now works via raw pointer
- Callgraph-object is uniquely owned by
- Fully switch from the old JSON annotation mechanism to the
MCGWriter - Deprecation of the
setGraphmethod: 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
Changelog
Functionality
- MCGWriter to serialize the Callgraph into a MetaCG file.
- MetaDataHandler required
valuefunction 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
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}/externby 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
buildandinstallMetaCG