<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi<div class=""><br class=""></div><div class="">I am late to the party. Here is my personal take of the topic:</div><div class=""><br class=""></div><div class="">* Do you ship software as IR today? What lessons have you learned?<br class="">Yes. We accept AppStore submission in bitcode (LLVM IR). The core function in clang is upstreamed and you can look up the related code path triggered by -fembed-bitcode option.<br class=""><br class="">* Challenges of shipping software as IR<br class="">Compatibility: We are trying to enhance the bitcode compatibility tests but most of them only covers the bitcode reader. But the compatibility issue goes way beyond that. It is hard to keep the semantics of the original program while the toolchain keeps evolving. The issues I have been seen so far: verifier update to tighten the constraints, backend bug fixes, symbol resolution changes, etc.<br class="">Debugging: How do you debug the shipped bitcode running on a platform with some other toolchain? Traditionally, you can ship a stripped binary while keeping a version that is contains debug information. You can use that debug information to map the crash report to a specific line. How does that work in the all bitcode world? </div><div class="">Privacy: How to you hide the sensitive information in the source code away from bitcode? This is includes internal types and function interfaces, debug information (if you decide to ship them) and etc.</div><div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; line-height: normal; font-family: 'Helvetica Neue'; color: rgb(69, 69, 69);">* What tools or infrastructure would help make that happen?</div><div class="" style="margin: 0px; line-height: normal; font-family: 'Helvetica Neue'; color: rgb(69, 69, 69);">It will be great to have standard tooling in LLVM to deal with privacy issue to strip away these informations before shipping. It will be even better if you can restore them later for debugging.</div><div class="" style="margin: 0px; line-height: normal; font-family: 'Helvetica Neue'; color: rgb(69, 69, 69);">LLD might also helps with some of the problems above by having an integrated tool to ensure consistent symbol resolution. </div><div class="" style="margin: 0px; line-height: normal; font-family: 'Helvetica Neue'; color: rgb(69, 69, 69);"><br class=""></div><div class="" style="margin: 0px; line-height: normal; font-family: 'Helvetica Neue'; color: rgb(69, 69, 69);">Thanks</div><div class="" style="margin: 0px; line-height: normal; font-family: 'Helvetica Neue'; color: rgb(69, 69, 69);"><br class=""></div><div class="" style="margin: 0px; line-height: normal; font-family: 'Helvetica Neue'; color: rgb(69, 69, 69);">Steven</div><br class=""></div><div class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Oct 17, 2016, at 1:20 PM, Mehdi Amini via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html charset=utf-8" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi Vikram,<div class=""><br class=""></div><div class="">It is a bit more that just “efficient (de)serialization” as there is some amount of tradeoff to make between “size” vs “speed” vs “flexibility” (which are all some sort of “efficient”).</div><div class="">For instance what if we get a faster deserialization but got larger size? That might be an issue for some people who’d like to ship bitcode.</div><div class="">Another thing is that we may get better speed/size by optimizing for the “streaming” case but losing the flexibility of loading only a subpart of the bitcode.</div><div class=""><br class=""></div><div class="">This is where I’d be interested (and I’ll pay attention) during the BoF to hear about all the use cases folks are envisioning.</div><div class=""><br class=""></div><div class="">— </div><div class="">Mehdi<br class=""><div class=""><blockquote type="cite" class=""><div class="">On Oct 17, 2016, at 6:55 AM, Adve, Vikram Sadanand <<a href="mailto:vadve@illinois.edu" class="">vadve@illinois.edu</a>> wrote:</div><br class="Apple-interchange-newline"><div class="">

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" class="">

