edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;C574574
File: Initializers.Generated.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;C574574  (server)    9/23/2008 2:42 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;RandomRubyFixes02
@@ -76,7 +76,7 @@
                 new System.Action<IronRuby.Builtins.RubyClass, System.Object[]>(IronRuby.Builtins.RubyStructOps.AllocatorUndefined),
             });
             ExtendModule(typeof(System.Collections.Generic.IDictionary<System.Object, System.Object>), new System.Action<IronRuby.Builtins.RubyModule>(LoadSystem__Collections__Generic__IDictionary_Instance), null, new IronRuby.Builtins.RubyModule[] {def17, });
-            IronRuby.Builtins.RubyModule def31 = ExtendModule(typeof(System.Collections.IEnumerable), new System.Action<IronRuby.Builtins.RubyModule>(LoadSystem__Collections__IEnumerable_Instance), null, new IronRuby.Builtins.RubyModule[] {def17, });
+            ExtendModule(typeof(System.Collections.IEnumerable), new System.Action<IronRuby.Builtins.RubyModule>(LoadSystem__Collections__IEnumerable_Instance), null, new IronRuby.Builtins.RubyModule[] {def17, });
             ExtendModule(typeof(System.Collections.IList), new System.Action<IronRuby.Builtins.RubyModule>(LoadSystem__Collections__IList_Instance), null, new IronRuby.Builtins.RubyModule[] {def17, });
             ExtendModule(typeof(System.IComparable), new System.Action<IronRuby.Builtins.RubyModule>(LoadSystem__IComparable_Instance), null, new IronRuby.Builtins.RubyModule[] {def26, });
             DefineGlobalClass("Array", typeof(IronRuby.Builtins.RubyArray), Context.ObjectClass, new System.Action<IronRuby.Builtins.RubyModule>(LoadArray_Instance), new System.Action<IronRuby.Builtins.RubyModule>(LoadArray_Class), new IronRuby.Builtins.RubyModule[] {def17, }, new System.Delegate[] {
@@ -90,7 +90,7 @@
                 new System.Func<IronRuby.Runtime.RubyScope, IronRuby.Runtime.BlockParam, IronRuby.Builtins.RubyClass, System.Object, System.Object>(IronRuby.Builtins.ArrayOps.CreateArray),
             });
             DefineGlobalClass("Binding", typeof(IronRuby.Builtins.Binding), Context.ObjectClass, null, null, IronRuby.Builtins.RubyModule.EmptyArray, null);
