<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>The Glass is Full &#187; open source</title>
	<atom:link href="http://mgionfriddo.com/tag/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://mgionfriddo.com</link>
	<description>Thoughts on Technology and Humans Playing Together</description>
	<lastBuildDate>Wed, 25 Mar 2009 15:27:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='mgionfriddo.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/67789403dec26dff8cdd5794fd55d52a?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>The Glass is Full &#187; open source</title>
		<link>http://mgionfriddo.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://mgionfriddo.com/osd.xml" title="The Glass is Full" />
	<atom:link rel='hub' href='http://mgionfriddo.com/?pushpress=hub'/>
		<item>
		<title>Enabling the Singularity</title>
		<link>http://mgionfriddo.com/2009/03/21/enabling-the-singularity/</link>
		<comments>http://mgionfriddo.com/2009/03/21/enabling-the-singularity/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 07:57:00 +0000</pubDate>
		<dc:creator>mgion52</dc:creator>
				<category><![CDATA[Home]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[computing fabric]]></category>
		<category><![CDATA[llvm]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[singularity]]></category>

		<guid isPermaLink="false">http://mgionfriddo.com/?p=12</guid>
		<description><![CDATA[We can never seem to take intelligent leaps in software, but I might have found a project that could change that.<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mgionfriddo.com&amp;blog=6748812&amp;post=12&amp;subd=mgionfriddo&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<blockquote><p>&#8220;The Singularity is the technological creation of smarter-than-human intelligence.&#8221; &#8211; The Singularity Institute</p></blockquote>
<p>The likes of <a href="http://mindstalk.net/vinge/vinge-sing.html">Vernor Vinge</a> and <a href="http://www.smh.com.au/news/next/human-20/2005/10/24/1130006035858.html">Ray Kurzweil </a>have long been espousing the coming of this event.  These discussions often focus around breakthroughs  in hardware and rapid advancements in artificial intelligence. I know Moore&#8217;s Law means the number of transistors that fit on a piece of silicon has boomed, but hey I&#8217;m a software guy and I&#8217;ve been thinking about advances in more traditional software technologies and will any of them aid in the rush to the Singularity?</p>
<p>The promise of object-oriented programming was going to allow developers to create reusable code. Write it once and use it in many applications.  Just assemble like Lego blocks. Yea, right. RPC vs. CORBA vs. RMI vs. WS-*.  Enough said.  Web services will allow us to create great applications by just wiring them together. Don&#8217;t worry about the details, just use the API exposed via the web services.   Though many web services are well thought-out and implemented these days, I contend the semantics of the majority of web services is hazy at best.   Hence, many web service based applications are really just doing CRUD operations to a database.  Now that&#8217;s progress. So instead of getting depressed about not aiding in the creation of  superhuman intelligence, I decided to investigate a relatively new technology on the sage advise given to me from a good friend of mine at Apple.</p>
<p>The Low Level Virtual Machine Compiler Infrastructure project (<a href="http://llvm.org">LLVM</a>) is being developed by the Computer Science department at the University of Illinois at Urbana-Champaign as an open source project.  LLVM is a compiler framework designed to support <em>transparent, lifelong program analysis and transformation</em> for arbitrary programs, by providing high-level information to compiler transformations at compile-time, link-time, run-time, and in idle time between runs.  Let the last part of the above sentence sink in. This could change how we think about developing and deploying software.</p>
<p>So how does LLVM get this to work? There are five capabilities that the framework implements to make this possible.</p>
<ol>
<li><strong>Persistent Program Information.</strong> The compilation model preserves a complete representation through the entire life of the program. This allows optimization to performed at any stage, since information isn&#8217;t lost and the LLVM code representation is small enough not to bloat the run-time.</li>
<li> <strong>Offline code generation.</strong> LLVM also allows you to compile programs offline, using code generation techniques well suited for programs where performance is critical.  I don&#8217;t fully grok how they get this to work in conjunction with Persistent Program Information, but I fully understand why this capability is critical for anyone writing serious software.</li>
<li><strong>User-based profiling and optimization.</strong> LLVM gathers profiling information when your program is executing and can use this to apply profile-guided transformations at run-time and idle-time.  Wow.</li>
<li><strong>Transparent run-time model.</strong> No dependencies on existing run-times, object models, etc.  Any language (or combination of languages) can be compiled.  Think about all the configuration headaches this could eliminate.</li>
<li><strong>Uniform, whole program compilation.</strong> Language independence makes it possible to compile and optimize all code for the program in a uniform manner, including language specific and system libraries.</li>
</ol>
<p>Right now, LLVM supports a C and C++ front-end, but there is no reason why other languages can&#8217;t be added.  In addition, LLVM has a number of static back-ends for all the usual suspects (X86, ARM, etc.).  These guys have done a great job.  Would be interesting to see if a program compiled using LLVM just worked on a Xen virtual machine.  Would a Xen specific back-end be optimal? Anyways, there&#8217;s lots of documentation on the site for the details  And as always the truth is in the code, so download it and check it out.</p>
<p>Now here is the <em>real</em> interesting question?  Could the LLVM compilation strategy be realized to create <em>a dynamic</em> back-end that targets a computing fabric or even a cloud.  The LLVM architecture appears to appropriately decomposed.  So modification to one or more of elements of the multi-stage optimization infrastructure should be fine.  The current representation model is brilliant in its simplicity, however it is restricted to the the concepts necessary for program execution on a single host.  Keeping  the representation model light-weight is critical, so you would need to be prudent about adding additional information in order for program to execute in computing fabric or cloud environment and leverage the LLVM capabilities.  However, the implications could be pretty profound;  Your software would essentially perform self analysis and transform itself to optimally run in your cloud, based how it is being utilized.</p>
<p>In LLVM I see the opportunity to create self-optimizing pieces of software, freeing developers to spend more time solving problems for their users, using languages that best fit the problems they are attempting to address.  This is at the heart of the ever elusive &#8220;programmer productivity&#8221; dilemma. Technology changes, developers have to change their code or write entire new applications to take advantage.  In theory, programs written using LLVM won&#8217;t have to change when technology improves, they will just self-optimize to use it.  Maybe not step towards the Singularity, but seems like a promising innovation, and one to watch, for those us creating software today.</p>
<br />Posted in Home Tagged: apple, cloud computing, compiler, computing fabric, llvm, open source, singularity <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/mgionfriddo.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/mgionfriddo.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/mgionfriddo.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/mgionfriddo.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/mgionfriddo.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/mgionfriddo.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/mgionfriddo.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/mgionfriddo.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/mgionfriddo.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/mgionfriddo.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/mgionfriddo.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/mgionfriddo.wordpress.com/12/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/mgionfriddo.wordpress.com/12/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/mgionfriddo.wordpress.com/12/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=mgionfriddo.com&amp;blog=6748812&amp;post=12&amp;subd=mgionfriddo&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://mgionfriddo.com/2009/03/21/enabling-the-singularity/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/0153410bf85cd9526d099019b03297e0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">mgion52</media:title>
		</media:content>
	</item>
	</channel>
</rss>
