edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Rakefile;C448223
File: Rakefile
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Rakefile;C448223  (server)    5/27/2008 10:00 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Rakefile;FastFixes1
@@ -364,7 +364,7 @@
 desc "generate initializer.generated.cs file for IronRuby.Libraries"
 task :gen do
   IronRuby.source_context do
-    cmd = "#{build_path + 'ClassInitGenerator.exe'} #{build_path + 'IronRuby.Libraries.dll'} /libraries:Ruby.Builtins;Ruby.StandardLibrary.Threading;Ruby.StandardLibrary.Sockets;Ruby.StandardLibrary.OpenSsl;Ruby.StandardLibrary.Digest;Ruby.StandardLibrary.Zlib;Ruby.StandardLibrary.StringIO;Ruby.StandardLibrary.StringScanner;Ruby.StandardLibrary.Enumerator;Ruby.StandardLibrary.FunctionControl;Ruby.StandardLibrary.FileControl /out:#{get_source_dir(:libraries) + 'Initializers.Generated.cs'}"
+    cmd = "#{build_path + 'ClassInitGenerator.exe'} #{build_path + 'IronRuby.Libraries.dll'} /libraries:Ruby.Builtins;Ruby.StandardLibrary.Threading;Ruby.StandardLibrary.Sockets;Ruby.StandardLibrary.OpenSsl;Ruby.StandardLibrary.Digest;Ruby.StandardLibrary.Zlib;Ruby.StandardLibrary.StringIO;Ruby.StandardLibrary.StringScanner;Ruby.StandardLibrary.Enumerator;Ruby.StandardLibrary.FunctionControl;Ruby.StandardLibrary.FileControl;Ruby.StandardLibrary.BigDecimal /out:#{get_source_dir(:libraries) + 'Initializers.Generated.cs'}"
     exec_net cmd
   end
 end
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/GenerateInitializers.cmd;C447029
File: GenerateInitializers.cmd
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/GenerateInitializers.cmd;C447029  (server)    5/27/2008 10:00 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/GenerateInitializers.cmd;FastFixes1
@@ -1,1 +1,1 @@
-"%MERLIN_ROOT%\Bin\Debug\ClassInitGenerator" "%MERLIN_ROOT%\Bin\Debug\IronRuby.Libraries.dll" /libraries:Ruby.Builtins;Ruby.StandardLibrary.Threading;Ruby.StandardLibrary.Sockets;Ruby.StandardLibrary.OpenSsl;Ruby.StandardLibrary.Digest;Ruby.StandardLibrary.Zlib;Ruby.StandardLibrary.StringIO;Ruby.StandardLibrary.StringScanner;Ruby.StandardLibrary.Enumerator;Ruby.StandardLibrary.FunctionControl;Ruby.StandardLibrary.FileControl /out:%~dp0\Initializers.Generated.cs
+"%MERLIN_ROOT%\Bin\Debug\ClassInitGenerator" "%MERLIN_ROOT%\Bin\Debug\IronRuby.Libraries.dll" /libraries:Ruby.Builtins;Ruby.StandardLibrary.Threading;Ruby.StandardLibrary.Sockets;Ruby.StandardLibrary.OpenSsl;Ruby.StandardLibrary.Digest;Ruby.StandardLibrary.Zlib;Ruby.StandardLibrary.StringIO;Ruby.StandardLibrary.StringScanner;Ruby.StandardLibrary.Enumerator;Ruby.StandardLibrary.FunctionControl;Ruby.StandardLibrary.FileControl;Ruby.StandardLibrary.BigDecimal /out:%~dp0\Initializers.Generated.cs
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;C449929
File: Initializers.Generated.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;C449929  (server)    5/20/2008 10:45 AM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Initializers.Generated.cs;FastFixes1
@@ -9,6 +9,7 @@
 [assembly: Ruby.RubyLibraryAttribute(typeof(Ruby.StandardLibrary.Enumerator.EnumeratorLibraryInitializer))]
 [assembly: Ruby.RubyLibraryAttribute(typeof(Ruby.StandardLibrary.FunctionControl.FunctionControlLibraryInitializer))]
 [assembly: Ruby.RubyLibraryAttribute(typeof(Ruby.StandardLibrary.FileControl.FileControlLibraryInitializer))]
