diff --git a/com.oracle.truffle.r.native/builtinlibs/Makefile b/com.oracle.truffle.r.native/builtinlibs/Makefile
index d929e2c0f04168c38f6e96fdada5525449a92717..fb792070acd7269a420455c3637e9d1d9bf3c6cd 100644
--- a/com.oracle.truffle.r.native/builtinlibs/Makefile
+++ b/com.oracle.truffle.r.native/builtinlibs/Makefile
@@ -63,7 +63,7 @@ LIB_RDUMMY := $(OBJ)/libR.$(SHARED_EXT)
 libr: $(LIB_RDUMMY)
 $(LIB_RDUMMY): $(OBJ)/rdummy.o
 	mkdir -p $(LIBDIR)
-	$(CC) $(LDFLAGS) -o $(LIB_RDUMMY) -current_version 3.1.0 -compatibility_version 3.1.0 $(OBJ)/rdummy.o
+	$(CC) $(LDFLAGS) -o $(LIB_RDUMMY) -current_version 3.1.1 -compatibility_version 3.1.1 $(OBJ)/rdummy.o
 
 cleanlibr:
 	rm -f $(LIB_RDUMMY)
diff --git a/com.oracle.truffle.r.native/builtinlibs/lib/darwin/libRblas.dylib b/com.oracle.truffle.r.native/builtinlibs/lib/darwin/libRblas.dylib
index e92c74d7adddc7cb2e693139cee8cccedd48d984..b7bb1617898d602739be77f2214080d75aa46be0 100755
Binary files a/com.oracle.truffle.r.native/builtinlibs/lib/darwin/libRblas.dylib and b/com.oracle.truffle.r.native/builtinlibs/lib/darwin/libRblas.dylib differ
diff --git a/com.oracle.truffle.r.native/builtinlibs/lib/darwin/libRlapack.dylib b/com.oracle.truffle.r.native/builtinlibs/lib/darwin/libRlapack.dylib
index 04fe8472bfea022feaae66f34e5caa62a63b4056..870d33b49d9946cb4cf4acd76faf672de5c38841 100755
Binary files a/com.oracle.truffle.r.native/builtinlibs/lib/darwin/libRlapack.dylib and b/com.oracle.truffle.r.native/builtinlibs/lib/darwin/libRlapack.dylib differ
diff --git a/com.oracle.truffle.r.native/builtinlibs/lib/linux/libRblas.so b/com.oracle.truffle.r.native/builtinlibs/lib/linux/libRblas.so
index ba1a484fd4be3536e491e5fe1e83972529394e4f..ae061ac3b796a88cc4a903a7e445bf93f49cde71 100755
Binary files a/com.oracle.truffle.r.native/builtinlibs/lib/linux/libRblas.so and b/com.oracle.truffle.r.native/builtinlibs/lib/linux/libRblas.so differ
diff --git a/com.oracle.truffle.r.native/builtinlibs/lib/linux/libRlapack.so b/com.oracle.truffle.r.native/builtinlibs/lib/linux/libRlapack.so
index d316bc5f06b4eb3ec8c587b767bd39a0f4a669c9..192e5b5d912fd349663f324ca8c7dec251a5e4a2 100755
Binary files a/com.oracle.truffle.r.native/builtinlibs/lib/linux/libRlapack.so and b/com.oracle.truffle.r.native/builtinlibs/lib/linux/libRlapack.so differ
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RVersionNumber.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RVersionNumber.java
index baa230059393ef6bf93feb79805163f0aaf4dac4..e4e326a5f0146705ae928971d9605bf3746bda86 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RVersionNumber.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/RVersionNumber.java
@@ -27,21 +27,26 @@ package com.oracle.truffle.r.runtime;
  * use in {@code static final} fields and to finesse the fact that such fields cannot precede the
  * {@code enum} elements.
  *
- * N.B. Since packages check against the version number, we have to have a GnuR version number.
+ * N.B. Since packages check against the version number, we have to have a GnuR version number and,
+ * for consistency, we set the date to that of the corresponding GnuR release.
  */
 public class RVersionNumber {
     public static final String MAJOR = "3";
     public static final String MINOR = "1";
-    public static final String PATCH = "0";
+    public static final String PATCH = "1";
 
     public static final String MAJOR_MINOR = MAJOR + "." + MINOR;
     public static final String MINOR_PATCH = MINOR + "." + PATCH;
     public static final String FULL = MAJOR + "." + MINOR + "." + PATCH;
 
     public static final String RELEASE_YEAR = "2014";
-    public static final String RELEASE_MONTH = "06";
-    public static final String RELEASE_DAY = "05";
+    public static final String RELEASE_MONTH = "07";
+    public static final String RELEASE_DAY = "10";
 
     public static final String VERSION_STRING = "FastR version " + FULL + " (" + RELEASE_YEAR + "-" + RELEASE_MONTH + "-" + RELEASE_DAY + ")";
 
+    public static void main(String[] args) {
+        System.out.printf("R version %s", FULL);
+    }
+
 }
diff --git a/mx.fastr/mx_fastr.py b/mx.fastr/mx_fastr.py
index 5cddbe687363f6f481f901ca56fe820ea71c606c..65db0d8216593b33192167ff68c3dca192c96ea1 100644
--- a/mx.fastr/mx_fastr.py
+++ b/mx.fastr/mx_fastr.py
@@ -20,7 +20,7 @@
 # or visit www.oracle.com if you need additional information or have any
 # questions.
 #
-import tempfile, shutil, filecmp, platform, zipfile, sys
+import tempfile, shutil, filecmp, platform, zipfile, sys, subprocess
 from os.path import join, sep, exists
 from argparse import ArgumentParser
 import mx
@@ -269,6 +269,14 @@ def testgen(args):
     parser = ArgumentParser(prog='r testgen')
     parser.add_argument('--tests', action='store', default=_all_unit_tests(), help='pattern to match test classes')
     args = parser.parse_args(args)
+    # check the version of GnuR against FastR
+    try:
+        fastr_version = subprocess.check_output([mx.java().java, '-cp', mx.classpath('com.oracle.truffle.r.runtime'), 'com.oracle.truffle.r.runtime.RVersionNumber'])
+        gnur_version = subprocess.check_output(['R', '--version'])
+        if not gnur_version.startswith(fastr_version):
+            mx.abort('R version is incompatible with FastR, please update to ' + fastr_version)
+    except subprocess.CalledProcessError:
+        mx.abort('RVersionNumber.main failed')
     # clean the test project to invoke the test analyzer AP
     testOnly = ['--projects', 'com.oracle.truffle.r.test']
     mx.clean(['--no-dist', ] + testOnly)