<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Michał Cierniak : CLR</title><link>http://blogs.msdn.com/michaljc/archive/tags/CLR/default.aspx</link><description>Tags: CLR</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Execution Engine-independent JIT compilers</title><link>http://blogs.msdn.com/michaljc/archive/2005/02/23/379329.aspx</link><pubDate>Thu, 24 Feb 2005 03:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:379329</guid><dc:creator>michaljc</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/michaljc/comments/379329.aspx</comments><wfw:commentRss>http://blogs.msdn.com/michaljc/commentrss.aspx?PostID=379329</wfw:commentRss><description>&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;img src="http://blogs.msdn.com/aggbug.aspx?PostID=379329" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/michaljc/archive/tags/CLR/default.aspx">CLR</category></item><item><title>Secure CRT</title><link>http://blogs.msdn.com/michaljc/archive/2005/01/02/345558.aspx</link><pubDate>Mon, 03 Jan 2005 04:27:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:345558</guid><dc:creator>michaljc</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/michaljc/comments/345558.aspx</comments><wfw:commentRss>http://blogs.msdn.com/michaljc/commentrss.aspx?PostID=345558</wfw:commentRss><description>&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;img src="http://blogs.msdn.com/aggbug.aspx?PostID=345558" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/michaljc/archive/tags/Rotor+-+all/default.aspx">Rotor - all</category><category domain="http://blogs.msdn.com/michaljc/archive/tags/Rotor+-+general/default.aspx">Rotor - general</category><category domain="http://blogs.msdn.com/michaljc/archive/tags/CLR/default.aspx">CLR</category></item><item><title>CLR Security Push</title><link>http://blogs.msdn.com/michaljc/archive/2005/01/02/345533.aspx</link><pubDate>Mon, 03 Jan 2005 03:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:345533</guid><dc:creator>michaljc</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/michaljc/comments/345533.aspx</comments><wfw:commentRss>http://blogs.msdn.com/michaljc/commentrss.aspx?PostID=345533</wfw:commentRss><description>&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;img src="http://blogs.msdn.com/aggbug.aspx?PostID=345533" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/michaljc/archive/tags/CLR/default.aspx">CLR</category></item></channel></rss>