Cleaning up the tracing.h mechanism to enable alternative implementations. (#14044)

Future changes will add compile-time configuration and user config
overrides for the tracing implementation to allow for multiple in-tree
and out-of-tree implementations.
diff --git a/compiler/src/iree/compiler/Utils/BUILD.bazel b/compiler/src/iree/compiler/Utils/BUILD.bazel
index 741911d..aaa6ca5 100644
--- a/compiler/src/iree/compiler/Utils/BUILD.bazel
+++ b/compiler/src/iree/compiler/Utils/BUILD.bazel
@@ -42,7 +42,7 @@
     ],
     deps = [
         "//compiler/src/iree/compiler/Dialect/Util/IR",
-        "//runtime/src/iree/base:tracing",
+        "//runtime/src/iree/base",
         "//runtime/src/iree/base/internal/flatcc:building",
         "//runtime/src/iree/base/internal/flatcc:debugging",
         "//runtime/src/iree/base/internal/flatcc:parsing",
diff --git a/compiler/src/iree/compiler/Utils/CMakeLists.txt b/compiler/src/iree/compiler/Utils/CMakeLists.txt
index 4e5dfac..d7ef3b5 100644
--- a/compiler/src/iree/compiler/Utils/CMakeLists.txt
+++ b/compiler/src/iree/compiler/Utils/CMakeLists.txt
@@ -45,10 +45,10 @@
     MLIRSupport
     MLIRTransformUtils
     MLIRTransforms
+    iree::base
     iree::base::internal::flatcc::building
     iree::base::internal::flatcc::debugging
     iree::base::internal::flatcc::parsing
-    iree::base::tracing
     iree::compiler::Dialect::Util::IR
   PUBLIC
 )
diff --git a/compiler/src/iree/compiler/Utils/TracingUtils.h b/compiler/src/iree/compiler/Utils/TracingUtils.h
index 455dd0d..6a4498f 100644
--- a/compiler/src/iree/compiler/Utils/TracingUtils.h
+++ b/compiler/src/iree/compiler/Utils/TracingUtils.h
@@ -7,7 +7,7 @@
 #ifndef IREE_COMPILER_UTILS_TRACINGUTILS_H_
 #define IREE_COMPILER_UTILS_TRACINGUTILS_H_
 
-#include "iree/base/tracing.h"
+#include "iree/base/api.h"
 #include "mlir/IR/BuiltinOps.h"
 #include "mlir/Pass/Pass.h"
 #include "mlir/Pass/PassInstrumentation.h"
diff --git a/experimental/cuda2/CMakeLists.txt b/experimental/cuda2/CMakeLists.txt
index d068686..858bac0 100644
--- a/experimental/cuda2/CMakeLists.txt
+++ b/experimental/cuda2/CMakeLists.txt
@@ -31,8 +31,6 @@
     iree::base
     iree::base::internal
     iree::base::internal::arena
-    iree::base::core_headers
-    iree::base::tracing
     iree::hal
     iree::hal::utils::buffer_transfer
     iree::schemas::cuda_executable_def_c_fbs
@@ -59,9 +57,7 @@
     "nccl_status_util.c"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal::dynamic_library
-    iree::base::tracing
     iree_cuda::headers
   PUBLIC
 )
diff --git a/experimental/cuda2/cuda_allocator.c b/experimental/cuda2/cuda_allocator.c
index 3693dff..b8380cb 100644
--- a/experimental/cuda2/cuda_allocator.c
+++ b/experimental/cuda2/cuda_allocator.c
@@ -12,7 +12,6 @@
 #include "experimental/cuda2/cuda_dynamic_symbols.h"
 #include "experimental/cuda2/cuda_status_util.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 #if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_ALLOCATION_TRACKING
 static const char* IREE_HAL_CUDA_ALLOCATOR_ID = "CUDA2 unpooled";
diff --git a/experimental/cuda2/cuda_buffer.c b/experimental/cuda2/cuda_buffer.c
index e88c9e3..da9a957 100644
--- a/experimental/cuda2/cuda_buffer.c
+++ b/experimental/cuda2/cuda_buffer.c
@@ -11,7 +11,6 @@
 #include <string.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 typedef struct iree_hal_cuda2_buffer_t {
   iree_hal_buffer_t base;
diff --git a/experimental/cuda2/cuda_device.c b/experimental/cuda2/cuda_device.c
index 9ea9ddc..6d0a957 100644
--- a/experimental/cuda2/cuda_device.c
+++ b/experimental/cuda2/cuda_device.c
@@ -18,7 +18,6 @@
 #include "experimental/cuda2/memory_pools.h"
 #include "iree/base/internal/arena.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/utils/buffer_transfer.h"
 #include "iree/hal/utils/deferred_command_buffer.h"
 
diff --git a/experimental/cuda2/cuda_driver.c b/experimental/cuda2/cuda_driver.c
index 8fee8b9..d06d6ab 100644
--- a/experimental/cuda2/cuda_driver.c
+++ b/experimental/cuda2/cuda_driver.c
@@ -14,8 +14,6 @@
 #include "experimental/cuda2/nccl_dynamic_symbols.h"
 #include "experimental/cuda2/nccl_status_util.h"
 #include "iree/base/api.h"
-#include "iree/base/assert.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 
 // Maximum device name length supported by the CUDA HAL driver.
diff --git a/experimental/cuda2/cuda_dynamic_symbols.c b/experimental/cuda2/cuda_dynamic_symbols.c
index 8e19493..530c5f8 100644
--- a/experimental/cuda2/cuda_dynamic_symbols.c
+++ b/experimental/cuda2/cuda_dynamic_symbols.c
@@ -9,10 +9,8 @@
 #include <string.h>
 
 #include "experimental/cuda2/cuda_status_util.h"
-#include "iree/base/assert.h"
+#include "iree/base/api.h"
 #include "iree/base/internal/dynamic_library.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 
 static const char* iree_hal_cuda_dylib_names[] = {
 #if defined(IREE_PLATFORM_WINDOWS)
diff --git a/experimental/cuda2/memory_pools.c b/experimental/cuda2/memory_pools.c
index c20c9eb..ae15f78 100644
--- a/experimental/cuda2/memory_pools.c
+++ b/experimental/cuda2/memory_pools.c
@@ -9,7 +9,6 @@
 #include "experimental/cuda2/cuda_buffer.h"
 #include "experimental/cuda2/cuda_dynamic_symbols.h"
 #include "experimental/cuda2/cuda_status_util.h"
-#include "iree/base/tracing.h"
 
 // NOTE: these are currently global for all devices; we could make
 // device-specific ones by malloc() and leaking (with LSAN note) unique string
diff --git a/experimental/cuda2/nccl_dynamic_symbols.c b/experimental/cuda2/nccl_dynamic_symbols.c
index 7fa8b41..256edbf 100644
--- a/experimental/cuda2/nccl_dynamic_symbols.c
+++ b/experimental/cuda2/nccl_dynamic_symbols.c
@@ -9,10 +9,8 @@
 #include <string.h>
 
 #include "experimental/cuda2/nccl_status_util.h"
-#include "iree/base/assert.h"
+#include "iree/base/api.h"
 #include "iree/base/internal/dynamic_library.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 
 static const char* iree_hal_cuda_nccl_dylib_names[] = {
 #if defined(IREE_PLATFORM_WINDOWS)
diff --git a/experimental/cuda2/registration/CMakeLists.txt b/experimental/cuda2/registration/CMakeLists.txt
index 54372e9..49b49c7 100644
--- a/experimental/cuda2/registration/CMakeLists.txt
+++ b/experimental/cuda2/registration/CMakeLists.txt
@@ -13,8 +13,6 @@
     "driver_module.c"
   DEPS
     iree::base
-    iree::base::core_headers
-    iree::base::tracing
     iree::experimental::cuda2
     iree::hal
   DEFINES
diff --git a/experimental/cuda2/registration/driver_module.c b/experimental/cuda2/registration/driver_module.c
index b805bd5..33d93a3 100644
--- a/experimental/cuda2/registration/driver_module.c
+++ b/experimental/cuda2/registration/driver_module.c
@@ -12,8 +12,6 @@
 #include "experimental/cuda2/api.h"
 #include "iree/base/api.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/status.h"
-#include "iree/base/tracing.h"
 
 IREE_FLAG(
     bool, cuda_async_allocations, true,
diff --git a/experimental/rocm/CMakeLists.txt b/experimental/rocm/CMakeLists.txt
index 359493c..6c501b1 100644
--- a/experimental/rocm/CMakeLists.txt
+++ b/experimental/rocm/CMakeLists.txt
@@ -60,12 +60,10 @@
   DEPS
     ::dynamic_symbols
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::arena
     iree::base::internal::flatcc::parsing
     iree::base::internal::synchronization
-    iree::base::tracing
     iree::hal
     iree::hal::utils::buffer_transfer
     iree::hal::utils::semaphore_base
@@ -91,9 +89,8 @@
   COPTS
     "-D__HIP_PLATFORM_HCC__=1"
   DEPS
-    iree::base::core_headers
+    iree::base
     iree::base::internal::dynamic_library
-    iree::base::tracing
   PUBLIC
 )
 
diff --git a/experimental/rocm/direct_command_buffer.c b/experimental/rocm/direct_command_buffer.c
index e977fd4..2c74c81 100644
--- a/experimental/rocm/direct_command_buffer.c
+++ b/experimental/rocm/direct_command_buffer.c
@@ -16,7 +16,6 @@
 #include "experimental/rocm/rocm_buffer.h"
 #include "experimental/rocm/status_util.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 // Command buffer implementation that directly maps to rocm direct.
 // This records the commands on the calling thread without additional threading
diff --git a/experimental/rocm/dynamic_symbols.c b/experimental/rocm/dynamic_symbols.c
index ad7ca6d..c888faf 100644
--- a/experimental/rocm/dynamic_symbols.c
+++ b/experimental/rocm/dynamic_symbols.c
@@ -8,9 +8,8 @@
 
 #include <string.h>
 
+#include "iree/base/api.h"
 #include "iree/base/internal/dynamic_library.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 
 static const char* kROCMLoaderSearchNames[] = {
 #if defined(IREE_PLATFORM_WINDOWS)
diff --git a/experimental/rocm/event_semaphore.c b/experimental/rocm/event_semaphore.c
index b444624..5893c8c 100644
--- a/experimental/rocm/event_semaphore.c
+++ b/experimental/rocm/event_semaphore.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/utils/semaphore_base.h"
 
 typedef struct iree_hal_rocm_semaphore_t {
diff --git a/experimental/rocm/native_executable.c b/experimental/rocm/native_executable.c
index 94d003d..66fbb93 100644
--- a/experimental/rocm/native_executable.c
+++ b/experimental/rocm/native_executable.c
@@ -12,7 +12,6 @@
 #include "experimental/rocm/pipeline_layout.h"
 #include "experimental/rocm/status_util.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 // flatcc schemas:
 #include "iree/base/internal/flatcc/parsing.h"
diff --git a/experimental/rocm/nop_executable_cache.c b/experimental/rocm/nop_executable_cache.c
index 5b5eca3..011a4d7 100644
--- a/experimental/rocm/nop_executable_cache.c
+++ b/experimental/rocm/nop_executable_cache.c
@@ -11,7 +11,6 @@
 
 #include "experimental/rocm/native_executable.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 typedef struct iree_hal_rocm_nop_executable_cache_t {
   iree_hal_resource_t resource;
diff --git a/experimental/rocm/pipeline_layout.c b/experimental/rocm/pipeline_layout.c
index 493a35b..ee137ab 100644
--- a/experimental/rocm/pipeline_layout.c
+++ b/experimental/rocm/pipeline_layout.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // iree_hal_rocm_descriptor_set_layout_t
diff --git a/experimental/rocm/registration/CMakeLists.txt b/experimental/rocm/registration/CMakeLists.txt
index aa46232..7db7b78 100644
--- a/experimental/rocm/registration/CMakeLists.txt
+++ b/experimental/rocm/registration/CMakeLists.txt
@@ -13,8 +13,6 @@
     "driver_module.c"
   DEPS
     iree::base
-    iree::base::core_headers
-    iree::base::tracing
     iree::experimental::rocm
     iree::hal
   DEFINES
diff --git a/experimental/rocm/registration/driver_module.c b/experimental/rocm/registration/driver_module.c
index f268692..fcdadfe 100644
--- a/experimental/rocm/registration/driver_module.c
+++ b/experimental/rocm/registration/driver_module.c
@@ -11,7 +11,6 @@
 
 #include "experimental/rocm/api.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 static iree_status_t iree_hal_rocm_driver_factory_enumerate(
     void *self, iree_host_size_t *out_driver_info_count,
diff --git a/experimental/rocm/rocm_allocator.c b/experimental/rocm/rocm_allocator.c
index a2c70d0..8a7d8f4 100644
--- a/experimental/rocm/rocm_allocator.c
+++ b/experimental/rocm/rocm_allocator.c
@@ -12,7 +12,6 @@
 #include "experimental/rocm/rocm_buffer.h"
 #include "experimental/rocm/status_util.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 typedef struct iree_hal_rocm_allocator_t {
   iree_hal_resource_t resource;
diff --git a/experimental/rocm/rocm_buffer.c b/experimental/rocm/rocm_buffer.c
index 5544452..628b933 100644
--- a/experimental/rocm/rocm_buffer.c
+++ b/experimental/rocm/rocm_buffer.c
@@ -11,7 +11,6 @@
 #include <string.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 typedef struct iree_hal_rocm_buffer_t {
   iree_hal_buffer_t base;
diff --git a/experimental/rocm/rocm_device.c b/experimental/rocm/rocm_device.c
index 30d0c2d..e6a915c 100644
--- a/experimental/rocm/rocm_device.c
+++ b/experimental/rocm/rocm_device.c
@@ -20,7 +20,6 @@
 #include "experimental/rocm/rocm_event.h"
 #include "experimental/rocm/status_util.h"
 #include "iree/base/internal/arena.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/utils/buffer_transfer.h"
 
 //===----------------------------------------------------------------------===//
diff --git a/experimental/rocm/rocm_driver.c b/experimental/rocm/rocm_driver.c
index 5b78da8..e284554 100644
--- a/experimental/rocm/rocm_driver.c
+++ b/experimental/rocm/rocm_driver.c
@@ -12,7 +12,6 @@
 #include "experimental/rocm/rocm_device.h"
 #include "experimental/rocm/status_util.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 
 typedef struct iree_hal_rocm_driver_t {
diff --git a/experimental/rocm/rocm_event.c b/experimental/rocm/rocm_event.c
index b6e6d95..05b0e73 100644
--- a/experimental/rocm/rocm_event.c
+++ b/experimental/rocm/rocm_event.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 // Dummy events for now, don't do anything.
 typedef struct iree_hal_rocm_event_t {
diff --git a/experimental/webgpu/BUILD.bazel b/experimental/webgpu/BUILD.bazel
index a615c5d..8e9163c 100644
--- a/experimental/webgpu/BUILD.bazel
+++ b/experimental/webgpu/BUILD.bazel
@@ -47,8 +47,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:arena",
         "//runtime/src/iree/base/internal/flatcc:parsing",
diff --git a/experimental/webgpu/CMakeLists.txt b/experimental/webgpu/CMakeLists.txt
index add4557..0c32ff0 100644
--- a/experimental/webgpu/CMakeLists.txt
+++ b/experimental/webgpu/CMakeLists.txt
@@ -42,11 +42,9 @@
     "webgpu_device.h"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::arena
     iree::base::internal::flatcc::parsing
-    iree::base::tracing
     iree::hal
     iree::experimental::webgpu::platform
     iree::experimental::webgpu::shaders
diff --git a/experimental/webgpu/bind_group_cache.c b/experimental/webgpu/bind_group_cache.c
index db9e2d0..58bb5ff 100644
--- a/experimental/webgpu/bind_group_cache.c
+++ b/experimental/webgpu/bind_group_cache.c
@@ -13,7 +13,6 @@
 #include "experimental/webgpu/buffer.h"
 #include "iree/base/api.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/tracing.h"
 
 void iree_hal_webgpu_bind_group_cache_initialize(
     WGPUDevice device, iree_hal_webgpu_bind_group_cache_t* out_cache) {
diff --git a/experimental/webgpu/buffer.c b/experimental/webgpu/buffer.c
index 7005a8f..d7e1832 100644
--- a/experimental/webgpu/buffer.c
+++ b/experimental/webgpu/buffer.c
@@ -12,7 +12,6 @@
 
 #include "experimental/webgpu/webgpu_device.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/utils/buffer_transfer.h"
 
 // TODO(benvanik): decouple via injection.
diff --git a/experimental/webgpu/builtins.c b/experimental/webgpu/builtins.c
index 935bc9e..1b2f301 100644
--- a/experimental/webgpu/builtins.c
+++ b/experimental/webgpu/builtins.c
@@ -8,7 +8,6 @@
 
 #include "experimental/webgpu/shaders/builtin_shaders.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 static const char* iree_hal_webgpu_builtins_find_code(const char* file_name) {
   const iree_file_toc_t* files = iree_hal_wgsl_builtin_shaders_create();
diff --git a/experimental/webgpu/command_buffer.c b/experimental/webgpu/command_buffer.c
index b8efd48..b5d783d 100644
--- a/experimental/webgpu/command_buffer.c
+++ b/experimental/webgpu/command_buffer.c
@@ -15,7 +15,6 @@
 #include "experimental/webgpu/pipeline_layout.h"
 #include "iree/base/api.h"
 #include "iree/base/internal/arena.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // Segmented submission management
diff --git a/experimental/webgpu/executable.c b/experimental/webgpu/executable.c
index b0c872e..87da423 100644
--- a/experimental/webgpu/executable.c
+++ b/experimental/webgpu/executable.c
@@ -10,7 +10,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/inline_array.h"
-#include "iree/base/tracing.h"
 
 // flatcc schemas:
 #include "iree/base/internal/flatcc/parsing.h"
diff --git a/experimental/webgpu/nop_event.c b/experimental/webgpu/nop_event.c
index 7873968..eec11cf 100644
--- a/experimental/webgpu/nop_event.c
+++ b/experimental/webgpu/nop_event.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 // Dummy events for now, don't do anything.
 typedef struct iree_hal_webgpu_nop_event_t {
diff --git a/experimental/webgpu/nop_executable_cache.c b/experimental/webgpu/nop_executable_cache.c
index acdfa48..5fa9026 100644
--- a/experimental/webgpu/nop_executable_cache.c
+++ b/experimental/webgpu/nop_executable_cache.c
@@ -11,7 +11,6 @@
 
 #include "experimental/webgpu/executable.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 typedef struct iree_hal_webgpu_nop_executable_cache_t {
   iree_hal_resource_t resource;
diff --git a/experimental/webgpu/nop_semaphore.c b/experimental/webgpu/nop_semaphore.c
index a99b6f1..d4151ee 100644
--- a/experimental/webgpu/nop_semaphore.c
+++ b/experimental/webgpu/nop_semaphore.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 typedef struct iree_hal_webgpu_nop_semaphore_t {
   iree_hal_resource_t resource;
diff --git a/experimental/webgpu/pipeline_layout.c b/experimental/webgpu/pipeline_layout.c
index 5d63e6b..e271cfd 100644
--- a/experimental/webgpu/pipeline_layout.c
+++ b/experimental/webgpu/pipeline_layout.c
@@ -10,7 +10,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/inline_array.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // iree_hal_webgpu_descriptor_set_layout_t
diff --git a/experimental/webgpu/platform/BUILD.bazel b/experimental/webgpu/platform/BUILD.bazel
index 63994b4..19e7c81 100644
--- a/experimental/webgpu/platform/BUILD.bazel
+++ b/experimental/webgpu/platform/BUILD.bazel
@@ -20,8 +20,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/hal",
         "@webgpu_headers",
diff --git a/experimental/webgpu/platform/CMakeLists.txt b/experimental/webgpu/platform/CMakeLists.txt
index ea0c3de..64c0846 100644
--- a/experimental/webgpu/platform/CMakeLists.txt
+++ b/experimental/webgpu/platform/CMakeLists.txt
@@ -17,9 +17,7 @@
     "webgpu.h"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
diff --git a/experimental/webgpu/platform/emscripten/CMakeLists.txt b/experimental/webgpu/platform/emscripten/CMakeLists.txt
index 1cc7008..c0ef8d0 100644
--- a/experimental/webgpu/platform/emscripten/CMakeLists.txt
+++ b/experimental/webgpu/platform/emscripten/CMakeLists.txt
@@ -18,9 +18,7 @@
     "emscripten_util.c"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal
-    iree::base::tracing
     iree::hal
     iree::experimental::webgpu::platform
   PUBLIC
diff --git a/experimental/webgpu/platform/emscripten/emscripten_driver.c b/experimental/webgpu/platform/emscripten/emscripten_driver.c
index de2036f..ce77dcf 100644
--- a/experimental/webgpu/platform/emscripten/emscripten_driver.c
+++ b/experimental/webgpu/platform/emscripten/emscripten_driver.c
@@ -8,8 +8,6 @@
 
 #include <emscripten.h>
 
-#include "iree/base/tracing.h"
-
 #define IREE_HAL_WEBGPU_DEVICE_ID_DEFAULT 0
 
 //===----------------------------------------------------------------------===//
diff --git a/experimental/webgpu/platform/native/CMakeLists.txt b/experimental/webgpu/platform/native/CMakeLists.txt
index 66e90dc..dabaa2d 100644
--- a/experimental/webgpu/platform/native/CMakeLists.txt
+++ b/experimental/webgpu/platform/native/CMakeLists.txt
@@ -13,9 +13,7 @@
     "native_driver.c"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal
-    iree::base::tracing
     iree::hal
     iree::experimental::webgpu::platform
   PUBLIC
diff --git a/experimental/webgpu/platform/native/native_driver.c b/experimental/webgpu/platform/native/native_driver.c
index 297531f..b5cab48 100644
--- a/experimental/webgpu/platform/native/native_driver.c
+++ b/experimental/webgpu/platform/native/native_driver.c
@@ -6,8 +6,6 @@
 
 #include "experimental/webgpu/platform/native/native_driver.h"
 
-#include "iree/base/tracing.h"
-
 //===----------------------------------------------------------------------===//
 // Driver and device options
 //===----------------------------------------------------------------------===//
diff --git a/experimental/webgpu/simple_allocator.c b/experimental/webgpu/simple_allocator.c
index 79b0b5d..cf69d17 100644
--- a/experimental/webgpu/simple_allocator.c
+++ b/experimental/webgpu/simple_allocator.c
@@ -11,7 +11,6 @@
 #include "experimental/webgpu/buffer.h"
 #include "experimental/webgpu/webgpu_device.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 typedef struct iree_hal_webgpu_simple_allocator_t {
   iree_hal_resource_t resource;
diff --git a/experimental/webgpu/staging_buffer.c b/experimental/webgpu/staging_buffer.c
index f1e7b5d..36e5582 100644
--- a/experimental/webgpu/staging_buffer.c
+++ b/experimental/webgpu/staging_buffer.c
@@ -10,7 +10,6 @@
 
 #include "experimental/webgpu/buffer.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 iree_status_t iree_hal_webgpu_staging_buffer_initialize(
     WGPUDevice device, const WGPULimits* limits,
diff --git a/experimental/webgpu/webgpu_device.c b/experimental/webgpu/webgpu_device.c
index 6a48f16..84d0d49 100644
--- a/experimental/webgpu/webgpu_device.c
+++ b/experimental/webgpu/webgpu_device.c
@@ -20,7 +20,6 @@
 #include "experimental/webgpu/simple_allocator.h"
 #include "experimental/webgpu/staging_buffer.h"
 #include "iree/base/internal/arena.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/utils/buffer_transfer.h"
 
 //===----------------------------------------------------------------------===//
diff --git a/runtime/bindings/python/CMakeLists.txt b/runtime/bindings/python/CMakeLists.txt
index 714aa53..1f8b5aa 100644
--- a/runtime/bindings/python/CMakeLists.txt
+++ b/runtime/bindings/python/CMakeLists.txt
@@ -49,7 +49,6 @@
   DEPS
     iree::base
     iree::base::internal::flags
-    iree::base::tracing
     iree::hal
     iree::hal::drivers
     iree::hal::utils::allocators
diff --git a/runtime/bindings/python/hal.cc b/runtime/bindings/python/hal.cc
index 6f51450..accae92 100644
--- a/runtime/bindings/python/hal.cc
+++ b/runtime/bindings/python/hal.cc
@@ -8,7 +8,6 @@
 
 #include "./vm.h"
 #include "iree/base/internal/path.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/utils/allocators.h"
 #include "iree/modules/hal/module.h"
@@ -84,7 +83,7 @@
 py::object HalAllocator::AllocateBufferCopy(
     int memory_type, int allowed_usage, py::object buffer,
     std::optional<iree_hal_element_types_t> element_type) {
-  IREE_TRACE_SCOPE0("HalAllocator::AllocateBufferCopy");
+  IREE_TRACE_SCOPE_NAMED("HalAllocator::AllocateBufferCopy");
   // Request a view of the buffer (use the raw python C API to avoid
   // some allocation and copying at the pybind level).
   Py_buffer py_view;
diff --git a/runtime/bindings/python/invoke.cc b/runtime/bindings/python/invoke.cc
index eb11c4d..c3b5df1 100644
--- a/runtime/bindings/python/invoke.cc
+++ b/runtime/bindings/python/invoke.cc
@@ -9,7 +9,6 @@
 #include "./hal.h"
 #include "./vm.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/module.h"
 #include "iree/vm/api.h"
@@ -163,22 +162,22 @@
                 abi_shape = std::move(abi_shape)](InvokeContext &c,
                                                   iree_vm_list_t *list,
                                                   py::handle py_value) {
-          IREE_TRACE_SCOPE0("ArgumentPacker::ReflectionNdarray");
+          IREE_TRACE_SCOPE_NAMED("ArgumentPacker::ReflectionNdarray");
           HalBufferView *bv = nullptr;
           py::object retained_bv;
           if (py::isinstance(py_value, device_array_type())) {
             // Short-circuit: If a DeviceArray is provided, assume it is
             // correct.
-            IREE_TRACE_SCOPE0("PackDeviceArray");
+            IREE_TRACE_SCOPE_NAMED("PackDeviceArray");
             bv = py::cast<HalBufferView *>(py_value.attr(kAttrBufferView));
           } else if (py::isinstance(py_value, hal_buffer_view_type())) {
             // Short-circuit: If a HalBufferView is provided directly.
-            IREE_TRACE_SCOPE0("PackBufferView");
+            IREE_TRACE_SCOPE_NAMED("PackBufferView");
             bv = py::cast<HalBufferView *>(py_value);
           } else {
             // Fall back to the array protocol to generate a host side
             // array and then convert that.
-            IREE_TRACE_SCOPE0("PackHostArray");
+            IREE_TRACE_SCOPE_NAMED("PackHostArray");
             py::object host_array;
             try {
               host_array = numpy_module().attr(kAsArray)(py_value, target_dtype,
@@ -380,7 +379,7 @@
  private:
   PackCallback GetGenericPackCallbackForNdarray() {
     return [this](InvokeContext &c, iree_vm_list_t *list, py::handle py_value) {
-      IREE_TRACE_SCOPE0("ArgumentPacker::GenericNdarray");
+      IREE_TRACE_SCOPE_NAMED("ArgumentPacker::GenericNdarray");
       py::object host_array;
       try {
         host_array = numpy_module().attr(kAsArray)(
@@ -550,7 +549,7 @@
  public:
   ArgumentPacker(InvokeStatics &statics, std::optional<py::list> arg_descs)
       : statics_(statics) {
-    IREE_TRACE_SCOPE0("ArgumentPacker::Init");
+    IREE_TRACE_SCOPE_NAMED("ArgumentPacker::Init");
     if (!arg_descs) {
       dynamic_dispatch_ = true;
     } else {
@@ -594,7 +593,7 @@
                      py::dict kw_args) {
     // Dynamic dispatch.
     if (dynamic_dispatch_) {
-      IREE_TRACE_SCOPE0("ArgumentPacker::PackDynamic");
+      IREE_TRACE_SCOPE_NAMED("ArgumentPacker::PackDynamic");
       if (!kw_args.empty()) {
         throw std::invalid_argument(
             "kwargs not supported for dynamic dispatch functions");
@@ -614,7 +613,7 @@
       }
       return arg_list;
     } else {
-      IREE_TRACE_SCOPE0("ArgumentPacker::PackReflection");
+      IREE_TRACE_SCOPE_NAMED("ArgumentPacker::PackReflection");
 
       // Reflection based dispatch.
       std::vector<py::handle> py_args(flat_arg_packers_.size());
diff --git a/runtime/bindings/python/vm.cc b/runtime/bindings/python/vm.cc
index 455bd3f..b72ecde 100644
--- a/runtime/bindings/python/vm.cc
+++ b/runtime/bindings/python/vm.cc
@@ -8,7 +8,6 @@
 
 #include "./status_utils.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 // TODO: We shouldn't need the HAL API but it is used for direct printing
 // summaries of HAL objects in lists. We should have a better way of doing this
 // dynamically vs hard depending on a type switch here.
@@ -57,7 +56,7 @@
 //------------------------------------------------------------------------------
 
 VmInstance VmInstance::Create() {
-  IREE_TRACE_SCOPE0("VmInstance::Create");
+  IREE_TRACE_SCOPE_NAMED("VmInstance::Create");
 
   iree_vm_instance_t* instance = NULL;
   auto status = iree_vm_instance_create(IREE_VM_TYPE_CAPACITY_DEFAULT,
@@ -79,7 +78,7 @@
 
 VmContext VmContext::Create(VmInstance* instance,
                             std::optional<std::vector<VmModule*>> modules) {
-  IREE_TRACE_SCOPE0("VmContext::Create");
+  IREE_TRACE_SCOPE_NAMED("VmContext::Create");
   iree_vm_context_t* context;
   if (!modules) {
     // Simple create with open allowed modules.
@@ -134,7 +133,7 @@
 VmModule VmModule::ResolveModuleDependency(VmInstance* instance,
                                            const std::string& name,
                                            uint32_t minimum_version) {
-  IREE_TRACE_SCOPE0("VmModule::ResolveModuleDependency");
+  IREE_TRACE_SCOPE_NAMED("VmModule::ResolveModuleDependency");
   iree_vm_module_t* module = nullptr;
 
   iree_vm_module_dependency_t dependency = {
@@ -153,7 +152,7 @@
 
 VmModule VmModule::FromFlatbufferBlob(VmInstance* instance,
                                       py::object flatbuffer_blob_object) {
-  IREE_TRACE_SCOPE0("VmModule::FromFlatbufferBlob");
+  IREE_TRACE_SCOPE_NAMED("VmModule::FromFlatbufferBlob");
   auto flatbuffer_blob = py::cast<py::buffer>(flatbuffer_blob_object);
   auto buffer_info = flatbuffer_blob.request();
   iree_vm_module_t* module = nullptr;
diff --git a/runtime/bindings/tflite/BUILD.bazel b/runtime/bindings/tflite/BUILD.bazel
index a6b5085..0c4fca6 100644
--- a/runtime/bindings/tflite/BUILD.bazel
+++ b/runtime/bindings/tflite/BUILD.bazel
@@ -41,8 +41,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:synchronization",
         "//runtime/src/iree/hal",
diff --git a/runtime/bindings/tflite/CMakeLists.txt b/runtime/bindings/tflite/CMakeLists.txt
index 273255d..e87fc26 100644
--- a/runtime/bindings/tflite/CMakeLists.txt
+++ b/runtime/bindings/tflite/CMakeLists.txt
@@ -30,10 +30,8 @@
     "tensor.h"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::synchronization
-    iree::base::tracing
     iree::hal
     iree::hal::drivers
     iree::modules::hal
diff --git a/runtime/bindings/tflite/interpreter.c b/runtime/bindings/tflite/interpreter.c
index b7c7f53..29b1b69 100644
--- a/runtime/bindings/tflite/interpreter.c
+++ b/runtime/bindings/tflite/interpreter.c
@@ -7,7 +7,6 @@
 #include "runtime/bindings/tflite/interpreter.h"
 
 #include "iree/base/internal/call_once.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/init.h"
 #include "iree/modules/hal/module.h"
 #include "runtime/bindings/tflite/model.h"
diff --git a/runtime/bindings/tflite/model.c b/runtime/bindings/tflite/model.c
index a3becd7..7373073 100644
--- a/runtime/bindings/tflite/model.c
+++ b/runtime/bindings/tflite/model.c
@@ -9,7 +9,6 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
 #include "iree/modules/hal/module.h"
 #include "iree/vm/bytecode/module.h"
 
diff --git a/runtime/bindings/tflite/options.c b/runtime/bindings/tflite/options.c
index 1061cbf..0cd4edb 100644
--- a/runtime/bindings/tflite/options.c
+++ b/runtime/bindings/tflite/options.c
@@ -6,7 +6,6 @@
 
 #include "runtime/bindings/tflite/options.h"
 
-#include "iree/base/tracing.h"
 #include "runtime/bindings/tflite/shim.h"
 
 void _TfLiteInterpreterOptionsSetDefaults(TfLiteInterpreterOptions* options) {
diff --git a/runtime/bindings/tflite/tensor.c b/runtime/bindings/tflite/tensor.c
index f7dbce0..d474d58 100644
--- a/runtime/bindings/tflite/tensor.c
+++ b/runtime/bindings/tflite/tensor.c
@@ -6,7 +6,6 @@
 
 #include "runtime/bindings/tflite/tensor.h"
 
-#include "iree/base/tracing.h"
 #include "runtime/bindings/tflite/shim.h"
 
 iree_status_t _TfLiteTensorParseNameAttr(TfLiteTensor* tensor,
diff --git a/runtime/src/iree/base/BUILD.bazel b/runtime/src/iree/base/BUILD.bazel
index fc515c0..d4eeb6c 100644
--- a/runtime/src/iree/base/BUILD.bazel
+++ b/runtime/src/iree/base/BUILD.bazel
@@ -46,7 +46,7 @@
     visibility = ["//visibility:public"],
     deps = [
         ":core_headers",
-        ":tracing",
+        "//runtime/src/iree/base/tracing:tracy",
     ],
 )
 
@@ -81,7 +81,6 @@
     ],
     deps = [
         ":base",
-        ":tracing",
         "//runtime/src/iree/base/internal:wait_handle",
         "//runtime/src/iree/testing:gtest",
     ],
@@ -121,6 +120,7 @@
 # Core headers (platform detection, compiler compat, etc)
 #===------------------------------------------------------------------------===#
 
+# NOTE: this cannot contain any sources as it is used by header-only targets.
 iree_runtime_cc_library(
     name = "core_headers",
     hdrs = [
@@ -128,14 +128,10 @@
         "attributes.h",
         "config.h",
         "target_platform.h",
+        "tracing.h",
     ],
 )
 
-iree_runtime_cc_library(
-    name = "target_platform",
-    hdrs = ["target_platform.h"],
-)
-
 #===------------------------------------------------------------------------===#
 # Internal IREE C++ wrappers and utilities
 #===------------------------------------------------------------------------===#
@@ -146,7 +142,6 @@
     hdrs = ["loop_sync.h"],
     deps = [
         ":base",
-        ":tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:wait_handle",
     ],
@@ -165,13 +160,3 @@
         "//runtime/src/iree/testing:gtest_main",
     ],
 )
-
-iree_runtime_cc_library(
-    name = "tracing",
-    srcs = ["tracing.cc"],
-    hdrs = ["tracing.h"],
-    deps = [
-        ":core_headers",
-        "@tracy_client//:runtime_impl",
-    ],
-)
diff --git a/runtime/src/iree/base/CMakeLists.txt b/runtime/src/iree/base/CMakeLists.txt
index 0a4231b..5378afd 100644
--- a/runtime/src/iree/base/CMakeLists.txt
+++ b/runtime/src/iree/base/CMakeLists.txt
@@ -34,7 +34,7 @@
     "wait_source.h"
   DEPS
     ::core_headers
-    ::tracing
+    iree::base::tracing::tracy
   PUBLIC
 )
 
@@ -46,6 +46,7 @@
     "attributes.h"
     "config.h"
     "target_platform.h"
+    "tracing.h"
   PUBLIC
 )
 
@@ -68,7 +69,6 @@
   DEPS
     ::base
     ::loop_test_hdrs
-    ::tracing
     iree::testing::gtest
     iree::testing::gtest_main
 )
@@ -80,7 +80,6 @@
     "loop_test.h"
   DEPS
     ::base
-    ::tracing
     iree::base::internal::wait_handle
     iree::testing::gtest
   TESTONLY
@@ -122,14 +121,6 @@
 
 iree_cc_library(
   NAME
-    target_platform
-  HDRS
-    "target_platform.h"
-  PUBLIC
-)
-
-iree_cc_library(
-  NAME
     loop_sync
   HDRS
     "loop_sync.h"
@@ -137,7 +128,6 @@
     "loop_sync.c"
   DEPS
     ::base
-    ::tracing
     iree::base::internal
     iree::base::internal::wait_handle
   PUBLIC
@@ -152,28 +142,10 @@
     ::base
     ::loop_sync
     ::loop_test_hdrs
-    ::tracing
     iree::testing::gtest
     iree::testing::gtest_main
 )
 
-# TODO(benvanik): evaluate if we want this as part of the API. Could restrict it
-# to excusively static linkage scenarios and note that it's unstable. It's just
-# really really useful and the only way for applications to interleave with our
-# tracing (today).
-iree_cc_library(
-  NAME
-    tracing
-  HDRS
-    "tracing.h"
-  SRCS
-    "tracing.cc"
-  DEPS
-    ::core_headers
-    tracy_client::runtime_impl
-  PUBLIC
-)
-
 if(EMSCRIPTEN)
   iree_cc_library(
     NAME
diff --git a/runtime/src/iree/base/api.h b/runtime/src/iree/base/api.h
index 2fcbbba..733c74e 100644
--- a/runtime/src/iree/base/api.h
+++ b/runtime/src/iree/base/api.h
@@ -90,6 +90,7 @@
 #include "iree/base/string_builder.h"  // IWYU pragma: export
 #include "iree/base/string_view.h"     // IWYU pragma: export
 #include "iree/base/time.h"            // IWYU pragma: export
+#include "iree/base/tracing.h"         // IWYU pragma: export
 #include "iree/base/wait_source.h"     // IWYU pragma: export
 
 #ifdef __cplusplus
diff --git a/runtime/src/iree/base/internal/BUILD.bazel b/runtime/src/iree/base/internal/BUILD.bazel
index 0659100..3418ffe 100644
--- a/runtime/src/iree/base/internal/BUILD.bazel
+++ b/runtime/src/iree/base/internal/BUILD.bazel
@@ -77,8 +77,6 @@
         ":internal",
         ":synchronization",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
     ],
 )
 
@@ -110,7 +108,6 @@
     deps = [
         "//runtime/src/iree/base",
         "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/schemas:cpu_data",
     ],
 )
@@ -129,8 +126,6 @@
         "//build_tools:default_linkopts",
         "//build_tools:dl",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
     ],
 )
 
@@ -140,8 +135,6 @@
     hdrs = ["file_io.h"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
     ],
 )
 
@@ -166,8 +159,6 @@
         ":file_io",
         ":internal",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:target_platform",
-        "//runtime/src/iree/base:tracing",
     ],
 )
 
@@ -285,7 +276,6 @@
         "//build_tools:default_linkopts",
         "//runtime/src/iree/base",
         "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
     ],
 )
 
@@ -330,7 +320,6 @@
         ":synchronization",
         "//runtime/src/iree/base",
         "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
     ],
 )
 
@@ -367,7 +356,6 @@
         ":wait_handle",
         "//runtime/src/iree/base",
         "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
     ],
 )
 
@@ -388,7 +376,6 @@
         "//build_tools:dl",
         "//runtime/src/iree/base",
         "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
     ],
 )
 
@@ -403,7 +390,6 @@
         ":synchronization",
         ":threading",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:target_platform",
         "//runtime/src/iree/testing:gtest",
         "//runtime/src/iree/testing:gtest_main",
     ],
diff --git a/runtime/src/iree/base/internal/CMakeLists.txt b/runtime/src/iree/base/internal/CMakeLists.txt
index a4ac4e3..72c447f 100644
--- a/runtime/src/iree/base/internal/CMakeLists.txt
+++ b/runtime/src/iree/base/internal/CMakeLists.txt
@@ -63,8 +63,6 @@
     ::internal
     ::synchronization
     iree::base
-    iree::base::core_headers
-    iree::base::tracing
   PUBLIC
 )
 
@@ -103,7 +101,6 @@
   DEPS
     iree::base
     iree::base::core_headers
-    iree::base::tracing
     iree::schemas::cpu_data
   PUBLIC
 )
@@ -122,8 +119,6 @@
     ::path
     ::synchronization
     iree::base
-    iree::base::core_headers
-    iree::base::tracing
   PUBLIC
 )
 
@@ -136,8 +131,6 @@
     "file_io.c"
   DEPS
     iree::base
-    iree::base::core_headers
-    iree::base::tracing
   PUBLIC
 )
 
@@ -167,8 +160,6 @@
     ::file_io
     ::internal
     iree::base
-    iree::base::target_platform
-    iree::base::tracing
   PUBLIC
 )
 
@@ -303,7 +294,6 @@
     ::internal
     iree::base
     iree::base::core_headers
-    iree::base::tracing
   PUBLIC
 )
 
