jbevain
Joined 15 years ago
Joined 15 years ago
It was originally used to reshape the entire Mono class library into a subset to expose the Silverlight class library API surface for Moonlight.
It was then used to link iOS and Android applications in MonoTouch and Mono for Android, and Xamarin continued to use and improve it.
The Mono Linker has an open architecture making it reasonably easy to customize how it processes code , and detect patterns specific to each platform to link them away. Xamarin added linker steps to do more than tree-shaking, and remove dead code inside methods. For instance:
if (TargetPlatform.Architecture == Architecture.X64) {
// ..
}
The entire if body can be removed if the linker knows that TargetPlatform.Architecture will not be X64.And now, it's the base for the .NET Core linker. Quite a journey!
ILSpy: https://github.com/icsharpcode/ilspy
JustDecompile: https://github.com/telerik/JustDecompileEngine/
Both are based on the same library that is used in the post: Mono.Cecil (https://github.com/jbevain/cecil).
It takes longer to download, probably the size of the engine and the assets, but I've been very much impressed with the Unity3D WebGL export of this FPS:
Fun fact, MonoTouch applications are built with a very similar pipeline, except that LLVM does the compilation in the end.
The steps 4 and 5 in the blog post map quite exactly to the Mono.Linker and the Mono.Tuner. Both tools are using a XML file format for whitelisting pieces of code that need to be included, that's useful if you're calling code with reflection at runtime which is not statically discoverable at build time.
The app itself is still missing some things for my particular workflow: I'd like to have visibility on incoming code that's not part of pull requests. Like simple pushes to branches.
I'd also have the possibility to unsubscribe from repos directly from the app.
They most certainly do:
http://www.theguardian.com/world/2013/jul/04/france-electron...
No you should not, and no, that's really not what the declaration of human rights is about.
When you create a french company your create a “personne morale”, a legal entity, an entity on its own, that is viewed more like a living entity and not like an inanimate object. You do have rights on this entity, but you do also have obligations, not the least of which is to follow the law.
So no, just because you want to you can't employ underage kids for instance.
And just because you want, you can't just fire people at will without reasons.
One could argue that laws could be improved, but that's really not the point you're making.
Founded SyntaxTree a developer tools company doing UnityVS, acquired by Microsoft.
Author of Mono.Cecil and other .net niceties.
Long time Mono contributor, former member of the Mono team at Novell.
* http://github.com/jbevain * http://syntaxtree.com * http://unityvs.com