# \[ANN\] ZoneProfilers.jl: Another interface for the Tracy profiler

**URL:** https://discourse.julialang.org/t/ann-zoneprofilers-jl-another-interface-for-the-tracy-profiler/133806
**Category:** Package Announcements
**Tags:** performance, multithreading, profiling
**Created:** [November 11, 2025, 11:22pm UTC](https://discourse.julialang.org/t/ann-zoneprofilers-jl-another-interface-for-the-tracy-profiler/133806 "2025-11-11T23:22:52Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![nhz2](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nhz2/32/44428_2.png) [@nhz2](https://discourse.julialang.org/u/nhz2)
#### Post date: [November 11, 2025, 11:22pm UTC](https://discourse.julialang.org/t/ann-zoneprofilers-jl-another-interface-for-the-tracy-profiler/133806/1 "2025-11-11T23:22:52Z")

</div>

> **[GitHub - nhz2/ZoneProfilers.jl: A Julia interface for the Tracy...](https://github.com/nhz2/ZoneProfilers.jl)**
>
> A Julia interface for the Tracy instrumentation-based profiler, designed for multithreaded simulations.

I have been working on an interface for the [tracy profiler](https://github.com/wolfpld/tracy/) to profile a multithreaded program I am working on.

 ![image](https://global.discourse-cdn.com/julialang/original/3X/e/8/e845f5fead722a4f16c3bd12f3f951545527d1d9.png)

 ![Screenshot from 2025-11-11 16-54-48](https://global.discourse-cdn.com/julialang/original/3X/0/4/044a7aad16066a3c79844219940578ea883b5647.jpeg)

There are two closely related packages.

1. ZoneProfilers.jl provides utilities to mark up code and a `Profiler` interface.
2. ZoneProfilerTracy.jl has the tracy client C library wrapper that implements the `Profiler` interface.

Like TimerOutputs.jl, tracy requires code to be instrumented for timing.

ZoneProfilers.jl is based on the existing Tracy.jl package, but has a different API and approach to handling multithreading.

### Quick Start

```julia-repl
julia> import TracyProfiler_jll

julia> using ZoneProfilerTracy: TracyProfiler

julia> using ZoneProfilers

julia> profiler = TracyProfiler(TracyProfiler_jll)

julia> @zone profiler name="my zone" begin
          zone_text!(profiler, "hello tracy")
          sleep(0.5)
       end

```