@@ -351,7 +341,6 @@
     ::synchronization
     iree::base
     iree::base::core_headers
-    iree::base::tracing
   PUBLIC
 )
 
@@ -383,7 +372,6 @@
     ::wait_handle
     iree::base
     iree::base::core_headers
-    iree::base::tracing
   PUBLIC
 )
 
@@ -404,7 +392,6 @@
     ::synchronization
     iree::base
     iree::base::core_headers
-    iree::base::tracing
   PUBLIC
 )
 
@@ -419,7 +406,6 @@
     ::synchronization
     ::threading
     iree::base
-    iree::base::target_platform
     iree::testing::gtest
     iree::testing::gtest_main
 )
diff --git a/runtime/src/iree/base/internal/arena.c b/runtime/src/iree/base/internal/arena.c
index 69bff99..ba8f9e8 100644
--- a/runtime/src/iree/base/internal/arena.c
+++ b/runtime/src/iree/base/internal/arena.c
@@ -10,7 +10,6 @@
 #include <string.h>
 
 #include "iree/base/internal/debugging.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // iree_arena_block_pool_t
diff --git a/runtime/src/iree/base/internal/call_once.h b/runtime/src/iree/base/internal/call_once.h
index da411dd..7456ffd 100644
--- a/runtime/src/iree/base/internal/call_once.h
+++ b/runtime/src/iree/base/internal/call_once.h
@@ -10,7 +10,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/runtime/src/iree/base/internal/cpu.c b/runtime/src/iree/base/internal/cpu.c
index dd28ff3..c75b826 100644
--- a/runtime/src/iree/base/internal/cpu.c
+++ b/runtime/src/iree/base/internal/cpu.c
@@ -9,8 +9,6 @@
 
 #include "iree/base/internal/cpu.h"
 
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 #include "iree/schemas/cpu_data.h"
 
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/base/internal/dynamic_library_posix.c b/runtime/src/iree/base/internal/dynamic_library_posix.c
index 4581e14..8c080c2 100644
--- a/runtime/src/iree/base/internal/dynamic_library_posix.c
+++ b/runtime/src/iree/base/internal/dynamic_library_posix.c
@@ -12,8 +12,6 @@
 #include "iree/base/internal/call_once.h"
 #include "iree/base/internal/dynamic_library.h"
 #include "iree/base/internal/path.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 
 #if defined(IREE_PLATFORM_ANDROID) || defined(IREE_PLATFORM_APPLE) || \
     defined(IREE_PLATFORM_LINUX) || defined(IREE_PLATFORM_EMSCRIPTEN)
diff --git a/runtime/src/iree/base/internal/dynamic_library_win32.c b/runtime/src/iree/base/internal/dynamic_library_win32.c
index 56bd265..d123d63 100644
--- a/runtime/src/iree/base/internal/dynamic_library_win32.c
+++ b/runtime/src/iree/base/internal/dynamic_library_win32.c
@@ -12,8 +12,6 @@
 #include "iree/base/internal/call_once.h"
 #include "iree/base/internal/dynamic_library.h"
 #include "iree/base/internal/path.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 
 #if defined(IREE_PLATFORM_WINDOWS)
 
diff --git a/runtime/src/iree/base/internal/event_pool.c b/runtime/src/iree/base/internal/event_pool.c
index 2cc93d4..fde006b 100644
--- a/runtime/src/iree/base/internal/event_pool.c
+++ b/runtime/src/iree/base/internal/event_pool.c
@@ -11,7 +11,6 @@
 #include <string.h>
 
 #include "iree/base/internal/synchronization.h"