<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Hi Mehdi,
<div class=""><br class="">
</div>
<div class="">Yes, we did see your earlier post.  Efficient (de)serialization is definitely important for both exporting (a la LTO and ThinLTO) and for shipping code as IR.  I expect most use cases of the latter would benefit.</div>
<div class=""><br class="">
</div>
<div class="">-—Vikram</div>
<div class="">
<div class="">
<div class=""><br class="">
// Vikram S. Adve<br class="">
// Professor, Department of Computer Science<br class="">
// University of Illinois at Urbana-Champaign<br class="">
// <a href="mailto:vadve@illinois.edu" class="">vadve@illinois.edu</a><br class="">
// <a href="http://llvm.org/" class="">http://llvm.org</a><br class="">
</div>
<div class=""><br class="webkit-block-placeholder">
</div>
<br class="">
<div class="">
<blockquote type="cite" class="">
<div class="">On Oct 14, 2016, at 2:41 PM, Mehdi Amini <<a href="mailto:mehdi.amini@apple.com" class="">mehdi.amini@apple.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Hi,
<div class=""><br class="">
</div>
<div class="">I think as soon as you want to have long-lived IR, the bitcode serialization is a corner stone piece of the system. </div>
<div class="">Somehow related, I posted this recently to llvm-dev: <a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_pipermail_llvm-2Ddev_2016-2DSeptember_105273.html&d=DQMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=b7uK7dJM4Fx7J_ehsuohEdD-6NdkoLyTwBFfHX-XKcc&m=2ty5V_F2rdMdBJPJVLuXAmeH-EXUvcMMe-ug_QqIqZA&s=byMygV6Z_7kXGJPWr5dD1wi0Gy13O7j0EXYEXDeW5Is&e=" class="">http://lists.llvm.org/pipermail/llvm-dev/2016-September/105273.html</a> ;
 I’d be interested how we could leverage a better serialization for various use-cases!</div>
<div class=""><br class="">
</div>
<div class="">Best,</div>
<div class=""><br class="">
</div>
<div class="">— </div>
<div class="">Mehdi<br class="">
<div class=""><br class="">
</div>
<div class=""><br class="">
<div class="">
<blockquote type="cite" class="">
<div class="">On Oct 14, 2016, at 11:32 AM, Will Dietz via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" class="">
<div class="">Hi LLVM’ers!</div>
<div class=""><br class="">
</div>
<div class="">We are hosting a BoF at this year's Dev Meeting on a subject we hope will be of interest to some (many?) of you:</div>
<div class="">shipping software (entirely) as LLVM IR.</div>
<div class=""><br class="">
</div>
<div class="">You can find our proposal in the meeting schedule online:</div>
<div class=""><br class="">
</div>
<div class=""><a href="https://urldefense.proofpoint.com/v2/url?u=https-3A__llvmdevelopersmeetingbay2016.sched.org_event_8Yzq_shipping-2Dsoftware-2Das-2Dllvm-2Dir&d=DQMFaQ&c=8hUWFZcy2Z-Za5rBPlktOQ&r=b7uK7dJM4Fx7J_ehsuohEdD-6NdkoLyTwBFfHX-XKcc&m=2ty5V_F2rdMdBJPJVLuXAmeH-EXUvcMMe-ug_QqIqZA&s=f7oVXD0X8QKcnInXVH2m-a2ddcj04_t-Qnwbj8dUwmA&e=" class="">https://llvmdevelopersmeetingbay2016.sched.org/event/8Yzq/shipping-software-as-llvm-ir</a></div>
<div class=""><br class="">
</div>
<div class="">The BoF is scheduled to last 45 minutes, which will go by very quickly!</div>
<div class="">To make the best use of the time, we'd like to get a head-start on some of the discussions,</div>
<div class="">and get a feel for what topics people are most interested in discussing.</div>
<div class="">To start things off, here are a few suggestions for things to discuss.</div>
<div class="">Thoughts -- and suggestions for additional topics -- welcome.</div>
<div class=""><br class="">
</div>
<div class="">* Do you ship software as IR today? What lessons have you learned?</div>
<div class="">* Challenges of shipping software as IR</div>
<div class="">* Representing software: Beyond a single module</div>
<div class="">* From build systems to LLVM IR: toolchains and more</div>
<div class="">* What would you do with a platform where everything was available as LLVM IR?</div>
<div class="">* What tools or infrastructure would help make that happen?</div>
<div class=""><br class="">
</div>
<div class="">(Some background to explain why we’re interested in this topic.)</div>
<div class="">ALLVM: We have a project in our group exploring the benefits of shipping</div>
<div class="">*all* software on a system as IR.  We are building a prototype ALLVM system</div>
<div class="">that makes it relatively easy to package and ship software in this way.</div>
<div class="">We are researching the benefits this could provide for performance and</div>
<div class="">for general software development.  We aim to make the ALLVM prototype</div>
<div class="">available in open source form to enable other groups to explore these goals.</div>
<div class="">Contact us off-list if you’d like to learn more about the ALLVM project.</div>
<div class=""><br class="">
</div>
<div class="">~Will (and Vikram)</div>
</div>
_______________________________________________<br class="">
LLVM Developers mailing list<br class="">
<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br class="">
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>

</div></blockquote></div><br class=""></div></div>_______________________________________________<br class="">LLVM Developers mailing list<br class=""><a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a><br class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev<br class=""></div></blockquote></div><br class=""></div></body></html>