The next async-profiler release (coming after 2.9) includes a few changes that will break gProfiler and require our preparation. We prepare ahead of time because I'd like to use the new version as soon as it's released - new features and bugfixes are always good.
The 2 breaking changes I'm aware of now are:
https://github.com/async-profiler/async-profiler/commit/4a7ce8ce79bb0dea5f14dc859989950b5299f1bd - Binary launcher - no more jattach - AP is now invoked via a binary called "asprof" which internally invokes jattach-alike behavior. I think it's best if we move to use the new asprof binary - so our async-profiler build will now give asprof and we need to use the API it provides to start/stop/dump async-profiler.
"Binary launcher" also stops building jattach - I think the best course of action would be to expose jattach behavior from asprof. Internally in asprof there's a function run_jattach so we can expose it with a subcommand, then for our usage of getting JVM flags etc we can use this new subcommand. Alternatively, we can build jattach separately, but I prefer the previous solution.
https://github.com/async-profiler/async-profiler/commit/ac561f3ba7d98b9bb0929925af0020ded4882d3e - we might want to use it, i.e stop building both musl and glibc variants, and try to use one. I'm reluctant to make such a big change so FWIW from my end we can remain with the 2 builds, at the very least if we use the incorrect one, we won't crash :shrug: there's still a difference between musl and glibc because musl is built with static libgcc and libstdc++, because most musl envs don't have them. glibc is not built with them static, and I'd like to keep it that way, to retain smaller binary size. So if we do make the musl change, we will still need to maintain 2 variants, one being static libs and one not static. All in all I'm in favor of not mixing the 2 changes.
The next async-profiler release (coming after 2.9) includes a few changes that will break gProfiler and require our preparation. We prepare ahead of time because I'd like to use the new version as soon as it's released - new features and bugfixes are always good.
The 2 breaking changes I'm aware of now are:
asprof
and we need to use the API it provides to start/stop/dump async-profiler.run_jattach
so we can expose it with a subcommand, then for our usage of getting JVM flags etc we can use this new subcommand. Alternatively, we can build jattach separately, but I prefer the previous solution.