+[assembly: Ruby.RubyLibraryAttribute(typeof(Ruby.StandardLibrary.BigDecimal.BigDecimalLibraryInitializer))]
 
 namespace Ruby.Builtins {
     public sealed class BuiltinsLibraryInitializer : Ruby.Builtins.LibraryInitializer {
@@ -55,9 +56,9 @@
             #endif
             // Skipped primitive: Object
             ExtendModule(typeof(System.Collections.Generic.IDictionary<System.Object, System.Object>), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__Collections__Generic__IDictionary_Instance), null, new Ruby.Builtins.RubyModule[] {def18, });
-            Ruby.Builtins.RubyModule def31 = ExtendModule(typeof(System.Collections.IEnumerable), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__Collections__IEnumerable_Instance), null, new Ruby.Builtins.RubyModule[] {def18, });
+            ExtendModule(typeof(System.Collections.IEnumerable), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__Collections__IEnumerable_Instance), null, new Ruby.Builtins.RubyModule[] {def18, });
             ExtendModule(typeof(System.Collections.IList), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__Collections__IList_Instance), null, new Ruby.Builtins.RubyModule[] {def18, });
-            ExtendModule(typeof(System.IComparable), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__IComparable_Instance), null, new Ruby.Builtins.RubyModule[] {def27, });
+            Ruby.Builtins.RubyModule def31 = ExtendModule(typeof(System.IComparable), new System.Action<Ruby.Builtins.RubyModule>(LoadSystem__IComparable_Instance), null, new Ruby.Builtins.RubyModule[] {def27, });
             DefineGlobalClass("Array", typeof(Ruby.Builtins.RubyArray), Context.ObjectClass, new System.Action<Ruby.Builtins.RubyModule>(LoadArray_Instance), new System.Action<Ruby.Builtins.RubyModule>(LoadArray_Class), new Ruby.Builtins.RubyModule[] {def18, }, new System.Delegate[] {
                 new Microsoft.Scripting.Utils.Function<Ruby.Builtins.RubyArray>(Ruby.Builtins.ArrayOps.CreateArray),
                 new Microsoft.Scripting.Utils.Function<System.Collections.IList, Ruby.Builtins.RubyArray>(Ruby.Builtins.ArrayOps.CreateArray),
@@ -1241,6 +1242,11 @@
                 new Microsoft.Scripting.Utils.Function<Microsoft.Scripting.Runtime.CodeContext, System.Object, System.Object, System.Boolean>(Ruby.Builtins.RubyFileOps.IsSocket),
             });
             
+            module.DefineLibraryMethod("split", 0x31, new System.Delegate[] {
+                new Microsoft.Scripting.Utils.Function<Microsoft.Scripting.Runtime.CodeContext, System.Object, Ruby.Builtins.MutableString, Ruby.Builtins.RubyArray>(Ruby.Builtins.RubyFileOps.Split),
+                new Microsoft.Scripting.Utils.Function<Microsoft.Scripting.Runtime.CodeContext, System.Object, System.Object, Ruby.Builtins.RubyArray>(Ruby.Builtins.RubyFileOps.Split),
+            });
+            
             module.DefineLibraryMethod("stat", 0x31, new System.Delegate[] {
                 new Microsoft.Scripting.Utils.Function<Microsoft.Scripting.Runtime.CodeContext, System.Object, Ruby.Builtins.MutableString, System.IO.FileSystemInfo>(Ruby.Builtins.RubyFileOps.Stat),
                 new Microsoft.Scripting.Utils.Function<Microsoft.Scripting.Runtime.CodeContext, System.Object, System.Object, System.IO.FileSystemInfo>(Ruby.Builtins.RubyFileOps.Stat),
@@ -6411,3 +6417,47 @@
     }
 }
 