-#include "iree/base/tracing.h"
 
 struct iree_event_pool_t {
   // Allocator used to create the event pool.
diff --git a/runtime/src/iree/base/internal/file_io.c b/runtime/src/iree/base/internal/file_io.c
index 7bc5daf..a9974c1 100644
--- a/runtime/src/iree/base/internal/file_io.c
+++ b/runtime/src/iree/base/internal/file_io.c
@@ -6,17 +6,12 @@
 
 #include "iree/base/internal/file_io.h"
 
-#include "iree/base/config.h"
-
 #if IREE_FILE_IO_ENABLE
 
 #include <stdlib.h>
 #include <sys/stat.h>
 #include <sys/types.h>
 
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
-
 #if defined(IREE_PLATFORM_WINDOWS)
 #include <fcntl.h>
 #include <io.h>
diff --git a/runtime/src/iree/base/internal/flags.c b/runtime/src/iree/base/internal/flags.c
index ed35a5f..8fd062c 100644
--- a/runtime/src/iree/base/internal/flags.c
+++ b/runtime/src/iree/base/internal/flags.c
@@ -18,7 +18,6 @@
 #if IREE_FLAGS_ENABLE_CLI == 1
 
 #include "iree/base/internal/debugging.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // Flag manipulation utilities
diff --git a/runtime/src/iree/base/internal/flags.h b/runtime/src/iree/base/internal/flags.h
index 448d268..2826efd 100644
--- a/runtime/src/iree/base/internal/flags.h
+++ b/runtime/src/iree/base/internal/flags.h
@@ -12,7 +12,6 @@
 #include <stdio.h>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/runtime/src/iree/base/internal/fpu_state.c b/runtime/src/iree/base/internal/fpu_state.c
index f44af3b..6ec80b3 100644
--- a/runtime/src/iree/base/internal/fpu_state.c
+++ b/runtime/src/iree/base/internal/fpu_state.c
@@ -8,8 +8,6 @@
 
 #include <stdbool.h>
 
-#include "iree/base/target_platform.h"
-
 #if defined(IREE_ARCH_X86_32) || defined(IREE_ARCH_X86_64)
 #include <xmmintrin.h>
 #endif  // IREE_ARCH_X86_*
@@ -57,11 +55,11 @@
 #elif defined(IREE_ARCH_ARM_32)
 static uint64_t iree_fpu_load_state() {
   uint32_t fpscr;
-  __asm__ __volatile__("VMRS %[fpscr], fpscr" : [ fpscr ] "=r"(fpscr));
+  __asm__ __volatile__("VMRS %[fpscr], fpscr" : [fpscr] "=r"(fpscr));
   return (uint64_t)fpscr;
 }
 static void iree_fpu_store_state(uint64_t state) {
-  __asm__ __volatile__("VMSR fpscr, %[fpscr]" : : [ fpscr ] "r"(state));
+  __asm__ __volatile__("VMSR fpscr, %[fpscr]" : : [fpscr] "r"(state));
 }
 #elif defined(IREE_ARCH_ARM_64) && defined(IREE_COMPILER_MSVC)
 static uint64_t iree_fpu_load_state(void) {
@@ -73,11 +71,11 @@
 #elif defined(IREE_ARCH_ARM_64)
 static uint64_t iree_fpu_load_state(void) {
   uint64_t fpcr;
-  __asm__ __volatile__("MRS %[fpcr], fpcr" : [ fpcr ] "=r"(fpcr));
+  __asm__ __volatile__("MRS %[fpcr], fpcr" : [fpcr] "=r"(fpcr));
   return fpcr;
 }
 static void iree_fpu_store_state(uint64_t state) {
-  __asm__ __volatile__("MSR fpcr, %[fpcr]" : : [ fpcr ] "r"(state));
+  __asm__ __volatile__("MSR fpcr, %[fpcr]" : : [fpcr] "r"(state));
 }
 #elif defined(IREE_ARCH_X86_32) || defined(IREE_ARCH_X86_64)
 static uint64_t iree_fpu_load_state(void) { return (uint64_t)_mm_getcsr(); }
diff --git a/runtime/src/iree/base/internal/fpu_state.h b/runtime/src/iree/base/internal/fpu_state.h
index fc9a36c..eabb555 100644
--- a/runtime/src/iree/base/internal/fpu_state.h
+++ b/runtime/src/iree/base/internal/fpu_state.h
@@ -11,7 +11,6 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/runtime/src/iree/base/internal/math.h b/runtime/src/iree/base/internal/math.h
index 4298ea3..3ff0ae6 100644
--- a/runtime/src/iree/base/internal/math.h
+++ b/runtime/src/iree/base/internal/math.h
@@ -12,9 +12,7 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "iree/base/alignment.h"
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 
 // Haswell or later, gcc compile time option: -mlzcnt
 #if defined(__LZCNT__)
diff --git a/runtime/src/iree/base/internal/path.c b/runtime/src/iree/base/internal/path.c
index c3e7662..bc1b305 100644
--- a/runtime/src/iree/base/internal/path.c
+++ b/runtime/src/iree/base/internal/path.c
@@ -9,8 +9,6 @@
 #include <stddef.h>
 #include <string.h>
 
-#include "iree/base/target_platform.h"
-
 static iree_status_t iree_string_view_dup(iree_string_view_t value,
                                           iree_allocator_t allocator,
                                           char** out_buffer) {
diff --git a/runtime/src/iree/base/internal/path_test.cc b/runtime/src/iree/base/internal/path_test.cc
index 39401e6..a0c1d47 100644
--- a/runtime/src/iree/base/internal/path_test.cc
+++ b/runtime/src/iree/base/internal/path_test.cc
@@ -8,7 +8,6 @@
 
 #include <string>
 
-#include "iree/base/target_platform.h"
 #include "iree/testing/gtest.h"
 
 static bool operator==(const iree_string_pair_t& lhs,
diff --git a/runtime/src/iree/base/internal/prng.h b/runtime/src/iree/base/internal/prng.h
index 8a97df8..4a2bd1c 100644
--- a/runtime/src/iree/base/internal/prng.h
+++ b/runtime/src/iree/base/internal/prng.h
@@ -22,7 +22,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/target_platform.h"
 
 #if defined(IREE_ARCH_ARM_64)
 #include <arm_neon.h>
diff --git a/runtime/src/iree/base/internal/synchronization.h b/runtime/src/iree/base/internal/synchronization.h
index b6ec44b..0db86d2 100644
--- a/runtime/src/iree/base/internal/synchronization.h
+++ b/runtime/src/iree/base/internal/synchronization.h
@@ -17,8 +17,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/atomics.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 
 // NOTE: clang cannot support thread annotations in C code due to some
 // representational bugs... which means that we can't use it here. Boo.
diff --git a/runtime/src/iree/base/internal/threading.h b/runtime/src/iree/base/internal/threading.h
index bd3811c..2eaa389 100644
--- a/runtime/src/iree/base/internal/threading.h
+++ b/runtime/src/iree/base/internal/threading.h
@@ -12,7 +12,6 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/runtime/src/iree/base/internal/threading_darwin.c b/runtime/src/iree/base/internal/threading_darwin.c
index cc1eae1..396bda0 100644
--- a/runtime/src/iree/base/internal/threading_darwin.c
+++ b/runtime/src/iree/base/internal/threading_darwin.c
@@ -18,7 +18,6 @@
 
 #include "iree/base/internal/atomics.h"
 #include "iree/base/internal/threading.h"
-#include "iree/base/tracing.h"
 
 // Useful to see how pthreads is implemented on (old) darwin:
 // https://opensource.apple.com/source/Libc/Libc-825.40.1/pthreads/pthread.c.auto.html
@@ -203,7 +202,7 @@
       pthread_override_qos_class_start_np(thread->handle, qos_class, 0);
 
   IREE_TRACE_ZONE_END(z0);
-  return (iree_thread_override_t*)override;
+  return (iree_thread_override_t*) override;
 }
 
 void iree_thread_override_end(iree_thread_override_t* override) {
@@ -213,7 +212,7 @@
 
   IREE_TRACE_ZONE_BEGIN(z0);
 
-  pthread_override_qos_class_end_np((pthread_override_t)override);
+  pthread_override_qos_class_end_np((pthread_override_t) override);
 
   IREE_TRACE_ZONE_END(z0);
 }
diff --git a/runtime/src/iree/base/internal/threading_impl.h b/runtime/src/iree/base/internal/threading_impl.h
index 0fdbbd6..3e6f23b 100644
--- a/runtime/src/iree/base/internal/threading_impl.h
+++ b/runtime/src/iree/base/internal/threading_impl.h
@@ -27,7 +27,6 @@
 #include "iree/base/api.h"
 #include "iree/base/internal/synchronization.h"
 #include "iree/base/internal/threading.h"
-#include "iree/base/target_platform.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/runtime/src/iree/base/internal/threading_pthreads.c b/runtime/src/iree/base/internal/threading_pthreads.c
index 7772d46..5d02e23 100644
--- a/runtime/src/iree/base/internal/threading_pthreads.c
+++ b/runtime/src/iree/base/internal/threading_pthreads.c
@@ -24,7 +24,6 @@
 #include "iree/base/internal/call_once.h"
 #include "iree/base/internal/synchronization.h"
 #include "iree/base/internal/threading.h"
-#include "iree/base/tracing.h"
 
 #if defined(IREE_PLATFORM_EMSCRIPTEN)
 #include <emscripten/threading.h>
diff --git a/runtime/src/iree/base/internal/threading_win32.c b/runtime/src/iree/base/internal/threading_win32.c
index 19220e5..160bee0 100644
--- a/runtime/src/iree/base/internal/threading_win32.c
+++ b/runtime/src/iree/base/internal/threading_win32.c
@@ -15,11 +15,8 @@
 #include <stdlib.h>
 #include <string.h>
 
-#include "iree/base/api.h"
 #include "iree/base/internal/atomics.h"
 #include "iree/base/internal/threading.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 
 // Great documentation:
 // https://www.microsoftpressstore.com/articles/article.aspx?p=2233328
diff --git a/runtime/src/iree/base/internal/wait_handle.h b/runtime/src/iree/base/internal/wait_handle.h
index 4e2c52b..0634e34 100644
--- a/runtime/src/iree/base/internal/wait_handle.h
+++ b/runtime/src/iree/base/internal/wait_handle.h
@@ -11,7 +11,6 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 
 #ifdef __cplusplus
 extern "C" {
diff --git a/runtime/src/iree/base/internal/wait_handle_emscripten.c b/runtime/src/iree/base/internal/wait_handle_emscripten.c
index bd26bf2..7a7c1ec 100644
--- a/runtime/src/iree/base/internal/wait_handle_emscripten.c
+++ b/runtime/src/iree/base/internal/wait_handle_emscripten.c
@@ -10,7 +10,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/wait_handle.h"
-#include "iree/base/target_platform.h"
 
 // This implementation for the web platform via Emscripten uses JavaScript
 // Promise objects for asynchronous waiting:
diff --git a/runtime/src/iree/base/internal/wait_handle_epoll.c b/runtime/src/iree/base/internal/wait_handle_epoll.c
index 0bd08d6..67bca57 100644
--- a/runtime/src/iree/base/internal/wait_handle_epoll.c
+++ b/runtime/src/iree/base/internal/wait_handle_epoll.c
@@ -10,7 +10,6 @@
 #if IREE_WAIT_API == IREE_WAIT_API_EPOLL
 
 #include "iree/base/internal/wait_handle_posix.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // iree_wait_set_t
diff --git a/runtime/src/iree/base/internal/wait_handle_inproc.c b/runtime/src/iree/base/internal/wait_handle_inproc.c
index eff64cb..317957a 100644
--- a/runtime/src/iree/base/internal/wait_handle_inproc.c
+++ b/runtime/src/iree/base/internal/wait_handle_inproc.c
@@ -16,7 +16,6 @@
 #include "iree/base/api.h"
 #include "iree/base/internal/synchronization.h"
 #include "iree/base/internal/wait_handle.h"
-#include "iree/base/target_platform.h"
 
 // This implementation uses iree_notification_t - backed by a futex in most
 // cases - to simulate system wait handles. When using a single handle such as
diff --git a/runtime/src/iree/base/internal/wait_handle_kqueue.c b/runtime/src/iree/base/internal/wait_handle_kqueue.c
index 826ce51..a4a67fb 100644
--- a/runtime/src/iree/base/internal/wait_handle_kqueue.c
+++ b/runtime/src/iree/base/internal/wait_handle_kqueue.c
@@ -10,7 +10,6 @@
 #if IREE_WAIT_API == IREE_WAIT_API_KQUEUE
 
 #include "iree/base/internal/wait_handle_posix.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // iree_wait_set_t
diff --git a/runtime/src/iree/base/internal/wait_handle_null.c b/runtime/src/iree/base/internal/wait_handle_null.c
index ecb5b4a..a2d250f 100644
--- a/runtime/src/iree/base/internal/wait_handle_null.c
+++ b/runtime/src/iree/base/internal/wait_handle_null.c
@@ -15,7 +15,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/wait_handle.h"
-#include "iree/base/target_platform.h"
 
 #if IREE_WAIT_API == IREE_WAIT_API_NULL
 
diff --git a/runtime/src/iree/base/internal/wait_handle_poll.c b/runtime/src/iree/base/internal/wait_handle_poll.c
index 5eba4e7..2ff7cfc 100644
--- a/runtime/src/iree/base/internal/wait_handle_poll.c
+++ b/runtime/src/iree/base/internal/wait_handle_poll.c
@@ -14,7 +14,6 @@
 #include <time.h>
 
 #include "iree/base/internal/wait_handle_posix.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // Platform utilities
diff --git a/runtime/src/iree/base/internal/wait_handle_posix.c b/runtime/src/iree/base/internal/wait_handle_posix.c
index fcec4b8..a50e9a1 100644
--- a/runtime/src/iree/base/internal/wait_handle_posix.c
+++ b/runtime/src/iree/base/internal/wait_handle_posix.c
@@ -6,8 +6,6 @@
 
 #include "iree/base/internal/wait_handle_posix.h"
 
-#include "iree/base/tracing.h"
-
 #if defined(IREE_WAIT_API_POSIX_LIKE)
 
 #include <errno.h>
diff --git a/runtime/src/iree/base/internal/wait_handle_win32.c b/runtime/src/iree/base/internal/wait_handle_win32.c
index 9822f8a..b24b455 100644
--- a/runtime/src/iree/base/internal/wait_handle_win32.c
+++ b/runtime/src/iree/base/internal/wait_handle_win32.c
@@ -13,14 +13,10 @@
 #include <stdint.h>
 #include <string.h>
 
-#include "iree/base/api.h"
 #include "iree/base/internal/wait_handle.h"
-#include "iree/base/target_platform.h"
 
 #if IREE_WAIT_API == IREE_WAIT_API_WIN32
 
-#include "iree/base/tracing.h"
-
 //===----------------------------------------------------------------------===//
 // Platform utilities
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/base/loop_sync.c b/runtime/src/iree/base/loop_sync.c
index 8de715d..824e112 100644
--- a/runtime/src/iree/base/loop_sync.c
+++ b/runtime/src/iree/base/loop_sync.c
@@ -8,7 +8,6 @@
 
 #include "iree/base/internal/math.h"
 #include "iree/base/internal/wait_handle.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // iree_loop_sync_t utilities
diff --git a/runtime/src/iree/base/loop_test.h b/runtime/src/iree/base/loop_test.h
index 66b439a..480b9a7 100644
--- a/runtime/src/iree/base/loop_test.h
+++ b/runtime/src/iree/base/loop_test.h
@@ -9,7 +9,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/wait_handle.h"
-#include "iree/base/tracing.h"
 #include "iree/testing/gtest.h"
 #include "iree/testing/status_matchers.h"
 
diff --git a/runtime/src/iree/base/tracing.h b/runtime/src/iree/base/tracing.h
index b65849a..85eb920 100644
--- a/runtime/src/iree/base/tracing.h
+++ b/runtime/src/iree/base/tracing.h
@@ -134,157 +134,6 @@
 #endif  // !IREE_TRACING_FEATURES
 
 //===----------------------------------------------------------------------===//
-// Tracy configuration
-//===----------------------------------------------------------------------===//
-// NOTE: order matters here as we are including files that require/define.
-
-// Enable Tracy only when we are using tracing features.
-#if IREE_TRACING_FEATURES != 0
-#define TRACY_ENABLE 1
-#endif  // IREE_TRACING_FEATURES
-
-// Disable zone nesting verification in release builds.
-// The verification makes it easy to find unbalanced zones but doubles the cost
-// (at least) of each zone recorded. Run in debug builds to verify new
-// instrumentation is correct before capturing traces in release builds.
-#if defined(NDEBUG)
-#define TRACY_NO_VERIFY 1
-#endif  // NDEBUG
-
-// Force callstack capture on all zones (even those without the C suffix).
-#if (IREE_TRACING_FEATURES &                             \
-     IREE_TRACING_FEATURE_INSTRUMENTATION_CALLSTACKS) || \
-    (IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_ALLOCATION_CALLSTACKS)
-#define TRACY_CALLSTACK 1
-#endif  // IREE_TRACING_FEATURE_INSTRUMENTATION_CALLSTACKS
-
-// Guard tracy use of DbgHelp on Windows via IREEDbgHelp* functions.
-// All our own usage of DbgHelp must be guarded with the same lock.
-#define TRACY_DBGHELP_LOCK IREEDbgHelp
-
-// Disable frame image capture to avoid the DXT compression code and the frame
-// capture worker thread.
-#define TRACY_NO_FRAME_IMAGE 1
-
-// We don't care about vsync events as they can pollute traces and don't have
-// much meaning in our workloads. If integrators still want them we can expose
-// this as a tracing feature flag.
-#define TRACY_NO_VSYNC_CAPTURE 1
-
-// Enable fibers support.
-// The manual warns that this adds overheads but it's the only way we can
-// support fiber migration across OS threads.
-#if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_FIBERS
-#define TRACY_FIBERS 1
-#endif  // IREE_TRACING_FEATURE_FIBERS
-
-// Flush the settings we have so far; settings after this point will be
-// overriding values set by Tracy itself.
-#if defined(TRACY_ENABLE)
-#include "tracy/TracyC.h"  // IWYU pragma: export
-#endif
-
-// Disable callstack capture if our depth is 0; this allows us to avoid any
-// expensive capture (and all the associated dependencies) if we aren't going to
-// use it. Note that this means that unless code is instrumented we won't be
-// able to tell what's happening in the Tracy UI.
-#if IREE_TRACING_MAX_CALLSTACK_DEPTH == 0
-#undef TRACY_CALLSTACK
-#endif  // IREE_TRACING_MAX_CALLSTACK_DEPTH
-
-//===----------------------------------------------------------------------===//
-// C API used for Tracy control
-//===----------------------------------------------------------------------===//
-// These functions are implementation details and should not be called directly.
-// Always use the macros (or C++ RAII types).
-
-// Local zone ID used for the C IREE_TRACE_ZONE_* macros.
-typedef uint32_t iree_zone_id_t;
-
-#ifdef __cplusplus
-extern "C" {
-#endif  // __cplusplus
-
-#if IREE_TRACING_FEATURES
-
-typedef struct ___tracy_source_location_data iree_tracing_location_t;
-
-#ifdef __cplusplus
-#define iree_tracing_make_zone_ctx(zone_id) \
-  TracyCZoneCtx { zone_id, 1 }
-#else
-#define iree_tracing_make_zone_ctx(zone_id) \
-  (TracyCZoneCtx) { zone_id, 1 }
-#endif  // __cplusplus
-
-int64_t iree_tracing_time(void);
-int64_t iree_tracing_frequency(void);
-
-IREE_MUST_USE_RESULT iree_zone_id_t
-iree_tracing_zone_begin_impl(const iree_tracing_location_t* src_loc,
-                             const char* name, size_t name_length);
-IREE_MUST_USE_RESULT iree_zone_id_t iree_tracing_zone_begin_external_impl(
-    const char* file_name, size_t file_name_length, uint32_t line,
-    const char* function_name, size_t function_name_length, const char* name,
-    size_t name_length);
-void iree_tracing_zone_end(iree_zone_id_t zone_id);
-
-// Matches GpuContextType.
-// TODO(benvanik): upstream a few more enum values for CUDA/Metal/etc.
-// The only real behavior that changes in tracy is around whether multi-threaded
-// recording is assumed and IREE_TRACING_GPU_CONTEXT_TYPE_VULKAN is a safe
-// default choice - the context name provided during creation should be
-// descriptive enough for the user.
-typedef enum iree_tracing_gpu_context_type_e {
-  IREE_TRACING_GPU_CONTEXT_TYPE_INVALID = 0,
-  IREE_TRACING_GPU_CONTEXT_TYPE_OPENGL,
-  IREE_TRACING_GPU_CONTEXT_TYPE_VULKAN,
-  IREE_TRACING_GPU_CONTEXT_TYPE_OPENCL,
-  IREE_TRACING_GPU_CONTEXT_TYPE_DIRECT3D12,
-  IREE_TRACING_GPU_CONTEXT_TYPE_DIRECT3D11,
-} iree_tracing_gpu_context_type_t;
-
-uint8_t iree_tracing_gpu_context_allocate(iree_tracing_gpu_context_type_t type,
-                                          const char* name, size_t name_length,
-                                          bool is_calibrated,
-                                          uint64_t cpu_timestamp,
-                                          uint64_t gpu_timestamp,
-                                          float timestamp_period);
-void iree_tracing_gpu_context_calibrate(uint8_t context_id, int64_t cpu_delta,
-                                        int64_t cpu_timestamp,
-                                        int64_t gpu_timestamp);
-void iree_tracing_gpu_zone_begin(uint8_t context_id, uint16_t query_id,
-                                 const iree_tracing_location_t* src_loc);
-void iree_tracing_gpu_zone_begin_external(
-    uint8_t context_id, uint16_t query_id, const char* file_name,
-    size_t file_name_length, uint32_t line, const char* function_name,
-    size_t function_name_length, const char* name, size_t name_length);
-void iree_tracing_gpu_zone_end(uint8_t context_id, uint16_t query_id);
-void iree_tracing_gpu_zone_notify(uint8_t context_id, uint16_t query_id,
-                                  int64_t gpu_timestamp);
-
-void iree_tracing_set_plot_type_impl(const char* name_literal,
-                                     uint8_t plot_type, bool step, bool fill,
-                                     uint32_t color);
-void iree_tracing_plot_value_i64_impl(const char* name_literal, int64_t value);
-void iree_tracing_plot_value_f32_impl(const char* name_literal, float value);
-void iree_tracing_plot_value_f64_impl(const char* name_literal, double value);
-
-void iree_tracing_mutex_announce(const iree_tracing_location_t* src_loc,
-                                 uint32_t* out_lock_id);
-void iree_tracing_mutex_terminate(uint32_t lock_id);
-void iree_tracing_mutex_before_lock(uint32_t lock_id);
-void iree_tracing_mutex_after_lock(uint32_t lock_id);
-void iree_tracing_mutex_after_try_lock(uint32_t lock_id, bool was_acquired);
-void iree_tracing_mutex_after_unlock(uint32_t lock_id);
-
-#endif  // IREE_TRACING_FEATURES
-
-#ifdef __cplusplus
-}  // extern "C"
-#endif  // __cplusplus
-
-//===----------------------------------------------------------------------===//
 // Instrumentation macros (C)
 //===----------------------------------------------------------------------===//
 
@@ -307,152 +156,7 @@
   IREE_TRACING_MESSAGE_LEVEL_DEBUG = 0x00FF00u,
 };
 
-#if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_INSTRUMENTATION
-
-// Sets an application-specific payload that will be stored in the trace.
-// This can be used to fingerprint traces to particular versions and denote
-// compilation options or configuration. The given string value will be copied.
-#define IREE_TRACE_SET_APP_INFO(value, value_length) \
-  ___tracy_emit_message_appinfo(value, value_length)
-
-// Sets the current thread name to the given string value.
-// This will only set the thread name as it appears in the tracing backend and
-// not set the OS thread name as it would appear in a debugger.
-// The C-string |name| will be copied and does not need to be a literal.
-#define IREE_TRACE_SET_THREAD_NAME(name) ___tracy_set_thread_name(name)
-
-// Evalutes the expression code only if tracing is enabled.
-//
-// Example:
-//  struct {
-//    IREE_TRACE(uint32_t trace_only_value);
-//  } my_object;
-//  IREE_TRACE(my_object.trace_only_value = 5);
-#define IREE_TRACE(expr) expr
-
-#if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_FIBERS
-// Enters a fiber context.
-// |fiber| must be unique and remain live for the process lifetime.
-#define IREE_TRACE_FIBER_ENTER(fiber) ___tracy_fiber_enter((const char*)fiber)
-// Exits a fiber context.
-#define IREE_TRACE_FIBER_LEAVE() ___tracy_fiber_leave()
-#else
-#define IREE_TRACE_FIBER_ENTER(fiber)
-#define IREE_TRACE_FIBER_LEAVE()
-#endif  // IREE_TRACING_FEATURE_FIBERS
-
-// Begins a new zone with the parent function name.
-#define IREE_TRACE_ZONE_BEGIN(zone_id) \
-  IREE_TRACE_ZONE_BEGIN_NAMED(zone_id, NULL)
-
-// Begins a new zone with the given compile-time literal name.
-#define IREE_TRACE_ZONE_BEGIN_NAMED(zone_id, name_literal)                    \
-  static const iree_tracing_location_t TracyConcat(                           \
-      __tracy_source_location, __LINE__) = {name_literal, __FUNCTION__,       \
-                                            __FILE__, (uint32_t)__LINE__, 0}; \
-  iree_zone_id_t zone_id = iree_tracing_zone_begin_impl(                      \
-      &TracyConcat(__tracy_source_location, __LINE__), NULL, 0);
-
-// Begins a new zone with the given runtime dynamic string name.
-// The |value| string will be copied into the trace buffer.
-#define IREE_TRACE_ZONE_BEGIN_NAMED_DYNAMIC(zone_id, name, name_length) \
-  static const iree_tracing_location_t TracyConcat(                     \
-      __tracy_source_location, __LINE__) = {0, __FUNCTION__, __FILE__,  \
-                                            (uint32_t)__LINE__, 0};     \
-  iree_zone_id_t zone_id = iree_tracing_zone_begin_impl(                \
-      &TracyConcat(__tracy_source_location, __LINE__), (name), (name_length));
-
-// Begins an externally defined zone with a dynamic source location.
-// The |file_name|, |function_name|, and optional |name| strings will be copied
-// into the trace buffer and do not need to persist.
-#define IREE_TRACE_ZONE_BEGIN_EXTERNAL(                                       \
-    zone_id, file_name, file_name_length, line, function_name,                \
-    function_name_length, name, name_length)                                  \
-  iree_zone_id_t zone_id = iree_tracing_zone_begin_external_impl(             \
-      file_name, file_name_length, line, function_name, function_name_length, \
-      name, name_length)
-
-// Sets the dynamic color of the zone to an XXBBGGRR value.
-#define IREE_TRACE_ZONE_SET_COLOR(zone_id, color_xbgr) \
-  ___tracy_emit_zone_color(iree_tracing_make_zone_ctx(zone_id), color_xbgr);
-
-// Appends an integer value to the parent zone. May be called multiple times.
-#define IREE_TRACE_ZONE_APPEND_VALUE(zone_id, value) \
-  ___tracy_emit_zone_value(iree_tracing_make_zone_ctx(zone_id), value);
-
-// Appends a string value to the parent zone. May be called multiple times.
-// The |value| string will be copied into the trace buffer.
-#define IREE_TRACE_ZONE_APPEND_TEXT(...)                                  \
-  IREE_TRACE_IMPL_GET_VARIADIC_((__VA_ARGS__,                             \
-                                 IREE_TRACE_ZONE_APPEND_TEXT_STRING_VIEW, \
-                                 IREE_TRACE_ZONE_APPEND_TEXT_CSTRING))    \
-  (__VA_ARGS__)
-#define IREE_TRACE_ZONE_APPEND_TEXT_CSTRING(zone_id, value) \
-  IREE_TRACE_ZONE_APPEND_TEXT_STRING_VIEW(zone_id, value, strlen(value))
-#define IREE_TRACE_ZONE_APPEND_TEXT_STRING_VIEW(zone_id, value, value_length) \
-  ___tracy_emit_zone_text(iree_tracing_make_zone_ctx(zone_id), value,         \
-                          value_length)
-
-// Ends the current zone. Must be passed the |zone_id| from the _BEGIN.
-#define IREE_TRACE_ZONE_END(zone_id) iree_tracing_zone_end(zone_id)
-
-// Ends the current zone before returning on a failure.
-// Sugar for IREE_TRACE_ZONE_END+IREE_RETURN_IF_ERROR.
-#define IREE_RETURN_AND_END_ZONE_IF_ERROR(zone_id, ...) \
-  IREE_RETURN_AND_EVAL_IF_ERROR(IREE_TRACE_ZONE_END(zone_id), __VA_ARGS__)
-
-// Configures the named plot with an IREE_TRACING_PLOT_TYPE_* representation.
-#define IREE_TRACE_SET_PLOT_TYPE(name_literal, plot_type, step, fill, color) \
-  iree_tracing_set_plot_type_impl(name_literal, plot_type, step, fill, color)
-// Plots a value in the named plot group as an integer.
-#define IREE_TRACE_PLOT_VALUE_I64(name_literal, value) \
-  iree_tracing_plot_value_i64_impl(name_literal, value)
-// Plots a value in the named plot group as a single-precision float.
-#define IREE_TRACE_PLOT_VALUE_F32(name_literal, value) \
-  iree_tracing_plot_value_f32_impl(name_literal, value)
-// Plots a value in the named plot group as a double-precision float.
-#define IREE_TRACE_PLOT_VALUE_F64(name_literal, value) \
-  iree_tracing_plot_value_f64_impl(name_literal, value)
-
-// Demarcates an advancement of the top-level unnamed frame group.
-#define IREE_TRACE_FRAME_MARK() ___tracy_emit_frame_mark(NULL)
-// Demarcates an advancement of a named frame group.
-#define IREE_TRACE_FRAME_MARK_NAMED(name_literal) \
-  ___tracy_emit_frame_mark(name_literal)
-// Begins a discontinuous frame in a named frame group.
-// Must be properly matched with a IREE_TRACE_FRAME_MARK_NAMED_END.
-#define IREE_TRACE_FRAME_MARK_BEGIN_NAMED(name_literal) \
-  ___tracy_emit_frame_mark_start(name_literal)
-// Ends a discontinuous frame in a named frame group.
-#define IREE_TRACE_FRAME_MARK_END_NAMED(name_literal) \
-  ___tracy_emit_frame_mark_end(name_literal)
-
-// Logs a message at the given logging level to the trace.
-// The message text must be a compile-time string literal.
-#define IREE_TRACE_MESSAGE(level, value_literal) \
-  ___tracy_emit_messageLC(value_literal, IREE_TRACING_MESSAGE_LEVEL_##level, 0)
-// Logs a message with the given color to the trace.
-// Standard colors are defined as IREE_TRACING_MESSAGE_LEVEL_* values.
-// The message text must be a compile-time string literal.
-#define IREE_TRACE_MESSAGE_COLORED(color, value_literal) \
-  ___tracy_emit_messageLC(value_literal, color, 0)
-// Logs a dynamically-allocated message at the given logging level to the trace.
-// The string |value| will be copied into the trace buffer.
-#define IREE_TRACE_MESSAGE_DYNAMIC(level, value, value_length) \
-  ___tracy_emit_messageC(value, value_length,                  \
-                         IREE_TRACING_MESSAGE_LEVEL_##level, 0)
-// Logs a dynamically-allocated message with the given color to the trace.
-// Standard colors are defined as IREE_TRACING_MESSAGE_LEVEL_* values.
-// The string |value| will be copied into the trace buffer.
-#define IREE_TRACE_MESSAGE_DYNAMIC_COLORED(color, value, value_length) \
-  ___tracy_emit_messageC(value, value_length, color, 0)
-
-// Utilities:
-#define IREE_TRACE_IMPL_GET_VARIADIC_HELPER_(_1, _2, _3, NAME, ...) NAME
-#define IREE_TRACE_IMPL_GET_VARIADIC_(args) \
-  IREE_TRACE_IMPL_GET_VARIADIC_HELPER_ args
-
-#else
+#if !(IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_INSTRUMENTATION)
 #define IREE_TRACE_SET_APP_INFO(value, value_length)
 #define IREE_TRACE_SET_THREAD_NAME(name)
 #define IREE_TRACE(expr)
@@ -500,34 +204,7 @@
 //
 // NOTE: realloc must be recorded as a FREE/ALLOC pair.
 
-#if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_ALLOCATION_TRACKING
-
-#if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_ALLOCATION_CALLSTACKS
-
-#define IREE_TRACE_ALLOC(ptr, size)               \
-  ___tracy_emit_memory_alloc_callstack(ptr, size, \
-                                       IREE_TRACING_MAX_CALLSTACK_DEPTH, 0)
-#define IREE_TRACE_FREE(ptr) \
-  ___tracy_emit_memory_free_callstack(ptr, IREE_TRACING_MAX_CALLSTACK_DEPTH, 0)
-#define IREE_TRACE_ALLOC_NAMED(name, ptr, size) \
-  ___tracy_emit_memory_alloc_callstack_named(   \
-      ptr, size, IREE_TRACING_MAX_CALLSTACK_DEPTH, 0, name)
-#define IREE_TRACE_FREE_NAMED(name, ptr)     \
-  ___tracy_emit_memory_free_callstack_named( \
-      ptr, IREE_TRACING_MAX_CALLSTACK_DEPTH, 0, name)
-
-#else
-
-#define IREE_TRACE_ALLOC(ptr, size) ___tracy_emit_memory_alloc(ptr, size, 0)
-#define IREE_TRACE_FREE(ptr) ___tracy_emit_memory_free(ptr, 0)
-#define IREE_TRACE_ALLOC_NAMED(name, ptr, size) \
-  ___tracy_emit_memory_alloc_named(ptr, size, 0, name)
-#define IREE_TRACE_FREE_NAMED(name, ptr) \
-  ___tracy_emit_memory_free_named(ptr, 0, name)
-
-#endif  // IREE_TRACING_FEATURE_ALLOCATION_CALLSTACKS
-
-#else
+#if !(IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_ALLOCATION_TRACKING)
 #define IREE_TRACE_ALLOC(ptr, size)
 #define IREE_TRACE_FREE(ptr)
 #define IREE_TRACE_ALLOC_NAMED(name, ptr, size)
@@ -540,30 +217,17 @@
 
 #ifdef __cplusplus
 
-#if defined(TRACY_ENABLE)
-#include "tracy/Tracy.hpp"  // IWYU pragma: export
-#endif
-
-#if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_INSTRUMENTATION
-
-// TODO(#1886): update these to tracy and drop the 0.
-#define IREE_TRACE_SCOPE() ZoneScoped
-#define IREE_TRACE_SCOPE_DYNAMIC(name_cstr) \
-  ZoneTransientN(___tracy_scoped_zone, name_cstr, true)
-#define IREE_TRACE_SCOPE0(name_literal) ZoneScopedN(name_literal)
-#define IREE_TRACE_EVENT
-#define IREE_TRACE_EVENT0
-
-#else
+#if !(IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_INSTRUMENTATION)
 #define IREE_TRACE_SCOPE()
-#define IREE_TRACE_SCOPE_DYNAMIC(name_string_view)
-#define IREE_TRACE_SCOPE0(name_literal)
-#define IREE_TRACE_EVENT(void)
-#define IREE_TRACE_EVENT0
+#define IREE_TRACE_SCOPE_NAMED(name_literal)
 #endif  // IREE_TRACING_FEATURE_INSTRUMENTATION
 
-// TODO(benvanik): macros for LockableCtx / Lockable mutex tracking.
-
 #endif  // __cplusplus
 
+//===----------------------------------------------------------------------===//
+// Tracing implementation
+//===----------------------------------------------------------------------===//
+
+#include "iree/base/tracing/tracy.h"
+
 #endif  // IREE_BASE_TRACING_H_
diff --git a/runtime/src/iree/base/tracing/BUILD.bazel b/runtime/src/iree/base/tracing/BUILD.bazel
new file mode 100644
index 0000000..430b936
--- /dev/null
+++ b/runtime/src/iree/base/tracing/BUILD.bazel
@@ -0,0 +1,27 @@
+# Copyright 2023 The IREE Authors
+#
+# Licensed under the Apache License v2.0 with LLVM Exceptions.
+# See https://llvm.org/LICENSE.txt for license information.
+# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+load("//build_tools/bazel:build_defs.oss.bzl", "iree_runtime_cc_library")
+
+package(
+    default_visibility = ["//visibility:public"],
+    features = ["layering_check"],
+    licenses = ["notice"],  # Apache 2.0
+)
+
+#===------------------------------------------------------------------------===#
+# Tracy
+#===------------------------------------------------------------------------===#
+
+iree_runtime_cc_library(
+    name = "tracy",
+    srcs = ["tracy.cc"],
+    hdrs = ["tracy.h"],
+    deps = [
+        "//runtime/src/iree/base:core_headers",
+        "@tracy_client//:runtime_impl",
+    ],
+)
diff --git a/runtime/src/iree/base/tracing/CMakeLists.txt b/runtime/src/iree/base/tracing/CMakeLists.txt
new file mode 100644
index 0000000..68a3ad2
--- /dev/null
+++ b/runtime/src/iree/base/tracing/CMakeLists.txt
@@ -0,0 +1,26 @@
+################################################################################
+# Autogenerated by build_tools/bazel_to_cmake/bazel_to_cmake.py from           #
+# runtime/src/iree/base/tracing/BUILD.bazel                                    #
+#                                                                              #
+# Use iree_cmake_extra_content from iree/build_defs.oss.bzl to add arbitrary   #
+# CMake-only content.                                                          #
+#                                                                              #
+# To disable autogeneration for this file entirely, delete this header.        #
+################################################################################
+
+iree_add_all_subdirs()
+
+iree_cc_library(
+  NAME
+    tracy
+  HDRS
+    "tracy.h"
+  SRCS
+    "tracy.cc"
+  DEPS
+    iree::base::core_headers
+    tracy_client::runtime_impl
+  PUBLIC
+)
+
+### BAZEL_TO_CMAKE_PRESERVES_ALL_CONTENT_BELOW_THIS_LINE ###
diff --git a/runtime/src/iree/base/tracing.cc b/runtime/src/iree/base/tracing/tracy.cc
similarity index 99%
rename from runtime/src/iree/base/tracing.cc
rename to runtime/src/iree/base/tracing/tracy.cc
index 0af4810..8f446ba 100644
--- a/runtime/src/iree/base/tracing.cc
+++ b/runtime/src/iree/base/tracing/tracy.cc
@@ -6,8 +6,6 @@
 
 #include "iree/base/tracing.h"
 
-#include "iree/base/target_platform.h"
-
 // Textually include the Tracy implementation.
 // We do this here instead of relying on an external build target so that we can
 // ensure our configuration specified in tracing.h is picked up.
diff --git a/runtime/src/iree/base/tracing/tracy.h b/runtime/src/iree/base/tracing/tracy.h
new file mode 100644
index 0000000..3b3f8d6
--- /dev/null
+++ b/runtime/src/iree/base/tracing/tracy.h
@@ -0,0 +1,373 @@
+// Copyright 2019 The IREE Authors
+//
+// Licensed under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+
+#include <stdbool.h>
+#include <stddef.h>
+#include <stdint.h>
+#include <stdlib.h>
+
+#include "iree/base/attributes.h"
+#include "iree/base/config.h"
+
+#ifndef IREE_BASE_TRACING_TRACY_H_
+#define IREE_BASE_TRACING_TRACY_H_
+
+//===----------------------------------------------------------------------===//
+// Tracy configuration
+//===----------------------------------------------------------------------===//
+// NOTE: order matters here as we are including files that require/define.
+
+// Enable Tracy only when we are using tracing features.
+#if IREE_TRACING_FEATURES != 0
+#define TRACY_ENABLE 1
+#endif  // IREE_TRACING_FEATURES
+
+// Disable zone nesting verification in release builds.
+// The verification makes it easy to find unbalanced zones but doubles the cost
+// (at least) of each zone recorded. Run in debug builds to verify new
+// instrumentation is correct before capturing traces in release builds.
+#if defined(NDEBUG)
+#define TRACY_NO_VERIFY 1
+#endif  // NDEBUG
+
+// Force callstack capture on all zones (even those without the C suffix).
+#if (IREE_TRACING_FEATURES &                             \
+     IREE_TRACING_FEATURE_INSTRUMENTATION_CALLSTACKS) || \
+    (IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_ALLOCATION_CALLSTACKS)
+#define TRACY_CALLSTACK 1
+#endif  // IREE_TRACING_FEATURE_INSTRUMENTATION_CALLSTACKS
+
+// Guard tracy use of DbgHelp on Windows via IREEDbgHelp* functions.
+// All our own usage of DbgHelp must be guarded with the same lock.
+#define TRACY_DBGHELP_LOCK IREEDbgHelp
+
+// Disable frame image capture to avoid the DXT compression code and the frame
+// capture worker thread.
+#define TRACY_NO_FRAME_IMAGE 1
+
+// We don't care about vsync events as they can pollute traces and don't have
+// much meaning in our workloads. If integrators still want them we can expose
+// this as a tracing feature flag.
+#define TRACY_NO_VSYNC_CAPTURE 1
+
+// Enable fibers support.
+// The manual warns that this adds overheads but it's the only way we can
+// support fiber migration across OS threads.
+#if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_FIBERS
+#define TRACY_FIBERS 1
+#endif  // IREE_TRACING_FEATURE_FIBERS
+
+// Flush the settings we have so far; settings after this point will be
+// overriding values set by Tracy itself.
+#if defined(TRACY_ENABLE)
+#include "tracy/TracyC.h"  // IWYU pragma: export
+#endif
+
+// Disable callstack capture if our depth is 0; this allows us to avoid any
+// expensive capture (and all the associated dependencies) if we aren't going to
+// use it. Note that this means that unless code is instrumented we won't be
+// able to tell what's happening in the Tracy UI.
+#if IREE_TRACING_MAX_CALLSTACK_DEPTH == 0
+#undef TRACY_CALLSTACK
+#endif  // IREE_TRACING_MAX_CALLSTACK_DEPTH
+
+//===----------------------------------------------------------------------===//
+// C API used for Tracy control
+//===----------------------------------------------------------------------===//
+// These functions are implementation details and should not be called directly.
+// Always use the macros (or C++ RAII types).
+
+// Local zone ID used for the C IREE_TRACE_ZONE_* macros.
+typedef uint32_t iree_zone_id_t;
+
+#ifdef __cplusplus
+extern "C" {
+#endif  // __cplusplus
+
+#if IREE_TRACING_FEATURES
+
+typedef struct ___tracy_source_location_data iree_tracing_location_t;
+
+#ifdef __cplusplus
+#define iree_tracing_make_zone_ctx(zone_id) \
+  TracyCZoneCtx { zone_id, 1 }
+#else
+#define iree_tracing_make_zone_ctx(zone_id) \
+  (TracyCZoneCtx) { zone_id, 1 }
+#endif  // __cplusplus
+
+int64_t iree_tracing_time(void);
+int64_t iree_tracing_frequency(void);
+
+IREE_MUST_USE_RESULT iree_zone_id_t
+iree_tracing_zone_begin_impl(const iree_tracing_location_t* src_loc,
+                             const char* name, size_t name_length);
+IREE_MUST_USE_RESULT iree_zone_id_t iree_tracing_zone_begin_external_impl(
+    const char* file_name, size_t file_name_length, uint32_t line,
+    const char* function_name, size_t function_name_length, const char* name,
+    size_t name_length);
+void iree_tracing_zone_end(iree_zone_id_t zone_id);
+
+// Matches GpuContextType.
+// TODO(benvanik): upstream a few more enum values for CUDA/Metal/etc.
+// The only real behavior that changes in tracy is around whether multi-threaded
+// recording is assumed and IREE_TRACING_GPU_CONTEXT_TYPE_VULKAN is a safe
+// default choice - the context name provided during creation should be
+// descriptive enough for the user.
+typedef enum iree_tracing_gpu_context_type_e {
+  IREE_TRACING_GPU_CONTEXT_TYPE_INVALID = 0,
+  IREE_TRACING_GPU_CONTEXT_TYPE_OPENGL,
+  IREE_TRACING_GPU_CONTEXT_TYPE_VULKAN,
+  IREE_TRACING_GPU_CONTEXT_TYPE_OPENCL,
+  IREE_TRACING_GPU_CONTEXT_TYPE_DIRECT3D12,
+  IREE_TRACING_GPU_CONTEXT_TYPE_DIRECT3D11,
+} iree_tracing_gpu_context_type_t;
+
+uint8_t iree_tracing_gpu_context_allocate(iree_tracing_gpu_context_type_t type,
+                                          const char* name, size_t name_length,
+                                          bool is_calibrated,
+                                          uint64_t cpu_timestamp,
+                                          uint64_t gpu_timestamp,
+                                          float timestamp_period);
+void iree_tracing_gpu_context_calibrate(uint8_t context_id, int64_t cpu_delta,
+                                        int64_t cpu_timestamp,
+                                        int64_t gpu_timestamp);
+void iree_tracing_gpu_zone_begin(uint8_t context_id, uint16_t query_id,
+                                 const iree_tracing_location_t* src_loc);
+void iree_tracing_gpu_zone_begin_external(
+    uint8_t context_id, uint16_t query_id, const char* file_name,
+    size_t file_name_length, uint32_t line, const char* function_name,
+    size_t function_name_length, const char* name, size_t name_length);
+void iree_tracing_gpu_zone_end(uint8_t context_id, uint16_t query_id);
+void iree_tracing_gpu_zone_notify(uint8_t context_id, uint16_t query_id,
+                                  int64_t gpu_timestamp);
+
+void iree_tracing_set_plot_type_impl(const char* name_literal,
+                                     uint8_t plot_type, bool step, bool fill,
+                                     uint32_t color);
+void iree_tracing_plot_value_i64_impl(const char* name_literal, int64_t value);
+void iree_tracing_plot_value_f32_impl(const char* name_literal, float value);
+void iree_tracing_plot_value_f64_impl(const char* name_literal, double value);
+
+void iree_tracing_mutex_announce(const iree_tracing_location_t* src_loc,
+                                 uint32_t* out_lock_id);
+void iree_tracing_mutex_terminate(uint32_t lock_id);
+void iree_tracing_mutex_before_lock(uint32_t lock_id);
+void iree_tracing_mutex_after_lock(uint32_t lock_id);
+void iree_tracing_mutex_after_try_lock(uint32_t lock_id, bool was_acquired);
+void iree_tracing_mutex_after_unlock(uint32_t lock_id);
+
+#endif  // IREE_TRACING_FEATURES
+
+#ifdef __cplusplus
+}  // extern "C"
+#endif  // __cplusplus
+
+//===----------------------------------------------------------------------===//
+// Instrumentation macros (C)
+//===----------------------------------------------------------------------===//
+
+#if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_INSTRUMENTATION
+
+// Sets an application-specific payload that will be stored in the trace.
+// This can be used to fingerprint traces to particular versions and denote
+// compilation options or configuration. The given string value will be copied.
+#define IREE_TRACE_SET_APP_INFO(value, value_length) \
+  ___tracy_emit_message_appinfo(value, value_length)
+
+// Sets the current thread name to the given string value.
+// This will only set the thread name as it appears in the tracing backend and
+// not set the OS thread name as it would appear in a debugger.
+// The C-string |name| will be copied and does not need to be a literal.
+#define IREE_TRACE_SET_THREAD_NAME(name) ___tracy_set_thread_name(name)
+
+// Evalutes the expression code only if tracing is enabled.
+//
+// Example:
+//  struct {
+//    IREE_TRACE(uint32_t trace_only_value);
+//  } my_object;
+//  IREE_TRACE(my_object.trace_only_value = 5);
+#define IREE_TRACE(expr) expr
+
+#if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_FIBERS
+// Enters a fiber context.
+// |fiber| must be unique and remain live for the process lifetime.
+#define IREE_TRACE_FIBER_ENTER(fiber) ___tracy_fiber_enter((const char*)fiber)
+// Exits a fiber context.
+#define IREE_TRACE_FIBER_LEAVE() ___tracy_fiber_leave()
+#else
+#define IREE_TRACE_FIBER_ENTER(fiber)
+#define IREE_TRACE_FIBER_LEAVE()
+#endif  // IREE_TRACING_FEATURE_FIBERS
+
+// Begins a new zone with the parent function name.
+#define IREE_TRACE_ZONE_BEGIN(zone_id) \
+  IREE_TRACE_ZONE_BEGIN_NAMED(zone_id, NULL)
+
+// Begins a new zone with the given compile-time literal name.
+#define IREE_TRACE_ZONE_BEGIN_NAMED(zone_id, name_literal)                    \
+  static const iree_tracing_location_t TracyConcat(                           \
+      __tracy_source_location, __LINE__) = {name_literal, __FUNCTION__,       \
+                                            __FILE__, (uint32_t)__LINE__, 0}; \
+  iree_zone_id_t zone_id = iree_tracing_zone_begin_impl(                      \
+      &TracyConcat(__tracy_source_location, __LINE__), NULL, 0);
+
+// Begins a new zone with the given runtime dynamic string name.
+// The |value| string will be copied into the trace buffer.
+#define IREE_TRACE_ZONE_BEGIN_NAMED_DYNAMIC(zone_id, name, name_length) \
+  static const iree_tracing_location_t TracyConcat(                     \
+      __tracy_source_location, __LINE__) = {0, __FUNCTION__, __FILE__,  \
+                                            (uint32_t)__LINE__, 0};     \
+  iree_zone_id_t zone_id = iree_tracing_zone_begin_impl(                \
+      &TracyConcat(__tracy_source_location, __LINE__), (name), (name_length));
+
+// Begins an externally defined zone with a dynamic source location.
+// The |file_name|, |function_name|, and optional |name| strings will be copied
+// into the trace buffer and do not need to persist.
+#define IREE_TRACE_ZONE_BEGIN_EXTERNAL(                                       \
+    zone_id, file_name, file_name_length, line, function_name,                \
+    function_name_length, name, name_length)                                  \
+  iree_zone_id_t zone_id = iree_tracing_zone_begin_external_impl(             \
+      file_name, file_name_length, line, function_name, function_name_length, \
+      name, name_length)
+
+// Sets the dynamic color of the zone to an XXBBGGRR value.
+#define IREE_TRACE_ZONE_SET_COLOR(zone_id, color_xbgr) \
+  ___tracy_emit_zone_color(iree_tracing_make_zone_ctx(zone_id), color_xbgr);
+
+// Appends an integer value to the parent zone. May be called multiple times.
+#define IREE_TRACE_ZONE_APPEND_VALUE(zone_id, value) \
+  ___tracy_emit_zone_value(iree_tracing_make_zone_ctx(zone_id), value);
+
+// Appends a string value to the parent zone. May be called multiple times.
+// The |value| string will be copied into the trace buffer.
+#define IREE_TRACE_ZONE_APPEND_TEXT(...)                                  \
+  IREE_TRACE_IMPL_GET_VARIADIC_((__VA_ARGS__,                             \
+                                 IREE_TRACE_ZONE_APPEND_TEXT_STRING_VIEW, \
+                                 IREE_TRACE_ZONE_APPEND_TEXT_CSTRING))    \
+  (__VA_ARGS__)
+#define IREE_TRACE_ZONE_APPEND_TEXT_CSTRING(zone_id, value) \
+  IREE_TRACE_ZONE_APPEND_TEXT_STRING_VIEW(zone_id, value, strlen(value))
+#define IREE_TRACE_ZONE_APPEND_TEXT_STRING_VIEW(zone_id, value, value_length) \
+  ___tracy_emit_zone_text(iree_tracing_make_zone_ctx(zone_id), value,         \
+                          value_length)
+
+// Ends the current zone. Must be passed the |zone_id| from the _BEGIN.
+#define IREE_TRACE_ZONE_END(zone_id) iree_tracing_zone_end(zone_id)
+
+// Ends the current zone before returning on a failure.
+// Sugar for IREE_TRACE_ZONE_END+IREE_RETURN_IF_ERROR.
+#define IREE_RETURN_AND_END_ZONE_IF_ERROR(zone_id, ...) \
+  IREE_RETURN_AND_EVAL_IF_ERROR(IREE_TRACE_ZONE_END(zone_id), __VA_ARGS__)
+
+// Configures the named plot with an IREE_TRACING_PLOT_TYPE_* representation.
+#define IREE_TRACE_SET_PLOT_TYPE(name_literal, plot_type, step, fill, color) \
+  iree_tracing_set_plot_type_impl(name_literal, plot_type, step, fill, color)
+// Plots a value in the named plot group as an integer.
+#define IREE_TRACE_PLOT_VALUE_I64(name_literal, value) \
+  iree_tracing_plot_value_i64_impl(name_literal, value)
+// Plots a value in the named plot group as a single-precision float.
+#define IREE_TRACE_PLOT_VALUE_F32(name_literal, value) \
+  iree_tracing_plot_value_f32_impl(name_literal, value)
+// Plots a value in the named plot group as a double-precision float.
+#define IREE_TRACE_PLOT_VALUE_F64(name_literal, value) \
+  iree_tracing_plot_value_f64_impl(name_literal, value)
+
+// Demarcates an advancement of the top-level unnamed frame group.
+#define IREE_TRACE_FRAME_MARK() ___tracy_emit_frame_mark(NULL)
+// Demarcates an advancement of a named frame group.
+#define IREE_TRACE_FRAME_MARK_NAMED(name_literal) \
+  ___tracy_emit_frame_mark(name_literal)
+// Begins a discontinuous frame in a named frame group.
+// Must be properly matched with a IREE_TRACE_FRAME_MARK_NAMED_END.
+#define IREE_TRACE_FRAME_MARK_BEGIN_NAMED(name_literal) \
+  ___tracy_emit_frame_mark_start(name_literal)
+// Ends a discontinuous frame in a named frame group.
+#define IREE_TRACE_FRAME_MARK_END_NAMED(name_literal) \
+  ___tracy_emit_frame_mark_end(name_literal)
+
+// Logs a message at the given logging level to the trace.
+// The message text must be a compile-time string literal.
+#define IREE_TRACE_MESSAGE(level, value_literal) \
+  ___tracy_emit_messageLC(value_literal, IREE_TRACING_MESSAGE_LEVEL_##level, 0)
+// Logs a message with the given color to the trace.
+// Standard colors are defined as IREE_TRACING_MESSAGE_LEVEL_* values.
+// The message text must be a compile-time string literal.
+#define IREE_TRACE_MESSAGE_COLORED(color, value_literal) \
+  ___tracy_emit_messageLC(value_literal, color, 0)
+// Logs a dynamically-allocated message at the given logging level to the trace.
+// The string |value| will be copied into the trace buffer.
+#define IREE_TRACE_MESSAGE_DYNAMIC(level, value, value_length) \
+  ___tracy_emit_messageC(value, value_length,                  \
+                         IREE_TRACING_MESSAGE_LEVEL_##level, 0)
+// Logs a dynamically-allocated message with the given color to the trace.
+// Standard colors are defined as IREE_TRACING_MESSAGE_LEVEL_* values.
+// The string |value| will be copied into the trace buffer.
+#define IREE_TRACE_MESSAGE_DYNAMIC_COLORED(color, value, value_length) \
+  ___tracy_emit_messageC(value, value_length, color, 0)
+
+// Utilities:
+#define IREE_TRACE_IMPL_GET_VARIADIC_HELPER_(_1, _2, _3, NAME, ...) NAME
+#define IREE_TRACE_IMPL_GET_VARIADIC_(args) \
+  IREE_TRACE_IMPL_GET_VARIADIC_HELPER_ args
+
+#endif  // IREE_TRACING_FEATURE_INSTRUMENTATION
+
+//===----------------------------------------------------------------------===//
+// Allocation tracking macros (C/C++)
+//===----------------------------------------------------------------------===//
+
+#if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_ALLOCATION_TRACKING
+
+#if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_ALLOCATION_CALLSTACKS
+
+#define IREE_TRACE_ALLOC(ptr, size)               \
+  ___tracy_emit_memory_alloc_callstack(ptr, size, \
+                                       IREE_TRACING_MAX_CALLSTACK_DEPTH, 0)
+#define IREE_TRACE_FREE(ptr) \
+  ___tracy_emit_memory_free_callstack(ptr, IREE_TRACING_MAX_CALLSTACK_DEPTH, 0)
+#define IREE_TRACE_ALLOC_NAMED(name, ptr, size) \
+  ___tracy_emit_memory_alloc_callstack_named(   \
+      ptr, size, IREE_TRACING_MAX_CALLSTACK_DEPTH, 0, name)
+#define IREE_TRACE_FREE_NAMED(name, ptr)     \
+  ___tracy_emit_memory_free_callstack_named( \
+      ptr, IREE_TRACING_MAX_CALLSTACK_DEPTH, 0, name)
+
+#else
+
+#define IREE_TRACE_ALLOC(ptr, size) ___tracy_emit_memory_alloc(ptr, size, 0)
+#define IREE_TRACE_FREE(ptr) ___tracy_emit_memory_free(ptr, 0)
+#define IREE_TRACE_ALLOC_NAMED(name, ptr, size) \
+  ___tracy_emit_memory_alloc_named(ptr, size, 0, name)
+#define IREE_TRACE_FREE_NAMED(name, ptr) \
+  ___tracy_emit_memory_free_named(ptr, 0, name)
+
+#endif  // IREE_TRACING_FEATURE_ALLOCATION_CALLSTACKS
+
+#endif  // IREE_TRACING_FEATURE_ALLOCATION_TRACKING
+
+//===----------------------------------------------------------------------===//
+// Instrumentation C++ RAII types, wrappers, and macros
+//===----------------------------------------------------------------------===//
+
+#ifdef __cplusplus
+
+#if defined(TRACY_ENABLE)
+#include "tracy/Tracy.hpp"  // IWYU pragma: export
+#endif
+
+#if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_INSTRUMENTATION
+#define IREE_TRACE_SCOPE() ZoneScoped
+#define IREE_TRACE_SCOPE_NAMED(name_literal) ZoneScopedN(name_literal)
+#else
+#define IREE_TRACE_SCOPE()
+#define IREE_TRACE_SCOPE_NAMED(name_literal)
+#endif  // IREE_TRACING_FEATURE_INSTRUMENTATION
+
+#endif  // __cplusplus
+
+#endif  // IREE_BASE_TRACING_TRACY_H_
diff --git a/runtime/src/iree/hal/BUILD.bazel b/runtime/src/iree/hal/BUILD.bazel
index d64a2ce..5ab6fd8 100644
--- a/runtime/src/iree/hal/BUILD.bazel
+++ b/runtime/src/iree/hal/BUILD.bazel
@@ -70,8 +70,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:path",
         "//runtime/src/iree/base/internal:synchronization",
diff --git a/runtime/src/iree/hal/CMakeLists.txt b/runtime/src/iree/hal/CMakeLists.txt
index a2cf33e..c0c6688 100644
--- a/runtime/src/iree/hal/CMakeLists.txt
+++ b/runtime/src/iree/hal/CMakeLists.txt
@@ -59,11 +59,9 @@
     "string_util.h"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::path
     iree::base::internal::synchronization
-    iree::base::tracing
   PUBLIC
 )
 
diff --git a/runtime/src/iree/hal/allocator.c b/runtime/src/iree/hal/allocator.c
index 120605c..226b7b1 100644
--- a/runtime/src/iree/hal/allocator.c
+++ b/runtime/src/iree/hal/allocator.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 #include <stdio.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/detail.h"
 #include "iree/hal/resource.h"
 
diff --git a/runtime/src/iree/hal/allocator_heap.c b/runtime/src/iree/hal/allocator_heap.c
index 66f9657..33da81b 100644
--- a/runtime/src/iree/hal/allocator_heap.c
+++ b/runtime/src/iree/hal/allocator_heap.c
@@ -7,7 +7,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/allocator.h"
 #include "iree/hal/buffer.h"
 #include "iree/hal/buffer_heap_impl.h"
diff --git a/runtime/src/iree/hal/buffer.c b/runtime/src/iree/hal/buffer.c
index 7f96143..7e682ef 100644
--- a/runtime/src/iree/hal/buffer.c
+++ b/runtime/src/iree/hal/buffer.c
@@ -10,7 +10,6 @@
 #include <stddef.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/allocator.h"
 #include "iree/hal/detail.h"
 
diff --git a/runtime/src/iree/hal/buffer_heap.c b/runtime/src/iree/hal/buffer_heap.c
index b3f481c..4be878b 100644
--- a/runtime/src/iree/hal/buffer_heap.c
+++ b/runtime/src/iree/hal/buffer_heap.c
@@ -9,7 +9,6 @@
 #include <string.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/allocator.h"
 #include "iree/hal/buffer.h"
 #include "iree/hal/buffer_heap_impl.h"
diff --git a/runtime/src/iree/hal/buffer_view.c b/runtime/src/iree/hal/buffer_view.c
index 9f1beae..508c0c0 100644
--- a/runtime/src/iree/hal/buffer_view.c
+++ b/runtime/src/iree/hal/buffer_view.c
@@ -7,7 +7,6 @@
 #include "iree/hal/buffer_view.h"
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/allocator.h"
 #include "iree/hal/buffer_view_util.h"
 #include "iree/hal/resource.h"
diff --git a/runtime/src/iree/hal/buffer_view_util.c b/runtime/src/iree/hal/buffer_view_util.c
index 3b78dd2..73fa880 100644
--- a/runtime/src/iree/hal/buffer_view_util.c
+++ b/runtime/src/iree/hal/buffer_view_util.c
@@ -10,7 +10,6 @@
 #include <stdbool.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/allocator.h"
 #include "iree/hal/resource.h"
 #include "iree/hal/string_util.h"
diff --git a/runtime/src/iree/hal/channel.c b/runtime/src/iree/hal/channel.c
index e7164b2..fe5e1df 100644
--- a/runtime/src/iree/hal/channel.c
+++ b/runtime/src/iree/hal/channel.c
@@ -8,7 +8,6 @@
 
 #include <stddef.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/detail.h"
 #include "iree/hal/device.h"
 #include "iree/hal/resource.h"
diff --git a/runtime/src/iree/hal/channel_provider.c b/runtime/src/iree/hal/channel_provider.c
index 247eddc..2bcf11a 100644
--- a/runtime/src/iree/hal/channel_provider.c
+++ b/runtime/src/iree/hal/channel_provider.c
@@ -6,7 +6,6 @@
 
 #include "iree/hal/channel_provider.h"
 
-#include "iree/base/tracing.h"
 #include "iree/hal/detail.h"
 #include "iree/hal/resource.h"
 
diff --git a/runtime/src/iree/hal/command_buffer.c b/runtime/src/iree/hal/command_buffer.c
index fa57dc8..8c95eb5 100644
--- a/runtime/src/iree/hal/command_buffer.c
+++ b/runtime/src/iree/hal/command_buffer.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/command_buffer_validation.h"
 #include "iree/hal/detail.h"
 #include "iree/hal/device.h"
diff --git a/runtime/src/iree/hal/command_buffer_validation.c b/runtime/src/iree/hal/command_buffer_validation.c
index 46ebea4..5e87c39 100644
--- a/runtime/src/iree/hal/command_buffer_validation.c
+++ b/runtime/src/iree/hal/command_buffer_validation.c
@@ -11,7 +11,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/allocator.h"
 #include "iree/hal/buffer.h"
 #include "iree/hal/detail.h"
diff --git a/runtime/src/iree/hal/device.c b/runtime/src/iree/hal/device.c
index f3ae351..f21bd88 100644
--- a/runtime/src/iree/hal/device.c
+++ b/runtime/src/iree/hal/device.c
@@ -6,7 +6,6 @@
 
 #include "iree/hal/device.h"
 
-#include "iree/base/tracing.h"
 #include "iree/hal/allocator.h"
 #include "iree/hal/buffer.h"
 #include "iree/hal/command_buffer.h"
diff --git a/runtime/src/iree/hal/driver.c b/runtime/src/iree/hal/driver.c
index ff87d6a..260374e 100644
--- a/runtime/src/iree/hal/driver.c
+++ b/runtime/src/iree/hal/driver.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 
 #include "iree/base/internal/path.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/detail.h"
 #include "iree/hal/resource.h"
 
diff --git a/runtime/src/iree/hal/driver_registry.c b/runtime/src/iree/hal/driver_registry.c
index 7f45f45..d2b766d 100644
--- a/runtime/src/iree/hal/driver_registry.c
+++ b/runtime/src/iree/hal/driver_registry.c
@@ -12,7 +12,6 @@
 #include "iree/base/internal/call_once.h"
 #include "iree/base/internal/path.h"
 #include "iree/base/internal/synchronization.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // iree_hal_driver_registry_t
diff --git a/runtime/src/iree/hal/drivers/BUILD.bazel b/runtime/src/iree/hal/drivers/BUILD.bazel
index 5c0e874..f7b05dd 100644
--- a/runtime/src/iree/hal/drivers/BUILD.bazel
+++ b/runtime/src/iree/hal/drivers/BUILD.bazel
@@ -54,7 +54,6 @@
     hdrs = ["init.h"],
     deps = [
                "//runtime/src/iree/base",
-               "//runtime/src/iree/base:tracing",
                "//runtime/src/iree/hal",
            ] + select({
                ":cuda_enabled": ["//runtime/src/iree/hal/drivers/cuda/registration"],
diff --git a/runtime/src/iree/hal/drivers/CMakeLists.txt b/runtime/src/iree/hal/drivers/CMakeLists.txt
index 97b4192..711b493 100644
--- a/runtime/src/iree/hal/drivers/CMakeLists.txt
+++ b/runtime/src/iree/hal/drivers/CMakeLists.txt
@@ -139,7 +139,6 @@
     ${_INIT_EXTERNAL_COPTS}
   DEPS
     iree::base
-    iree::base::tracing
     ${_INIT_INTERNAL_DEPS}
     ${_INIT_EXTERNAL_DEPS}
   PUBLIC
diff --git a/runtime/src/iree/hal/drivers/cuda/BUILD.bazel b/runtime/src/iree/hal/drivers/cuda/BUILD.bazel
index 7b736c0..ad31c08 100644
--- a/runtime/src/iree/hal/drivers/cuda/BUILD.bazel
+++ b/runtime/src/iree/hal/drivers/cuda/BUILD.bazel
@@ -51,8 +51,6 @@
     deps = [
         ":dynamic_symbols",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:arena",
         "//runtime/src/iree/base/internal:synchronization",
@@ -84,8 +82,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:dynamic_library",
         "@iree_cuda//:headers",
         "@nccl//:headers",
diff --git a/runtime/src/iree/hal/drivers/cuda/CMakeLists.txt b/runtime/src/iree/hal/drivers/cuda/CMakeLists.txt
index 18b3d38..eb225bd 100644
--- a/runtime/src/iree/hal/drivers/cuda/CMakeLists.txt
+++ b/runtime/src/iree/hal/drivers/cuda/CMakeLists.txt
@@ -48,12 +48,10 @@
   DEPS
     ::dynamic_symbols
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::arena
     iree::base::internal::flatcc::parsing
     iree::base::internal::synchronization
-    iree::base::tracing
     iree::hal
     iree::hal::utils::buffer_transfer
     iree::hal::utils::collective_batch
@@ -79,9 +77,7 @@
     "status_util.c"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal::dynamic_library
-    iree::base::tracing
     iree_cuda::headers
     nccl::headers
   PUBLIC
diff --git a/runtime/src/iree/hal/drivers/cuda/cuda_allocator.c b/runtime/src/iree/hal/drivers/cuda/cuda_allocator.c
index b031af8..f851067 100644
--- a/runtime/src/iree/hal/drivers/cuda/cuda_allocator.c
+++ b/runtime/src/iree/hal/drivers/cuda/cuda_allocator.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/cuda/cuda_buffer.h"
 #include "iree/hal/drivers/cuda/dynamic_symbols.h"
 #include "iree/hal/drivers/cuda/status_util.h"
diff --git a/runtime/src/iree/hal/drivers/cuda/cuda_buffer.c b/runtime/src/iree/hal/drivers/cuda/cuda_buffer.c
index 87c4147..c39e160 100644
--- a/runtime/src/iree/hal/drivers/cuda/cuda_buffer.c
+++ b/runtime/src/iree/hal/drivers/cuda/cuda_buffer.c
@@ -11,7 +11,6 @@
 #include <string.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 typedef struct iree_hal_cuda_buffer_t {
   iree_hal_buffer_t base;
diff --git a/runtime/src/iree/hal/drivers/cuda/cuda_device.c b/runtime/src/iree/hal/drivers/cuda/cuda_device.c
index 5e721a1..0bcc0be 100644
--- a/runtime/src/iree/hal/drivers/cuda/cuda_device.c
+++ b/runtime/src/iree/hal/drivers/cuda/cuda_device.c
@@ -12,7 +12,6 @@
 
 #include "iree/base/internal/arena.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/cuda/context_wrapper.h"
 #include "iree/hal/drivers/cuda/cuda_allocator.h"
 #include "iree/hal/drivers/cuda/cuda_buffer.h"
diff --git a/runtime/src/iree/hal/drivers/cuda/cuda_driver.c b/runtime/src/iree/hal/drivers/cuda/cuda_driver.c
index 1e15327..46f73ec 100644
--- a/runtime/src/iree/hal/drivers/cuda/cuda_driver.c
+++ b/runtime/src/iree/hal/drivers/cuda/cuda_driver.c
@@ -8,7 +8,6 @@
 #include <string.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/drivers/cuda/api.h"
 #include "iree/hal/drivers/cuda/cuda_device.h"
diff --git a/runtime/src/iree/hal/drivers/cuda/cuda_event.c b/runtime/src/iree/hal/drivers/cuda/cuda_event.c
index fe54710..309848d 100644
--- a/runtime/src/iree/hal/drivers/cuda/cuda_event.c
+++ b/runtime/src/iree/hal/drivers/cuda/cuda_event.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 // Dummy events for now, don't do anything.
 typedef struct iree_hal_cuda_event_t {
diff --git a/runtime/src/iree/hal/drivers/cuda/dynamic_symbols.c b/runtime/src/iree/hal/drivers/cuda/dynamic_symbols.c
index 6649cde..eb95e82 100644
--- a/runtime/src/iree/hal/drivers/cuda/dynamic_symbols.c
+++ b/runtime/src/iree/hal/drivers/cuda/dynamic_symbols.c
@@ -9,8 +9,6 @@
 #include <string.h>
 
 #include "iree/base/internal/dynamic_library.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/cuda/status_util.h"
 
 static const char* kCUDALoaderSearchNames[] = {
diff --git a/runtime/src/iree/hal/drivers/cuda/event_semaphore.c b/runtime/src/iree/hal/drivers/cuda/event_semaphore.c
index 8a8f3da..3aaed80 100644
--- a/runtime/src/iree/hal/drivers/cuda/event_semaphore.c
+++ b/runtime/src/iree/hal/drivers/cuda/event_semaphore.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/utils/semaphore_base.h"
 
 typedef struct iree_hal_cuda_semaphore_t {
diff --git a/runtime/src/iree/hal/drivers/cuda/graph_command_buffer.c b/runtime/src/iree/hal/drivers/cuda/graph_command_buffer.c
index bc587a2..a323d76 100644
--- a/runtime/src/iree/hal/drivers/cuda/graph_command_buffer.c
+++ b/runtime/src/iree/hal/drivers/cuda/graph_command_buffer.c
@@ -11,7 +11,6 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/cuda/cuda_buffer.h"
 #include "iree/hal/drivers/cuda/dynamic_symbols.h"
 #include "iree/hal/drivers/cuda/native_executable.h"
diff --git a/runtime/src/iree/hal/drivers/cuda/memory_pools.c b/runtime/src/iree/hal/drivers/cuda/memory_pools.c
index 8550521..01d8e1d 100644
--- a/runtime/src/iree/hal/drivers/cuda/memory_pools.c
+++ b/runtime/src/iree/hal/drivers/cuda/memory_pools.c
@@ -6,7 +6,6 @@
 
 #include "iree/hal/drivers/cuda/memory_pools.h"
 
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/cuda/cuda_buffer.h"
 #include "iree/hal/drivers/cuda/status_util.h"
 
diff --git a/runtime/src/iree/hal/drivers/cuda/native_executable.h b/runtime/src/iree/hal/drivers/cuda/native_executable.h
index 9126765..7e7c1fa 100644
--- a/runtime/src/iree/hal/drivers/cuda/native_executable.h
+++ b/runtime/src/iree/hal/drivers/cuda/native_executable.h
@@ -10,7 +10,6 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/drivers/cuda/context_wrapper.h"
 #include "iree/hal/drivers/cuda/cuda_headers.h"
diff --git a/runtime/src/iree/hal/drivers/cuda/nccl_channel.c b/runtime/src/iree/hal/drivers/cuda/nccl_channel.c
index 636f307..b9e85c1 100644
--- a/runtime/src/iree/hal/drivers/cuda/nccl_channel.c
+++ b/runtime/src/iree/hal/drivers/cuda/nccl_channel.c
@@ -10,7 +10,6 @@
 #include <stdlib.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/cuda/cuda_buffer.h"
 #include "iree/hal/drivers/cuda/status_util.h"
 #include "third_party/nccl/nccl.h"
diff --git a/runtime/src/iree/hal/drivers/cuda/nop_executable_cache.c b/runtime/src/iree/hal/drivers/cuda/nop_executable_cache.c
index fa80fba..71a6140 100644
--- a/runtime/src/iree/hal/drivers/cuda/nop_executable_cache.c
+++ b/runtime/src/iree/hal/drivers/cuda/nop_executable_cache.c
@@ -10,7 +10,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/cuda/native_executable.h"
 
 typedef struct iree_hal_cuda_nop_executable_cache_t {
diff --git a/runtime/src/iree/hal/drivers/cuda/pipeline_layout.c b/runtime/src/iree/hal/drivers/cuda/pipeline_layout.c
index 016c8a3..cddec7b 100644
--- a/runtime/src/iree/hal/drivers/cuda/pipeline_layout.c
+++ b/runtime/src/iree/hal/drivers/cuda/pipeline_layout.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // iree_hal_cuda_descriptor_set_layout_t
diff --git a/runtime/src/iree/hal/drivers/cuda/registration/BUILD.bazel b/runtime/src/iree/hal/drivers/cuda/registration/BUILD.bazel
index 0e88ae2..6deff91 100644
--- a/runtime/src/iree/hal/drivers/cuda/registration/BUILD.bazel
+++ b/runtime/src/iree/hal/drivers/cuda/registration/BUILD.bazel
@@ -25,8 +25,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/drivers/cuda",
diff --git a/runtime/src/iree/hal/drivers/cuda/registration/CMakeLists.txt b/runtime/src/iree/hal/drivers/cuda/registration/CMakeLists.txt
index cd82815..aa6a8f3 100644
--- a/runtime/src/iree/hal/drivers/cuda/registration/CMakeLists.txt
+++ b/runtime/src/iree/hal/drivers/cuda/registration/CMakeLists.txt
@@ -19,9 +19,7 @@
     "driver_module.c"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal::flags
-    iree::base::tracing
     iree::hal
     iree::hal::drivers::cuda
   DEFINES
diff --git a/runtime/src/iree/hal/drivers/cuda/registration/driver_module.c b/runtime/src/iree/hal/drivers/cuda/registration/driver_module.c
index e7ab4e9..808d6cc 100644
--- a/runtime/src/iree/hal/drivers/cuda/registration/driver_module.c
+++ b/runtime/src/iree/hal/drivers/cuda/registration/driver_module.c
@@ -12,7 +12,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/cuda/api.h"
 
 // Force using CUDA streams until we support command buffer caching to avoid the
diff --git a/runtime/src/iree/hal/drivers/cuda/stream_command_buffer.c b/runtime/src/iree/hal/drivers/cuda/stream_command_buffer.c
index 3b15da5..713079f 100644
--- a/runtime/src/iree/hal/drivers/cuda/stream_command_buffer.c
+++ b/runtime/src/iree/hal/drivers/cuda/stream_command_buffer.c
@@ -6,7 +6,6 @@
 
 #include "iree/hal/drivers/cuda/stream_command_buffer.h"
 
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/cuda/cuda_buffer.h"
 #include "iree/hal/drivers/cuda/cuda_event.h"
 #include "iree/hal/drivers/cuda/native_executable.h"
diff --git a/runtime/src/iree/hal/drivers/cuda/tracing.h b/runtime/src/iree/hal/drivers/cuda/tracing.h
index d39187b..93c12ff 100644
--- a/runtime/src/iree/hal/drivers/cuda/tracing.h
+++ b/runtime/src/iree/hal/drivers/cuda/tracing.h
@@ -9,7 +9,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/arena.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/drivers/cuda/context_wrapper.h"
 
diff --git a/runtime/src/iree/hal/drivers/init.c b/runtime/src/iree/hal/drivers/init.c
index ef04c8a..f39140d 100644
--- a/runtime/src/iree/hal/drivers/init.c
+++ b/runtime/src/iree/hal/drivers/init.c
@@ -6,8 +6,6 @@
 
 #include "iree/hal/drivers/init.h"
 
-#include "iree/base/tracing.h"
-
 #if defined(IREE_HAVE_HAL_CUDA_DRIVER_MODULE)
 #include "iree/hal/drivers/cuda/registration/driver_module.h"
 #endif  // IREE_HAVE_HAL_CUDA_DRIVER_MODULE
diff --git a/runtime/src/iree/hal/drivers/local_sync/BUILD.bazel b/runtime/src/iree/hal/drivers/local_sync/BUILD.bazel
index b632bcd..8c7bfbd 100644
--- a/runtime/src/iree/hal/drivers/local_sync/BUILD.bazel
+++ b/runtime/src/iree/hal/drivers/local_sync/BUILD.bazel
@@ -28,8 +28,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:arena",
         "//runtime/src/iree/base/internal:cpu",
diff --git a/runtime/src/iree/hal/drivers/local_sync/CMakeLists.txt b/runtime/src/iree/hal/drivers/local_sync/CMakeLists.txt
index 383005d..7d21654 100644
--- a/runtime/src/iree/hal/drivers/local_sync/CMakeLists.txt
+++ b/runtime/src/iree/hal/drivers/local_sync/CMakeLists.txt
@@ -25,12 +25,10 @@
     "sync_semaphore.c"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::arena
     iree::base::internal::cpu
     iree::base::internal::synchronization
-    iree::base::tracing
     iree::hal
     iree::hal::local
     iree::hal::local::executable_environment
diff --git a/runtime/src/iree/hal/drivers/local_sync/sync_device.c b/runtime/src/iree/hal/drivers/local_sync/sync_device.c
index f810851..4c9ae8a 100644
--- a/runtime/src/iree/hal/drivers/local_sync/sync_device.c
+++ b/runtime/src/iree/hal/drivers/local_sync/sync_device.c
@@ -12,7 +12,6 @@
 
 #include "iree/base/internal/arena.h"
 #include "iree/base/internal/cpu.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/local_sync/sync_event.h"
 #include "iree/hal/drivers/local_sync/sync_semaphore.h"
 #include "iree/hal/local/executable_environment.h"
diff --git a/runtime/src/iree/hal/drivers/local_sync/sync_driver.c b/runtime/src/iree/hal/drivers/local_sync/sync_driver.c
index 9f52ceb..fce04c1 100644
--- a/runtime/src/iree/hal/drivers/local_sync/sync_driver.c
+++ b/runtime/src/iree/hal/drivers/local_sync/sync_driver.c
@@ -9,8 +9,6 @@
 #include <stddef.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
-
 #define IREE_HAL_SYNC_DEVICE_ID_DEFAULT 0
 
 typedef struct iree_hal_sync_driver_t {
diff --git a/runtime/src/iree/hal/drivers/local_sync/sync_event.c b/runtime/src/iree/hal/drivers/local_sync/sync_event.c
index d2c7cd5..117f83f 100644
--- a/runtime/src/iree/hal/drivers/local_sync/sync_event.c
+++ b/runtime/src/iree/hal/drivers/local_sync/sync_event.c
@@ -8,8 +8,6 @@
 
 #include <stddef.h>
 
-#include "iree/base/tracing.h"
-
 typedef struct iree_hal_sync_event_t {
   iree_hal_resource_t resource;
   iree_allocator_t host_allocator;
diff --git a/runtime/src/iree/hal/drivers/local_sync/sync_semaphore.c b/runtime/src/iree/hal/drivers/local_sync/sync_semaphore.c
index 7dfd240..a5f1776 100644
--- a/runtime/src/iree/hal/drivers/local_sync/sync_semaphore.c
+++ b/runtime/src/iree/hal/drivers/local_sync/sync_semaphore.c
@@ -11,7 +11,6 @@
 #include <stddef.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/utils/semaphore_base.h"
 
 // Sentinel used the semaphore has failed and an error status is set.
diff --git a/runtime/src/iree/hal/drivers/local_task/BUILD.bazel b/runtime/src/iree/hal/drivers/local_task/BUILD.bazel
index 292f21f..4d6a930 100644
--- a/runtime/src/iree/hal/drivers/local_task/BUILD.bazel
+++ b/runtime/src/iree/hal/drivers/local_task/BUILD.bazel
@@ -37,8 +37,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:arena",
         "//runtime/src/iree/base/internal:cpu",
diff --git a/runtime/src/iree/hal/drivers/local_task/CMakeLists.txt b/runtime/src/iree/hal/drivers/local_task/CMakeLists.txt
index 92ccbf2..8b4340e 100644
--- a/runtime/src/iree/hal/drivers/local_task/CMakeLists.txt
+++ b/runtime/src/iree/hal/drivers/local_task/CMakeLists.txt
@@ -31,14 +31,12 @@
     "task_semaphore.c"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::arena
     iree::base::internal::cpu
     iree::base::internal::event_pool
     iree::base::internal::synchronization
     iree::base::internal::wait_handle
-    iree::base::tracing
     iree::hal
     iree::hal::local
     iree::hal::local::executable_environment
diff --git a/runtime/src/iree/hal/drivers/local_task/task_command_buffer.c b/runtime/src/iree/hal/drivers/local_task/task_command_buffer.c
index 28f3cc6..f8e84df 100644
--- a/runtime/src/iree/hal/drivers/local_task/task_command_buffer.c
+++ b/runtime/src/iree/hal/drivers/local_task/task_command_buffer.c
@@ -12,7 +12,6 @@
 #include <string.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/local/executable_environment.h"
 #include "iree/hal/local/executable_library.h"
 #include "iree/hal/local/local_executable.h"
diff --git a/runtime/src/iree/hal/drivers/local_task/task_device.c b/runtime/src/iree/hal/drivers/local_task/task_device.c
index 697870e..5f35d62 100644
--- a/runtime/src/iree/hal/drivers/local_task/task_device.c
+++ b/runtime/src/iree/hal/drivers/local_task/task_device.c
@@ -12,7 +12,6 @@
 
 #include "iree/base/internal/arena.h"
 #include "iree/base/internal/cpu.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/local_task/task_command_buffer.h"
 #include "iree/hal/drivers/local_task/task_event.h"
 #include "iree/hal/drivers/local_task/task_queue.h"
diff --git a/runtime/src/iree/hal/drivers/local_task/task_driver.c b/runtime/src/iree/hal/drivers/local_task/task_driver.c
index eb4c685..f96322c 100644
--- a/runtime/src/iree/hal/drivers/local_task/task_driver.c
+++ b/runtime/src/iree/hal/drivers/local_task/task_driver.c
@@ -9,8 +9,6 @@
 #include <stddef.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
-
 #define IREE_HAL_TASK_DEVICE_ID_DEFAULT 0
 
 typedef struct iree_hal_task_driver_t {
diff --git a/runtime/src/iree/hal/drivers/local_task/task_event.c b/runtime/src/iree/hal/drivers/local_task/task_event.c
index 3e2cb38..74e0879 100644
--- a/runtime/src/iree/hal/drivers/local_task/task_event.c
+++ b/runtime/src/iree/hal/drivers/local_task/task_event.c
@@ -8,8 +8,6 @@
 
 #include <stddef.h>
 
-#include "iree/base/tracing.h"
-
 typedef struct iree_hal_task_event_t {
   iree_hal_resource_t resource;
   iree_allocator_t host_allocator;
diff --git a/runtime/src/iree/hal/drivers/local_task/task_queue.c b/runtime/src/iree/hal/drivers/local_task/task_queue.c
index e6389dd..da4053b 100644
--- a/runtime/src/iree/hal/drivers/local_task/task_queue.c
+++ b/runtime/src/iree/hal/drivers/local_task/task_queue.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/local_task/task_command_buffer.h"
 #include "iree/hal/drivers/local_task/task_semaphore.h"
 #include "iree/task/submission.h"
diff --git a/runtime/src/iree/hal/drivers/local_task/task_semaphore.c b/runtime/src/iree/hal/drivers/local_task/task_semaphore.c
index 9d809fa..7a6728f 100644
--- a/runtime/src/iree/hal/drivers/local_task/task_semaphore.c
+++ b/runtime/src/iree/hal/drivers/local_task/task_semaphore.c
@@ -13,7 +13,6 @@
 
 #include "iree/base/internal/synchronization.h"
 #include "iree/base/internal/wait_handle.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/utils/semaphore_base.h"
 
 // Sentinel used the semaphore has failed and an error status is set.
diff --git a/runtime/src/iree/hal/drivers/vulkan/BUILD.bazel b/runtime/src/iree/hal/drivers/vulkan/BUILD.bazel
index 3077cbb..6275c55 100644
--- a/runtime/src/iree/hal/drivers/vulkan/BUILD.bazel
+++ b/runtime/src/iree/hal/drivers/vulkan/BUILD.bazel
@@ -68,8 +68,6 @@
     deps = [
         ":dynamic_symbols",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:arena",
         "//runtime/src/iree/base/internal:synchronization",
@@ -102,8 +100,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:dynamic_library",
         "//runtime/src/iree/hal/drivers/vulkan/util:ref_ptr",
         "@vulkan_headers",
diff --git a/runtime/src/iree/hal/drivers/vulkan/CMakeLists.txt b/runtime/src/iree/hal/drivers/vulkan/CMakeLists.txt
index 246e862..013f568 100644
--- a/runtime/src/iree/hal/drivers/vulkan/CMakeLists.txt
+++ b/runtime/src/iree/hal/drivers/vulkan/CMakeLists.txt
@@ -62,12 +62,10 @@
     ::dynamic_symbols
     Vulkan::Headers
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::arena
     iree::base::internal::flatcc::parsing
     iree::base::internal::synchronization
-    iree::base::tracing
     iree::hal
     iree::hal::drivers::vulkan::builtin
     iree::hal::drivers::vulkan::util::arena
@@ -94,9 +92,7 @@
   DEPS
     Vulkan::Headers
     iree::base
-    iree::base::core_headers
     iree::base::internal::dynamic_library
-    iree::base::tracing
     iree::hal::drivers::vulkan::util::ref_ptr
   PUBLIC
 )
diff --git a/runtime/src/iree/hal/drivers/vulkan/api.cc b/runtime/src/iree/hal/drivers/vulkan/api.cc
index 8662af9..658a3a6 100644
--- a/runtime/src/iree/hal/drivers/vulkan/api.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/api.cc
@@ -11,7 +11,6 @@
 #include <string>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbols.h"
 #include "iree/hal/drivers/vulkan/util/ref_ptr.h"
 
@@ -24,7 +23,7 @@
 IREE_API_EXPORT iree_status_t iree_hal_vulkan_syms_create(
     void* vkGetInstanceProcAddr_fn, iree_allocator_t host_allocator,
     iree_hal_vulkan_syms_t** out_syms) {
-  IREE_TRACE_SCOPE0("iree_hal_vulkan_syms_create");
+  IREE_TRACE_SCOPE_NAMED("iree_hal_vulkan_syms_create");
   IREE_ASSERT_ARGUMENT(out_syms);
   *out_syms = nullptr;
 
@@ -47,7 +46,7 @@
 
 IREE_API_EXPORT iree_status_t iree_hal_vulkan_syms_create_from_system_loader(
     iree_allocator_t host_allocator, iree_hal_vulkan_syms_t** out_syms) {
-  IREE_TRACE_SCOPE0("iree_hal_vulkan_syms_create_from_system_loader");
+  IREE_TRACE_SCOPE_NAMED("iree_hal_vulkan_syms_create_from_system_loader");
   IREE_ASSERT_ARGUMENT(out_syms);
   *out_syms = nullptr;
 
diff --git a/runtime/src/iree/hal/drivers/vulkan/builtin_executables.cc b/runtime/src/iree/hal/drivers/vulkan/builtin_executables.cc
index 7c434d7..b4faf57 100644
--- a/runtime/src/iree/hal/drivers/vulkan/builtin_executables.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/builtin_executables.cc
@@ -8,7 +8,6 @@
 
 #include <cstddef>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/builtin/builtin_shaders_spv.h"
 #include "iree/hal/drivers/vulkan/native_pipeline_layout.h"
 #include "iree/hal/drivers/vulkan/status_util.h"
diff --git a/runtime/src/iree/hal/drivers/vulkan/command_queue.h b/runtime/src/iree/hal/drivers/vulkan/command_queue.h
index a9fec01..051f873 100644
--- a/runtime/src/iree/hal/drivers/vulkan/command_queue.h
+++ b/runtime/src/iree/hal/drivers/vulkan/command_queue.h
@@ -23,7 +23,7 @@
 class CommandQueue {
  public:
   virtual ~CommandQueue() {
-    IREE_TRACE_SCOPE0("CommandQueue::dtor");
+    IREE_TRACE_SCOPE_NAMED("CommandQueue::dtor");
     iree_slim_mutex_lock(&queue_mutex_);
     syms()->vkQueueWaitIdle(queue_);
     iree_slim_mutex_unlock(&queue_mutex_);
diff --git a/runtime/src/iree/hal/drivers/vulkan/debug_reporter.cc b/runtime/src/iree/hal/drivers/vulkan/debug_reporter.cc
index 46175f6..aee9455 100644
--- a/runtime/src/iree/hal/drivers/vulkan/debug_reporter.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/debug_reporter.cc
@@ -9,7 +9,6 @@
 #include <cstddef>
 #include <cstdio>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/status_util.h"
 
 struct iree_hal_vulkan_debug_reporter_t {
diff --git a/runtime/src/iree/hal/drivers/vulkan/descriptor_pool_cache.cc b/runtime/src/iree/hal/drivers/vulkan/descriptor_pool_cache.cc
index 63cdff4..196be5d 100644
--- a/runtime/src/iree/hal/drivers/vulkan/descriptor_pool_cache.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/descriptor_pool_cache.cc
@@ -10,7 +10,6 @@
 #include <cstdint>
 #include <ostream>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/status_util.h"
 
 namespace iree {
@@ -31,7 +30,7 @@
 }
 
 iree_status_t DescriptorSetGroup::Reset() {
-  IREE_TRACE_SCOPE0("DescriptorSetGroup::Reset");
+  IREE_TRACE_SCOPE_NAMED("DescriptorSetGroup::Reset");
 
   if (descriptor_pool_cache_ != nullptr) {
     IREE_RETURN_IF_ERROR(
@@ -48,7 +47,7 @@
 iree_status_t DescriptorPoolCache::AcquireDescriptorPool(
     VkDescriptorType descriptor_type, int max_descriptor_count,
     DescriptorPool* out_descriptor_pool) {
-  IREE_TRACE_SCOPE0("DescriptorPoolCache::AcquireDescriptorPool");
+  IREE_TRACE_SCOPE_NAMED("DescriptorPoolCache::AcquireDescriptorPool");
 
   // TODO(benvanik): lookup in cache.
 
@@ -78,7 +77,7 @@
 
 iree_status_t DescriptorPoolCache::ReleaseDescriptorPools(
     const std::vector<DescriptorPool>& descriptor_pools) {
-  IREE_TRACE_SCOPE0("DescriptorPoolCache::ReleaseDescriptorPools");
+  IREE_TRACE_SCOPE_NAMED("DescriptorPoolCache::ReleaseDescriptorPools");
 
   for (const auto& descriptor_pool : descriptor_pools) {
     // Always reset immediately. We could do this on allocation instead however
diff --git a/runtime/src/iree/hal/drivers/vulkan/descriptor_set_arena.cc b/runtime/src/iree/hal/drivers/vulkan/descriptor_set_arena.cc
index 381b7af..89f29a9 100644
--- a/runtime/src/iree/hal/drivers/vulkan/descriptor_set_arena.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/descriptor_set_arena.cc
@@ -11,7 +11,6 @@
 #include <utility>
 
 #include "iree/base/internal/math.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/extensibility_util.h"
 #include "iree/hal/drivers/vulkan/native_pipeline_layout.h"
 #include "iree/hal/drivers/vulkan/status_util.h"
@@ -130,7 +129,7 @@
     return iree_ok_status();
   }
 
-  IREE_TRACE_SCOPE0("DescriptorSetArena::BindDescriptorSet");
+  IREE_TRACE_SCOPE_NAMED("DescriptorSetArena::BindDescriptorSet");
 
   auto* set_layout =
       iree_hal_vulkan_native_pipeline_layout_set(pipeline_layout, set);
@@ -220,7 +219,7 @@
     VkCommandBuffer command_buffer, iree_hal_pipeline_layout_t* pipeline_layout,
     uint32_t set, iree_host_size_t binding_count,
     const iree_hal_descriptor_set_binding_t* bindings) {
-  IREE_TRACE_SCOPE0("DescriptorSetArena::PushDescriptorSet");
+  IREE_TRACE_SCOPE_NAMED("DescriptorSetArena::PushDescriptorSet");
   VkPipelineLayout device_pipeline_layout =
       iree_hal_vulkan_native_pipeline_layout_handle(pipeline_layout);
 
@@ -239,7 +238,7 @@
 }
 
 DescriptorSetGroup DescriptorSetArena::Flush() {
-  IREE_TRACE_SCOPE0("DescriptorSetArena::Flush");
+  IREE_TRACE_SCOPE_NAMED("DescriptorSetArena::Flush");
 
   if (used_descriptor_pools_.empty()) {
     // No resources to free.
diff --git a/runtime/src/iree/hal/drivers/vulkan/direct_command_buffer.cc b/runtime/src/iree/hal/drivers/vulkan/direct_command_buffer.cc
index d04985b..9e773a1 100644
--- a/runtime/src/iree/hal/drivers/vulkan/direct_command_buffer.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/direct_command_buffer.cc
@@ -12,7 +12,6 @@
 #include "iree/base/api.h"
 #include "iree/base/internal/inline_array.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/descriptor_set_arena.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbols.h"
 #include "iree/hal/drivers/vulkan/native_event.h"
diff --git a/runtime/src/iree/hal/drivers/vulkan/direct_command_queue.cc b/runtime/src/iree/hal/drivers/vulkan/direct_command_queue.cc
index 7644133..5c6d449 100644
--- a/runtime/src/iree/hal/drivers/vulkan/direct_command_queue.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/direct_command_queue.cc
@@ -8,7 +8,6 @@
 
 #include <cstdint>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/direct_command_buffer.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbols.h"
 #include "iree/hal/drivers/vulkan/native_semaphore.h"
@@ -94,7 +93,7 @@
 
 iree_status_t DirectCommandQueue::Submit(
     iree_host_size_t batch_count, const iree_hal_submission_batch_t* batches) {
-  IREE_TRACE_SCOPE0("DirectCommandQueue::Submit");
+  IREE_TRACE_SCOPE_NAMED("DirectCommandQueue::Submit");
 
   // Map the submission batches to VkSubmitInfos.
   // Note that we must keep all arrays referenced alive until submission
@@ -124,7 +123,7 @@
   if (deadline_ns == IREE_TIME_INFINITE_FUTURE) {
     // Fast path for using vkQueueWaitIdle, which is usually cheaper (as it
     // requires fewer calls into the driver).
-    IREE_TRACE_SCOPE0("DirectCommandQueue::WaitIdle#vkQueueWaitIdle");
+    IREE_TRACE_SCOPE_NAMED("DirectCommandQueue::WaitIdle#vkQueueWaitIdle");
     iree_slim_mutex_lock(&queue_mutex_);
     iree_status_t status =
         VK_RESULT_TO_STATUS(syms()->vkQueueWaitIdle(queue_), "vkQueueWaitIdle");
@@ -133,7 +132,7 @@
     return status;
   }
 
-  IREE_TRACE_SCOPE0("DirectCommandQueue::WaitIdle#Fence");
+  IREE_TRACE_SCOPE_NAMED("DirectCommandQueue::WaitIdle#Fence");
 
   // Create a new fence just for this wait. This keeps us thread-safe as the
   // behavior of wait+reset is racey.
diff --git a/runtime/src/iree/hal/drivers/vulkan/dynamic_symbols.cc b/runtime/src/iree/hal/drivers/vulkan/dynamic_symbols.cc
index f3225a5..9c04039 100644
--- a/runtime/src/iree/hal/drivers/vulkan/dynamic_symbols.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/dynamic_symbols.cc
@@ -11,8 +11,6 @@
 #include <type_traits>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbol_tables.h"
 
 namespace iree {
@@ -144,7 +142,7 @@
 // static
 iree_status_t DynamicSymbols::Create(const GetProcAddrFn& get_proc_addr,
                                      ref_ptr<DynamicSymbols>* out_syms) {
-  IREE_TRACE_SCOPE0("DynamicSymbols::Create");
+  IREE_TRACE_SCOPE_NAMED("DynamicSymbols::Create");
 
   auto syms = make_ref<DynamicSymbols>();
   IREE_RETURN_IF_ERROR(ResolveFunctions(syms.get(), get_proc_addr));
@@ -157,7 +155,7 @@
 // static
 iree_status_t DynamicSymbols::CreateFromSystemLoader(
     ref_ptr<DynamicSymbols>* out_syms) {
-  IREE_TRACE_SCOPE0("DynamicSymbols::CreateFromSystemLoader");
+  IREE_TRACE_SCOPE_NAMED("DynamicSymbols::CreateFromSystemLoader");
 
   iree_dynamic_library_t* loader_library = NULL;
   iree_status_t status = iree_dynamic_library_load_from_files(
@@ -193,13 +191,13 @@
 }
 
 iree_status_t DynamicSymbols::LoadFromInstance(VkInstance instance) {
-  IREE_TRACE_SCOPE0("DynamicSymbols::LoadFromInstance");
+  IREE_TRACE_SCOPE_NAMED("DynamicSymbols::LoadFromInstance");
   return LoadFromDevice(instance, VK_NULL_HANDLE);
 }
 
 iree_status_t DynamicSymbols::LoadFromDevice(VkInstance instance,
                                              VkDevice device) {
-  IREE_TRACE_SCOPE0("DynamicSymbols::LoadFromDevice");
+  IREE_TRACE_SCOPE_NAMED("DynamicSymbols::LoadFromDevice");
 
   if (!instance) {
     return iree_make_status(IREE_STATUS_INVALID_ARGUMENT,
diff --git a/runtime/src/iree/hal/drivers/vulkan/native_event.cc b/runtime/src/iree/hal/drivers/vulkan/native_event.cc
index 1c9a204..118d837 100644
--- a/runtime/src/iree/hal/drivers/vulkan/native_event.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/native_event.cc
@@ -9,7 +9,6 @@
 #include <cstddef>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbols.h"
 #include "iree/hal/drivers/vulkan/status_util.h"
 #include "iree/hal/drivers/vulkan/util/ref_ptr.h"
diff --git a/runtime/src/iree/hal/drivers/vulkan/native_executable.cc b/runtime/src/iree/hal/drivers/vulkan/native_executable.cc
index 3aeaec8..7aabf5b 100644
--- a/runtime/src/iree/hal/drivers/vulkan/native_executable.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/native_executable.cc
@@ -11,7 +11,6 @@
 #include <cstring>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbol_tables.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbols.h"
 #include "iree/hal/drivers/vulkan/handle_util.h"
diff --git a/runtime/src/iree/hal/drivers/vulkan/native_pipeline_layout.cc b/runtime/src/iree/hal/drivers/vulkan/native_pipeline_layout.cc
index 13ca650..958376e 100644
--- a/runtime/src/iree/hal/drivers/vulkan/native_pipeline_layout.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/native_pipeline_layout.cc
@@ -10,7 +10,6 @@
 #include <cstdint>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbol_tables.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbols.h"
 #include "iree/hal/drivers/vulkan/extensibility_util.h"
diff --git a/runtime/src/iree/hal/drivers/vulkan/native_semaphore.cc b/runtime/src/iree/hal/drivers/vulkan/native_semaphore.cc
index 6d2e551..c227c21 100644
--- a/runtime/src/iree/hal/drivers/vulkan/native_semaphore.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/native_semaphore.cc
@@ -9,7 +9,6 @@
 #include <cstddef>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbol_tables.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbols.h"
 #include "iree/hal/drivers/vulkan/status_util.h"
diff --git a/runtime/src/iree/hal/drivers/vulkan/nop_executable_cache.cc b/runtime/src/iree/hal/drivers/vulkan/nop_executable_cache.cc
index daeb5bf..f711cbb 100644
--- a/runtime/src/iree/hal/drivers/vulkan/nop_executable_cache.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/nop_executable_cache.cc
@@ -9,7 +9,6 @@
 #include <cstddef>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbol_tables.h"
 #include "iree/hal/drivers/vulkan/native_executable.h"
 
diff --git a/runtime/src/iree/hal/drivers/vulkan/registration/BUILD.bazel b/runtime/src/iree/hal/drivers/vulkan/registration/BUILD.bazel
index a47a7db..c67326f 100644
--- a/runtime/src/iree/hal/drivers/vulkan/registration/BUILD.bazel
+++ b/runtime/src/iree/hal/drivers/vulkan/registration/BUILD.bazel
@@ -21,8 +21,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/drivers/vulkan",
diff --git a/runtime/src/iree/hal/drivers/vulkan/registration/CMakeLists.txt b/runtime/src/iree/hal/drivers/vulkan/registration/CMakeLists.txt
index 75bf4c6..3e84bc4 100644
--- a/runtime/src/iree/hal/drivers/vulkan/registration/CMakeLists.txt
+++ b/runtime/src/iree/hal/drivers/vulkan/registration/CMakeLists.txt
@@ -19,9 +19,7 @@
     "driver_module.cc"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal::flags
-    iree::base::tracing
     iree::hal
     iree::hal::drivers::vulkan
   DEFINES
diff --git a/runtime/src/iree/hal/drivers/vulkan/registration/driver_module.cc b/runtime/src/iree/hal/drivers/vulkan/registration/driver_module.cc
index 74e83de..514d302 100644
--- a/runtime/src/iree/hal/drivers/vulkan/registration/driver_module.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/registration/driver_module.cc
@@ -11,7 +11,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/api.h"
 
 #ifndef NDEBUG
diff --git a/runtime/src/iree/hal/drivers/vulkan/tracing.cc b/runtime/src/iree/hal/drivers/vulkan/tracing.cc
index 137af73..64f2e84 100644
--- a/runtime/src/iree/hal/drivers/vulkan/tracing.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/tracing.cc
@@ -9,7 +9,6 @@
 #if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_INSTRUMENTATION
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 
 // Total number of queries the per-queue query pool will contain. This
 // translates to the maximum number of outstanding queries before collection is
diff --git a/runtime/src/iree/hal/drivers/vulkan/tracing.h b/runtime/src/iree/hal/drivers/vulkan/tracing.h
index a1e98ee..d8e7383 100644
--- a/runtime/src/iree/hal/drivers/vulkan/tracing.h
+++ b/runtime/src/iree/hal/drivers/vulkan/tracing.h
@@ -14,7 +14,6 @@
 #include <stddef.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/handle_util.h"
 
 #ifdef __cplusplus
diff --git a/runtime/src/iree/hal/drivers/vulkan/vma_allocator.cc b/runtime/src/iree/hal/drivers/vulkan/vma_allocator.cc
index a99767c..ec79750 100644
--- a/runtime/src/iree/hal/drivers/vulkan/vma_allocator.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/vma_allocator.cc
@@ -11,7 +11,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/dynamic_symbols.h"
 #include "iree/hal/drivers/vulkan/status_util.h"
 #include "iree/hal/drivers/vulkan/util/ref_ptr.h"
diff --git a/runtime/src/iree/hal/drivers/vulkan/vma_buffer.cc b/runtime/src/iree/hal/drivers/vulkan/vma_buffer.cc
index 3ba1f17..ab96975 100644
--- a/runtime/src/iree/hal/drivers/vulkan/vma_buffer.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/vma_buffer.cc
@@ -11,7 +11,6 @@
 #include <cstring>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/status_util.h"
 
 #if IREE_TRACING_FEATURES & IREE_TRACING_FEATURE_ALLOCATION_TRACKING
diff --git a/runtime/src/iree/hal/drivers/vulkan/vulkan_device.cc b/runtime/src/iree/hal/drivers/vulkan/vulkan_device.cc
index 593e02d..cad00c0 100644
--- a/runtime/src/iree/hal/drivers/vulkan/vulkan_device.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/vulkan_device.cc
@@ -13,7 +13,6 @@
 
 #include "iree/base/internal/arena.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/vulkan/api.h"
 #include "iree/hal/drivers/vulkan/builtin_executables.h"
 #include "iree/hal/drivers/vulkan/command_queue.h"
diff --git a/runtime/src/iree/hal/drivers/vulkan/vulkan_driver.cc b/runtime/src/iree/hal/drivers/vulkan/vulkan_driver.cc
index 7c57a08..10c159a 100644
--- a/runtime/src/iree/hal/drivers/vulkan/vulkan_driver.cc
+++ b/runtime/src/iree/hal/drivers/vulkan/vulkan_driver.cc
@@ -10,7 +10,6 @@
 #include <cstring>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/drivers/vulkan/api.h"
 #include "iree/hal/drivers/vulkan/debug_reporter.h"
diff --git a/runtime/src/iree/hal/drivers/vulkan/vulkan_headers.h b/runtime/src/iree/hal/drivers/vulkan/vulkan_headers.h
index a105cab..ac0bece 100644
--- a/runtime/src/iree/hal/drivers/vulkan/vulkan_headers.h
+++ b/runtime/src/iree/hal/drivers/vulkan/vulkan_headers.h
@@ -7,7 +7,7 @@
 #ifndef IREE_HAL_DRIVERS_VULKAN_VULKAN_HEADERS_H_
 #define IREE_HAL_DRIVERS_VULKAN_VULKAN_HEADERS_H_
 
-#include "iree/base/target_platform.h"
+#include "iree/base/api.h"
 
 // We exclusively use Vulkan via queried function pointers. To ensure that there
 // are no accidental calls to the linker-loaded implicit functions we just
diff --git a/runtime/src/iree/hal/event.c b/runtime/src/iree/hal/event.c
index 95bda1f..51b04e6 100644
--- a/runtime/src/iree/hal/event.c
+++ b/runtime/src/iree/hal/event.c
@@ -8,7 +8,6 @@
 
 #include <stddef.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/detail.h"
 #include "iree/hal/device.h"
 #include "iree/hal/resource.h"
diff --git a/runtime/src/iree/hal/executable_cache.c b/runtime/src/iree/hal/executable_cache.c
index 80b1ab1..abd3b67 100644
--- a/runtime/src/iree/hal/executable_cache.c
+++ b/runtime/src/iree/hal/executable_cache.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/detail.h"
 #include "iree/hal/device.h"
 #include "iree/hal/resource.h"
diff --git a/runtime/src/iree/hal/fence.c b/runtime/src/iree/hal/fence.c
index 5ce0cc8..a65adbd 100644
--- a/runtime/src/iree/hal/fence.c
+++ b/runtime/src/iree/hal/fence.c
@@ -8,8 +8,6 @@
 
 #include <stddef.h>
 
-#include "iree/base/tracing.h"
-
 //===----------------------------------------------------------------------===//
 // iree_hal_fence_t
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/hal/local/BUILD.bazel b/runtime/src/iree/hal/local/BUILD.bazel
index dad2dda..66ccfd6 100644
--- a/runtime/src/iree/hal/local/BUILD.bazel
+++ b/runtime/src/iree/hal/local/BUILD.bazel
@@ -23,7 +23,6 @@
     deps = [
         ":executable_library",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:cpu",
         "//runtime/src/iree/hal",
     ],
@@ -42,7 +41,6 @@
         ":executable_library",
         ":local",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:file_io",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
@@ -63,7 +61,6 @@
         ":executable_environment",
         ":executable_library",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
         "//runtime/src/iree/base/internal:cpu",
     ],
 )
@@ -77,7 +74,6 @@
         ":executable_library",
         ":executable_loader",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/hal",
     ],
@@ -97,7 +93,6 @@
         ":executable_environment",
         ":executable_library",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/hal",
     ],
@@ -116,7 +111,6 @@
         ":executable_loader",
         ":executable_plugin",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:synchronization",
         "//runtime/src/iree/hal",
@@ -141,8 +135,6 @@
         ":executable_environment",
         ":executable_library",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:cpu",
         "//runtime/src/iree/base/internal:fpu_state",
diff --git a/runtime/src/iree/hal/local/CMakeLists.txt b/runtime/src/iree/hal/local/CMakeLists.txt
index 8d59ca7..2a2c657 100644
--- a/runtime/src/iree/hal/local/CMakeLists.txt
+++ b/runtime/src/iree/hal/local/CMakeLists.txt
@@ -21,7 +21,6 @@
     ::executable_library
     iree::base
     iree::base::internal::cpu
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -48,7 +47,6 @@
     iree::base
     iree::base::internal::file_io
     iree::base::internal::flags
-    iree::base::tracing
     iree::hal
     iree::hal::local::loaders::registration
     iree::hal::local::plugins::registration
@@ -67,7 +65,6 @@
     ::executable_environment
     ::executable_library
     iree::base
-    iree::base::core_headers
     iree::base::internal::cpu
 )
 
@@ -84,7 +81,6 @@
     ::executable_loader
     iree::base
     iree::base::internal
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -103,7 +99,6 @@
     ::executable_library
     iree::base
     iree::base::internal
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -131,7 +126,6 @@
     iree::base
     iree::base::internal
     iree::base::internal::synchronization
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -153,11 +147,9 @@
     ::executable_environment
     ::executable_library
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::cpu
     iree::base::internal::fpu_state
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
diff --git a/runtime/src/iree/hal/local/elf/BUILD.bazel b/runtime/src/iree/hal/local/elf/BUILD.bazel
index 337dbe3..fe722d8 100644
--- a/runtime/src/iree/hal/local/elf/BUILD.bazel
+++ b/runtime/src/iree/hal/local/elf/BUILD.bazel
@@ -41,8 +41,6 @@
         ":arch",
         ":platform",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
     ],
 )
 
@@ -52,7 +50,6 @@
     deps = [
         ":elf_module",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
         "//runtime/src/iree/base/internal:cpu",
         "//runtime/src/iree/hal/local:executable_environment",
         "//runtime/src/iree/hal/local:executable_library",
@@ -84,8 +81,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
     ],
 )
 
@@ -102,7 +97,5 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
     ],
 )
diff --git a/runtime/src/iree/hal/local/elf/CMakeLists.txt b/runtime/src/iree/hal/local/elf/CMakeLists.txt
index 569277c..34ee52b 100644
--- a/runtime/src/iree/hal/local/elf/CMakeLists.txt
+++ b/runtime/src/iree/hal/local/elf/CMakeLists.txt
@@ -29,8 +29,6 @@
     ::arch
     ::platform
     iree::base
-    iree::base::core_headers
-    iree::base::tracing
   PUBLIC
 )
 
@@ -42,7 +40,6 @@
   DEPS
     ::elf_module
     iree::base
-    iree::base::core_headers
     iree::base::internal::cpu
     iree::hal::local::elf::testdata::elementwise_mul
     iree::hal::local::executable_environment
@@ -70,8 +67,6 @@
     "elf_types.h"
   DEPS
     iree::base
-    iree::base::core_headers
-    iree::base::tracing
   PUBLIC
 )
 
@@ -87,8 +82,6 @@
     "platform/windows.c"
   DEPS
     iree::base
-    iree::base::core_headers
-    iree::base::tracing
   PUBLIC
 )
 
diff --git a/runtime/src/iree/hal/local/elf/arch/arm_32.c b/runtime/src/iree/hal/local/elf/arch/arm_32.c
index 1588af3..3cd3ba3 100644
--- a/runtime/src/iree/hal/local/elf/arch/arm_32.c
+++ b/runtime/src/iree/hal/local/elf/arch/arm_32.c
@@ -9,7 +9,6 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 #include "iree/hal/local/elf/arch.h"
 #include "iree/hal/local/elf/elf_types.h"
 
diff --git a/runtime/src/iree/hal/local/elf/arch/arm_64.c b/runtime/src/iree/hal/local/elf/arch/arm_64.c
index 204b6c4..1b0bf29 100644
--- a/runtime/src/iree/hal/local/elf/arch/arm_64.c
+++ b/runtime/src/iree/hal/local/elf/arch/arm_64.c
@@ -9,7 +9,6 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 #include "iree/hal/local/elf/arch.h"
 #include "iree/hal/local/elf/elf_types.h"
 
diff --git a/runtime/src/iree/hal/local/elf/arch/riscv.c b/runtime/src/iree/hal/local/elf/arch/riscv.c
index acf9abb..e8ad89a 100644
--- a/runtime/src/iree/hal/local/elf/arch/riscv.c
+++ b/runtime/src/iree/hal/local/elf/arch/riscv.c
@@ -9,7 +9,6 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 #include "iree/hal/local/elf/arch.h"
 #include "iree/hal/local/elf/elf_types.h"
 
diff --git a/runtime/src/iree/hal/local/elf/arch/x86_32.c b/runtime/src/iree/hal/local/elf/arch/x86_32.c
index d7f5750..58c7211 100644
--- a/runtime/src/iree/hal/local/elf/arch/x86_32.c
+++ b/runtime/src/iree/hal/local/elf/arch/x86_32.c
@@ -9,7 +9,6 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 #include "iree/hal/local/elf/arch.h"
 #include "iree/hal/local/elf/elf_types.h"
 
diff --git a/runtime/src/iree/hal/local/elf/arch/x86_64.c b/runtime/src/iree/hal/local/elf/arch/x86_64.c
index 251e7b8..1a9a94c 100644
--- a/runtime/src/iree/hal/local/elf/arch/x86_64.c
+++ b/runtime/src/iree/hal/local/elf/arch/x86_64.c
@@ -9,7 +9,6 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 #include "iree/hal/local/elf/arch.h"
 #include "iree/hal/local/elf/elf_types.h"
 
diff --git a/runtime/src/iree/hal/local/elf/elf_module.c b/runtime/src/iree/hal/local/elf/elf_module.c
index c75c327..eff2632 100644
--- a/runtime/src/iree/hal/local/elf/elf_module.c
+++ b/runtime/src/iree/hal/local/elf/elf_module.c
@@ -9,8 +9,6 @@
 #include <inttypes.h>
 #include <string.h>
 
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/local/elf/arch.h"
 #include "iree/hal/local/elf/fatelf.h"
 #include "iree/hal/local/elf/platform.h"
diff --git a/runtime/src/iree/hal/local/elf/elf_module_test_main.c b/runtime/src/iree/hal/local/elf/elf_module_test_main.c
index 7c7790e..7682e13 100644
--- a/runtime/src/iree/hal/local/elf/elf_module_test_main.c
+++ b/runtime/src/iree/hal/local/elf/elf_module_test_main.c
@@ -6,7 +6,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/cpu.h"
-#include "iree/base/target_platform.h"
 #include "iree/hal/local/elf/elf_module.h"
 #include "iree/hal/local/executable_environment.h"
 #include "iree/hal/local/executable_library.h"
diff --git a/runtime/src/iree/hal/local/elf/elf_types.h b/runtime/src/iree/hal/local/elf/elf_types.h
index 7b350bb..4a9041c 100644
--- a/runtime/src/iree/hal/local/elf/elf_types.h
+++ b/runtime/src/iree/hal/local/elf/elf_types.h
@@ -10,7 +10,6 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
 
 // This file contains the ELF data structures we use in our runtime linker and
 // the definitions to support them. The structure definitions are taken from
diff --git a/runtime/src/iree/hal/local/elf/fatelf.c b/runtime/src/iree/hal/local/elf/fatelf.c
index 2d59bb0..dd5352e 100644
--- a/runtime/src/iree/hal/local/elf/fatelf.c
+++ b/runtime/src/iree/hal/local/elf/fatelf.c
@@ -6,7 +6,6 @@
 
 #include "iree/hal/local/elf/fatelf.h"
 
-#include "iree/base/target_platform.h"
 #include "iree/hal/local/elf/arch.h"
 
 iree_status_t iree_fatelf_select(iree_const_byte_span_t file_data,
diff --git a/runtime/src/iree/hal/local/elf/platform/apple.c b/runtime/src/iree/hal/local/elf/platform/apple.c
index 65b6544..08f3bfc 100644
--- a/runtime/src/iree/hal/local/elf/platform/apple.c
+++ b/runtime/src/iree/hal/local/elf/platform/apple.c
@@ -4,8 +4,6 @@
 // See https://llvm.org/LICENSE.txt for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/local/elf/platform.h"
 
 #if defined(IREE_PLATFORM_APPLE)
diff --git a/runtime/src/iree/hal/local/elf/platform/generic.c b/runtime/src/iree/hal/local/elf/platform/generic.c
index d676cda..36e789b 100644
--- a/runtime/src/iree/hal/local/elf/platform/generic.c
+++ b/runtime/src/iree/hal/local/elf/platform/generic.c
@@ -4,8 +4,6 @@
 // See https://llvm.org/LICENSE.txt for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/local/elf/platform.h"
 
 #if defined(IREE_PLATFORM_GENERIC)
diff --git a/runtime/src/iree/hal/local/elf/platform/linux.c b/runtime/src/iree/hal/local/elf/platform/linux.c
index 7fb00d4..6f4e6f3 100644
--- a/runtime/src/iree/hal/local/elf/platform/linux.c
+++ b/runtime/src/iree/hal/local/elf/platform/linux.c
@@ -4,8 +4,6 @@
 // See https://llvm.org/LICENSE.txt for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/local/elf/platform.h"
 
 #if defined(IREE_PLATFORM_ANDROID) || defined(IREE_PLATFORM_LINUX)
diff --git a/runtime/src/iree/hal/local/elf/platform/windows.c b/runtime/src/iree/hal/local/elf/platform/windows.c
index 1bf079b..8a00ead 100644
--- a/runtime/src/iree/hal/local/elf/platform/windows.c
+++ b/runtime/src/iree/hal/local/elf/platform/windows.c
@@ -4,9 +4,6 @@
 // See https://llvm.org/LICENSE.txt for license information.
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
-#include "iree/base/api.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/local/elf/platform.h"
 
 #if defined(IREE_PLATFORM_WINDOWS)
diff --git a/runtime/src/iree/hal/local/executable_environment.c b/runtime/src/iree/hal/local/executable_environment.c
index a33dc23..3d6125a 100644
--- a/runtime/src/iree/hal/local/executable_environment.c
+++ b/runtime/src/iree/hal/local/executable_environment.c
@@ -7,7 +7,6 @@
 #include "iree/hal/local/executable_environment.h"
 
 #include "iree/base/internal/cpu.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // iree_hal_executable_environment_*_t
diff --git a/runtime/src/iree/hal/local/executable_library_benchmark.c b/runtime/src/iree/hal/local/executable_library_benchmark.c
index e2419b7..2a24e6e 100644
--- a/runtime/src/iree/hal/local/executable_library_benchmark.c
+++ b/runtime/src/iree/hal/local/executable_library_benchmark.c
@@ -12,7 +12,6 @@
 #include "iree/base/api.h"
 #include "iree/base/internal/file_io.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/local/executable_library.h"
 #include "iree/hal/local/executable_loader.h"
diff --git a/runtime/src/iree/hal/local/executable_library_util.h b/runtime/src/iree/hal/local/executable_library_util.h
index 8f1c8bb..16993aa 100644
--- a/runtime/src/iree/hal/local/executable_library_util.h
+++ b/runtime/src/iree/hal/local/executable_library_util.h
@@ -8,7 +8,6 @@
 #define IREE_HAL_LOCAL_EXECUTABLE_LIBRARY_UTIL_H_
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/local/executable_library.h"
 #include "iree/hal/local/executable_loader.h"
diff --git a/runtime/src/iree/hal/local/executable_loader.c b/runtime/src/iree/hal/local/executable_loader.c
index 3b0e51b..c92b32d 100644
--- a/runtime/src/iree/hal/local/executable_loader.c
+++ b/runtime/src/iree/hal/local/executable_loader.c
@@ -6,8 +6,6 @@
 
 #include "iree/hal/local/executable_loader.h"
 
-#include "iree/base/tracing.h"
-
 iree_status_t iree_hal_executable_import_provider_try_resolve(
     const iree_hal_executable_import_provider_t import_provider,
     iree_host_size_t count, const char* const* symbol_names, void** out_fn_ptrs,
diff --git a/runtime/src/iree/hal/local/executable_plugin_manager.c b/runtime/src/iree/hal/local/executable_plugin_manager.c
index 836c3f9..25cd78e 100644
--- a/runtime/src/iree/hal/local/executable_plugin_manager.c
+++ b/runtime/src/iree/hal/local/executable_plugin_manager.c
@@ -7,7 +7,6 @@
 #include "iree/hal/local/executable_plugin_manager.h"
 
 #include "iree/base/internal/synchronization.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // Plugin API compatibility checks
diff --git a/runtime/src/iree/hal/local/inline_command_buffer.c b/runtime/src/iree/hal/local/inline_command_buffer.c
index 88a18ae..cbcf7a0 100644
--- a/runtime/src/iree/hal/local/inline_command_buffer.c
+++ b/runtime/src/iree/hal/local/inline_command_buffer.c
@@ -14,7 +14,6 @@
 #include "iree/base/internal/cpu.h"
 #include "iree/base/internal/fpu_state.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/local/executable_library.h"
 #include "iree/hal/local/local_executable.h"
 #include "iree/hal/local/local_pipeline_layout.h"
diff --git a/runtime/src/iree/hal/local/loaders/BUILD.bazel b/runtime/src/iree/hal/local/loaders/BUILD.bazel
index 52a8435..8c5ee4d 100644
--- a/runtime/src/iree/hal/local/loaders/BUILD.bazel
+++ b/runtime/src/iree/hal/local/loaders/BUILD.bazel
@@ -28,8 +28,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/local:executable_library",
         "//runtime/src/iree/hal/local:executable_library_util",
@@ -55,7 +53,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/local:executable_environment",
         "//runtime/src/iree/hal/local:executable_library",
@@ -80,8 +77,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:dynamic_library",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/local:executable_library",
@@ -114,7 +109,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/local:executable_loader",
         "//runtime/src/iree/modules/vmvx",
diff --git a/runtime/src/iree/hal/local/loaders/CMakeLists.txt b/runtime/src/iree/hal/local/loaders/CMakeLists.txt
index dbca2c4..b3cca1a 100644
--- a/runtime/src/iree/hal/local/loaders/CMakeLists.txt
+++ b/runtime/src/iree/hal/local/loaders/CMakeLists.txt
@@ -21,8 +21,6 @@
     "embedded_elf_loader.c"
   DEPS
     iree::base
-    iree::base::core_headers
-    iree::base::tracing
     iree::hal
     iree::hal::local::elf::elf_module
     iree::hal::local::executable_library
@@ -45,7 +43,6 @@
     "static_library_loader.c"
   DEPS
     iree::base
-    iree::base::tracing
     iree::hal
     iree::hal::local::executable_environment
     iree::hal::local::executable_library
@@ -67,9 +64,7 @@
     "system_library_loader.c"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal::dynamic_library
-    iree::base::tracing
     iree::hal
     iree::hal::local::executable_library
     iree::hal::local::executable_library_util
@@ -93,7 +88,6 @@
     "vmvx_module_loader.c"
   DEPS
     iree::base
-    iree::base::tracing
     iree::hal
     iree::hal::local::executable_loader
     iree::modules::vmvx
diff --git a/runtime/src/iree/hal/local/loaders/embedded_elf_loader.c b/runtime/src/iree/hal/local/loaders/embedded_elf_loader.c
index a042dbf..e87b428 100644
--- a/runtime/src/iree/hal/local/loaders/embedded_elf_loader.c
+++ b/runtime/src/iree/hal/local/loaders/embedded_elf_loader.c
@@ -10,7 +10,6 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/local/elf/elf_module.h"
 #include "iree/hal/local/executable_library.h"
diff --git a/runtime/src/iree/hal/local/loaders/static_library_loader.c b/runtime/src/iree/hal/local/loaders/static_library_loader.c
index 14184c5..bfce0c3 100644
--- a/runtime/src/iree/hal/local/loaders/static_library_loader.c
+++ b/runtime/src/iree/hal/local/loaders/static_library_loader.c
@@ -11,7 +11,6 @@
 #include <stdint.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/local/executable_environment.h"
 #include "iree/hal/local/executable_library_util.h"
diff --git a/runtime/src/iree/hal/local/loaders/system_library_loader.c b/runtime/src/iree/hal/local/loaders/system_library_loader.c
index ed6be14..5082093 100644
--- a/runtime/src/iree/hal/local/loaders/system_library_loader.c
+++ b/runtime/src/iree/hal/local/loaders/system_library_loader.c
@@ -11,7 +11,6 @@
 #include <stdint.h>
 
 #include "iree/base/internal/dynamic_library.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/local/executable_library.h"
 #include "iree/hal/local/executable_library_util.h"
diff --git a/runtime/src/iree/hal/local/loaders/vmvx_module_loader.c b/runtime/src/iree/hal/local/loaders/vmvx_module_loader.c
index 74d062c..bfb5441 100644
--- a/runtime/src/iree/hal/local/loaders/vmvx_module_loader.c
+++ b/runtime/src/iree/hal/local/loaders/vmvx_module_loader.c
@@ -11,7 +11,6 @@
 #include <stdint.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/local/local_executable.h"
 #include "iree/modules/vmvx/module.h"
diff --git a/runtime/src/iree/hal/local/local_executable.c b/runtime/src/iree/hal/local/local_executable.c
index 9fcb77f..9565e48 100644
--- a/runtime/src/iree/hal/local/local_executable.c
+++ b/runtime/src/iree/hal/local/local_executable.c
@@ -6,7 +6,6 @@
 
 #include "iree/hal/local/local_executable.h"
 
-#include "iree/base/tracing.h"
 #include "iree/hal/local/executable_environment.h"
 
 void iree_hal_local_executable_initialize(
diff --git a/runtime/src/iree/hal/local/local_executable_cache.c b/runtime/src/iree/hal/local/local_executable_cache.c
index f496e2d..1e46331 100644
--- a/runtime/src/iree/hal/local/local_executable_cache.c
+++ b/runtime/src/iree/hal/local/local_executable_cache.c
@@ -9,8 +9,6 @@
 #include <stdbool.h>
 #include <stddef.h>
 
-#include "iree/base/tracing.h"
-
 typedef struct iree_hal_local_executable_cache_t {
   iree_hal_resource_t resource;
   iree_allocator_t host_allocator;
diff --git a/runtime/src/iree/hal/local/local_pipeline_layout.c b/runtime/src/iree/hal/local/local_pipeline_layout.c
index 508a6c1..012bf88 100644
--- a/runtime/src/iree/hal/local/local_pipeline_layout.c
+++ b/runtime/src/iree/hal/local/local_pipeline_layout.c
@@ -9,8 +9,6 @@
 #include <stddef.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
-
 //===----------------------------------------------------------------------===//
 // iree_hal_local_descriptor_set_layout_t
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/hal/local/plugins/BUILD.bazel b/runtime/src/iree/hal/local/plugins/BUILD.bazel
index 8318efa..2f43327 100644
--- a/runtime/src/iree/hal/local/plugins/BUILD.bazel
+++ b/runtime/src/iree/hal/local/plugins/BUILD.bazel
@@ -28,7 +28,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:file_io",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/local:executable_plugin_manager",
@@ -52,7 +51,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/local:executable_plugin_manager",
     ],
@@ -74,7 +72,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:dynamic_library",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/local:executable_plugin_manager",
diff --git a/runtime/src/iree/hal/local/plugins/CMakeLists.txt b/runtime/src/iree/hal/local/plugins/CMakeLists.txt
index 6ef0560..6c10317 100644
--- a/runtime/src/iree/hal/local/plugins/CMakeLists.txt
+++ b/runtime/src/iree/hal/local/plugins/CMakeLists.txt
@@ -22,7 +22,6 @@
   DEPS
     iree::base
     iree::base::internal::file_io
-    iree::base::tracing
     iree::hal
     iree::hal::local::elf::elf_module
     iree::hal::local::executable_plugin_manager
@@ -42,7 +41,6 @@
     "static_plugin.c"
   DEPS
     iree::base
-    iree::base::tracing
     iree::hal
     iree::hal::local::executable_plugin_manager
   DEFINES
@@ -62,7 +60,6 @@
   DEPS
     iree::base
     iree::base::internal::dynamic_library
-    iree::base::tracing
     iree::hal
     iree::hal::local::executable_plugin_manager
   DEFINES
diff --git a/runtime/src/iree/hal/local/plugins/embedded_elf_plugin.c b/runtime/src/iree/hal/local/plugins/embedded_elf_plugin.c
index d550b1e..042716f 100644
--- a/runtime/src/iree/hal/local/plugins/embedded_elf_plugin.c
+++ b/runtime/src/iree/hal/local/plugins/embedded_elf_plugin.c
@@ -6,7 +6,6 @@
 
 #include "iree/hal/local/plugins/embedded_elf_plugin.h"
 
-#include "iree/base/tracing.h"
 #include "iree/hal/local/elf/elf_module.h"
 
 #if IREE_FILE_IO_ENABLE
diff --git a/runtime/src/iree/hal/local/plugins/registration/BUILD.bazel b/runtime/src/iree/hal/local/plugins/registration/BUILD.bazel
index 328d019..39c232a 100644
--- a/runtime/src/iree/hal/local/plugins/registration/BUILD.bazel
+++ b/runtime/src/iree/hal/local/plugins/registration/BUILD.bazel
@@ -42,7 +42,6 @@
     hdrs = ["init.h"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/local:executable_plugin_manager",
diff --git a/runtime/src/iree/hal/local/plugins/registration/CMakeLists.txt b/runtime/src/iree/hal/local/plugins/registration/CMakeLists.txt
index 4f0a8fd..6ae1667 100644
--- a/runtime/src/iree/hal/local/plugins/registration/CMakeLists.txt
+++ b/runtime/src/iree/hal/local/plugins/registration/CMakeLists.txt
@@ -22,7 +22,6 @@
   DEPS
     iree::base
     iree::base::internal::flags
-    iree::base::tracing
     iree::hal
     iree::hal::local::executable_plugin_manager
     ${IREE_HAL_EXECUTABLE_PLUGIN_EXTRA_DEPS}
diff --git a/runtime/src/iree/hal/local/plugins/registration/init.c b/runtime/src/iree/hal/local/plugins/registration/init.c
index e291708..34c2ede 100644
--- a/runtime/src/iree/hal/local/plugins/registration/init.c
+++ b/runtime/src/iree/hal/local/plugins/registration/init.c
@@ -7,7 +7,6 @@
 #include "iree/hal/local/plugins/registration/init.h"
 
 #include "iree/base/internal/flags.h"
-#include "iree/base/tracing.h"
 
 #if defined(IREE_HAVE_HAL_EXECUTABLE_SYSTEM_LIBRARY_PLUGIN)
 #include "iree/hal/local/plugins/system_library_plugin.h"
diff --git a/runtime/src/iree/hal/local/plugins/static_plugin.c b/runtime/src/iree/hal/local/plugins/static_plugin.c
index ebab9c2..4a5056f 100644
--- a/runtime/src/iree/hal/local/plugins/static_plugin.c
+++ b/runtime/src/iree/hal/local/plugins/static_plugin.c
@@ -6,8 +6,6 @@
 
 #include "iree/hal/local/plugins/static_plugin.h"
 
-#include "iree/base/tracing.h"
-
 typedef struct iree_hal_static_executable_plugin_t {
   iree_hal_executable_plugin_t base;
   iree_allocator_t host_allocator;
diff --git a/runtime/src/iree/hal/local/plugins/system_library_plugin.c b/runtime/src/iree/hal/local/plugins/system_library_plugin.c
index e6298a7..aada3ad 100644
--- a/runtime/src/iree/hal/local/plugins/system_library_plugin.c
+++ b/runtime/src/iree/hal/local/plugins/system_library_plugin.c
@@ -7,7 +7,6 @@
 #include "iree/hal/local/plugins/system_library_plugin.h"
 
 #include "iree/base/internal/dynamic_library.h"
-#include "iree/base/tracing.h"
 
 typedef struct iree_hal_system_library_executable_plugin_t {
   iree_hal_executable_plugin_t base;
diff --git a/runtime/src/iree/hal/pipeline_layout.c b/runtime/src/iree/hal/pipeline_layout.c
index d37f428..3153d48 100644
--- a/runtime/src/iree/hal/pipeline_layout.c
+++ b/runtime/src/iree/hal/pipeline_layout.c
@@ -8,7 +8,6 @@
 
 #include <stddef.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/detail.h"
 #include "iree/hal/device.h"
 #include "iree/hal/resource.h"
diff --git a/runtime/src/iree/hal/semaphore.c b/runtime/src/iree/hal/semaphore.c
index 5c6f959..a7d00de 100644
--- a/runtime/src/iree/hal/semaphore.c
+++ b/runtime/src/iree/hal/semaphore.c
@@ -8,7 +8,6 @@
 
 #include <stddef.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/detail.h"
 #include "iree/hal/device.h"
 #include "iree/hal/resource.h"
diff --git a/runtime/src/iree/hal/utils/BUILD.bazel b/runtime/src/iree/hal/utils/BUILD.bazel
index 9487d12..d4dd2d7 100644
--- a/runtime/src/iree/hal/utils/BUILD.bazel
+++ b/runtime/src/iree/hal/utils/BUILD.bazel
@@ -22,7 +22,6 @@
         ":caching_allocator",
         ":debug_allocator",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/hal",
     ],
 )
@@ -34,7 +33,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/hal",
     ],
 )
@@ -46,7 +44,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/hal",
     ],
 )
@@ -59,7 +56,6 @@
     deps = [
         ":resource_set",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:arena",
         "//runtime/src/iree/hal",
     ],
@@ -72,7 +68,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:synchronization",
         "//runtime/src/iree/hal",
     ],
@@ -86,7 +81,6 @@
     deps = [
         ":resource_set",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:arena",
         "//runtime/src/iree/hal",
     ],
@@ -102,7 +96,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:dynamic_library",
         "//runtime/src/iree/hal",
     ],
@@ -127,7 +120,6 @@
     deps = [
         ":libmpi",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/hal",
     ],
 )
@@ -139,7 +131,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:arena",
         "//runtime/src/iree/hal",
@@ -177,7 +168,6 @@
     visibility = ["//visibility:public"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:synchronization",
         "//runtime/src/iree/hal",
     ],
diff --git a/runtime/src/iree/hal/utils/CMakeLists.txt b/runtime/src/iree/hal/utils/CMakeLists.txt
index 067dd44..1075b3d 100644
--- a/runtime/src/iree/hal/utils/CMakeLists.txt
+++ b/runtime/src/iree/hal/utils/CMakeLists.txt
@@ -21,7 +21,6 @@
     ::caching_allocator
     ::debug_allocator
     iree::base
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -35,7 +34,6 @@
     "buffer_transfer.c"
   DEPS
     iree::base
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -49,7 +47,6 @@
     "debug_allocator.c"
   DEPS
     iree::base
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -65,7 +62,6 @@
     ::resource_set
     iree::base
     iree::base::internal::arena
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -80,7 +76,6 @@
   DEPS
     iree::base
     iree::base::internal::synchronization
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -96,7 +91,6 @@
     ::resource_set
     iree::base
     iree::base::internal::arena
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -112,7 +106,6 @@
   DEPS
     iree::base
     iree::base::internal::dynamic_library
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -139,7 +132,6 @@
   DEPS
     ::libmpi
     iree::base
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -155,7 +147,6 @@
     iree::base
     iree::base::internal
     iree::base::internal::arena
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -197,7 +188,6 @@
   DEPS
     iree::base
     iree::base::internal::synchronization
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
diff --git a/runtime/src/iree/hal/utils/allocators.c b/runtime/src/iree/hal/utils/allocators.c
index 98c406e..93652f0 100644
--- a/runtime/src/iree/hal/utils/allocators.c
+++ b/runtime/src/iree/hal/utils/allocators.c
@@ -6,7 +6,6 @@
 
 #include "iree/hal/utils/allocators.h"
 
-#include "iree/base/tracing.h"
 #include "iree/hal/utils/caching_allocator.h"
 #include "iree/hal/utils/debug_allocator.h"
 
diff --git a/runtime/src/iree/hal/utils/buffer_transfer.c b/runtime/src/iree/hal/utils/buffer_transfer.c
index e2b6ea9..5b32067 100644
--- a/runtime/src/iree/hal/utils/buffer_transfer.c
+++ b/runtime/src/iree/hal/utils/buffer_transfer.c
@@ -6,8 +6,6 @@
 
 #include "iree/hal/utils/buffer_transfer.h"
 
-#include "iree/base/tracing.h"
-
 //===----------------------------------------------------------------------===//
 // Transfer utilities
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/hal/utils/caching_allocator.c b/runtime/src/iree/hal/utils/caching_allocator.c
index b9c9b24..191eca5 100644
--- a/runtime/src/iree/hal/utils/caching_allocator.c
+++ b/runtime/src/iree/hal/utils/caching_allocator.c
@@ -7,7 +7,6 @@
 #include "iree/hal/utils/caching_allocator.h"
 
 #include "iree/base/internal/synchronization.h"
-#include "iree/base/tracing.h"
 
 // Default capacity of a pool free list when not specified by the user.
 #define IREE_HAL_CACHING_ALLOCATOR_DEFAULT_FREE_LIST_CAPACITY 64
diff --git a/runtime/src/iree/hal/utils/collective_batch.c b/runtime/src/iree/hal/utils/collective_batch.c
index 459af4d..a30b566 100644
--- a/runtime/src/iree/hal/utils/collective_batch.c
+++ b/runtime/src/iree/hal/utils/collective_batch.c
@@ -6,8 +6,6 @@
 
 #include "iree/hal/utils/collective_batch.h"
 
-#include "iree/base/tracing.h"
-
 //===----------------------------------------------------------------------===//
 // Collective batching utility
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/hal/utils/debug_allocator.c b/runtime/src/iree/hal/utils/debug_allocator.c
index 588ec70..8f60381 100644
--- a/runtime/src/iree/hal/utils/debug_allocator.c
+++ b/runtime/src/iree/hal/utils/debug_allocator.c
@@ -6,8 +6,6 @@
 
 #include "iree/hal/utils/debug_allocator.h"
 
-#include "iree/base/tracing.h"
-
 //===----------------------------------------------------------------------===//
 // iree_hal_debug_allocator_t
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/hal/utils/deferred_command_buffer.c b/runtime/src/iree/hal/utils/deferred_command_buffer.c
index 947e13d..05562a8 100644
--- a/runtime/src/iree/hal/utils/deferred_command_buffer.c
+++ b/runtime/src/iree/hal/utils/deferred_command_buffer.c
@@ -7,7 +7,6 @@
 #include "iree/hal/utils/deferred_command_buffer.h"
 
 #include "iree/base/internal/arena.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/utils/resource_set.h"
 
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/hal/utils/libmpi.c b/runtime/src/iree/hal/utils/libmpi.c
index 440d9e2..8a91470 100644
--- a/runtime/src/iree/hal/utils/libmpi.c
+++ b/runtime/src/iree/hal/utils/libmpi.c
@@ -6,8 +6,6 @@
 
 #include "iree/hal/utils/libmpi.h"
 
-#include "iree/base/tracing.h"
-
 //===----------------------------------------------------------------------===//
 // Dynamic symbol table
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/hal/utils/mpi_channel_provider.c b/runtime/src/iree/hal/utils/mpi_channel_provider.c
index d4beb3d..e3df63e 100644
--- a/runtime/src/iree/hal/utils/mpi_channel_provider.c
+++ b/runtime/src/iree/hal/utils/mpi_channel_provider.c
@@ -8,7 +8,6 @@
 
 #include <stdlib.h>
 
-#include "iree/base/tracing.h"
 #include "iree/hal/utils/libmpi.h"
 
 // Returns true if |var_name| is set to a non-empty value in the environment.
diff --git a/runtime/src/iree/hal/utils/resource_set.c b/runtime/src/iree/hal/utils/resource_set.c
index 7b72454..ff82fdb 100644
--- a/runtime/src/iree/hal/utils/resource_set.c
+++ b/runtime/src/iree/hal/utils/resource_set.c
@@ -7,7 +7,6 @@
 #include "iree/hal/utils/resource_set.h"
 
 #include "iree/base/internal/debugging.h"
-#include "iree/base/tracing.h"
 
 // Computes the total capacity in resources of a chunk allocated with a total
 // |storage_size| (including the header).
diff --git a/runtime/src/iree/hal/utils/semaphore_base.c b/runtime/src/iree/hal/utils/semaphore_base.c
index 2c70bf3..f77c4d0 100644
--- a/runtime/src/iree/hal/utils/semaphore_base.c
+++ b/runtime/src/iree/hal/utils/semaphore_base.c
@@ -8,8 +8,6 @@
 
 #include <stddef.h>
 
-#include "iree/base/tracing.h"
-
 //===----------------------------------------------------------------------===//
 // Timepoint utilities
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/modules/hal/BUILD.bazel b/runtime/src/iree/modules/hal/BUILD.bazel
index ad1e224..c1c6c56 100644
--- a/runtime/src/iree/modules/hal/BUILD.bazel
+++ b/runtime/src/iree/modules/hal/BUILD.bazel
@@ -26,7 +26,6 @@
     deps = [
         ":types",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/modules/hal/utils:buffer_diagnostics",
         "//runtime/src/iree/vm",
diff --git a/runtime/src/iree/modules/hal/CMakeLists.txt b/runtime/src/iree/modules/hal/CMakeLists.txt
index 5ae6d60..8e68384 100644
--- a/runtime/src/iree/modules/hal/CMakeLists.txt
+++ b/runtime/src/iree/modules/hal/CMakeLists.txt
@@ -22,7 +22,6 @@
   DEPS
     ::types
     iree::base
-    iree::base::tracing
     iree::hal
     iree::modules::hal::utils::buffer_diagnostics
     iree::vm
diff --git a/runtime/src/iree/modules/hal/inline/BUILD.bazel b/runtime/src/iree/modules/hal/inline/BUILD.bazel
index 486bc51..9d80890 100644
--- a/runtime/src/iree/modules/hal/inline/BUILD.bazel
+++ b/runtime/src/iree/modules/hal/inline/BUILD.bazel
@@ -25,7 +25,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:cpu",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/modules/hal:types",
diff --git a/runtime/src/iree/modules/hal/inline/CMakeLists.txt b/runtime/src/iree/modules/hal/inline/CMakeLists.txt
index 61e3b35..78b00aa 100644
--- a/runtime/src/iree/modules/hal/inline/CMakeLists.txt
+++ b/runtime/src/iree/modules/hal/inline/CMakeLists.txt
@@ -22,7 +22,6 @@
   DEPS
     iree::base
     iree::base::internal::cpu
-    iree::base::tracing
     iree::hal
     iree::modules::hal::types
     iree::modules::hal::utils::buffer_diagnostics
diff --git a/runtime/src/iree/modules/hal/inline/module.c b/runtime/src/iree/modules/hal/inline/module.c
index d643a52..f9fa778 100644
--- a/runtime/src/iree/modules/hal/inline/module.c
+++ b/runtime/src/iree/modules/hal/inline/module.c
@@ -8,7 +8,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/cpu.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/utils/buffer_diagnostics.h"
 #include "iree/vm/api.h"
diff --git a/runtime/src/iree/modules/hal/loader/BUILD.bazel b/runtime/src/iree/modules/hal/loader/BUILD.bazel
index 516935e..f242a34 100644
--- a/runtime/src/iree/modules/hal/loader/BUILD.bazel
+++ b/runtime/src/iree/modules/hal/loader/BUILD.bazel
@@ -25,7 +25,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/hal/local:executable_environment",
         "//runtime/src/iree/hal/local:executable_loader",
diff --git a/runtime/src/iree/modules/hal/loader/CMakeLists.txt b/runtime/src/iree/modules/hal/loader/CMakeLists.txt
index ace77f8..f2c67d2 100644
--- a/runtime/src/iree/modules/hal/loader/CMakeLists.txt
+++ b/runtime/src/iree/modules/hal/loader/CMakeLists.txt
@@ -21,7 +21,6 @@
     "module.c"
   DEPS
     iree::base
-    iree::base::tracing
     iree::hal
     iree::hal::local::executable_environment
     iree::hal::local::executable_loader
diff --git a/runtime/src/iree/modules/hal/loader/module.c b/runtime/src/iree/modules/hal/loader/module.c
index d1b8be4..c775fd8 100644
--- a/runtime/src/iree/modules/hal/loader/module.c
+++ b/runtime/src/iree/modules/hal/loader/module.c
@@ -7,7 +7,6 @@
 #include "iree/modules/hal/loader/module.h"
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/local/local_executable.h"
 #include "iree/vm/api.h"
diff --git a/runtime/src/iree/modules/hal/module.c b/runtime/src/iree/modules/hal/module.c
index 56000f9..d540069 100644
--- a/runtime/src/iree/modules/hal/module.c
+++ b/runtime/src/iree/modules/hal/module.c
@@ -12,7 +12,6 @@
 #include <stdint.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/utils/buffer_diagnostics.h"
 #include "iree/vm/api.h"
diff --git a/runtime/src/iree/modules/hal/utils/BUILD.bazel b/runtime/src/iree/modules/hal/utils/BUILD.bazel
index 8e5c87a..a656f80 100644
--- a/runtime/src/iree/modules/hal/utils/BUILD.bazel
+++ b/runtime/src/iree/modules/hal/utils/BUILD.bazel
@@ -18,7 +18,6 @@
     hdrs = ["buffer_diagnostics.h"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/modules/hal:types",
         "//runtime/src/iree/vm",
diff --git a/runtime/src/iree/modules/hal/utils/CMakeLists.txt b/runtime/src/iree/modules/hal/utils/CMakeLists.txt
index df20e3f..1dcadca 100644
--- a/runtime/src/iree/modules/hal/utils/CMakeLists.txt
+++ b/runtime/src/iree/modules/hal/utils/CMakeLists.txt
@@ -19,7 +19,6 @@
     "buffer_diagnostics.c"
   DEPS
     iree::base
-    iree::base::tracing
     iree::hal
     iree::modules::hal::types
     iree::vm
diff --git a/runtime/src/iree/modules/vmvx/BUILD.bazel b/runtime/src/iree/modules/vmvx/BUILD.bazel
index c4f44c5..56c340e 100644
--- a/runtime/src/iree/modules/vmvx/BUILD.bazel
+++ b/runtime/src/iree/modules/vmvx/BUILD.bazel
@@ -28,7 +28,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:cpu",
         "//runtime/src/iree/builtins/ukernel",
         "//runtime/src/iree/vm",
diff --git a/runtime/src/iree/modules/vmvx/CMakeLists.txt b/runtime/src/iree/modules/vmvx/CMakeLists.txt
index 82cdb8e..7f2da33 100644
--- a/runtime/src/iree/modules/vmvx/CMakeLists.txt
+++ b/runtime/src/iree/modules/vmvx/CMakeLists.txt
@@ -22,7 +22,6 @@
     "IREE_HAVE_VMVX_MODULE"
   DEPS
     iree::base
-    iree::base::tracing
     iree::builtins::ukernel
     iree::base::internal::cpu
     iree::vm
diff --git a/runtime/src/iree/modules/vmvx/module.c b/runtime/src/iree/modules/vmvx/module.c
index b3db52e..3d00c53 100644
--- a/runtime/src/iree/modules/vmvx/module.c
+++ b/runtime/src/iree/modules/vmvx/module.c
@@ -13,7 +13,6 @@
 #include <string.h>
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/vm/api.h"
 
 // Include the ukernel support library so that we can use its implementations
diff --git a/runtime/src/iree/runtime/BUILD.bazel b/runtime/src/iree/runtime/BUILD.bazel
index 24ae360..217c79f 100644
--- a/runtime/src/iree/runtime/BUILD.bazel
+++ b/runtime/src/iree/runtime/BUILD.bazel
@@ -45,8 +45,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:file_io",
         "//runtime/src/iree/hal",
diff --git a/runtime/src/iree/runtime/CMakeLists.txt b/runtime/src/iree/runtime/CMakeLists.txt
index 6005eb1..cd37fdf 100644
--- a/runtime/src/iree/runtime/CMakeLists.txt
+++ b/runtime/src/iree/runtime/CMakeLists.txt
@@ -34,10 +34,8 @@
     "session.c"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::file_io
-    iree::base::tracing
     iree::hal
     iree::hal::drivers
     iree::modules::hal
diff --git a/runtime/src/iree/runtime/instance.c b/runtime/src/iree/runtime/instance.c
index 78f5e39..b534164 100644
--- a/runtime/src/iree/runtime/instance.c
+++ b/runtime/src/iree/runtime/instance.c
@@ -10,7 +10,6 @@
 #include <string.h>
 
 #include "iree/base/internal/atomics.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/hal/drivers/init.h"
 #include "iree/modules/hal/module.h"
diff --git a/runtime/src/iree/runtime/session.c b/runtime/src/iree/runtime/session.c
index 202431f..6c16094 100644
--- a/runtime/src/iree/runtime/session.c
+++ b/runtime/src/iree/runtime/session.c
@@ -11,7 +11,6 @@
 
 #include "iree/base/internal/atomics.h"
 #include "iree/base/internal/file_io.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/module.h"
 #include "iree/runtime/instance.h"
diff --git a/runtime/src/iree/task/BUILD.bazel b/runtime/src/iree/task/BUILD.bazel
index 4513ea3..8305950 100644
--- a/runtime/src/iree/task/BUILD.bazel
+++ b/runtime/src/iree/task/BUILD.bazel
@@ -36,7 +36,6 @@
     deps = [
         ":task",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
     ],
 )
@@ -76,8 +75,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:atomic_slist",
         "//runtime/src/iree/base/internal:cpu",
@@ -97,7 +94,6 @@
     deps = [
         ":task",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:prng",
         "//runtime/src/iree/task/testing:test_util",
     ],
diff --git a/runtime/src/iree/task/CMakeLists.txt b/runtime/src/iree/task/CMakeLists.txt
index b66fc4b..105aaef 100644
--- a/runtime/src/iree/task/CMakeLists.txt
+++ b/runtime/src/iree/task/CMakeLists.txt
@@ -33,7 +33,6 @@
     ::task
     iree::base
     iree::base::internal::flags
-    iree::base::tracing
   PUBLIC
 )
 
@@ -72,7 +71,6 @@
   DEPS
     ${IREE_CPUINFO_TARGET}
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::atomic_slist
     iree::base::internal::cpu
@@ -82,7 +80,6 @@
     iree::base::internal::synchronization
     iree::base::internal::threading
     iree::base::internal::wait_handle
-    iree::base::tracing
   PUBLIC
 )
 
@@ -95,7 +92,6 @@
     ::task
     iree::base
     iree::base::internal::prng
-    iree::base::tracing
     iree::task::testing::test_util
 )
 
diff --git a/runtime/src/iree/task/api.c b/runtime/src/iree/task/api.c
index 4c22b17..7dbbee3 100644
--- a/runtime/src/iree/task/api.c
+++ b/runtime/src/iree/task/api.c
@@ -10,7 +10,6 @@
 #include <string.h>
 
 #include "iree/base/internal/flags.h"
-#include "iree/base/tracing.h"
 #include "iree/task/topology.h"
 
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/task/executor.c b/runtime/src/iree/task/executor.c
index 498305a..5596156 100644
--- a/runtime/src/iree/task/executor.c
+++ b/runtime/src/iree/task/executor.c
@@ -12,7 +12,6 @@
 
 #include "iree/base/internal/debugging.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/tracing.h"
 #include "iree/task/affinity_set.h"
 #include "iree/task/executor_impl.h"
 #include "iree/task/list.h"
diff --git a/runtime/src/iree/task/executor_demo.cc b/runtime/src/iree/task/executor_demo.cc
index e748c3b..ad448de 100644
--- a/runtime/src/iree/task/executor_demo.cc
+++ b/runtime/src/iree/task/executor_demo.cc
@@ -7,7 +7,6 @@
 #include <cstddef>
 
 #include "iree/base/internal/prng.h"
-#include "iree/base/tracing.h"
 #include "iree/task/executor.h"
 
 // TODO(benvanik): clean this up into a reasonable demo; it's currently staging
@@ -39,7 +38,7 @@
 }
 
 extern "C" int main(int argc, char* argv) {
-  IREE_TRACE_SCOPE0("ExecutorTest::Any");
+  IREE_TRACE_SCOPE_NAMED("ExecutorTest::Any");
 
   iree_allocator_t allocator = iree_allocator_system();
 
@@ -70,7 +69,7 @@
                             iree_task_make_call_closure(
                                 [](void* user_context, iree_task_t* task,
                                    iree_task_submission_t* pending_submission) {
-                                  IREE_TRACE_SCOPE0("call0");
+                                  IREE_TRACE_SCOPE_NAMED("call0");
                                   IREE_ASSERT_EQ(0, user_context);
                                   return iree_ok_status();
                                 },
@@ -85,7 +84,7 @@
       iree_task_make_dispatch_closure(
           [](void* user_context, const iree_task_tile_context_t* tile_context,
              iree_task_submission_t* pending_submission) {
-            IREE_TRACE_SCOPE0("tile0");
+            IREE_TRACE_SCOPE_NAMED("tile0");
             IREE_ASSERT_EQ(0, user_context);
             simulate_work(tile_context);
             iree_atomic_fetch_add_int32(&tile_context->statistics->reserved, 1,
@@ -103,7 +102,7 @@
       iree_task_make_dispatch_closure(
           [](void* user_context, const iree_task_tile_context_t* tile_context,
              iree_task_submission_t* pending_submission) {
-            IREE_TRACE_SCOPE0("tile1");
+            IREE_TRACE_SCOPE_NAMED("tile1");
             IREE_ASSERT_EQ(0, user_context);
             simulate_work(tile_context);
             iree_atomic_fetch_add_int32(&tile_context->statistics->reserved, 1,
@@ -119,7 +118,7 @@
                             iree_task_make_call_closure(
                                 [](void* user_context, iree_task_t* task,
                                    iree_task_submission_t* pending_submission) {
-                                  IREE_TRACE_SCOPE0("call1");
+                                  IREE_TRACE_SCOPE_NAMED("call1");
                                   IREE_ASSERT_EQ((void*)1, user_context);
                                   return iree_ok_status();
                                 },
diff --git a/runtime/src/iree/task/executor_impl.h b/runtime/src/iree/task/executor_impl.h
index cfcf15c..5775a42 100644
--- a/runtime/src/iree/task/executor_impl.h
+++ b/runtime/src/iree/task/executor_impl.h
@@ -11,7 +11,6 @@
 #include "iree/base/internal/prng.h"
 #include "iree/base/internal/synchronization.h"
 #include "iree/base/internal/wait_handle.h"
-#include "iree/base/tracing.h"
 #include "iree/task/affinity_set.h"
 #include "iree/task/executor.h"
 #include "iree/task/list.h"
diff --git a/runtime/src/iree/task/poller.c b/runtime/src/iree/task/poller.c
index a742280..326ad09 100644
--- a/runtime/src/iree/task/poller.c
+++ b/runtime/src/iree/task/poller.c
@@ -6,7 +6,6 @@
 
 #include "iree/task/poller.h"
 
-#include "iree/base/tracing.h"
 #include "iree/task/executor.h"
 #include "iree/task/executor_impl.h"
 #include "iree/task/submission.h"
diff --git a/runtime/src/iree/task/pool.c b/runtime/src/iree/task/pool.c
index a9c9ff9..4ff905c 100644
--- a/runtime/src/iree/task/pool.c
+++ b/runtime/src/iree/task/pool.c
@@ -9,7 +9,6 @@
 #include <stdint.h>
 
 #include "iree/base/internal/math.h"
-#include "iree/base/tracing.h"
 
 // Minimum byte size of a block in bytes, including the tasks as well as the
 // allocation header. This is here to allow us to reduce the number of times
diff --git a/runtime/src/iree/task/post_batch.c b/runtime/src/iree/task/post_batch.c
index 1f97a6f..b74c859 100644
--- a/runtime/src/iree/task/post_batch.c
+++ b/runtime/src/iree/task/post_batch.c
@@ -12,7 +12,6 @@
 #include "iree/base/internal/math.h"
 #include "iree/base/internal/synchronization.h"
 #include "iree/base/internal/threading.h"
-#include "iree/base/tracing.h"
 #include "iree/task/executor_impl.h"
 #include "iree/task/queue.h"
 #include "iree/task/worker.h"
diff --git a/runtime/src/iree/task/post_batch.h b/runtime/src/iree/task/post_batch.h
index 470b7a9..781263a 100644
--- a/runtime/src/iree/task/post_batch.h
+++ b/runtime/src/iree/task/post_batch.h
@@ -9,7 +9,7 @@
 
 #include <stdbool.h>
 
-#include "iree/base/config.h"
+#include "iree/base/api.h"
 #include "iree/task/affinity_set.h"
 #include "iree/task/executor.h"
 #include "iree/task/list.h"
diff --git a/runtime/src/iree/task/scope.h b/runtime/src/iree/task/scope.h
index 8f42e5c..5414f42 100644
--- a/runtime/src/iree/task/scope.h
+++ b/runtime/src/iree/task/scope.h
@@ -13,7 +13,6 @@
 #include "iree/base/api.h"
 #include "iree/base/internal/atomics.h"
 #include "iree/base/internal/synchronization.h"
-#include "iree/base/tracing.h"
 #include "iree/task/task.h"
 
 #ifdef __cplusplus
diff --git a/runtime/src/iree/task/task.c b/runtime/src/iree/task/task.c
index 49d5ecc..3db767b 100644
--- a/runtime/src/iree/task/task.c
+++ b/runtime/src/iree/task/task.c
@@ -9,7 +9,6 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
 #include "iree/task/list.h"
 #include "iree/task/pool.h"
 #include "iree/task/post_batch.h"
diff --git a/runtime/src/iree/task/topology.c b/runtime/src/iree/task/topology.c
index 57450b9..1896e58 100644
--- a/runtime/src/iree/task/topology.c
+++ b/runtime/src/iree/task/topology.c
@@ -10,8 +10,6 @@
 #include <string.h>
 
 #include "iree/base/api.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 
 void iree_task_topology_group_initialize(
     uint8_t group_index, iree_task_topology_group_t* out_group) {
diff --git a/runtime/src/iree/task/topology_cpuinfo.c b/runtime/src/iree/task/topology_cpuinfo.c
index 9ad6fee..1952a57 100644
--- a/runtime/src/iree/task/topology_cpuinfo.c
+++ b/runtime/src/iree/task/topology_cpuinfo.c
@@ -8,8 +8,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 #include "iree/task/topology.h"
 
 // Initializes |out_topology| with a standardized behavior when cpuinfo is not
diff --git a/runtime/src/iree/task/worker.c b/runtime/src/iree/task/worker.c
index 9627330..b9c518c 100644
--- a/runtime/src/iree/task/worker.c
+++ b/runtime/src/iree/task/worker.c
@@ -11,7 +11,6 @@
 
 #include "iree/base/internal/fpu_state.h"
 #include "iree/base/internal/math.h"
-#include "iree/base/tracing.h"
 #include "iree/task/executor_impl.h"
 #include "iree/task/post_batch.h"
 #include "iree/task/submission.h"
diff --git a/runtime/src/iree/task/worker.h b/runtime/src/iree/task/worker.h
index ca36f1e..a99cd59 100644
--- a/runtime/src/iree/task/worker.h
+++ b/runtime/src/iree/task/worker.h
@@ -14,7 +14,6 @@
 #include "iree/base/internal/prng.h"
 #include "iree/base/internal/synchronization.h"
 #include "iree/base/internal/threading.h"
-#include "iree/base/tracing.h"
 #include "iree/task/affinity_set.h"
 #include "iree/task/executor.h"
 #include "iree/task/list.h"
diff --git a/runtime/src/iree/testing/BUILD.bazel b/runtime/src/iree/testing/BUILD.bazel
index f33decb..c7296ed 100644
--- a/runtime/src/iree/testing/BUILD.bazel
+++ b/runtime/src/iree/testing/BUILD.bazel
@@ -24,7 +24,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "@com_google_benchmark//:benchmark",
     ],
 )
diff --git a/runtime/src/iree/testing/CMakeLists.txt b/runtime/src/iree/testing/CMakeLists.txt
index d86c4a8..8cdf81e 100644
--- a/runtime/src/iree/testing/CMakeLists.txt
+++ b/runtime/src/iree/testing/CMakeLists.txt
@@ -19,7 +19,6 @@
     DEPS
       benchmark
       iree::base
-      iree::base::tracing
     PUBLIC
   )
 else()
@@ -32,7 +31,6 @@
       "benchmark_nop.c"
     DEPS
       iree::base
-      iree::base::tracing
     PUBLIC
   )
 endif()
diff --git a/runtime/src/iree/testing/benchmark_full.cc b/runtime/src/iree/testing/benchmark_full.cc
index 69185ab..2f3d532 100644
--- a/runtime/src/iree/testing/benchmark_full.cc
+++ b/runtime/src/iree/testing/benchmark_full.cc
@@ -13,7 +13,6 @@
 
 #include "benchmark/benchmark.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/testing/benchmark.h"
 
 //===----------------------------------------------------------------------===//
@@ -94,7 +93,8 @@
 static void iree_benchmark_run(const char* benchmark_name,
                                const iree_benchmark_def_t* benchmark_def,
                                benchmark::State& benchmark_state) {
-  IREE_TRACE_SCOPE_DYNAMIC(benchmark_name);
+  IREE_TRACE_ZONE_BEGIN_NAMED_DYNAMIC(z0, benchmark_name,
+                                      strlen(benchmark_name));
   IREE_TRACE_FRAME_MARK();
 
   iree_benchmark_state_t state;
@@ -108,6 +108,8 @@
     iree_status_ignore(status);
     benchmark_state.SkipWithError(status_str.c_str());
   }
+
+  IREE_TRACE_ZONE_END(z0);
 }
 
 void iree_benchmark_register(iree_string_view_t name,
diff --git a/runtime/src/iree/testing/benchmark_nop.c b/runtime/src/iree/testing/benchmark_nop.c
index 65272e7..7dae390 100644
--- a/runtime/src/iree/testing/benchmark_nop.c
+++ b/runtime/src/iree/testing/benchmark_nop.c
@@ -5,7 +5,6 @@
 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
 
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/testing/benchmark.h"
 
 int64_t iree_benchmark_get_range(iree_benchmark_state_t* state,
diff --git a/runtime/src/iree/tooling/BUILD.bazel b/runtime/src/iree/tooling/BUILD.bazel
index ecc0839..51b7aa0 100644
--- a/runtime/src/iree/tooling/BUILD.bazel
+++ b/runtime/src/iree/tooling/BUILD.bazel
@@ -18,7 +18,6 @@
     hdrs = ["buffer_view_matchers.h"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/hal",
     ],
@@ -46,7 +45,6 @@
         ":buffer_view_matchers",
         ":vm_util",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/base/internal:span",
         "//runtime/src/iree/hal",
@@ -78,7 +76,6 @@
     deps = [
         ":device_util",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:file_io",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/base/internal:path",
@@ -101,7 +98,6 @@
     hdrs = ["device_util.h"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/base/internal:synchronization",
         "//runtime/src/iree/hal",
@@ -117,7 +113,6 @@
     hdrs = ["instrument_util.h"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/modules/hal:types",
@@ -132,7 +127,6 @@
     hdrs = ["numpy_io.h"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/hal",
     ],
 )
@@ -162,7 +156,6 @@
         ":instrument_util",
         ":vm_util",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/modules/hal:types",
@@ -179,7 +172,6 @@
     deps = [
         ":numpy_io",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:file_io",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/modules/hal",
@@ -221,7 +213,6 @@
         ":numpy_io",
         ":yaml_util",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:file_io",
         "//runtime/src/iree/base/internal:path",
diff --git a/runtime/src/iree/tooling/CMakeLists.txt b/runtime/src/iree/tooling/CMakeLists.txt
index 3b8601a..3d73a0c 100644
--- a/runtime/src/iree/tooling/CMakeLists.txt
+++ b/runtime/src/iree/tooling/CMakeLists.txt
@@ -20,7 +20,6 @@
   DEPS
     iree::base
     iree::base::internal
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -53,7 +52,6 @@
     iree::base
     iree::base::internal::flags
     iree::base::internal::span
-    iree::base::tracing
     iree::hal
     iree::modules::hal
     iree::vm
@@ -90,7 +88,6 @@
     iree::base::internal::file_io
     iree::base::internal::flags
     iree::base::internal::path
-    iree::base::tracing
     iree::hal
     iree::hal::local::loaders::registration
     iree::hal::local::plugins::registration
@@ -115,7 +112,6 @@
     iree::base
     iree::base::internal::flags
     iree::base::internal::synchronization
-    iree::base::tracing
     iree::hal
     iree::hal::drivers
     iree::hal::utils::allocators
@@ -133,7 +129,6 @@
   DEPS
     iree::base
     iree::base::internal::flags
-    iree::base::tracing
     iree::hal
     iree::modules::hal::types
     iree::schemas::instruments
@@ -150,7 +145,6 @@
     "numpy_io.c"
   DEPS
     iree::base
-    iree::base::tracing
     iree::hal
   PUBLIC
 )
@@ -186,7 +180,6 @@
     ::vm_util
     iree::base
     iree::base::internal::flags
-    iree::base::tracing
     iree::hal
     iree::modules::hal::types
     iree::vm
@@ -205,7 +198,6 @@
     ::numpy_io
     iree::base
     iree::base::internal::file_io
-    iree::base::tracing
     iree::hal
     iree::modules::hal
     iree::vm
@@ -248,7 +240,6 @@
     iree::base::internal
     iree::base::internal::file_io
     iree::base::internal::path
-    iree::base::tracing
     iree::hal
     iree::modules::hal
     iree::vm
diff --git a/runtime/src/iree/tooling/buffer_view_matchers.c b/runtime/src/iree/tooling/buffer_view_matchers.c
index 9112ec2..5c30424 100644
--- a/runtime/src/iree/tooling/buffer_view_matchers.c
+++ b/runtime/src/iree/tooling/buffer_view_matchers.c
@@ -9,7 +9,6 @@
 #include <math.h>
 
 #include "iree/base/internal/math.h"
-#include "iree/base/tracing.h"
 
 //===----------------------------------------------------------------------===//
 // iree_hal_buffer_equality_t
diff --git a/runtime/src/iree/tooling/comparison.cc b/runtime/src/iree/tooling/comparison.cc
index c1ac9e6..75a15fd 100644
--- a/runtime/src/iree/tooling/comparison.cc
+++ b/runtime/src/iree/tooling/comparison.cc
@@ -11,7 +11,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/module.h"
 #include "iree/tooling/buffer_view_matchers.h"
diff --git a/runtime/src/iree/tooling/context_util.c b/runtime/src/iree/tooling/context_util.c
index c9695b8..25b2b43 100644
--- a/runtime/src/iree/tooling/context_util.c
+++ b/runtime/src/iree/tooling/context_util.c
@@ -13,7 +13,6 @@
 #include "iree/base/internal/file_io.h"
 #include "iree/base/internal/flags.h"
 #include "iree/base/internal/path.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/local/loaders/registration/init.h"
 #include "iree/hal/local/plugins/registration/init.h"
 #include "iree/modules/hal/inline/module.h"
diff --git a/runtime/src/iree/tooling/device_util.c b/runtime/src/iree/tooling/device_util.c
index 67b2747..b714333 100644
--- a/runtime/src/iree/tooling/device_util.c
+++ b/runtime/src/iree/tooling/device_util.c
@@ -8,7 +8,6 @@
 
 #include "iree/base/internal/call_once.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/drivers/init.h"
 #include "iree/hal/utils/allocators.h"
 #include "iree/hal/utils/mpi_channel_provider.h"
diff --git a/runtime/src/iree/tooling/instrument_util.c b/runtime/src/iree/tooling/instrument_util.c
index 5ff15ee..fb90efd 100644
--- a/runtime/src/iree/tooling/instrument_util.c
+++ b/runtime/src/iree/tooling/instrument_util.c
@@ -11,7 +11,6 @@
 #include <string.h>
 
 #include "iree/base/internal/flags.h"
-#include "iree/base/tracing.h"
 #include "iree/modules/hal/types.h"
 
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/tooling/modules/BUILD.bazel b/runtime/src/iree/tooling/modules/BUILD.bazel
index be2fcbd..68ae5be 100644
--- a/runtime/src/iree/tooling/modules/BUILD.bazel
+++ b/runtime/src/iree/tooling/modules/BUILD.bazel
@@ -18,7 +18,6 @@
     hdrs = ["resolver.h"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/modules/vmvx",
         "//runtime/src/iree/vm",
     ],
diff --git a/runtime/src/iree/tooling/modules/CMakeLists.txt b/runtime/src/iree/tooling/modules/CMakeLists.txt
index 4382c70..2a40edf 100644
--- a/runtime/src/iree/tooling/modules/CMakeLists.txt
+++ b/runtime/src/iree/tooling/modules/CMakeLists.txt
@@ -134,7 +134,6 @@
     ${_RESOLVER_EXTERNAL_COPTS}
   DEPS
     iree::base
-    iree::base::tracing
     iree::vm
     ${_RESOLVER_INTERNAL_DEPS}
     ${_RESOLVER_EXTERNAL_DEPS}
diff --git a/runtime/src/iree/tooling/modules/resolver.c b/runtime/src/iree/tooling/modules/resolver.c
index 5de1b5f..434299b 100644
--- a/runtime/src/iree/tooling/modules/resolver.c
+++ b/runtime/src/iree/tooling/modules/resolver.c
@@ -6,8 +6,6 @@
 
 #include "iree/tooling/modules/resolver.h"
 
-#include "iree/base/tracing.h"
-
 #if defined(IREE_HAVE_VMVX_MODULE)
 #include "iree/modules/vmvx/module.h"
 #endif  // IREE_HAVE_VMVX_MODULE
diff --git a/runtime/src/iree/tooling/numpy_io.c b/runtime/src/iree/tooling/numpy_io.c
index 2cb3943..18b4be7 100644
--- a/runtime/src/iree/tooling/numpy_io.c
+++ b/runtime/src/iree/tooling/numpy_io.c
@@ -6,8 +6,6 @@
 
 #include "iree/tooling/numpy_io.h"
 
-#include "iree/base/tracing.h"
-
 //===----------------------------------------------------------------------===//
 // .npy (multiple values concatenated)
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/tooling/run_module.c b/runtime/src/iree/tooling/run_module.c
index 0d416ab..d5a5636 100644
--- a/runtime/src/iree/tooling/run_module.c
+++ b/runtime/src/iree/tooling/run_module.c
@@ -8,7 +8,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/types.h"
 #include "iree/tooling/comparison.h"
diff --git a/runtime/src/iree/tooling/trace_replay.c b/runtime/src/iree/tooling/trace_replay.c
index a78df81..26ca499 100644
--- a/runtime/src/iree/tooling/trace_replay.c
+++ b/runtime/src/iree/tooling/trace_replay.c
@@ -15,7 +15,6 @@
 #include "iree/base/internal/file_io.h"
 #include "iree/base/internal/math.h"
 #include "iree/base/internal/path.h"
-#include "iree/base/tracing.h"
 #include "iree/modules/hal/module.h"
 #include "iree/tooling/device_util.h"
 #include "iree/tooling/numpy_io.h"
diff --git a/runtime/src/iree/tooling/vm_util.c b/runtime/src/iree/tooling/vm_util.c
index 11d89cf..46ee83a 100644
--- a/runtime/src/iree/tooling/vm_util.c
+++ b/runtime/src/iree/tooling/vm_util.c
@@ -12,7 +12,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/file_io.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/module.h"
 #include "iree/tooling/numpy_io.h"
diff --git a/runtime/src/iree/vm/BUILD.bazel b/runtime/src/iree/vm/BUILD.bazel
index 2145392..c7e2eef 100644
--- a/runtime/src/iree/vm/BUILD.bazel
+++ b/runtime/src/iree/vm/BUILD.bazel
@@ -38,7 +38,6 @@
     deps = [
         ":vm",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
         "//runtime/src/iree/base/internal:span",
     ],
 )
@@ -79,8 +78,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:synchronization",
     ],
diff --git a/runtime/src/iree/vm/CMakeLists.txt b/runtime/src/iree/vm/CMakeLists.txt
index c8ba240..9a8eeb3 100644
--- a/runtime/src/iree/vm/CMakeLists.txt
+++ b/runtime/src/iree/vm/CMakeLists.txt
@@ -30,7 +30,6 @@
   DEPS
     ::vm
     iree::base
-    iree::base::core_headers
     iree::base::internal::span
   PUBLIC
 )
@@ -66,10 +65,8 @@
     "stack.c"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::synchronization
-    iree::base::tracing
   PUBLIC
 )
 
diff --git a/runtime/src/iree/vm/buffer.c b/runtime/src/iree/vm/buffer.c
index 6c676ac..e1f0559 100644
--- a/runtime/src/iree/vm/buffer.c
+++ b/runtime/src/iree/vm/buffer.c
@@ -9,7 +9,6 @@
 #include <stddef.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
 #include "iree/vm/instance.h"
 
 IREE_VM_DEFINE_TYPE_ADAPTERS(iree_vm_buffer, iree_vm_buffer_t);
diff --git a/runtime/src/iree/vm/bytecode/BUILD.bazel b/runtime/src/iree/vm/bytecode/BUILD.bazel
index 8ea56e1..932a50e 100644
--- a/runtime/src/iree/vm/bytecode/BUILD.bazel
+++ b/runtime/src/iree/vm/bytecode/BUILD.bazel
@@ -38,7 +38,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/vm",
         "//runtime/src/iree/vm:ops",
diff --git a/runtime/src/iree/vm/bytecode/CMakeLists.txt b/runtime/src/iree/vm/bytecode/CMakeLists.txt
index 93c220b..53266b2 100644
--- a/runtime/src/iree/vm/bytecode/CMakeLists.txt
+++ b/runtime/src/iree/vm/bytecode/CMakeLists.txt
@@ -29,7 +29,6 @@
   DEPS
     iree::base
     iree::base::internal
-    iree::base::tracing
     iree::vm
     iree::vm::bytecode::utils
     iree::vm::ops
diff --git a/runtime/src/iree/vm/bytecode/module.c b/runtime/src/iree/vm/bytecode/module.c
index 3d8d3d8..97694d7 100644
--- a/runtime/src/iree/vm/bytecode/module.c
+++ b/runtime/src/iree/vm/bytecode/module.c
@@ -10,7 +10,6 @@
 #include <stdint.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
 #include "iree/vm/bytecode/archive.h"
 #include "iree/vm/bytecode/module_impl.h"
 #include "iree/vm/bytecode/verifier.h"
diff --git a/runtime/src/iree/vm/bytecode/utils/BUILD.bazel b/runtime/src/iree/vm/bytecode/utils/BUILD.bazel
index c8ec3be..7d318cf 100644
--- a/runtime/src/iree/vm/bytecode/utils/BUILD.bazel
+++ b/runtime/src/iree/vm/bytecode/utils/BUILD.bazel
@@ -26,7 +26,6 @@
     ],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal/flatcc:parsing",
         "//runtime/src/iree/schemas:bytecode_module_def_c_fbs",
diff --git a/runtime/src/iree/vm/bytecode/utils/CMakeLists.txt b/runtime/src/iree/vm/bytecode/utils/CMakeLists.txt
index ecdfd1f..c0229c4 100644
--- a/runtime/src/iree/vm/bytecode/utils/CMakeLists.txt
+++ b/runtime/src/iree/vm/bytecode/utils/CMakeLists.txt
@@ -25,7 +25,6 @@
     iree::base
     iree::base::internal
     iree::base::internal::flatcc::parsing
-    iree::base::tracing
     iree::schemas::bytecode_module_def_c_fbs
     iree::vm
   PUBLIC
diff --git a/runtime/src/iree/vm/bytecode/utils/block_list.c b/runtime/src/iree/vm/bytecode/utils/block_list.c
index d892893..bb3b2eb 100644
--- a/runtime/src/iree/vm/bytecode/utils/block_list.c
+++ b/runtime/src/iree/vm/bytecode/utils/block_list.c
@@ -6,8 +6,6 @@
 
 #include "iree/vm/bytecode/utils/block_list.h"
 
-#include "iree/base/tracing.h"
-
 iree_status_t iree_vm_bytecode_block_list_initialize(
     uint32_t capacity, iree_allocator_t allocator,
     iree_vm_bytecode_block_list_t* out_block_list) {
diff --git a/runtime/src/iree/vm/context.c b/runtime/src/iree/vm/context.c
index 9334d07..ce84a8e 100644
--- a/runtime/src/iree/vm/context.c
+++ b/runtime/src/iree/vm/context.c
@@ -12,7 +12,6 @@
 
 #include "iree/base/internal/atomics.h"
 #include "iree/base/internal/debugging.h"
-#include "iree/base/tracing.h"
 
 struct iree_vm_context_t {
   iree_atomic_ref_count_t ref_count;
diff --git a/runtime/src/iree/vm/dynamic/BUILD.bazel b/runtime/src/iree/vm/dynamic/BUILD.bazel
index b3bd562..ef30621 100644
--- a/runtime/src/iree/vm/dynamic/BUILD.bazel
+++ b/runtime/src/iree/vm/dynamic/BUILD.bazel
@@ -28,8 +28,6 @@
     deps = [
         ":api",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:dynamic_library",
         "//runtime/src/iree/vm",
diff --git a/runtime/src/iree/vm/dynamic/CMakeLists.txt b/runtime/src/iree/vm/dynamic/CMakeLists.txt
index 0a68204..276f9b0 100644
--- a/runtime/src/iree/vm/dynamic/CMakeLists.txt
+++ b/runtime/src/iree/vm/dynamic/CMakeLists.txt
@@ -31,10 +31,8 @@
   DEPS
     ::api
     iree::base
-    iree::base::core_headers
     iree::base::internal
     iree::base::internal::dynamic_library
-    iree::base::tracing
     iree::vm
   PUBLIC
 )
diff --git a/runtime/src/iree/vm/dynamic/module.c b/runtime/src/iree/vm/dynamic/module.c
index 5e3f934..bd23b9c 100644
--- a/runtime/src/iree/vm/dynamic/module.c
+++ b/runtime/src/iree/vm/dynamic/module.c
@@ -7,7 +7,6 @@
 #include "iree/vm/dynamic/module.h"
 
 #include "iree/base/internal/dynamic_library.h"
-#include "iree/base/tracing.h"
 
 typedef struct {
   // Interface containing local function pointers.
diff --git a/runtime/src/iree/vm/instance.c b/runtime/src/iree/vm/instance.c
index bbd566c..39e799f 100644
--- a/runtime/src/iree/vm/instance.c
+++ b/runtime/src/iree/vm/instance.c
@@ -10,7 +10,6 @@
 
 #include "iree/base/internal/atomics.h"
 #include "iree/base/internal/synchronization.h"
-#include "iree/base/tracing.h"
 
 // Defined in their respective files:
 iree_status_t iree_vm_buffer_register_types(iree_vm_instance_t* instance);
diff --git a/runtime/src/iree/vm/invocation.c b/runtime/src/iree/vm/invocation.c
index fbb39d6..b8ac05f 100644
--- a/runtime/src/iree/vm/invocation.c
+++ b/runtime/src/iree/vm/invocation.c
@@ -12,7 +12,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/debugging.h"
-#include "iree/base/tracing.h"
 #include "iree/vm/ref.h"
 #include "iree/vm/stack.h"
 #include "iree/vm/value.h"
diff --git a/runtime/src/iree/vm/list.c b/runtime/src/iree/vm/list.c
index fd49c68..8addf8e 100644
--- a/runtime/src/iree/vm/list.c
+++ b/runtime/src/iree/vm/list.c
@@ -11,7 +11,6 @@
 #include <stdint.h>
 #include <string.h>
 
-#include "iree/base/tracing.h"
 #include "iree/vm/instance.h"
 
 static uint8_t iree_vm_value_type_size(iree_vm_type_def_t type) {
diff --git a/runtime/src/iree/vm/module.c b/runtime/src/iree/vm/module.c
index c1269b2..e2a6e29 100644
--- a/runtime/src/iree/vm/module.c
+++ b/runtime/src/iree/vm/module.c
@@ -9,7 +9,6 @@
 #include <string.h>
 
 #include "iree/base/internal/atomics.h"
-#include "iree/base/tracing.h"
 #include "iree/vm/ref.h"
 #include "iree/vm/stack.h"
 
diff --git a/runtime/src/iree/vm/module.h b/runtime/src/iree/vm/module.h
index 7542139..2e393d1 100644
--- a/runtime/src/iree/vm/module.h
+++ b/runtime/src/iree/vm/module.h
@@ -11,10 +11,8 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "iree/base/alignment.h"
 #include "iree/base/api.h"
 #include "iree/base/internal/atomics.h"
-#include "iree/base/string_builder.h"
 #include "iree/vm/ref.h"
 
 #ifdef __cplusplus
diff --git a/runtime/src/iree/vm/shims.h b/runtime/src/iree/vm/shims.h
index 2d7a2e9..7109935 100644
--- a/runtime/src/iree/vm/shims.h
+++ b/runtime/src/iree/vm/shims.h
@@ -12,8 +12,6 @@
 #include <string.h>
 
 #include "iree/base/api.h"
-#include "iree/base/attributes.h"
-#include "iree/base/target_platform.h"
 #include "iree/vm/module.h"
 #include "iree/vm/native_module.h"
 #include "iree/vm/ref.h"
diff --git a/runtime/src/iree/vm/stack.c b/runtime/src/iree/vm/stack.c
index 5e05959..7c1c8ed 100644
--- a/runtime/src/iree/vm/stack.c
+++ b/runtime/src/iree/vm/stack.c
@@ -11,9 +11,7 @@
 #include <stdbool.h>
 #include <string.h>
 
-#include "iree/base/alignment.h"
 #include "iree/base/api.h"
-#include "iree/base/tracing.h"
 #include "iree/vm/module.h"
 
 //===----------------------------------------------------------------------===//
diff --git a/runtime/src/iree/vm/stack.h b/runtime/src/iree/vm/stack.h
index 7cb3253..6a94a7f 100644
--- a/runtime/src/iree/vm/stack.h
+++ b/runtime/src/iree/vm/stack.h
@@ -10,11 +10,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#include "iree/base/alignment.h"
 #include "iree/base/api.h"
-#include "iree/base/attributes.h"
-#include "iree/base/string_builder.h"
-#include "iree/base/tracing.h"
 #include "iree/vm/module.h"
 #include "iree/vm/ref.h"
 
diff --git a/tools/BUILD.bazel b/tools/BUILD.bazel
index 464c330..231a66a 100644
--- a/tools/BUILD.bazel
+++ b/tools/BUILD.bazel
@@ -29,7 +29,6 @@
     srcs = ["iree-benchmark-module-main.cc"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/modules/hal:types",
@@ -46,7 +45,6 @@
     srcs = ["iree-benchmark-trace-main.c"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:atomic_slist",
         "//runtime/src/iree/base/internal:file_io",
         "//runtime/src/iree/base/internal:flags",
@@ -68,8 +66,6 @@
     srcs = ["iree-check-module-main.cc"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:file_io",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
@@ -162,7 +158,6 @@
         "//compiler/src/iree/compiler/API:Impl",
         "//runtime/src:runtime_defines",
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/tooling:context_util",
@@ -177,7 +172,6 @@
     srcs = ["iree-run-module-main.c"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/hal",
         "//runtime/src/iree/tooling:context_util",
@@ -191,7 +185,6 @@
     srcs = ["iree-run-trace-main.c"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal:flags",
         "//runtime/src/iree/base/internal:path",
         "//runtime/src/iree/hal",
@@ -209,8 +202,6 @@
     srcs = ["iree-e2e-matmul-test.c"],
     deps = [
         "//runtime/src/iree/base",
-        "//runtime/src/iree/base:core_headers",
-        "//runtime/src/iree/base:tracing",
         "//runtime/src/iree/base/internal",
         "//runtime/src/iree/base/internal:cpu",
         "//runtime/src/iree/base/internal:flags",
diff --git a/tools/CMakeLists.txt b/tools/CMakeLists.txt
index f4f1206..e37e639 100644
--- a/tools/CMakeLists.txt
+++ b/tools/CMakeLists.txt
@@ -57,7 +57,6 @@
     benchmark
     iree::base
     iree::base::internal::flags
-    iree::base::tracing
     iree::hal
     iree::modules::hal::types
     iree::tooling::context_util
@@ -77,7 +76,6 @@
     iree::base::internal::file_io
     iree::base::internal::flags
     iree::base::internal::path
-    iree::base::tracing
     iree::hal
     iree::modules::hal
     iree::testing::benchmark
@@ -96,10 +94,8 @@
     "iree-check-module-main.cc"
   DEPS
     iree::base
-    iree::base::core_headers
     iree::base::internal::file_io
     iree::base::internal::flags
-    iree::base::tracing
     iree::hal
     iree::modules::check
     iree::testing::gtest
@@ -178,7 +174,6 @@
   DEPS
     iree::base
     iree::base::internal::flags
-    iree::base::tracing
     iree::hal
     iree::tooling::context_util
     iree::tooling::run_module
@@ -194,7 +189,6 @@
     iree::base
     iree::base::internal::flags
     iree::base::internal::path
-    iree::base::tracing
     iree::hal
     iree::modules::hal
     iree::tooling::device_util
@@ -215,7 +209,6 @@
     iree::base::internal::cpu
     iree::base::internal::flags
     iree::base::internal::path
-    iree::base::tracing
     iree::hal
     iree::modules::hal
     iree::tooling::device_util
@@ -300,7 +293,6 @@
     DEPS
       iree::base
       iree::base::internal::flags
-      iree::base::tracing
       iree::compiler::bindings::c::headers
       iree::compiler::API::Impl
       iree::hal
diff --git a/tools/iree-benchmark-module-main.cc b/tools/iree-benchmark-module-main.cc
index a6bd9ab..4812741 100644
--- a/tools/iree-benchmark-module-main.cc
+++ b/tools/iree-benchmark-module-main.cc
@@ -63,7 +63,6 @@
 #include "benchmark/benchmark.h"
 #include "iree/base/api.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/types.h"
 #include "iree/tooling/context_util.h"
@@ -163,7 +162,8 @@
                                      iree_vm_function_t function,
                                      iree_vm_list_t* inputs,
                                      benchmark::State& state) {
-  IREE_TRACE_SCOPE_DYNAMIC(benchmark_name.c_str());
+  IREE_TRACE_ZONE_BEGIN_NAMED_DYNAMIC(z0, benchmark_name.data(),
+                                      benchmark_name.size());
   IREE_TRACE_FRAME_MARK();
 
   vm::ref<iree_vm_list_t> outputs;
@@ -172,14 +172,17 @@
 
   // Benchmarking loop.
   while (state.KeepRunningBatch(batch_size)) {
-    IREE_TRACE_SCOPE0("BenchmarkIteration");
+    IREE_TRACE_ZONE_BEGIN_NAMED(z1, "BenchmarkIteration");
     IREE_TRACE_FRAME_MARK_NAMED("Iteration");
     IREE_CHECK_OK(iree_vm_invoke(
         context, function, IREE_VM_INVOCATION_FLAG_NONE, /*policy=*/nullptr,
         inputs, outputs.get(), iree_allocator_system()));
     IREE_CHECK_OK(iree_vm_list_resize(outputs.get(), 0));
+    IREE_TRACE_ZONE_END(z1);
   }
   state.SetItemsProcessed(state.iterations());
+
+  IREE_TRACE_ZONE_END(z0);
 }
 
 void RegisterGenericBenchmark(const std::string& function_name,
@@ -222,7 +225,8 @@
     int32_t batch_concurrency, iree_hal_device_t* device,
     iree_vm_context_t* context, iree_vm_function_t function,
     iree_vm_list_t* common_inputs, benchmark::State& state) {
-  IREE_TRACE_SCOPE_DYNAMIC(benchmark_name.c_str());
+  IREE_TRACE_ZONE_BEGIN_NAMED_DYNAMIC(z0, benchmark_name.data(),
+                                      benchmark_name.size());
   IREE_TRACE_FRAME_MARK();
   iree_allocator_t host_allocator = iree_allocator_system();
 
@@ -231,10 +235,9 @@
 
   // Benchmarking loop.
   while (state.KeepRunningBatch(batch_size)) {
-    IREE_TRACE_SCOPE0("BenchmarkIteration");
-    IREE_TRACE_FRAME_MARK_NAMED("Iteration");
-
     state.PauseTiming();
+    IREE_TRACE_ZONE_BEGIN_NAMED(z1, "BenchmarkIteration");
+    IREE_TRACE_FRAME_MARK_NAMED("Iteration");
 
     IREE_TRACE_ZONE_BEGIN_NAMED(z_begin, "PrepareBatch");
 
@@ -324,9 +327,12 @@
     timeline_semaphores.clear();
     IREE_TRACE_ZONE_END(z_end);
 
+    IREE_TRACE_ZONE_END(z1);
     state.ResumeTiming();
   }
   state.SetItemsProcessed(state.iterations());
+
+  IREE_TRACE_ZONE_END(z0);
 }
 
 void RegisterAsyncBenchmark(const std::string& function_name,
@@ -358,7 +364,8 @@
                                       iree_vm_context_t* context,
                                       iree_vm_function_t function,
                                       benchmark::State& state) {
-  IREE_TRACE_SCOPE_DYNAMIC(benchmark_name.c_str());
+  IREE_TRACE_ZONE_BEGIN_NAMED_DYNAMIC(z0, benchmark_name.data(),
+                                      benchmark_name.size());
   IREE_TRACE_FRAME_MARK();
 
   vm::ref<iree_vm_list_t> inputs;
@@ -373,14 +380,17 @@
 
   // Benchmarking loop.
   while (state.KeepRunningBatch(FLAG_batch_size)) {
-    IREE_TRACE_SCOPE0("BenchmarkIteration");
+    IREE_TRACE_ZONE_BEGIN_NAMED(z1, "BenchmarkIteration");
     IREE_TRACE_FRAME_MARK_NAMED("Iteration");
     IREE_CHECK_OK(iree_vm_invoke(
         context, function, IREE_VM_INVOCATION_FLAG_NONE, /*policy=*/nullptr,
         inputs.get(), outputs.get(), iree_allocator_system()));
     IREE_CHECK_OK(iree_vm_list_resize(outputs.get(), 0));
+    IREE_TRACE_ZONE_END(z1);
   }
   state.SetItemsProcessed(state.iterations());
+
+  IREE_TRACE_ZONE_END(z0);
 }
 
 void RegisterDispatchBenchmark(const std::string& function_name,
@@ -411,7 +421,7 @@
   IREEBenchmark() { iree_tooling_module_list_initialize(&module_list_); }
 
   ~IREEBenchmark() {
-    IREE_TRACE_SCOPE0("IREEBenchmark::dtor");
+    IREE_TRACE_SCOPE_NAMED("IREEBenchmark::dtor");
 
     // Order matters. Tear down modules first to release resources.
     inputs_.reset();
@@ -431,7 +441,7 @@
   iree_hal_device_t* device() const { return device_.get(); }
 
   iree_status_t Register() {
-    IREE_TRACE_SCOPE0("IREEBenchmark::Register");
+    IREE_TRACE_SCOPE_NAMED("IREEBenchmark::Register");
 
     if (!instance_ || !device_allocator_ || !context_ || !module_list_.count) {
       IREE_RETURN_IF_ERROR(Init());
@@ -448,7 +458,7 @@
 
  private:
   iree_status_t Init() {
-    IREE_TRACE_SCOPE0("IREEBenchmark::Init");
+    IREE_TRACE_SCOPE_NAMED("IREEBenchmark::Init");
     IREE_TRACE_FRAME_MARK_BEGIN_NAMED("init");
 
     iree_allocator_t host_allocator = iree_allocator_system();
@@ -468,7 +478,7 @@
   }
 
   iree_status_t RegisterSpecificFunction(const std::string& function_name) {
-    IREE_TRACE_SCOPE0("IREEBenchmark::RegisterSpecificFunction");
+    IREE_TRACE_SCOPE_NAMED("IREEBenchmark::RegisterSpecificFunction");
 
     iree_vm_module_t* main_module =
         iree_tooling_module_list_back(&module_list_);
@@ -498,7 +508,7 @@
   }
 
   iree_status_t RegisterAllExportedFunctions() {
-    IREE_TRACE_SCOPE0("IREEBenchmark::RegisterAllExportedFunctions");
+    IREE_TRACE_SCOPE_NAMED("IREEBenchmark::RegisterAllExportedFunctions");
     iree_vm_module_t* main_module =
         iree_tooling_module_list_back(&module_list_);
     iree_vm_module_signature_t signature =
@@ -579,7 +589,7 @@
 }  // namespace iree
 
 int main(int argc, char** argv) {
-  IREE_TRACE_SCOPE0("main");
+  IREE_TRACE_SCOPE_NAMED("main");
 
   // Pass through flags to benchmark (allowing --help to fall through).
   iree_flags_parse_checked(IREE_FLAGS_PARSE_MODE_UNDEFINED_OK |
diff --git a/tools/iree-check-module-main.cc b/tools/iree-check-module-main.cc
index e45b472..e624443 100644
--- a/tools/iree-check-module-main.cc
+++ b/tools/iree-check-module-main.cc
@@ -14,8 +14,6 @@
 #include "iree/base/api.h"
 #include "iree/base/internal/file_io.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/target_platform.h"
-#include "iree/base/tracing.h"
 #include "iree/hal/api.h"
 #include "iree/modules/check/module.h"
 #include "iree/testing/gtest.h"
@@ -79,7 +77,6 @@
 };
 
 iree_status_t Run(iree_allocator_t host_allocator, int* out_exit_code) {
-  IREE_TRACE_SCOPE0("iree-check-module");
   *out_exit_code = 1;
 
   iree_vm_instance_t* instance = nullptr;
@@ -158,9 +155,12 @@
                            &argc, &argv);
   ::testing::InitGoogleTest(&argc, argv);
 
+  IREE_TRACE_ZONE_BEGIN_NAMED(z0, "iree-check-module");
   int exit_code = 1;
   iree_status_t status = Run(iree_allocator_system(), &exit_code);
   int ret = iree_status_is_ok(status) ? exit_code : 1;
+  IREE_TRACE_ZONE_END(z0);
+
   if (FLAG_expect_failure) {
     if (ret == 0) {
       printf("Test passed but expected failure\n");
diff --git a/tools/iree-e2e-matmul-test.c b/tools/iree-e2e-matmul-test.c
index ed941cb..a1a2ead 100644
--- a/tools/iree-e2e-matmul-test.c
+++ b/tools/iree-e2e-matmul-test.c
@@ -15,7 +15,6 @@
 #include "iree/base/internal/flags.h"
 #include "iree/base/internal/math.h"
 #include "iree/base/internal/path.h"
-#include "iree/base/target_platform.h"
 #include "iree/hal/api.h"
 #include "iree/modules/hal/module.h"
 #include "iree/tooling/device_util.h"
diff --git a/tools/iree-run-mlir-main.cc b/tools/iree-run-mlir-main.cc
index 63bfd5a..66a92e8 100644
--- a/tools/iree-run-mlir-main.cc
+++ b/tools/iree-run-mlir-main.cc
@@ -63,7 +63,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/tracing.h"
 #include "iree/compiler/embedding_api.h"
 #include "iree/hal/api.h"
 #include "iree/tooling/context_util.h"
@@ -241,7 +240,7 @@
 // Runs the given .mlir file based on the current flags.
 StatusOr<int> CompileAndRunFile(iree_compiler_session_t* session,
                                 const char* mlir_filename) {
-  IREE_TRACE_SCOPE0("CompileAndRunFile");
+  IREE_TRACE_SCOPE_NAMED("CompileAndRunFile");
 
   // Configure the --iree-hal-target-backends= flag and/or get the default
   // device to use at runtime if either are not explicitly specified.
@@ -466,7 +465,7 @@
 }  // namespace
 
 extern "C" int main(int argc, char** argv) {
-  IREE_TRACE_SCOPE0("iree-run-mlir");
+  IREE_TRACE_SCOPE_NAMED("iree-run-mlir");
 
   // Initialize the compiler once on startup before using any other APIs.
   ireeCompilerGlobalInitialize();
diff --git a/tools/iree-run-module-main.c b/tools/iree-run-module-main.c
index f18d5c5..0fd3c02 100644
--- a/tools/iree-run-module-main.c
+++ b/tools/iree-run-module-main.c
@@ -6,7 +6,6 @@
 
 #include "iree/base/api.h"
 #include "iree/base/internal/flags.h"
-#include "iree/base/tracing.h"
 #include "iree/tooling/context_util.h"
 #include "iree/tooling/run_module.h"
 #include "iree/vm/api.h"