Re: [DynInst_API:] Status of Dyninst 10


Date: Wed, 08 Aug 2018 08:43:30 -0500
From: Xiaozhu Meng <xmeng@xxxxxxxxxxx>
Subject: Re: [DynInst_API:] Status of Dyninst 10
In terms of the timeline for Dyninst 10.0, I will need to double-check with Bart because he is traveling today, but I think by the end of month we should be able to release 10.0.

In terms of ABI compatibility, we have not used libabigail yet. We tried to keep track of API-breaking changes. But for ABI-breaking changes, we do not have a list. My estimation is that there are other ABI-breaking changes in 10.0 since it is going to be major release.

For the change for InstructionAPI::Instruction, this is an API-breaking change. So, user of Dyninst will need to either compile with the old version or the new version. Making this change was before me started to work with parallel code parsing, but I believe shared instruction objects have caused too many data races and lock contention between threads.Â

On Tue, Aug 7, 2018 at 2:17 PM William Cohen <wcohen@xxxxxxxxxx> wrote:
On 05/11/2018 11:21 AM, Xiaozhu Meng wrote:
> Hi,
>
> Dyninst 10 is going to be released before July. The current master branch on the github is close to Dyninst 10 in terms of API.
>
> One of the remaining task before releasing Dyninst 10 is integrating parallel parsing. The main interface change caused by this task is changing InstructionAPI::Instruction objects from passing by shared pointers to passing by values.
>
> Right now, you have
> InstructionAPI::Instruction::Ptr insn = decoder.decode();
> printf("Instruction %s\n", insn->format().c_str());
>
> In Dyninst 10, you will have
>
> InstructionAPI::Instruction insn = decoder.decode();
> printf("Instruction %s\n", insn.format().c_str());
>
>
> Other than this interface breaking change, there could be new interface added. For example, there is a pull request of adding instrumentation snippet for xor. There should also be new interface for specifying the number of threads to use for parallel parsing.Â
>
> In summary, Dyninst 10 will be significantly different from its previous version internally, but the interface will be quite compatible excluding the Instruction part.
>
> Thanks,
>
> --Xiaozhu

Hi,

There is a tool, libabigail, to check ABI compatibility issues:

https://developers.redhat.com/blog/2014/10/23/comparing-abis-for-compatibility-with-libabigail-part-1/
https://developers.redhat.com/blog/2014/10/28/comparing-abis-for-compatibility-libabigail-part-2/
https://fedoraproject.org/wiki/How_to_check_for_ABI_changes_with_abipkgdiff

Have there been checks of the dyninst shared libraries to make sure there are not other changes in the ABI?

So with this change to InstructionAPI::Instruction objects one would need to compile code either for the old or the new version of library? What was the reason for changing to passing by value?

-Will

>
> On Fri, May 11, 2018 at 5:59 AM, GermÃn Llort <gllort@xxxxxx <mailto:gllort@xxxxxx>> wrote:
>
>Â Â ÂHi!
>
>Â Â ÂI am writing to inquire about the status of the next major release of
>Â Â ÂDyninst 10.
>
>Â Â ÂWe were planning to do a new development on top of Dyninst, but in the
>Â Â Âroadmap shown in the GitHub page we read that you were planning to
>Â Â Âintroduce big changes and break compatibility with several APIs.
>
>Â Â ÂIf you could give us any update on the estimated release date, this would be
>Â Â Âhelpful for us to decide whether it's worth to hold our development
>Â Â Âwaiting for the latest version, or go ahead with the current one despite
>Â Â Âthe upcoming changes.
>
>Â Â ÂBest regards!
>Â Â Â-- G.
>
>
>Â Â Âhttp://bsc.es/disclaimer
>Â Â Â_______________________________________________
>Â Â ÂDyninst-api mailing list
>Â Â ÂDyninst-api@xxxxxxxxxxx <mailto:Dyninst-api@xxxxxxxxxxx>
>Â Â Âhttps://lists.cs.wisc.edu/mailman/listinfo/dyninst-api <https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api>
>
>
>
>
> _______________________________________________
> Dyninst-api mailing list
> Dyninst-api@xxxxxxxxxxx
> https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api
>

[← Prev in Thread] Current Thread [Next in Thread→]