<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments on: Hot code swapping for servers not written in Erlang</title>
	<atom:link href="http://www.codexon.com/posts/hot-code-swapping-for-servers-not-written-in-erlang/feed" rel="self" type="application/rss+xml" />
	<link>http://www.codexon.com/posts/hot-code-swapping-for-servers-not-written-in-erlang</link>
	<description></description>
	<lastBuildDate>Sun, 05 Sep 2010 05:11:40 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
	<item>
		<title>By: wladimir</title>
		<link>http://www.codexon.com/posts/hot-code-swapping-for-servers-not-written-in-erlang/comment-page-1#comment-647</link>
		<dc:creator>wladimir</dc:creator>
		<pubDate>Thu, 01 Jul 2010 17:28:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.codexon.com/?p=928#comment-647</guid>
		<description>We were hot-reloading C for our chat server in 1998 or so. There&#039;s really nothing new in it, it has been possible since dynamic loading and unloading of shared libraries was possible. Possible, but it was not very *convenient* to use and program for, and very easy to make mistakes, I think that&#039;s where the new developments are centered in.</description>
		<content:encoded><![CDATA[<p>We were hot-reloading C for our chat server in 1998 or so. There&#8217;s really nothing new in it, it has been possible since dynamic loading and unloading of shared libraries was possible. Possible, but it was not very *convenient* to use and program for, and very easy to make mistakes, I think that&#8217;s where the new developments are centered in.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kjartan</title>
		<link>http://www.codexon.com/posts/hot-code-swapping-for-servers-not-written-in-erlang/comment-page-1#comment-637</link>
		<dc:creator>Kjartan</dc:creator>
		<pubDate>Thu, 24 Jun 2010 00:20:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.codexon.com/?p=928#comment-637</guid>
		<description>Sorry for commenting on an old article, but you can hot swap code if you use the twisted framework... We do this all the time on our server, I&#039;ve never had any problems with it.</description>
		<content:encoded><![CDATA[<p>Sorry for commenting on an old article, but you can hot swap code if you use the twisted framework&#8230; We do this all the time on our server, I&#8217;ve never had any problems with it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: admin</title>
		<link>http://www.codexon.com/posts/hot-code-swapping-for-servers-not-written-in-erlang/comment-page-1#comment-564</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Wed, 24 Mar 2010 03:27:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.codexon.com/?p=928#comment-564</guid>
		<description>The most important part about code reloading is maintaining an uninterrupted service to the user. This shows that it is possible to do even in C.

Obviously Erlang&#039;s immutability makes this easier, but you will probably want to upgrade the VM from time to time, and I believe there is no mechanism to do that without restarting the process.</description>
		<content:encoded><![CDATA[<p>The most important part about code reloading is maintaining an uninterrupted service to the user. This shows that it is possible to do even in C.</p>
<p>Obviously Erlang&#8217;s immutability makes this easier, but you will probably want to upgrade the VM from time to time, and I believe there is no mechanism to do that without restarting the process.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tim</title>
		<link>http://www.codexon.com/posts/hot-code-swapping-for-servers-not-written-in-erlang/comment-page-1#comment-562</link>
		<dc:creator>Tim</dc:creator>
		<pubDate>Tue, 23 Mar 2010 15:37:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.codexon.com/?p=928#comment-562</guid>
		<description>Update : I just saw your earlier post on &quot;A Better Python Reload&quot;.  I think that answers my question, viz : it can be done, but it&#039;s not seamless, and has some drawbacks.  

It certainly doesn&#039;t match the way it&#039;s done in Erlang.

I think it&#039;s fair to say that a clean fast code reload mechanism is always going to be clumsy in mutable languages, or at least significantly harder than in immutables languages where their very nature makes it trivial.</description>
		<content:encoded><![CDATA[<p>Update : I just saw your earlier post on &#8220;A Better Python Reload&#8221;.  I think that answers my question, viz : it can be done, but it&#8217;s not seamless, and has some drawbacks.  </p>
<p>It certainly doesn&#8217;t match the way it&#8217;s done in Erlang.</p>
<p>I think it&#8217;s fair to say that a clean fast code reload mechanism is always going to be clumsy in mutable languages, or at least significantly harder than in immutables languages where their very nature makes it trivial.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Tim</title>
		<link>http://www.codexon.com/posts/hot-code-swapping-for-servers-not-written-in-erlang/comment-page-1#comment-561</link>
		<dc:creator>Tim</dc:creator>
		<pubDate>Tue, 23 Mar 2010 15:32:01 +0000</pubDate>
		<guid isPermaLink="false">http://www.codexon.com/?p=928#comment-561</guid>
		<description>Nice work, interesting.  I&#039;m not very familiar with Python, are there any mechanisms for preserving the state of objects across the upgrade ?  I think that is a critical component for this to be of use in a broader sense.  i.e. if the server is long running then presumably it has state that needs preserving ; if it doesn&#039;t have state then it&#039;s likely you could just do a quick restart without impact to the application.  In the case of Erlang OTP the upgrade inherently includes preservation of state, i.e. values of variables, without use of any work-arounds in application code ; and it does  it very quickly and seamlessly.</description>
		<content:encoded><![CDATA[<p>Nice work, interesting.  I&#8217;m not very familiar with Python, are there any mechanisms for preserving the state of objects across the upgrade ?  I think that is a critical component for this to be of use in a broader sense.  i.e. if the server is long running then presumably it has state that needs preserving ; if it doesn&#8217;t have state then it&#8217;s likely you could just do a quick restart without impact to the application.  In the case of Erlang OTP the upgrade inherently includes preservation of state, i.e. values of variables, without use of any work-arounds in application code ; and it does  it very quickly and seamlessly.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: admin</title>
		<link>http://www.codexon.com/posts/hot-code-swapping-for-servers-not-written-in-erlang/comment-page-1#comment-529</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Mon, 25 Jan 2010 23:07:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.codexon.com/?p=928#comment-529</guid>
		<description>The point here is that it is possible to seamlessly transfer control of the sockets to a new process. Therefore to a client, it appears as though nothing has changed.</description>
		<content:encoded><![CDATA[<p>The point here is that it is possible to seamlessly transfer control of the sockets to a new process. Therefore to a client, it appears as though nothing has changed.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Yogish Baliga</title>
		<link>http://www.codexon.com/posts/hot-code-swapping-for-servers-not-written-in-erlang/comment-page-1#comment-528</link>
		<dc:creator>Yogish Baliga</dc:creator>
		<pubDate>Mon, 25 Jan 2010 17:38:09 +0000</pubDate>
		<guid isPermaLink="false">http://www.codexon.com/?p=928#comment-528</guid>
		<description>I am not sure what is the point you want to make here. Spawning a new process always read the latest copy from the disk. That is not a discovery. What erlang provides is hot code loading into the currently running VM with no special code.</description>
		<content:encoded><![CDATA[<p>I am not sure what is the point you want to make here. Spawning a new process always read the latest copy from the disk. That is not a discovery. What erlang provides is hot code loading into the currently running VM with no special code.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
