<div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important">Hey all,</p>
<p style="margin:0px 0px 1.2em!important">It’s been a while since the last update in November, so here’s another one</p>
<h1 id="changes-since-november" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.6em;border-bottom:1px solid rgb(221,221,221)">Changes since November</h1>
<h2 id="close-to-rust-support" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)">Close to Rust support</h2>
<p style="margin:0px 0px 1.2em!important">A few people have been working on integrating the AVR backend into the <a href="https://www.rust-lang.org/">Rust</a> programming language. This has mostly been work on <a href="https://github.com/rust-lang/rust/issues/37609">supporting LLVM 4.0</a>.</p>
<p style="margin:0px 0px 1.2em!important">Once the final LLVM 4.0 tag is made, we can update emscripten, integrate it into Rust, and then add a small amount of code to the compiler to enable support.</p>
<p style="margin:0px 0px 1.2em!important">Take a look at Jake Goulding’s <a href="https://github.com/avr-rust/arduino">avr-rust/arduino</a> project for a really nice proof of concept.</p>
<h2 id="clang-support" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)">Clang support</h2>
<p style="margin:0px 0px 1.2em!important">At this point, you can compile some decently-sized programs directly to ELF object files. It is still necessary to use the GNU AVR linker because we don’t have any support for AVR inside the compiler-rt support library.</p>
<p style="margin:0px 0px 1.2em!important">On top of this, we need to add logic to Clang so that it passes the correct C runtime library (crt0, ctc1, ..) to the linker.</p>
<p style="margin:0px 0px 1.2em!important">In order to successfully compile the Arduino core library, we need to add support for the ‘weak’ linkage attribute, and support the ‘progmem’ attribute for data that should reside in program flash memory.</p>
<h2 id="experimental-buildbot" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)">Experimental buildbot</h2>
<p style="margin:0px 0px 1.2em!important">We’ve gained a buildbot <a href="http://lab.llvm.org:8014/builders/llvm-avr-linux">here</a> on the staging buildmaster. It does not send emails to anyone other than myself, but it will help keep the test suite green!</p>
<h2 id="relax-memory-operation-pass" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)">Relax memory operation pass</h2>
<p style="margin:0px 0px 1.2em!important">A pass was added in <a href="https://reviews.llvm.org/D27650">D27650</a> that allows us to correctly emit loads/stores to addresses of the form ‘pointer+offset’ where the offset is larger than 63 bytes.</p>
<p style="margin:0px 0px 1.2em!important">This would stop us from lowering functions which had more than 63 bytes of data on the stack.</p>
<h1 id="next-on-the-agenda" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.6em;border-bottom:1px solid rgb(221,221,221)">Next on the agenda</h1>
<h2 id="llvm-linker-support" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.4em;border-bottom:1px solid rgb(238,238,238)">LLVM linker support</h2>
<p style="margin:0px 0px 1.2em!important">A long time ago we used to have a fork of LLD which added support for AVR ELF binaries.</p>
<p style="margin:0px 0px 1.2em!important">The stale repository is <a href="https://github.com/avr-llvm/lld">here</a>.</p>
<p style="margin:0px 0px 1.2em!important">Now that LLD is somewhat more stable, it would be really cool to see this picked up again.</p>
<h1 id="links" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.6em;border-bottom:1px solid rgb(221,221,221)">Links</h1>
<ul style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px"><a href="https://reviews.llvm.org/search/query/ZVuiT4mCLrl6/#R">A list of all AVR-related patches that have been comitted</a></li>
<li style="margin:0.5em 0px"><a href="https://llvm.org/bugs/buglist.cgi?product=libraries&component=Backend%3A%20AVR&resolution=---&list_id=111982">All open bugs for the backend</a></li>
</ul>
<div title="MDH:SGV5IGFsbCw8ZGl2Pjxicj48L2Rpdj48ZGl2Pkl0J3MgYmVlbiBhIHdoaWxlIHNpbmNlIHRoZSBs
YXN0IHVwZGF0ZSBpbiBOb3ZlbWJlciwgc28gaGVyZSdzIGFub3RoZXIgb25lPC9kaXY+PGRpdj48
YnI+PC9kaXY+PGRpdj4jIENoYW5nZXMgc2luY2UgTm92ZW1iZXI8L2Rpdj48ZGl2Pjxicj48L2Rp
dj48ZGl2PiMjIENsb3NlIHRvIFJ1c3Qgc3VwcG9ydDwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+
QSBmZXcgcGVvcGxlIGhhdmUgYmVlbiB3b3JraW5nIG9uIGludGVncmF0aW5nIHRoZSBBVlIgYmFj
a2VuZCBpbnRvIHRoZSBbUnVzdF0oaHR0cHM6Ly93d3cucnVzdC1sYW5nLm9yZy8pIHByb2dyYW1t
aW5nIGxhbmd1YWdlLiBUaGlzIGhhcyBtb3N0bHkgYmVlbiB3b3JrIG9uIFtzdXBwb3J0aW5nIExM
Vk0gNC4wXShodHRwczovL2dpdGh1Yi5jb20vcnVzdC1sYW5nL3J1c3QvaXNzdWVzLzM3NjA5KS48
L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pk9uY2UgdGhlIGZpbmFsIExMVk0gNC4wIHRhZyBpcyBt
YWRlLCB3ZSBjYW4gdXBkYXRlIGVtc2NyaXB0ZW4sIGludGVncmF0ZSBpdCBpbnRvIFJ1c3QsIGFu
ZCB0aGVuIGFkZCBhIHNtYWxsIGFtb3VudCBvZiBjb2RlIHRvIHRoZSBjb21waWxlciB0byBlbmFi
bGUgc3VwcG9ydC48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRha2UgYSBsb29rIGF0IEpha2Ug
R291bGRpbmcncyBbYXZyLXJ1c3QvYXJkdWlub10oaHR0cHM6Ly9naXRodWIuY29tL2F2ci1ydXN0
L2FyZHVpbm8pIHByb2plY3QgZm9yIGEgcmVhbGx5IG5pY2UgcHJvb2Ygb2YgY29uY2VwdC48L2Rp
dj48ZGl2Pjxicj48L2Rpdj48ZGl2PiMjIENsYW5nIHN1cHBvcnQ8L2Rpdj48ZGl2Pjxicj48L2Rp
dj48ZGl2PkF0IHRoaXMgcG9pbnQsIHlvdSBjYW4gY29tcGlsZSBzb21lIGRlY2VudGx5LXNpemVk
IHByb2dyYW1zIGRpcmVjdGx5IHRvIEVMRiBvYmplY3QgZmlsZXMuIEl0IGlzIHN0aWxsIG5lY2Vz
c2FyeSB0byB1c2UgdGhlIEdOVSBBVlIgbGlua2VyIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBhbnkg
c3VwcG9ydCBmb3IgQVZSIGluc2lkZSB0aGUgY29tcGlsZXItcnQgc3VwcG9ydCBsaWJyYXJ5Ljwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+T24gdG9wIG9mIHRoaXMsIHdlIG5lZWQgdG8gYWRkIGxv
Z2ljIHRvIENsYW5nIHNvIHRoYXQgaXQgcGFzc2VzIHRoZSBjb3JyZWN0IEMgcnVudGltZSBsaWJy
YXJ5IChjcnQwLCBjdGMxLCAuLikgdG8gdGhlIGxpbmtlci48L2Rpdj48ZGl2Pjxicj48L2Rpdj48
ZGl2PkluIG9yZGVyIHRvIHN1Y2Nlc3NmdWxseSBjb21waWxlIHRoZSBBcmR1aW5vIGNvcmUgbGli
cmFyeSwgd2UgbmVlZCB0byBhZGQgc3VwcG9ydCBmb3IgdGhlICd3ZWFrJyBsaW5rYWdlIGF0dHJp
YnV0ZSwgYW5kIHN1cHBvcnQgdGhlICdwcm9nbWVtJyBhdHRyaWJ1dGUgZm9yIGRhdGEgdGhhdCBz
aG91bGQgcmVzaWRlIGluIHByb2dyYW0gZmxhc2ggbWVtb3J5LjwvZGl2PjxkaXY+PGJyPjwvZGl2
PjxkaXY+IyMgRXhwZXJpbWVudGFsIGJ1aWxkYm90PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5X
ZSd2ZSBnYWluZWQgYSBidWlsZGJvdCBbaGVyZV0oaHR0cDovL2xhYi5sbHZtLm9yZzo4MDE0L2J1
aWxkZXJzL2xsdm0tYXZyLWxpbnV4KSBvbiB0aGUgc3RhZ2luZyBidWlsZG1hc3Rlci4gSXQgZG9l
cyBub3Qgc2VuZCBlbWFpbHMgdG8gYW55b25lIG90aGVyIHRoYW4gbXlzZWxmLCBidXQgaXQgd2ls
bCBoZWxwIGtlZXAgdGhlIHRlc3Qgc3VpdGUgZ3JlZW4hPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp
dj4jIyBSZWxheCBtZW1vcnkgb3BlcmF0aW9uIHBhc3M8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2
PkEgcGFzcyB3YXMgYWRkZWQgaW4gW0QyNzY1MF0oaHR0cHM6Ly9yZXZpZXdzLmxsdm0ub3JnL0Qy
NzY1MCkgdGhhdCBhbGxvd3MgdXMgdG8gY29ycmVjdGx5IGVtaXQgbG9hZHMvc3RvcmVzIHRvIGFk
ZHJlc3NlcyBvZiB0aGUgZm9ybSAncG9pbnRlcitvZmZzZXQnIHdoZXJlIHRoZSBvZmZzZXQgaXMg
bGFyZ2VyIHRoYW4gNjMgYnl0ZXMuPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5UaGlzIHdvdWxk
IHN0b3AgdXMgZnJvbSBsb3dlcmluZyBmdW5jdGlvbnMgd2hpY2ggaGFkIG1vcmUgdGhhbiA2MyBi
eXRlcyBvZiBkYXRhIG9uIHRoZSBzdGFjay48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PiMgTmV4
dCBvbiB0aGUgYWdlbmRhPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj4j
IyBMTFZNIGxpbmtlciBzdXBwb3J0PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5BIGxvbmcgdGlt
ZSBhZ28gd2UgdXNlZCB0byBoYXZlIGEgZm9yayBvZiBMTEQgd2hpY2ggYWRkZWQgc3VwcG9ydCBm
b3IgQVZSIEVMRiBiaW5hcmllcy48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PlRoZSBzdGFsZSBy
ZXBvc2l0b3J5IGlzIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vYXZyLWxsdm0vbGxkKS48L2Rp
dj48ZGl2Pjxicj48L2Rpdj48ZGl2Pk5vdyB0aGF0IExMRCBpcyBzb21ld2hhdCBtb3JlIHN0YWJs
ZSwgaXQgd291bGQgYmUgcmVhbGx5IGNvb2wgdG8gc2VlIHRoaXMgcGlja2VkIHVwIGFnYWluLjwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+IyBMaW5rczwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+
KiBbQSBsaXN0IG9mIGFsbCBBVlItcmVsYXRlZCBwYXRjaGVzIHRoYXQgaGF2ZSBiZWVuIGNvbWl0
dGVkXShodHRwczovL3Jldmlld3MubGx2bS5vcmcvc2VhcmNoL3F1ZXJ5L1pWdWlUNG1DTHJsNi8j
Uik8L2Rpdj48ZGl2PiogW0FsbCBvcGVuIGJ1Z3MgZm9yIHRoZSBiYWNrZW5kXShodHRwczovL2xs
dm0ub3JnL2J1Z3MvYnVnbGlzdC5jZ2k/cHJvZHVjdD1saWJyYXJpZXMmYW1wO2NvbXBvbmVudD1C
YWNrZW5kJTNBJTIwQVZSJmFtcDtyZXNvbHV0aW9uPS0tLSZhbXA7bGlzdF9pZD0xMTE5ODIpPC9k
aXY+" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0">​</div></div></div>