I downloaded Silverlight 1.1 Alpha and poked around until I found out where the .NET stuff lives. Here’s what’s in the bundle:
$ cd /Library/Internet\ Plug-Ins/Silverlight.plugin/Contents/MacOS/ $ ls CoreCLR.bundle System.Core.dll IronPython.Modules.dll System.SilverLight.dll IronPython.dll System.Xml.Core.dll Microsoft.JScript.Compiler.dll System.dll Microsoft.JScript.Runtime.dll agclr.dll Microsoft.Scripting.SilverLight.dll agcore Microsoft.Scripting.Vestigial.dll slr.dll Microsoft.Scripting.dll slr.dll.managed_manifest Microsoft.VisualBasic.dll
And check out what those DLLs are made of:
$ file System.dll System.dll: MS Windows PE 32-bit Intel 80386 console DLL
But what’s this thing? Man, that’s big!
$ file agcore agcore: Mach-O universal binary with 2 architectures agcore (for architecture i386): Mach-O bundle i386 agcore (for architecture ppc): Mach-O bundle ppc $ ls -l agcore -rwxr-xr-x 1 502 admin 16083600 Apr 26 03:16 agcore
So how much of those DLLs are managed code? Do they contain Win32 code, and does agcore have some magic in it for bootstrapping Win32 code?
16 megs isn’t all that large for a universal mach-o binary.
What vexes me more is the fact that System.dll doesn’t contain PPC code based on what you’ve listed here – so maybe the dll’s are /only/ managed code? I find it unlikely that they’d be running i386 code on PPC Macs.
You’ve intruiged me – now I’m going to have to download this and look at the magic they’re pulling.
Let me know what you find out. One thing I neglected to mention, although you may already be aware of this, is that even managed code DLLs are supposed look like that. So it is possible that all of those DLLs are managed code and that all the system-specific stuff is in the bundles and executables.