-            DefineGlobalClass("ClrString", typeof(System.String), Context.ObjectClass, new System.Action<IronRuby.Builtins.RubyModule>(LoadClrString_Instance), null, new IronRuby.Builtins.RubyModule[] {def31, }, null);
+            DefineGlobalClass("ClrString", typeof(System.String), Context.ObjectClass, new System.Action<IronRuby.Builtins.RubyModule>(LoadClrString_Instance), null, IronRuby.Builtins.RubyModule.EmptyArray, null);
             DefineGlobalClass("Dir", typeof(IronRuby.Builtins.RubyDir), Context.ObjectClass, new System.Action<IronRuby.Builtins.RubyModule>(LoadDir_Instance), new System.Action<IronRuby.Builtins.RubyModule>(LoadDir_Class), new IronRuby.Builtins.RubyModule[] {def17, }, null);
             #if !SILVERLIGHT
             DefineGlobalClass("Encoding", typeof(IronRuby.Builtins.RubyEncoding), Context.ObjectClass, new System.Action<IronRuby.Builtins.RubyModule>(LoadEncoding_Instance), new System.Action<IronRuby.Builtins.RubyModule>(LoadEncoding_Class), IronRuby.Builtins.RubyModule.EmptyArray, new System.Delegate[] {
@@ -3616,6 +3616,10 @@
             
             module.DefineRuleGenerator("[]", 0x29, IronRuby.Builtins.ProcOps.Call());
             
+            module.DefineLibraryMethod("arity", 0x29, new System.Delegate[] {
+                new System.Func<IronRuby.Builtins.Proc, System.Int32>(IronRuby.Builtins.ProcOps.GetArity),
+            });
+            
             module.DefineRuleGenerator("call", 0x29, IronRuby.Builtins.ProcOps.Call());
             
             module.DefineLibraryMethod("clone", 0x29, new System.Delegate[] {
@@ -3898,6 +3902,7 @@
         private void LoadString_Instance(IronRuby.Builtins.RubyModule/*!*/ module) {
             
             module.HideMethod("clone");
+            module.HideMethod("version");
             module.DefineLibraryMethod("%", 0x29, new System.Delegate[] {
                 new System.Func<IronRuby.Runtime.RubyScope, IronRuby.Builtins.MutableString, System.Object, IronRuby.Builtins.MutableString>(IronRuby.Builtins.MutableStringOps.Format),
             });
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FloatOps.cs;C570580
File: FloatOps.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FloatOps.cs;C570580  (server)    9/23/2008 2:41 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FloatOps.cs;RandomRubyFixes02
@@ -863,13 +863,14 @@
         }
 
         public static bool IsNegativeZero(double self) {
-#if SILVERLIGHT
-            // TODO: Figure out a way to identify this situation under Silverlight
-            return false;
-#else
             if (self != 0.0) {
                 return false;
             }
+#if SILVERLIGHT // BitConverter.DoubleToInt64Bits
+            byte[] bits = BitConverter.GetBytes(self);
+            return (bits[7] == 0x80 && bits[6] == 0x00 && bits[5] == 0x00 && bits[4] == 0x00
+                && bits[3] == 0x00 && bits[2] == 0x00 && bits[1] == 0x00 && bits[0] == 0x00);
+#else
             ulong bits = unchecked((ulong)BitConverter.DoubleToInt64Bits(self));
             return ((bits & 0x8000000000000000) != 0);
 #endif
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;C574574
File: MutableStringOps.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;C574574  (server)    9/23/2008 2:41 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/MutableStringOps.cs;RandomRubyFixes02
@@ -36,6 +36,7 @@
     [RubyClass("String", Extends = typeof(MutableString), Inherits = typeof(Object))]
     [Includes(typeof(Enumerable), typeof(Comparable))]
     [HideMethod("clone")]
+    [HideMethod("version")]
     public class MutableStringOps {
 
         [RubyConstructor]
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ProcOps.cs;C567327
File: ProcOps.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ProcOps.cs;C567327  (server)    9/23/2008 8:55 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/ProcOps.cs;RandomRubyFixes02
@@ -35,7 +35,25 @@
         #region Public Instance Methods
 
         //    ==
-        //    arity
+
+        [RubyMethod("arity", RubyMethodAttributes.PublicInstance)]
+        public static int GetArity(Proc/*!*/ self) {
+            bool acceptsBlock, hasOptional = false;
+            int mandatory, optional;
+            RubyBinder.GetParameterCount(self.Dispatcher.Method.Method.GetParameters(), out mandatory, out optional, out acceptsBlock);
+            if (mandatory > 0) {
+                mandatory--; // account for "self"
+            }
+            if (!hasOptional && optional > 0) {
+                hasOptional = true;
+            }
+            if (hasOptional) {
+                return -mandatory - 1;
+            } else {
+                return mandatory;
+            }
+        }
+
         //    binding
 
         [RubyMethod("[]", RubyMethodAttributes.PublicInstance)]
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Loader.cs;C574574
File: Loader.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Loader.cs;C574574  (server)    9/23/2008 8:12 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Loader.cs;RandomRubyFixes02
@@ -521,7 +521,7 @@
             Assert.NotNull(path, extension);
 
             LanguageContext language;
-            if (!DomainManager.TryGetLanguageByFileExtension(extension, out language)) {
+            if (extension.Length == 0 || !DomainManager.TryGetLanguageByFileExtension(extension, out language)) {
                 // Ruby by default:
                 language = _executionContext.Context;
             }
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyBinder.cs;C570580
File: RubyBinder.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyBinder.cs;C570580  (server)    9/23/2008 9:20 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Ruby/Runtime/Calls/RubyBinder.cs;RandomRubyFixes02
@@ -107,7 +107,7 @@
             return i;
         }
 
-        internal static void GetParameterCount(ParameterInfo/*!*/[]/*!*/ parameterInfos, out int mandatory, out int optional, out bool acceptsBlock) {
+        public static void GetParameterCount(ParameterInfo/*!*/[]/*!*/ parameterInfos, out int mandatory, out int optional, out bool acceptsBlock) {
             acceptsBlock = false;
             mandatory = 0;
             optional = 0;
===================================================================
