It inspect assembly to get what external call is used and reduce all assembly to have the smaller one.
The best friend application of linker is mkbundle which can ship all assembly/exe in one single exe/assembly. MkBundle add a launcher to run it without mono or dotnet runtime. So really great!!
With this 2 applications you can make a single exe without need of framework install.
The final peanuts is the compilation ahead of time. It precompile the code. The issue with that is that it become plateform dependant. But no need of just in time compilation because all is precompiled. So you go a lot faster with it.
So all this things is not really news but is great to make a fast and simple exe.
We have use it in monoTorrent with success ( no AOT to be cross plateform).
But, JB work on it and have add some features. Hope he will realease soon the Linker 2.0
I see in last post mscorlib.dll is reduced for moma. So, we have 1 features of 2.0.
Linker use cecil which is a static analyse of assembly. So, if you call something dynamicly, Linker will not ship it and it will never worked. But JB always find solution. He used xml to warn linker about dynamic reference. To help developer you can use a great profiler which is able to generate an xml which contain all dynamic call for Linker.
It is a bit complicated but it work. Best is done a little script which call mono with this profiler and call the linker assembly with the xml generated when it found dynamic reference.
Imagine how it can be powerfull to use all this stuff in a Nant file. With all this external stuff nant become more and more useful to customize our build with great tool as Linker, Gendarme, Nunit, NCover, Cruisecontrol …