<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Michał Cierniak</title><subtitle type="html">Rotor, Semiworks and other interesting topics</subtitle><id>http://blogs.msdn.com/b/michaljc/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/michaljc/" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/b/michaljc/atom.aspx" /><generator uri="http://telligent.com" version="5.6.50428.7875">Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><updated>2004-12-01T13:02:00Z</updated><entry><title>CGO 2007 and PPPJ 2006</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/michaljc/archive/2006/04/05/569185.aspx" /><id>http://blogs.msdn.com/b/michaljc/archive/2006/04/05/569185.aspx</id><published>2006-04-05T21:23:00Z</published><updated>2006-04-05T21:23:00Z</updated><content type="html">For those of you who have not updated your feeds to my &lt;a href="http://blog.cierniak.org"&gt;new blog&lt;/a&gt;, I wanted to mention two conferences I am involved in.&amp;nbsp; You can read more about them in these two posts:&lt;br&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blog.cierniak.org/2006/02/pppj-06.html"&gt;2006 International Conference on Principles and Practices of Programming in Java&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.cierniak.org/2006/04/cgo-2007.html"&gt;2007 International Symposium on Code Generation and Optimization&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=569185" width="1" height="1"&gt;</content><author><name>michaljc</name><uri>http://blogs.msdn.com/michaljc/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Moving to a new blog</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/michaljc/archive/2005/04/14/408043.aspx" /><id>http://blogs.msdn.com/b/michaljc/archive/2005/04/14/408043.aspx</id><published>2005-04-14T11:56:00Z</published><updated>2005-04-14T11:56:00Z</updated><content type="html">&lt;p&gt;I am moving my blog to &lt;a href="http://blog.cierniak.org"&gt;my own site&lt;/a&gt;.&amp;nbsp; In&amp;nbsp;my personal blog I will not be writing much about computer technology (at least not for a while), so if you are looking for posts related to computers, virtual machines, Rotor or CLR, you will probably not find my new blog interesting.&amp;nbsp; If anyone really wants to replace the old RSS feed with a new one, you can use my &lt;a href="http://del.icio.us"&gt;del.icio.us&lt;/a&gt; blog feeds: &lt;a href="http://del.icio.us/rss/michal/research+myblog"&gt;research&lt;/a&gt; and &lt;a href="http://del.icio.us/rss/michal/computers+myblog"&gt;computers&lt;/a&gt;.&lt;/p&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-238213-3";
urchinTracker();
&lt;/script&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=408043" width="1" height="1"&gt;</content><author><name>michaljc</name><uri>http://blogs.msdn.com/michaljc/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Other LIL languages</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/michaljc/archive/2005/03/17/397536.aspx" /><id>http://blogs.msdn.com/b/michaljc/archive/2005/03/17/397536.aspx</id><published>2005-03-17T18:16:00Z</published><updated>2005-03-17T18:16:00Z</updated><content type="html">&lt;p&gt;My &lt;a href="/michaljc/archive/2005/02/23/379329.aspx"&gt;most recent post&lt;/a&gt; was about LIL (Low-level Intermediate Language).&amp;nbsp; I realized recently that this is an obvious acronym to use in the context of a lightweight computer language&amp;nbsp;and just for fun I searched the web for "LIL" in the context of terms related to computer science, languages, virtual machines etc.&amp;nbsp; I probably didn't find all of the related instances&amp;nbsp;but I created &lt;a href="http://blog.cierniak.org/2005/03/other-lils.html"&gt;this short list&lt;/a&gt; of other projects also called LIL.&lt;/p&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-238213-3";
urchinTracker();
&lt;/script&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=397536" width="1" height="1"&gt;</content><author><name>michaljc</name><uri>http://blogs.msdn.com/michaljc/ProfileUrlRedirect.ashx</uri></author><category term="Other" scheme="http://blogs.msdn.com/b/michaljc/archive/tags/Other/" /></entry><entry><title>Execution Engine-independent JIT compilers</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/michaljc/archive/2005/02/23/379329.aspx" /><id>http://blogs.msdn.com/b/michaljc/archive/2005/02/23/379329.aspx</id><published>2005-02-24T03:55:00Z</published><updated>2005-02-24T03:55:00Z</updated><content type="html">&lt;p&gt;I have recently put together a set of slides about LIL (Low-level Intermediate Language) and gave a talk at Microsoft.&amp;nbsp; This work was done before I joined Microsoft: LIL was developed by the ORP (&lt;a href="http://www.intel.com/technology/itj/2003/volume07issue01/art01_orp/p01_abstract.htm"&gt;Open Runtime Platform&lt;/a&gt;) team at Intel.&amp;nbsp; LIL was addressing multiple issues in the ORP design (papers referenced below can give you an idea) but the focus of this presentation was more narrow: how to improve the interface between the JIT (Just-In-Time compiler) and the rest of the VM.&amp;nbsp; I'd like to point out that I use the terms VM (Virtual Machine) and EE (Execution Engine) interchangeably&amp;nbsp;(see &lt;a href="/brada/archive/2005/01/12/351958.aspx"&gt;this post&lt;/a&gt;&amp;nbsp;for a discussion of this terminology).&amp;nbsp; Others have come up independently with somewhat similar ideas and I found quite a lot of interest in the LIL approach in conversations both inside and outside of Microsoft.&amp;nbsp; For my&amp;nbsp;current presentation&amp;nbsp;I took some of the old LIL slides that I used in a talk I gave at &lt;a href="http://www.inf.ethz.ch"&gt;ETH Zürich&lt;/a&gt; in 2003 and modified them to focus on the JIT/EE interface.&amp;nbsp; This version of slides benefited from my conversations with many people in the last year, after the original LIL papers were published.&amp;nbsp; I think that I owe most to my conversations with George Bosworth and to comments by &lt;a href="http://www.ps.uni-sb.de/%7Ebruni"&gt;Thorsten Brunklaus&lt;/a&gt;&amp;nbsp;who worked on the SEAM VM (see below) and now is in the CLR team.&lt;/p&gt; &lt;p&gt;LIL is described at length in the &lt;a href="http://www.usenix.org/events/vm04/tech/glew.html"&gt;VM'04 paper&lt;/a&gt;.&amp;nbsp; The MPOOL'03 paper (&lt;a href="http://www.cierniak.org/research/publications/orp-mpool-2003-final.pdf"&gt;pdf&lt;/a&gt;) presents some thoughts on how LIL could be used to abstract away the object model from the JIT.&amp;nbsp; Full references to these two papers are available on &lt;a href="http://www.cierniak.org/research/publications"&gt;my publications page&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The talk I just gave had the title "&lt;em&gt;Execution Engine-independent JIT compilers&lt;/em&gt;" and the basic idea is that LIL enables a much better abstraction of the EE from a JIT's point of view then what is used in all known to me implementations of virtual machines for JVM and CLR/CLI.&amp;nbsp; I made the full presentation available as a &lt;a href="http://www.cierniak.org/research/publications/lil-msr-talk-2005.pdf"&gt;pdf file&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Here are references to the related work mentioned in the slides:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Bartok is a compiler developed by the &lt;a href="http://research.microsoft.com/act"&gt;Advanced Compiler Technology&lt;/a&gt; group at &lt;a href="http://research.microsoft.com"&gt;MSR&lt;/a&gt;&lt;/li&gt; &lt;li&gt;JikesRVM: &lt;a href="http://www.ibm.com/developerworks/oss/jikesrvm"&gt;http://www.ibm.com/developerworks/oss/jikesrvm&lt;/a&gt;&lt;/li&gt; &lt;li&gt;LLVM: &lt;a href="http://llvm.cs.uiuc.edu"&gt;http://llvm.cs.uiuc.edu&lt;/a&gt;&lt;/li&gt; &lt;li&gt;C--: &lt;a href="http://www.cminusminus.org"&gt;http://www.cminusminus.org&lt;/a&gt;&lt;/li&gt; &lt;li&gt;SEAM: &lt;a href="http://www.ps.uni-sb.de/seam"&gt;http://www.ps.uni-sb.de/seam&lt;/a&gt; (also, &lt;a href="http://lambda-the-ultimate.org/node/view/440"&gt;this discussion&lt;/a&gt;&amp;nbsp;is an entertaining read if you want to see varied opinions on the subject)&lt;/li&gt; &lt;li&gt;PCR: &lt;a href="http://portal.acm.org/citation.cfm?id=74862"&gt;http://portal.acm.org/citation.cfm?id=74862&lt;/a&gt;&lt;/li&gt; &lt;li&gt;Alan Kay's quote is from the &lt;a href="http://acmqueue.com/modules.php?name=Content&amp;amp;pa=showpage&amp;amp;pid=273"&gt;ACM Queue article&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-238213-3";
urchinTracker();
&lt;/script&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=379329" width="1" height="1"&gt;</content><author><name>michaljc</name><uri>http://blogs.msdn.com/michaljc/ProfileUrlRedirect.ashx</uri></author><category term="CLR" scheme="http://blogs.msdn.com/b/michaljc/archive/tags/CLR/" /></entry><entry><title>Secure CRT</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/michaljc/archive/2005/01/02/345558.aspx" /><id>http://blogs.msdn.com/b/michaljc/archive/2005/01/02/345558.aspx</id><published>2005-01-03T04:27:00Z</published><updated>2005-01-03T04:27:00Z</updated><content type="html">&lt;p&gt;One of the cool new things we are doing in the security push is the conversion of all uses of potentially unsafe CRT (C Runtime) functions to their new, safe counterparts.&amp;nbsp; When we think of unsafe CRT functions, we usually think of string manipulation functions and these functions are probably indeed responsible for most of the security bugs &lt;br&gt;(For a few examples of what can go wrong with the traditional string manipulation functions, read &lt;a href="/michael_howard/archive/2004/12/10/279639.aspx"&gt;this post&lt;/a&gt;) but there are other improvements in the CRT libraries.&amp;nbsp; As &lt;a href="http://whidbey.msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vccrt/html/d9568b08-9514-49cd-b3dc-2454ded195a3.asp"&gt;mentioned on MSDN&lt;/a&gt; the main categories of improvement in CRT are: &lt;a href="http://whidbey.msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vccrt/html/019dd5f0-dc61-4d2e-b4e9-b66409ddf1f2.asp"&gt;parameter validation&lt;/a&gt;, sized buffers, null termination, enhanced error reporting, file system security, Windows security, and format string syntax checking.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;br&gt;For a great introduction to Secure CRT, read &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncode/html/secure03102004.asp"&gt;this article&lt;/a&gt; by Michael Howard.&amp;nbsp; A list of secure CRT functions with short descriptions and links to longer articles is &lt;a href="http://whidbey.msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vccrt/html/f87e5a01-4cb2-4379-9e8f-d4693828c55a.asp"&gt;available&lt;/a&gt; in the Whidbey section of MSDN.&amp;nbsp; Secure CRT is also &lt;a href="/shawnfa/archive/2004/04/08/110097.aspx"&gt;mentioned&lt;/a&gt; by another blogger.&amp;nbsp; A clever way of using templates to avoid typing the extra parameter when the compiler can deduce it itself is described &lt;a href="/greggm/archive/2004/09/17/231076.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Rotor&lt;/strong&gt;&lt;br&gt;Secure CRT functions are being discussed in the context of the ISO/IEC standard for C (in &lt;a href="http://www.open-std.org/jtc1/sc22/wg14"&gt;JTC1/SC22/WG14&lt;/a&gt;).&amp;nbsp; You can read the &lt;a href="http://std.dkuug.dk/jtc1/sc22/wg14/www/docs/n1031.pdf"&gt;submission&lt;/a&gt; and the &lt;a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1059.htm"&gt;Security TR Editor's Report&lt;/a&gt; online.&amp;nbsp; However, since these functions have not been added to the C standard yet and we want to compile Rotor Whidbey on non-Windows platforms, we will include implementations of some of the secure CRT functions in the Rotor distribution.&amp;nbsp; Our current plan is to include only as much as we need for Rotor, so this will not be a complete implementation.&lt;/p&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-238213-3";
urchinTracker();
&lt;/script&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=345558" width="1" height="1"&gt;</content><author><name>michaljc</name><uri>http://blogs.msdn.com/michaljc/ProfileUrlRedirect.ashx</uri></author><category term="Rotor - all" scheme="http://blogs.msdn.com/b/michaljc/archive/tags/Rotor+_2D00_+all/" /><category term="Rotor - general" scheme="http://blogs.msdn.com/b/michaljc/archive/tags/Rotor+_2D00_+general/" /><category term="CLR" scheme="http://blogs.msdn.com/b/michaljc/archive/tags/CLR/" /></entry><entry><title>CLR Security Push</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/michaljc/archive/2005/01/02/345533.aspx" /><id>http://blogs.msdn.com/b/michaljc/archive/2005/01/02/345533.aspx</id><published>2005-01-03T03:19:00Z</published><updated>2005-01-03T03:19:00Z</updated><content type="html">&lt;p&gt;I have been recently coordinating much of the efforts on the CLR dev team related to the security push.&amp;nbsp; The security push is a period of a few weeks &lt;a HREF="/somasegar/archive/2004/08/13/214321.aspx"&gt;for all groups involved in Whidbey&lt;/a&gt; to let us focus on making Whidbey more secure.&amp;nbsp; There was recently a &lt;a href="http://weblogs.asp.net/MikhailArkhipov/archive/2004/12/13/284230.aspx"&gt;very good post&lt;/a&gt; by Mikhail Arkhipov outlining many of the efforts we are focusing on.&lt;/p&gt; &lt;p&gt;There are many people in the CLR team who are very experienced in security and they have all been working on guiding the effort but the involvement has not been restricted to them - most of the team was doing some work.&amp;nbsp; The involvement of the whole team is what makes this effort a "push".&lt;/p&gt; &lt;p&gt;My work was mostly to know what issues we have to pay attention to; to know how to use new tools and new libraries or languages extensions; and to make general recommendations on some issues.&amp;nbsp; I started to look into all these issues well before the push started and I was really glad that I did since during the security push I have been getting a lot of specific questions from various people and my earlier investigations meant that I either knew the answer or at least knew where to look or who to ask.&amp;nbsp; As you can imagine, I also wrote a few documents for our team focusing on various issues, I set up a web page for the CLR devs with pointers to useful documents and with an FAQ section.&amp;nbsp; I also gave a few presentations introducing new tools available to us.&amp;nbsp; The presentations and documents written by me were mostly based on information already available from various sources.&amp;nbsp; After all many people have been working on security at Microsoft for a while and there is a lot of knowledge to be mined within our company.&lt;/p&gt; &lt;p&gt;I will write later about some of the specific things that I have been looking at during the security push.&lt;/p&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-238213-3";
urchinTracker();
&lt;/script&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=345533" width="1" height="1"&gt;</content><author><name>michaljc</name><uri>http://blogs.msdn.com/michaljc/ProfileUrlRedirect.ashx</uri></author><category term="CLR" scheme="http://blogs.msdn.com/b/michaljc/archive/tags/CLR/" /></entry><entry><title>Pointers to my publications</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/michaljc/archive/2004/12/17/323839.aspx" /><id>http://blogs.msdn.com/b/michaljc/archive/2004/12/17/323839.aspx</id><published>2004-12-18T03:05:00Z</published><updated>2004-12-18T03:05:00Z</updated><content type="html">Often when I talk to people I mention something I did in the past and I want to refer them to a paper I published.&amp;nbsp; Since I no longer had a research web page, whenever this happened last year, I had to look for the paper on my computer and send a pointer by email.&amp;nbsp; I got finally tired of this and I created a &lt;a href="http://cierniak.org/research/publications"&gt;web page which lists my most interesting publications&lt;/a&gt;.&amp;nbsp; Now I will be able to simply say: look it up on my web page!&amp;nbsp; I have also created a &lt;a href="http://cierniak.org/research"&gt;stub of a page describing my research interests&lt;/a&gt; but I've had no time yet to put any content there.
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-238213-3";
urchinTracker();
&lt;/script&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=323839" width="1" height="1"&gt;</content><author><name>michaljc</name><uri>http://blogs.msdn.com/michaljc/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Singularity</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/michaljc/archive/2004/12/17/323832.aspx" /><id>http://blogs.msdn.com/b/michaljc/archive/2004/12/17/323832.aspx</id><published>2004-12-18T02:57:00Z</published><updated>2004-12-18T02:57:00Z</updated><content type="html">A very interesting Microsoft Research project called Singularity has recently acquired a &lt;a href="http://research.microsoft.com/os/singularity/"&gt;public web page&lt;/a&gt;.&amp;nbsp; This project is interesting for many reasons but the fact that it is written in MSIL is most relevant to what I usually write about in my blog.
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-238213-3";
urchinTracker();
&lt;/script&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=323832" width="1" height="1"&gt;</content><author><name>michaljc</name><uri>http://blogs.msdn.com/michaljc/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>MSN Spaces</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/michaljc/archive/2004/12/02/274130.aspx" /><id>http://blogs.msdn.com/b/michaljc/archive/2004/12/02/274130.aspx</id><published>2004-12-03T07:02:00Z</published><updated>2004-12-03T07:02:00Z</updated><content type="html">I have decided to try out the new blogging infastructure at MSN Spaces.&amp;nbsp; I'm unlikely to maintain a personal blog but I set up &lt;a href="http://spaces.msn.com/members/michal"&gt;a blog&lt;/a&gt; yesterday to try it out.&amp;nbsp; It is a pretty nice site.&amp;nbsp; I like the editing of your space that doesn't require writing any code.
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-238213-3";
urchinTracker();
&lt;/script&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=274130" width="1" height="1"&gt;</content><author><name>michaljc</name><uri>http://blogs.msdn.com/michaljc/ProfileUrlRedirect.ashx</uri></author></entry><entry><title>Conference on Virtual Execution Environments (VEE'05)</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/b/michaljc/archive/2004/12/01/273276.aspx" /><id>http://blogs.msdn.com/b/michaljc/archive/2004/12/01/273276.aspx</id><published>2004-12-02T00:02:00Z</published><updated>2004-12-02T00:02:00Z</updated><content type="html">&lt;p&gt;VEE is a new conference on execution environments (aka virtual machines).&amp;nbsp; The conference is the result of merging the USENIX VM Symposium and the ACM SIGPLAN IVME Workshop.&amp;nbsp; You can read more about it at the &lt;a href="http://www.veeconference.org"&gt;conference web site&lt;/a&gt;.&amp;nbsp; Both the VM Symposium and the IVME Workshop were very interesting to me and I'm looking forward to the new conference that will take place in June 2005.&lt;/p&gt;
&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;
&lt;/script&gt;
&lt;script type="text/javascript"&gt;
_uacct = "UA-238213-3";
urchinTracker();
&lt;/script&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=273276" width="1" height="1"&gt;</content><author><name>michaljc</name><uri>http://blogs.msdn.com/michaljc/ProfileUrlRedirect.ashx</uri></author></entry></feed>