HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
oracle
libdtrace-ctf
C2019–2019
oracle / libdtrace-ctf

libdtrace-ctf

libdtrace-ctf is the Compact Type Format library used by DTrace on Linux

3Distinct people
3Mentions
0Explicit recommenders
49GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

libdtrace-ctf is the Compact Type Format library used by DTrace on Linux

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 5:58:02 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by week3 dated mentions

Observed mentions: 2019-03-12 00:17:15 UTC to 2019-07-24 22:58:48 UTC. Weeks start Monday, UTC.

0122019-03-11 00:00:00 UTC to 2019-03-18 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 commentsMar 112019-03-18 00:00:00 UTC to 2019-03-25 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-03-25 00:00:00 UTC to 2019-04-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-04-01 00:00:00 UTC to 2019-04-08 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-04-08 00:00:00 UTC to 2019-04-15 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-04-15 00:00:00 UTC to 2019-04-22 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-04-22 00:00:00 UTC to 2019-04-29 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-04-29 00:00:00 UTC to 2019-05-06 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-05-06 00:00:00 UTC to 2019-05-13 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-05-13 00:00:00 UTC to 2019-05-20 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsMay 132019-05-20 00:00:00 UTC to 2019-05-27 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-05-27 00:00:00 UTC to 2019-06-03 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-06-03 00:00:00 UTC to 2019-06-10 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-06-10 00:00:00 UTC to 2019-06-17 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-06-17 00:00:00 UTC to 2019-06-24 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-06-24 00:00:00 UTC to 2019-07-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-01 00:00:00 UTC to 2019-07-08 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-08 00:00:00 UTC to 2019-07-15 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-15 00:00:00 UTC to 2019-07-22 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2019-07-22 00:00:00 UTC to 2019-07-29 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsJul 22

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Mar 112019-03-11 00:00:00 UTC2019-03-18 00:00:00 UTC202
Mar 182019-03-18 00:00:00 UTC2019-03-25 00:00:00 UTC000
Mar 252019-03-25 00:00:00 UTC2019-04-01 00:00:00 UTC000
Apr 12019-04-01 00:00:00 UTC2019-04-08 00:00:00 UTC000
Apr 82019-04-08 00:00:00 UTC2019-04-15 00:00:00 UTC000
Apr 152019-04-15 00:00:00 UTC2019-04-22 00:00:00 UTC000
Apr 222019-04-22 00:00:00 UTC2019-04-29 00:00:00 UTC000
Apr 292019-04-29 00:00:00 UTC2019-05-06 00:00:00 UTC000
May 62019-05-06 00:00:00 UTC2019-05-13 00:00:00 UTC000
May 132019-05-13 00:00:00 UTC2019-05-20 00:00:00 UTC000
May 202019-05-20 00:00:00 UTC2019-05-27 00:00:00 UTC000
May 272019-05-27 00:00:00 UTC2019-06-03 00:00:00 UTC000
Jun 32019-06-03 00:00:00 UTC2019-06-10 00:00:00 UTC000
Jun 102019-06-10 00:00:00 UTC2019-06-17 00:00:00 UTC000
Jun 172019-06-17 00:00:00 UTC2019-06-24 00:00:00 UTC000
Jun 242019-06-24 00:00:00 UTC2019-07-01 00:00:00 UTC000
Jul 12019-07-01 00:00:00 UTC2019-07-08 00:00:00 UTC000
Jul 82019-07-08 00:00:00 UTC2019-07-15 00:00:00 UTC000
Jul 152019-07-15 00:00:00 UTC2019-07-22 00:00:00 UTC000
Jul 222019-07-22 00:00:00 UTC2019-07-29 00:00:00 UTC101

What Hacker News says

1 sources
From what I know about it, gobject-introspection has some nice properties, but one killer drawback: it's incompatible with cross compilation. This is apparently because it requires running binaries compiled for the target system as part of the build process. You actually can cross compile if you have an emulator for that system handy [1], but that's horrible. Apparently the reason it requires running the compiled binaries is that GObject types are only registered at runtime, within so-called "_get_type" functions. For more typical systems, everything needed can be determined at compile time. Too bad there's no portable way to ask a C compiler to dump what it knows about a source file, but if you just want things like struct sizes and field offsets, you can compile a C file that embeds them as global variables, and then extract the var
Read the rest
iable values. For more advanced introspection there are many less-portable options including Clang's API, GCC-XML, parsing debug info, or writing your own compiler (easier for C; it seems that parts of gobject-introspection work like this). Anyway, another interesting comparison is DTrace's CTF (Compact Type Format) [2], a simple binary format that describes the kernel's C struct layouts, function signatures, etc. This information is simply converted from compiler-generated debug info [3], but it's stripped down enough that it can be embedded into every kernel without too much size overhead. When the DTrace compiler is invoked to compile a user hook, it parses the CTF data and exposes the types and functions to the user's code (which is written in a custom C-like language). Ironically, BPF has BTF, which is a very similar-looking format that encodes very similar kinds of data – but is used for a completely different purpose. Specifically, it's only used to encode types and functions defined by BPF programs, to allow the kernel to pretty-print things. But in theory BTF could be repurposed to work like CTF: you would need to generate BTF information for the kernel itself, and then Clang could be extended to support "including" BTF files in place of C headers. However, this option was apparently discussed and rejected [4]. I haven't read the original threads to find out why, but I suspect it might involve: - Lack of existing tooling to do the above; - Lower expressivity compared to C headers, e.g. the inability to encode macros (although this could be fixed); - Desire to use the information for building not just BPF hooks but also full-fledged kernel modules. [1] https://maxice8.github.io/8-cross-the-gir/ [2] https://github.com/oracle/libdtrace-ctf/blob/master/include/... [3] https://www.freebsd.org/cgi/man.cgi?query=ctfconvert&sektion... [4] https://lwn.net/Articles/783832/
In Extending the Linux Kernel with Built-In Kernel Headers

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.