CLTRACE: DTrace inspired tracing and observability framework for Common Lisp applications
11 points by marcecoll
11 points by marcecoll
It's in very early stages, but wanted to get feedback on what people think on the utility of this. I love dtrace but I'm not on solaris for many cases and I think something that integrates better with the language may be interesting to explore.
I'm imagining both ad-hoc cltrace programs as well as your application shipping with premade ones that you can install on-demand.
something that integrates better with the language may be interesting to explore.
One aspect of dtrace that's often sold too short is that userland processes could add probes via providers. For example for Java see https://www.brendangregg.com/Slides/dtrace_topics_java.pdf, and - untested - there's https://www.npmjs.com/package/dtrace-provider for node.
Another aspect: it's available not only on Solaris but also on macOS (although Apple seems to have pretty much neutered it with its restrictions to kernel access in recent releases), FreeBSD, Windows, and there are Linux patches, some of them by Oracle themselves and properly licensed for inclusion - but sadly most of them seem to be abandoned (and Oracle's patch set is against their "unbreakable linux" kernel that starts from an ancient RHEL base, with tons of RedHat backporting of changes and even more stuff by Oracle on top, so not sure how well it translates to current-era Linux)…
One aspect of dtrace that's often sold too short is that userland processes could add probes via providers.
yes! it's a bit awkward to do tho, and when integrating it into your application you need to have them implemented beforehand.
Another aspect: it's available not only on Solaris but also on macOS
Indeed, dtrace on mac is basically useless.
there are Linux patches
There is also bpftrace, but like dtrace, while it works very well for C-like languages, it's quite a bit more awkward for highly dinamic languages like CL. I had a lot of trouble tracing Erlang even though it theoretically has support for it for example.
Looks neat!
I've been trying out Mahogany this week, and I'll give CLTrace a try to see if it helps better understand how it's working.
Its extremely barebones right now, so quite a bit of functionality is missing, so feel free to hit me up with with what is a priority for you and I'll wire it up!