{"id":52,"date":"2007-07-16T23:40:00","date_gmt":"2007-07-17T07:40:00","guid":{"rendered":"http:\/\/eschatologist.net\/blog\/?p=52"},"modified":"2009-01-25T20:59:25","modified_gmt":"2009-01-26T04:59:25","slug":"llvm-developers-meeting-2007-05","status":"publish","type":"post","link":"https:\/\/eschatologist.net\/blog\/?p=52","title":{"rendered":"LLVM Developers&#8217; Meeting 2007-05"},"content":{"rendered":"<p><a href=\"http:\/\/llvm.org\/\">The LLVM Compiler Infrastructure<\/a>  is a great technology that came out of the computer science research community and can be used to develop extensible compiler platforms.  Among other things, it provides a <a href=\"http:\/\/llvm.org\/docs\/LangRef.html\">platform-independent assembly and object code<\/a> (the &#8220;low level virtual machine&#8221; that its name is taken from), and a great object-oriented <a href=\"http:\/\/llvm.org\/pubs\/2004-01-30-CGO-LLVM.html\">compilation<\/a>, linking, optimization and code-generation <a href=\"http:\/\/llvm.org\/pubs\/2002-12-LattnerMSThesis.html\">infrastructure<\/a> that you can use to efficiently target real hardware.  The main idea is that LLVM provides a comprehensive back-end that you can easily build a front-end to target.<\/p>\n<p>There&#8217;s a huge amount of material available on the LLVM web site, including the <a href=\"http:\/\/llvm.org\/docs\/LangRef.html\">LLVM Assembly Language Reference Manual<\/a> and <a href=\"http:\/\/llvm.org\/docs\/ProgrammersManual.html\">LLVM Programmer&#8217;s Manual<\/a>, a wide variety of <a href=\"http:\/\/llvm.org\/pubs\/\">papers on LLVM<\/a>, and a great walkthrough of the creation of <em><a href=\"http:\/\/llvm.org\/docs\/Stacker.html\">Stacker<\/a><\/em>, a Forth front-end that targets LLVM.  It shows how the budding language creator might leverage the tools available as part of the LLVM infrastructure.  I fully expect that in time, &#8220;little languages&#8221; will have no excuse <em>not<\/em> to be JIT compiled simply because targeting LLVM is actually <em>easier<\/em> than writing your own interpreter or bytecode engine!  Just walk your AST and generate na\u00c3\u00afve LLVM code for what you encounter, and let the infrastructure handle the rest.  (For those who aren&#8217;t developer tools weenies, an Abstract Syntax Tree is the internal representation of a program&#8217;s structure before it&#8217;s turned into instructions to execute.)<\/p>\n<p>A couple months back, the <a href=\"http:\/\/llvm.org\/devmtg\/2007-05\/\">May 2007 LLVM Developers&#8217; Meeting<\/a> was held at Apple.  The proceedings from this meeting \u00e2\u20ac\u201d the actual session content, both in slides and in video form \u00e2\u20ac\u201d are available online, and I&#8217;ve even created an <a href=\"http:\/\/llvm.org\/devmtg\/2007-05\/podcast.xml\">LLVM Developers&#8217; Meeting podcast<\/a> (including a <a href=\"itpc:\/\/llvm.org\/devmtg\/2007-05\/podcast.xml\">subscribe-directly-in-iTunes<\/a> version) for easy viewing.  The video may be low bit rate, but it has a 16:9 aspect ratio so you can even pretend it&#8217;s HD.  (I put together the podcast primarily so I could watch the sessions on my <a href=\"http:\/\/www.apple.com\/appletv\/\">Apple TV<\/a>, since I couldn&#8217;t attend the meeting.)<\/p>\n<p>So if you&#8217;re at all interested in compilers, language design or development, optimization, or development platforms in general, you&#8217;ll be very well-served by checking out LLVM.  It is a <strong>seriously<\/strong> cool enabling technology.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The LLVM Compiler Infrastructure is a great technology that came out of the computer science research community and can be used to develop extensible compiler platforms. Among other things, it provides a platform-independent assembly and object code (the &#8220;low level virtual machine&#8221; that its name is taken from), and a great object-oriented compilation, linking, optimization&hellip;<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[3],"tags":[23,35,58,62,34,4,18,61,60,43,59],"class_list":["post-52","post","type-post","status-publish","format-standard","hentry","category-technology","tag-c","tag-compilers","tag-computer-science","tag-conferences","tag-llvm","tag-mac","tag-objective-c","tag-opengl","tag-papers","tag-parsers","tag-podcasts"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p74loH-Q","_links":{"self":[{"href":"https:\/\/eschatologist.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/eschatologist.net\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/eschatologist.net\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/eschatologist.net\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/eschatologist.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=52"}],"version-history":[{"count":1,"href":"https:\/\/eschatologist.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/52\/revisions"}],"predecessor-version":[{"id":53,"href":"https:\/\/eschatologist.net\/blog\/index.php?rest_route=\/wp\/v2\/posts\/52\/revisions\/53"}],"wp:attachment":[{"href":"https:\/\/eschatologist.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=52"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/eschatologist.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=52"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/eschatologist.net\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}