+namespace Ruby.StandardLibrary.BigDecimal {
+    public sealed class BigDecimalLibraryInitializer : Ruby.Builtins.LibraryInitializer {
+        protected override void LoadModules() {
+            Ruby.Builtins.RubyClass classRef0 = GetClass(typeof(Ruby.Builtins.Numeric));
+            
+            
+            DefineGlobalClass("BigDecimal", typeof(System.Decimal), classRef0, new System.Action<Ruby.Builtins.RubyModule>(LoadBigDecimal_Instance), null, Ruby.Builtins.RubyModule.EmptyArray, new System.Delegate[] {
+                new Microsoft.Scripting.Utils.Function<Microsoft.Scripting.Runtime.CodeContext, Ruby.Builtins.MutableString, System.Object>(Ruby.StandardLibrary.BigDecimal.BigDecimalOps.Create),
+                new Microsoft.Scripting.Utils.Function<Microsoft.Scripting.Runtime.CodeContext, System.Object, System.Object>(Ruby.StandardLibrary.BigDecimal.BigDecimalOps.Create),
+            });
+            ExtendModule(typeof(Ruby.Builtins.Kernel), new System.Action<Ruby.Builtins.RubyModule>(LoadRuby__Builtins__Kernel_Instance), new System.Action<Ruby.Builtins.RubyModule>(LoadRuby__Builtins__Kernel_Class), Ruby.Builtins.RubyModule.EmptyArray);
+        }
+        
+        private void LoadBigDecimal_Instance(Ruby.Builtins.RubyModule/*!*/ module) {
+            
+            module.DefineLibraryMethod("to_s", 0x9, new System.Delegate[] {
+                new Microsoft.Scripting.Utils.Function<System.Decimal, System.Object>(Ruby.StandardLibrary.BigDecimal.BigDecimalOps.ToString),
+                new Microsoft.Scripting.Utils.Function<System.Decimal, Ruby.Builtins.MutableString, System.Object>(Ruby.StandardLibrary.BigDecimal.BigDecimalOps.ToString),
+                new Microsoft.Scripting.Utils.Function<Microsoft.Scripting.Runtime.CodeContext, System.Decimal, System.Object, System.Object>(Ruby.StandardLibrary.BigDecimal.BigDecimalOps.ToString),
+            });
+            
+        }
+        
+        private void LoadRuby__Builtins__Kernel_Instance(Ruby.Builtins.RubyModule/*!*/ module) {
+            
+            module.DefineLibraryMethod("BigDecimal", 0xa, new System.Delegate[] {
+                new Microsoft.Scripting.Utils.Function<Microsoft.Scripting.Runtime.CodeContext, System.Object, Ruby.Builtins.MutableString, System.Object>(Ruby.StandardLibrary.BigDecimal.KernelOps.CreateBigDecimal),
+                new Microsoft.Scripting.Utils.Function<Microsoft.Scripting.Runtime.CodeContext, System.Object, System.Object, System.Object>(Ruby.StandardLibrary.BigDecimal.KernelOps.CreateBigDecimal),
+            });
+            
+        }
+        
+        private void LoadRuby__Builtins__Kernel_Class(Ruby.Builtins.RubyModule/*!*/ module) {
+            
+            module.DefineLibraryMethod("BigDecimal", 0x11, new System.Delegate[] {
+                new Microsoft.Scripting.Utils.Function<Microsoft.Scripting.Runtime.CodeContext, System.Object, Ruby.Builtins.MutableString, System.Object>(Ruby.StandardLibrary.BigDecimal.KernelOps.CreateBigDecimal),
+                new Microsoft.Scripting.Utils.Function<Microsoft.Scripting.Runtime.CodeContext, System.Object, System.Object, System.Object>(Ruby.StandardLibrary.BigDecimal.KernelOps.CreateBigDecimal),
+            });
+            
+        }
+        
+    }
+}
+
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/IronRuby.Libraries.csproj;C448258
File: IronRuby.Libraries.csproj
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/IronRuby.Libraries.csproj;C448258  (server)    5/27/2008 5:55 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/IronRuby.Libraries.csproj;FastFixes1
@@ -72,6 +72,7 @@
     <Compile Include="..\..\..\Hosts\Silverlight\SilverlightVersion.cs" Condition=" '$(SilverlightBuild)' == 'true' ">
       <Link>Properties\SilverlightVersion.cs</Link>
     </Compile>
