Skip to content

Releases: tudasc/TypeART

TypeART 1.9

03 Jan 10:24
717a560
Compare
Choose a tag to compare

This release introduces a new approach to serializing type information, leveraging the integration of the llvm-dimeta library. This enhances TypeART’s ability to extract and store type layouts using LLVM debug metadata as opposed to LLVM IR-only type information.

Other key updates include enhancements to the configuration system, extended wrapper functionality, and general maintenance.

Detailed Changes

Type Information with llvm-dimeta

Integrated the llvm-dimeta library to determine type information for stack, global, and heap allocations based on LLVM debug metadata.
Now, two methods for generating type layouts exist:

  1. LLVM IR Type System (--typeart-typegen=ir): Uses the LLVM IR directly for type extraction.
  2. LLVM Debug Metadata (--typeart-typegen=dimeta, default): Uses llvm-dimeta for type extraction from debug metadata.

Configuration

  • Unified commandline and file-based configuration using a new Configuration base class.
  • YAML configuration files are now supported and can be combined with commandline options, prioritizing the latter.
  • Centralized definition of commandline options for improved consistency.

Compiler Wrapper

  • Wrapper passes -fPic and -g by default
  • Added the ability to emit Clang compiler’s base IR via the wrapper, aiding debugging workflows.
  • Wrapper now supports flexible output formats:
    • Emit assembly (-S).
    • Emit LLVM bitcode (-emit-llvm).
    • Emit LLVM IR (-emit-llvm -S).
    • Direct output to console (-o -).
  • Enhanced debugging by supporting the emission of heap, opt, and stack IR phases via environment flags.
  • Updated Python scripts for IR comparisons across phases (ir_viewer) and between different wrappers (ir_compare).

System.h: Source Location

  • Improved source location detection by refining pointer offset calculations.
  • Resolved recursion issues caused by library preloading during source location queries.

Build System and CI

  • Updated external dependencies to their latest versions.
  • Fixed CMake IDE test targets and improved Python interpreter detection in CI workflows.

Packaging and Miscellaneous

  • Updated license headers and README for the release.

