diff --git a/Configure.PL b/Configure.PL
--- a/Configure.PL
+++ b/Configure.PL
@@ -74,14 +74,20 @@
 my @cc_options = map { /^-optc(.+)/ ? $1 : () } (split(/\s+/, $embed_flags), split(/\s+/, $ccdlflags));
 my @ld_options = grep { not /,/ } map { /^-optl(.+)/ ? $1 : () } (split(/\s+/, $embed_flags), split(/\s+/, $ccdlflags));
 
-open INFO, ">Pugs.buildinfo" or die "Cannot write build info: $!";
-print INFO << ".";
+my $info = << ".";
 executable: pugs
 ghc-options: $embed_flags $ccdlflags
 include-dirs: @include_dirs
 cc-options: @cc_options
 ld-options: @ld_options
 .
+
+# Hack for OSX 10.6
+$info =~ s/-arch x86_64 (-arch i386) -arch ppc/$1/g;
+$info =~ s/-opt[lc]-arch -opt[lc]x86_64 (-opt[lc]-arch -opt[lc]i386) -opt[lc]-arch -opt[lc]ppc/$1/g;
+
+open INFO, ">Pugs.buildinfo" or die "Cannot write build info: $!";
+print INFO $info;
 close INFO;
 
 xsinit();
diff --git a/Pugs.cabal b/Pugs.cabal
--- a/Pugs.cabal
+++ b/Pugs.cabal
@@ -1,8 +1,8 @@
 Name            : Pugs
-Version         : 6.2.13.14
+Version         : 6.2.13.15
 license         : BSD3
 license-file    : LICENSE
-cabal-version   : >= 1.2
+cabal-version   : >= 1.2.3
 copyright       : 2005-2008, The Pugs Contributors
 maintainer      : Audrey Tang <audreyt@audreyt.org>
 category        : Language, Pugs
@@ -12,7 +12,7 @@
 synopsis        : A Perl 6 Implementation
 description     : A Perl 6 Implementation
 author          : Audrey Tang <audreyt@audreyt.org>
-tested-with     : GHC
+Tested-With:    GHC==6.8.2, GHC==6.8.3, GHC==6.10.1, GHC==6.12.1
 data-files      :
     blib6/pugs/perl5/lib/Parse/Yapp/Driver.pm
     blib6/pugs/perl5/lib/Parse/Yapp/Grammar.pm
@@ -160,7 +160,7 @@
     hs-source-dirs:     src
 
     build-depends:
-        base, haskell98, filepath, mtl, stm, parsec < 3.0.0, network,
+        base >= 3 && < 5, haskell98, filepath, mtl, stm, parsec < 3.0.0, network,
         pretty, time, random, process, containers, bytestring,
         array, directory, utf8-string, binary, haskeline >= 0.2.1, FindBin,
         control-timeout >= 0.1.2,
diff --git a/src/Pugs/AST/Utils.hs b/src/Pugs/AST/Utils.hs
--- a/src/Pugs/AST/Utils.hs
+++ b/src/Pugs/AST/Utils.hs
@@ -58,8 +58,8 @@
 newObjectId = do
     tv <- asks envMaxId
     stm $ do
-        rv <- readTVar tv
-        writeTVar tv (MkObjectId (succ (unObjectId rv)))
+        rv@(MkObjectId rvId) <- readTVar tv
+        writeTVar tv (MkObjectId (succ rvId))
         return rv
         
 castFailM :: forall a b. (Show a, Typeable b) => a -> String -> Eval b
diff --git a/src/Pugs/Parser.hs b/src/Pugs/Parser.hs
--- a/src/Pugs/Parser.hs
+++ b/src/Pugs/Parser.hs
@@ -1892,7 +1892,7 @@
     -- formal :: [[Exp]]
     -- outer level of listness provided by `sepEndBy`
     -- the inner (`fix`ed) part returns [Exp]
-    formal <- (`sepEndBy` symbol ":") $ fix $ \rec -> do
+    formal <- (`sepEndBy` symbol ":") $ fix $ \next -> do
         rv <- option Nothing $ do
             fmap Just $ choice
                 [ try $ do
@@ -1907,7 +1907,7 @@
         case rv of
             Nothing           -> return []
             Just (exp, trail) -> do
-                rest <- option [] $ do { trail; rec }
+                rest <- option [] $ do { trail; next }
                 return (exp ++ rest)
     processFormals formal
 -- FAILED PARSER PATCH
diff --git a/src/Pugs/Prim/Eval.hs b/src/Pugs/Prim/Eval.hs
--- a/src/Pugs/Prim/Eval.hs
+++ b/src/Pugs/Prim/Eval.hs
@@ -72,7 +72,7 @@
             "Test"  -> shortcutToTestPM
             _       -> tryFastEval pathName (pathName ++ ".yml")
         endAV'  <- findSymRef (cast "@*END") glob
-        doArray (VRef endAV') (`array_unshift` ends)
+        _       <- doArray (VRef endAV') (`array_unshift` ends)
         return rv
     where
     shortcutToTestPM = do
diff --git a/src/Pugs/Version.hs b/src/Pugs/Version.hs
--- a/src/Pugs/Version.hs
+++ b/src/Pugs/Version.hs
@@ -14,10 +14,10 @@
 -- #include "pugs_version.h"
 
 #ifndef PUGS_VERSION
-#define PUGS_VERSION "6.2.13.14"
+#define PUGS_VERSION "6.2.13.15"
 #endif
 #ifndef PUGS_DATE
-#define PUGS_DATE "December 16, 2008"
+#define PUGS_DATE "December 16, 2009"
 #endif
 #ifndef PUGS_SVN_REVISION
 #define PUGS_SVN_REVISION 0
@@ -33,7 +33,7 @@
 versnum    = PUGS_VERSION
 date       = PUGS_DATE
 version    = name ++ ", version " ++ versnum ++ ", " ++ date ++ revision
-copyright  = "Copyright 2005-2008, The Pugs Contributors"
+copyright  = "Copyright 2005-2009, The Pugs Contributors"
 revnum     = show (PUGS_SVN_REVISION :: Integer)
 revision
     | rev <- revnum