+    <Compile Include="BigDecimal\BigDecimalOps.cs" />
     <Compile Include="Builtins\ArgFilesSingletonOps.cs" />
     <Compile Include="Builtins\ArrayOps.cs" />
     <Compile Include="Builtins\BigNumOps.cs" />
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/IronRuby.Libraries.csproj.vspscc;C390406
add: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/BigDecimal/BigDecimalOps.cs
File: BigDecimalOps.cs
===================================================================
--- [no source file]
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/BigDecimal/BigDecimalOps.cs;FastFixes1
@@ -1,0 +1,74 @@
+?/* ****************************************************************************
+ *
+ * Copyright (c) Microsoft Corporation. 
+ *
+ * This source code is subject to terms and conditions of the Microsoft Public License. A 
+ * copy of the license can be found in the License.html file at the root of this distribution. If 
+ * you cannot locate the  Microsoft Public License, please send an email to 
+ * ironruby@microsoft.com. By using this source code in any fashion, you are agreeing to be bound 
+ * by the terms of the Microsoft Public License.
+ *
+ * You must not remove this notice, or any other, from this software.
+ *
+ *
+ * ***************************************************************************/
+
+using System;
+using System.Runtime.InteropServices;
+
+using Microsoft.Scripting.Actions;
+using Microsoft.Scripting.Runtime;
+
+using Ruby.Runtime;
+using Ruby.Builtins;
+
+namespace Ruby.StandardLibrary.BigDecimal {
+
+    [RubyClass("BigDecimal", Extends = typeof(decimal), Inherits = typeof(Numeric))]
+    public static class BigDecimalOps {
+
+        [RubyConstructor]
+        public static object Create(CodeContext/*!*/ context, [NotNull]MutableString/*!*/ value) {
+            decimal result;
+            if (!Decimal.TryParse(value.ToString(), out result)) {
+                return (decimal)0.0;
+            }
+            return result;
+        }
+
+        [RubyConstructor]
+        public static object Create(CodeContext/*!*/ context, object value) {
+            return Create(context, Protocols.CastToString(context, value));
+        }
+
+        [RubyMethod("to_s")]
+        public static object ToString(decimal/*!*/ self) {
+            return MutableString.Create(self.ToString());
+        }
+
+        [RubyMethod("to_s")]
+        public static object ToString(decimal/*!*/ self, [NotNull]MutableString/*!*/ format) {
+            return ToString(self);
+        }
+
+        [RubyMethod("to_s")]
+        public static object ToString(CodeContext/*!*/ context, decimal/*!*/ self, object format) {
+            return ToString(self, Protocols.CastToString(context, format));
+        }
+    }
+
+    [RubyModule(Extends = typeof(Kernel))]
+    public static class KernelOps {
+        [RubyMethod("BigDecimal", RubyMethodAttributes.PrivateInstance)]
+        [RubyMethod("BigDecimal", RubyMethodAttributes.PublicSingleton)]
+        public static object CreateBigDecimal(CodeContext/*!*/ context, object self, [NotNull]MutableString/*!*/ value) {
+            return BigDecimalOps.Create(context, value);
+        }
+
+        [RubyMethod("BigDecimal", RubyMethodAttributes.PrivateInstance)]
+        [RubyMethod("BigDecimal", RubyMethodAttributes.PublicSingleton)]
+        public static object CreateBigDecimal(CodeContext/*!*/ context, object self, object value) {
+            return BigDecimalOps.Create(context, value);
+        }
+    }
+}
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Dir.cs;C449755
File: Dir.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Dir.cs;C449755  (server)    5/28/2008 8:37 AM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/Dir.cs;FastFixes1
@@ -440,13 +440,15 @@
             }
 
             private void TestPath(string path, int patternEnd, bool isLastPathSegment) {
+                if (!isLastPathSegment) {
+                    DoGlob(path, patternEnd);
+                    return;
+                }
                 string pathName = path.Replace('\\', '/');
                 if (_stripTwo) {
                     pathName = pathName.Substring(2);
                 }
-                if (!isLastPathSegment) {
-                    DoGlob(pathName, patternEnd);
-                } else if (_pal.DirectoryExists(pathName)) {
+                if (_pal.DirectoryExists(pathName)) {
                     _result.Add(pathName);
                 } else if (!_dirOnly && _pal.FileExists(pathName)) {
                     _result.Add(pathName);
@@ -549,13 +551,10 @@
                 yield break;
             }
 
-            bool tainted = Kernel.Tainted(context, pattern);
             foreach (string group in groups) {
                 foreach (string filename in DoGlob(context, group, flags)) {
                     MutableString result = MutableString.Create(filename);
-                    if (tainted) {
-                        Kernel.Taint(context, result);
-                    }
+                    Kernel.FlowTaint<MutableString>(context, pattern, result);
                     yield return result;
                 }
             }
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs;C448673
File: FileOps.cs
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs;C448673  (server)    5/28/2008 8:30 AM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libraries.LCA_RESTRICTED/Builtins/FileOps.cs;FastFixes1
@@ -616,8 +616,19 @@
             return RubyStatOps.IsSocket(RubyStatOps.Create(context, path));
         }
 
-        //split
+        [RubyMethod("split", RubyMethodAttributes.PublicSingleton)]
+        public static RubyArray Split(CodeContext/*!*/ context, object/*!*/ self, [NotNull]MutableString/*!*/ path) {
+            RubyArray result = new RubyArray(2);
+            result.Add(DirName(context, self, path));
+            result.Add(Basename(context, self, path));
+            return result;
+        }
 
+        [RubyMethod("split", RubyMethodAttributes.PublicSingleton)]
+        public static RubyArray Split(CodeContext/*!*/ context, object/*!*/ self, object path) {
+            return Split(context, self, Protocols.CastToString(context, path));
+        }
+
         [RubyMethod("sticky?", RubyMethodAttributes.PublicSingleton)]
         public static bool IsSticky(CodeContext/*!*/ context, object/*!*/ self, [NotNull]MutableString/*!*/ path) {
             return RubyStatOps.IsSticky(RubyStatOps.Create(context, path));
===================================================================
edit: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libs/bigdecimal.rb;C446709
File: bigdecimal.rb
===================================================================
--- $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libs/bigdecimal.rb;C446709  (server)    5/27/2008 9:50 PM
+++ Shelved Change: $/Dev10/feature/vs_langs01/Merlin/Main/Languages/Ruby/Libs/bigdecimal.rb;FastFixes1
@@ -1,4 +1,7 @@
-# placeholder file ... 
-class BigDecimal < Numeric
+load_assembly 'IronRuby.Libraries', 'Ruby.StandardLibrary.BigDecimal'
 
+module Kernel
+  def BigDecimal s
+    BigDecimal.new(s)
+  end
 end
===================================================================
