<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://eiffelroom.com" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>eiffelroom - .NET and Mono - Comments</title>
 <link>http://eiffelroom.com/blog/manus_eiffel/net_and_mono</link>
 <description>Comments for &quot;.NET and Mono&quot;</description>
 <language>en</language>
<item>
 <title>Miguel de Icaza</title>
 <link>http://eiffelroom.com/blog/manus_eiffel/net_and_mono#comment-124</link>
 <description>&lt;p&gt;Glad to see that Miguel blogged us, check out &lt;a href=&quot;http://tirania.org/blog/archive/2007/Mar-13.html&quot;&gt;his blog&lt;/a&gt;.&lt;/p&gt;

</description>
 <pubDate>Tue, 13 Mar 2007 17:24:58 -0700</pubDate>
 <dc:creator>manus_eiffel</dc:creator>
 <guid isPermaLink="false">comment 124 at http://eiffelroom.com</guid>
</item>
<item>
 <title>.NET and Mono</title>
 <link>http://eiffelroom.com/blog/manus_eiffel/net_and_mono</link>
 <description>&lt;p&gt;Until very recently, EiffelStudio generated .NET assemblies would not work with Mono. The culprit was the usage of the &lt;strong&gt;#-&lt;/strong&gt; metadata table format (a non-standardized Microsoft .NET extension which allows specification of the metadata &lt;em&gt;out-of-order&lt;/em&gt;) that Mono did not support.&lt;/p&gt;

&lt;p&gt;Version 1.2 of &lt;a href=&quot;http://www.mono-project.com&quot;&gt;Mono&lt;/a&gt; supports this format and we decided to look further by checking the compatibility status of our generated .NET assemblies. Unfortunately it does not work yet. A quick interaction with the developers behind mono and we were informed that a next release will fix the issue preventing us to run our assemblies.&lt;/p&gt;

&lt;p&gt;So what is the next step? Simply continue the testing of our generated .NET assemblies against Mono. How? Using our compiler regression tool &lt;strong&gt;eweasel&lt;/strong&gt; which is using a script to test generated executables. By default the script simply executes the program and if the execution is successful it will print &lt;em&gt;Execution completed&lt;/em&gt;, if not &lt;em&gt;Execution failed&lt;/em&gt;. So for running against Mono, we just need to modify this script to run the executables with the mono runtime, i.e. replacing &lt;strong&gt;test.exe&lt;/strong&gt; by &lt;strong&gt;mono.exe test.exe&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once the testing is complete we will have a very good idea of what are the differences between .Net and Mono and in case of divergences how they differ in their interpretation of the CLI standard.&lt;/p&gt;

&lt;p&gt;But that&#039;s not the end of the story. Currently EiffelStudio is using Microsoft API to read and generate the metadata tables, thus to fully support Mono we need to rewrite those parts to be API independent. After doing this, you can compile CLI assemblies on any platforms (of course to run the assembly you need Windows with .NET or any Unix with Mono).&lt;/p&gt;

&lt;p&gt;Unfortunately there is something missing in the picture, it is debugging. How to debug CLI assemblies in a Mono environment? Again we are currently using the Microsoft API for debugging on Windows and it is not clear if Mono offers an equivalent, and if it did, it is most likely very different from the Microsoft API. So until we know more about debugging Mono binaries, you will have to use the mono debugger.&lt;/p&gt;

</description>
 <comments>http://eiffelroom.com/blog/manus_eiffel/net_and_mono#comments</comments>
 <category domain="http://eiffelroom.com/tag/eiffelstudio">EiffelStudio</category>
 <category domain="http://eiffelroom.com/tag/net_0">.NET</category>
 <category domain="http://eiffelroom.com/tag/debugging">Debugging</category>
 <category domain="http://eiffelroom.com/tag/mono">Mono</category>
 <pubDate>Mon, 05 Mar 2007 10:45:08 -0800</pubDate>
 <dc:creator>manus_eiffel</dc:creator>
 <guid isPermaLink="false">116 at http://eiffelroom.com</guid>
</item>
</channel>
</rss>