List of PR's

  • Configuration support in #133
  • Improve wrapper debug support in #134
  • Test related updates in #135
  • Re-configure when scripts change in #136
  • Emit base IR with wrapper in #137
  • Wrapper emit-llvm in #138
  • Maintenance in #141
  • Type extraction via Dimeta library in #143
  • Prepare release v1.9 in #144
  • Release 1.9 in #145
  • Readme updates (#146) in #147

Full Changelog: v1.8.1...v1.9

TypeART 1.8.1

12 Jul 12:51
3b3e9c3
Compare
Choose a tag to compare

Bugfix release.

Fix git tag issue with (optional) phpmap dependency.
Misc: Remove CI-ext AD run with safeptr map, see #64.

Full Changelog: v1.8...v1.8.1

TypeART 1.8

04 May 14:13
6912548
Compare
Choose a tag to compare

This release primarily improves interoperability when other projects consume TypeART.
This includes naming (mostly prefixing) of CMake variables, to better support inclusion via FetchContent or with add_subdirectory, and extending the package config to provide TypeART script (binaries).

The API of typeart_get_subtype was changed to avoid copying the TypeART struct info by copy. It is now passed as a const pointer.

The TypeART pass now supports stack lifetime markers, see lifetime.start.
Only when the lifetime of a stack variable starts, are it's address and type information valid. This is especially the case in the context of stack coloring, where stack space is re-used (with potentially different types but same memory address)

Detailed changes

Runtime

  • Changed API of typeart_get_subtype: Pass struct info by pointer

LLVM pass

  • Remove deprecated (stack/global) allocation filter. Filters are selectable with a fixed set: none (no filtering), std (standard filter), cg (call-graph based filter) uisng the command line typeart-call-filter-impl
  • Refactor command line options to use prefix typeart-
  • Stack allocations: Support LLVM stack lifetime start markers for instrumenting the stack, fixes #113
  • Add support for LLVM 14

Scripts & compiler wrapper

  • Try to detect and support Open MPI, Intel MPI and MPICH wrapping
    • typeart-mpicc and typeart-mpicxx are thus generated for a specific MPI implementation (based on result of FindMPI)
  • Support compile & link single invocation, i.e., typeart-clang source.cpp -o source.exe now works, see #112

CMake

  • Start options and cache variables with TYPEART_ prefix
  • Use correct option name, fixes #114
Packaging
  • Package config provides the wrapper scripts via find_program as cached variables, e.g.:
    • TYPEART_MPICC_CMD or TYPEART_MPICC_CMD_DEBUG for the mpicc wrapper

Misc

  • Update clang-format (configuration) to version 12
  • Provide new btree-backed map as alternative to Abseils
  • Set Abseil to long-term release version
  • Add codespell config file
  • Add lit test targets check-typeart-... for testing
  • Fix lit flag for when thread support is detected, i.e., use Threads_FOUND, see #120

Full Changelog: v1.7...v1.8

TypeART 1.7

03 Jan 20:56
a83c63b
Compare
Choose a tag to compare

Major changes

  • Supports LLVM 10 to 13.
  • Compiler wrapper for TypeART, e.g., env CC=typeart-clang or env MPICXX=typeart-mpic++
    • No need to directly invoke clang and opt w.r.t. TypeART anymore
    • Works with CMake
  • Redone library naming (#81), installing, packacking (CMake)
    • Allows consuming TypeART in other projects as a library

Detailed changes

Runtime

  • Runtime does not exit when default types.yaml is missing. Supports checks fo built-in types (double etc.).

Pass

  • TypeART uses single LLVM pass (instead of analysis + transform)
  • Filter allocas of pointer values by default (can be disabled)
  • Globals have a reworked pre-filtering, closes #101
  • Add CallSite.h from LLVM 10
    • Enabled for builds with LLVM 11 and higher for compatibility

Misc general

  • CMake build system modernized, requires CMake >= 3.20.
  • find_package(LLVM) first uses provided LLVM_DIR and falls back to find_package(LLVM 10) for support of different versions
  • Fix #84, closes #87
  • Updated copyright year in headers
  • Updated README.md

TypeART 1.6

21 Jun 11:06
e563d3d
Compare
Choose a tag to compare

Major changes

  • OpenMP support and thread-safety for the runtime were added.
  • Array cookies for new[], delete[] are explicitly handled.

Detailed changes

Passes

  • Filter aware of OpenMP microtask outlining & API
  • Filter aware of Clang sanitizer API calls (asan, ubsan, msan)
  • Support for C++ array cookies added, see #71

Runtime

  • Runtime is thread-safe, see #10
  • Refactoring: Split up runtime type-checking and allocation tracking

Misc general

  • Bug fixes, see #63 #65 #67
  • Install target for scripts apply.sh and run.sh, see #70
  • Should build with LLVM libcxx, closes #58 and #60
    • Requires full stack to be build with libcxx to be usable (e.g., LLVM (opt) build with libcxx)
  • Fixed demo Makefile and Open MPI 4 deprecation, see #76
  • Extended CI tests, see #2
  • Updated README.md

TypeART 1.5.1

04 Jan 16:22
71d7993
Compare
Choose a tag to compare

Bugfix release.

Runtime softcounter:

  • Count maxHeapAlloc correctly even if free/delete is never called, see #45

Runtime callback interface (hidden API):

  • Fix bug where calling interface directly can cause a crash, see #40
  • Fix mismatch between CallbackInterface.h and LLVM pass instrumentation type for stack deallcoation function, see #41

Scripts:

  • Properly support optimization flags, see #43
  • Fix bug when optimization flag is passed, the script will apply heap instrumentation twice, see #44

TypeART 1.5

29 Dec 14:21
aeb9ca5
Compare
Choose a tag to compare

Passes

  • Support InvokeInst
  • More memory allocation functions supported
  • Selectable filter implementations
    • new dataflow allocations filter
    • new call-graph based filter option

Runtime

  • Extended AccessCounter stats (counting of allocation operations)
  • Use btree map of abseil as default

Misc General

  • More tests (and more code coverage)
  • Coverage options (lcov, gcovr, llvm-cov)
  • Changed project structure (lib/ now contains runtime, passes etc)
  • Updated CI setup (recent Ubuntu runner, test AD lulesh), compute coverage with Coveralls

TyCart 0.1

03 Jun 12:46
Compare
Choose a tag to compare

This release was used in the C3PO workshop paper "Compiler-assisted type-safe checkpointing"

TypeART 1.2

17 Apr 07:44
Compare
Choose a tag to compare

Comes with an updated README and implements minor bug fixes.

Initial TypeART Release

17 Apr 07:38
6090bbf
Compare
Choose a tag to compare

This version was used in the 2018 Correctness workshop paper, see our paper.