<div dir="ltr">Wow, this is excellent to hear about!   It looks like we have something fun to dig into this weekend!<div><br></div><div>Thanks,</div><div>Justin</div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Fri, Aug 8, 2025 at 5:03 AM Jens Dietrich via rb-general <<a href="mailto:rb-general@lists.reproducible-builds.org">rb-general@lists.reproducible-builds.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">



<div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
Introducing DALEQ: An Open-Source Tool for Assessing Java Binary Equivalence</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
We’re excited to announce the release of DALEQ — a new open-source tool for analyzing and comparing Java binaries. DALEQ is designed to help developers, security researchers, and build engineers assess whether two .jar files built from the same source code
 are semantically equivalent, even when they’re not bitwise identical. This is particularly useful for comparing  jars from Maven Central and jars produced via reproducible builds, or  generated by services like Oracle’s build-from-source or Google’s Assured
 OSS. Although tools like diff or hash-based checks can detect binary differences, they don’t explain why binaries differ, or whether those differences matter. Bytecode-level differences can be caused by changes in compilers or build pipelines — not necessarily
 by compromised builds. DALEQ helps distinguish harmless variation from meaningful divergence.</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
How DALEQ Works</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
DALEQ focuses on Java bytecode comparison, though it can also analyze resources and metadata in jars. At its core, DALEQ uses a datalog engine (Soufflé) — the same kind of logic-based analysis engine used in systems like CodeQL — to normalize and compare bytecode
 structures. Key features include:</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
- Bytecode normalization to reduce irrelevant build differences</div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
- Semantic diffing that identifies and explains non-equivalent instructions</div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
- Provenance tracking: For equivalent files, DALEQ shows how equivalence was derived via datalog rules, for non-equivalent files, it provides bytecode-level diffs</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
DALEQ also verifies whether the underlying source code inputs are the same (or at least equivalent, tolerating some variations in comments and formatting) and includes integrations with existing tools like the standard javap disassembler. It supports extensibility
 through a plugin system.</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
Real-World Evaluation</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
DALEQ builds on our earlier research into levels of binary equivalence. We evaluated the tool using real-world .jar files from Oracle and Google, both of whom independently rebuild Java packages from source. The results are encouraging: DALEQ was able to classify
 85–90% of .class files that were not bitwise identical as still being semantically equivalent, with supporting provenance.</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
Learn More</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
You can try out DALEQ now on GitHub: <a href="https://github.com/binaryeq/daleq/" target="_blank">
https://github.com/binaryeq/daleq/</a> </div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
A detailed technical paper describing DALEQ and our evaluation: <a href="https://arxiv.org/abs/2508.01530" target="_blank">
https://arxiv.org/abs/2508.01530</a> </div>
<div style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
A technical paper describing the conceptual approach of levels of binary equivalence:
<a href="https://arxiv.org/abs/2410.08427" target="_blank">
https://arxiv.org/abs/2410.08427</a> (to be presented at <a href="https://conf.researchr.org/home/icsme-2025" target="_blank">
ICSME’25</a>)</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div dir="ltr" style="text-align:left;text-indent:0px;line-height:1rem;background-color:rgb(255,255,255);margin:0px;font-family:-apple-system,system-ui,system-ui,"Segoe UI",Roboto,"Helvetica Neue","Fira Sans",Ubuntu,Oxygen,"Oxygen Sans",Cantarell,"Droid Sans","Apple Color Emoji","Segoe UI Emoji","Segoe UI Emoji","Segoe UI Symbol","Lucida Grande",Helvetica,Arial,sans-serif;font-size:16px;color:rgb(0,0,0)">
<span style="background-color:rgba(0,0,0,0);line-height:1.25">Jens Dietrich (Associate Professor at Victoria University of Wellington)</span></div>
<div dir="ltr" style="text-align:left;text-indent:0px;line-height:1rem;background-color:rgb(255,255,255);margin:0px;font-family:-apple-system,system-ui,system-ui,"Segoe UI",Roboto,"Helvetica Neue","Fira Sans",Ubuntu,Oxygen,"Oxygen Sans",Cantarell,"Droid Sans","Apple Color Emoji","Segoe UI Emoji","Segoe UI Emoji","Segoe UI Symbol","Lucida Grande",Helvetica,Arial,sans-serif;font-size:16px;color:rgb(0,0,0)">
<span style="background-color:rgba(0,0,0,0);line-height:1.25"><br>
Behnaz Hassanshahi (Principal Researcher and Tech Lead at Oracle, Oracle Labs Brisbane)</span></div>
<ul style="text-align:left;margin:0px;padding-left:0px;list-style-position:outside;list-style-type:none;background-color:rgb(255,255,255)">
<li style="font-family:-apple-system,system-ui,system-ui,"Segoe UI",Roboto,"Helvetica Neue","Fira Sans",Ubuntu,Oxygen,"Oxygen Sans",Cantarell,"Droid Sans","Apple Color Emoji","Segoe UI Emoji","Segoe UI Emoji","Segoe UI Symbol","Lucida Grande",Helvetica,Arial,sans-serif;font-size:16px;color:rgba(0,0,0,0.9);margin:0px">
<button type="button" style="margin-bottom:8px;font-family:-apple-system,system-ui,system-ui,"Segoe UI",Roboto,"Helvetica Neue","Fira Sans",Ubuntu,Oxygen,"Oxygen Sans",Cantarell,"Droid Sans","Apple Color Emoji","Segoe UI Emoji","Segoe UI Emoji","Segoe UI Symbol","Lucida Grande",Helvetica,Arial,sans-serif;background:none;border:medium;width:232px;text-align:left">
</button></li></ul>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
<br>
</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt;color:rgb(0,0,0)">
<br>
</div>
<div dir="ltr" style="font-family:Aptos,Arial,Helvetica,sans-serif;font-size:12pt">
<br>
</div>
</div>

</blockquote></div>