Sweet Moma
I his last mail to mono-devel, Miguel says:
With the new Moma (1.1) that was released yesterday we have now 105 fresh reports (with the old version we have 525), and I have written some scripts that publish the information in easy to digest information.
http://primates.ximian.com/~miguel/momareports/
[...]
Moma is our Migration Analyser tool. As you may not know, it’s based on Cecil. It’s a great occasion for Cecil to be widely tested on the most surprising assemblies you can find.
So far, I had only two bugs reported. 2 out of 630 is not that bad, but still, Cecil can do better. So if ever Moma fails to analyse your assembly, please file a bug report in Bugzilla, component Mono.Cecil. And please attach the offending assembly as well, it’s my best chance to fix the bug.
If you cannot attach the assembly for any reason, please drop it by mail, I won’t spread it accross internet !
An introduction to Mono.Merge 12
There’s something I’ve been willing to do since I started Cecil. Imagine a tool that takes a set of assemblies, and merge them in a single one. That’s not too hard to do using Cecil, but I’ve never took the time to do it. Well, thanks to Alex Prudkiy, who also contributed a few patches to the linker, we now have a brand new monomerge tool.
Let’s take an easy example. This new monomerge tool have only one dependency beside of the core, Mono.Cecil. That means that if you want to send your tool to someone, you’ll have to ship a copy of Mono.Cecil.dll also. But why not shipping only one assembly?
Let’s merge the merger! As usual, I’m pretty disappointed I can’t show you some meaningful and colorful screen shots, but heh, that’s a command tool, let’s have a look at my console snapshot.
jbevain@avalon:/tmp/merge$ ls -l total 364 -rwxr-xr-x 1 jbevain jbevain 337920 2006-10-31 14:02 Mono.Cecil.dll -rwxr-xr-x 1 jbevain jbevain 24064 2006-10-31 14:06 monomerge.exe drwxr-xr-x 2 jbevain jbevain 4096 2006-10-31 14:15 output jbevain@avalon:/tmp/merge$ ~/devel/bin/mono monomerge.exe -out output/monomerge.exe monomerge.exe Mono.Cecil.dll jbevain@avalon:/tmp/merge$ cd output && ls -l total 348 -rw-r--r-- 1 jbevain jbevain 351744 2006-10-31 14:16 monomerge.exe jbevain@avalon:/tmp/merge/output$ ~/devel/bin/mono monomerge.exe Mono CIL Merge monomerge [options] -out result_file primary assemly [files...] --about About the Mono CIL Merge --version Print the version number of the Mono CIL Merge -out Specify the output file Sample: monomerge -out output.exe input.exe input_lib.dll jbevain@avalon:/tmp/merge/output$Here we are, we have now a single monomerge.exe assembly, which contains both the merger and Mono.Cecil. Pretty neat isnt’it? Hmm, I’m sure you already seen where I want to go with this. Imagine a tool chain like:
- use the Linker to reduce the size of a set of assemblies
- use the Merger to ship them in a single assembly
- use mkbundle to ship this single assembly plus the linker core in a single binary
That’s the less space wasting solution I know for Mono and embedded users. Pretty cool huh? Anyway, if you want to give it a try, the code now lives in the /cecil/merge module of the SVN
Thanks Алексей for this tool!
