diff --git a/README.md b/README.md
index 6c421a3f83d78fd2e3d423fde7eefce5489c1478..ae5a5aa685acd0255a307ead2163496fc91c32fb 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,7 @@ FastR is primarily aimed at long-running applications. The runtime performance b
 
 Building FastR from source is supported on Mac OS X (El Capitan onwards), and various flavors of Linux.
 FastR uses a build tool called `mx` (cf `maven`) which can be downloaded from [here](http://github.com/graalvm/mx).
-`mx` manages software in _suites_, which are normally one-to-one with a `git` repository. FastR depends fundamentally on the [truffle](http://github.com/graalvm/truffle) suite. However, performance also depends on the [Graal compiler](http://github.com/graalvm/graal-core) as without it, FastR operates in interpreted mode only. The conventional way to arrange the Git repos (suites) is as siblings in a parent directory, which we will call `FASTR_HOME`.
+`mx` manages software in _suites_, which are normally one-to-one with a `git` repository. FastR depends fundamentally on the [truffle](http://github.com/graalvm/truffle) suite. However, performance also depends on the [Graal compiler](http://github.com/graalvm/graal) as without it, FastR operates in interpreted mode only. The conventional way to arrange the Git repos (suites) is as siblings in a parent directory, which we will call `FASTR_HOME`.
 
 ## Pre-Requisites
 FastR shares some code with GnuR, for example, the default packages and the Blas library. Therefore, a version of GnuR (currently
diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java
index 8798c06e6976de8811a41bef02f894a70457e50d..73a6b694cafcbee45b0295d66896961bf279aff9 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -293,6 +293,7 @@ final class REngine implements Engine, Engine.Timings {
     }
 
     @Override
+    @SuppressWarnings("deprecation")
     public CallTarget parseToCallTarget(Source source, MaterializedFrame executionFrame) throws ParseException {
         if (source == Engine.GET_CONTEXT) {
             /*
@@ -332,6 +333,7 @@ final class REngine implements Engine, Engine.Timings {
 
         @Child private Node findContext = TruffleRLanguage.INSTANCE.actuallyCreateFindContextNode();
 
+        @SuppressWarnings("deprecation")
         PolyglotEngineRootNode(List<RSyntaxNode> statements, SourceSection sourceSection, MaterializedFrame executionFrame) {
             super(TruffleRLanguage.class, sourceSection, new FrameDescriptor());
             // can't print if initializing the system in embedded mode (no builtins yet)
@@ -519,6 +521,7 @@ final class REngine implements Engine, Engine.Timings {
         @Child private GetVisibilityNode visibility = GetVisibilityNode.create();
         @Child private SetVisibilityNode setVisibility = SetVisibilityNode.create();
 
+        @SuppressWarnings("deprecation")
         protected AnonymousRootNode(RNode body, String description, boolean printResult, boolean topLevel) {
             super(TruffleRLanguage.class, null, new FrameDescriptor());
             this.body = body;
diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguage.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguage.java
index f9d97de35c67313ceb0df68f2985b379a7cf5493..1e282c09098f3fcf1d1abfc4c7e5c562e3497953 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguage.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/TruffleRLanguage.java
@@ -90,11 +90,12 @@ public final class TruffleRLanguage extends TruffleLanguage<RContext> {
 
     private static boolean systemInitialized;
 
-    public static final TruffleRLanguage INSTANCE = new TruffleRLanguage();
+    public static TruffleRLanguage INSTANCE;
 
     public static final String MIME = RRuntime.R_APP_MIME;
 
-    private TruffleRLanguage() {
+    public TruffleRLanguage() {
+        INSTANCE = this;
     }
 
     @Override
@@ -185,8 +186,8 @@ public final class TruffleRLanguage extends TruffleLanguage<RContext> {
         return null;
     }
 
-    @SuppressWarnings("try")
     @Override
+    @SuppressWarnings({"try", "deprecation"})
     protected CallTarget parse(ParsingRequest request) throws Exception {
         CompilerAsserts.neverPartOfCompilation();
         try (RCloseable c = RContext.withinContext(findContext(createFindContextNode()))) {
@@ -228,10 +229,12 @@ public final class TruffleRLanguage extends TruffleLanguage<RContext> {
     }
 
     // TODO: why isn't the original method public?
+    @SuppressWarnings("deprecation")
     public Node actuallyCreateFindContextNode() {
         return createFindContextNode();
     }
 
+    @SuppressWarnings("deprecation")
     public RContext actuallyFindContext0(Node contextNode) {
         return findContext(contextNode);
     }
diff --git a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java
index 75555feaacc1047bfa8b2d649a89f6cc020fb1dc..f5b6dbbb1bae90f423f6404be1422507daa91734 100644
--- a/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java
+++ b/com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java
@@ -48,6 +48,7 @@ public final class RAbstractVectorAccessFactory implements Factory18 {
 
         @Child private RLengthNode lengthNode = RLengthNode.create();
 
+        @SuppressWarnings("deprecation")
         VectorSizeNode() {
             super(TruffleRLanguage.class, null, null);
         }
@@ -65,6 +66,7 @@ public final class RAbstractVectorAccessFactory implements Factory18 {
         @Child private RLengthNode lengthNode = RLengthNode.create();
         @Child private Node findContext = TruffleRLanguage.INSTANCE.actuallyCreateFindContextNode();
 
+        @SuppressWarnings("deprecation")
         VectorReadNode() {
             super(TruffleRLanguage.class, null, null);
             this.lengthAccess = false;
@@ -94,6 +96,7 @@ public final class RAbstractVectorAccessFactory implements Factory18 {
     }
 
     private abstract class InteropRootNode extends RootNode {
+        @SuppressWarnings("deprecation")
         InteropRootNode() {
             super(TruffleRLanguage.class, null, null);
         }
diff --git a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/ValuePrinterNode.java b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/ValuePrinterNode.java
index e1824bbccbcb343c982b10b6fe6622aa6cf43657..c9437d56e481f0de76c1fad8b2e1e759a27c1cb7 100644
--- a/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/ValuePrinterNode.java
+++ b/com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/printer/ValuePrinterNode.java
@@ -562,6 +562,7 @@ public final class ValuePrinterNode extends RBaseNode {
         ValuePrinters.printNewLine(printCtx);
     }
 
+    @SuppressWarnings("deprecation")
     public static String prettyPrint(final Object value) {
         return (String) Truffle.getRuntime().createCallTarget(new RootNode(TruffleLanguage.class, null, null) {
 
diff --git a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/casts/TestCasts.java b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/casts/TestCasts.java
index 16b1166df72e934f8dbc2c4d67ec9f6e4900a1df..9b512143f74f997f6f45efe9cf6276c6a1729a0d 100644
--- a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/casts/TestCasts.java
+++ b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/casts/TestCasts.java
@@ -69,7 +69,7 @@ import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
  * mx --J @'-Dgraal.Dump=HighTier:1 -Dgraal.MethodFilter=*TestCasts* -Dgraal.TraceTruffleCompilation=true -Dgraal.PrintBackendCFG=false'  junits --tests TestCasts
  *
  * of course, Graal needs to be imported for this to work:
- * DEFAULT_DYNAMIC_IMPORTS=graal-core (or graal-enterprise)
+ * DEFAULT_DYNAMIC_IMPORTS=compiler (or graal-enterprise)
  */
 public class TestCasts extends TestBase {
 
@@ -82,6 +82,7 @@ public class TestCasts extends TestBase {
         private boolean isCompiled = false;
         @Child protected T node;
 
+        @SuppressWarnings("deprecation")
         protected TestRootNode(String name, T node) {
             super(RContext.getRForeignAccessFactory().getTruffleLanguage(), RSyntaxNode.INTERNAL, descriptor);
             this.name = name;
diff --git a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/test/TestUtilities.java b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/test/TestUtilities.java
index 80bf53c93e4ed277799a2abe8485b1a1ca59694e..2785376e2c31392b4476da78c28f9776a7d2503d 100644
--- a/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/test/TestUtilities.java
+++ b/com.oracle.truffle.r.nodes.test/src/com/oracle/truffle/r/nodes/test/TestUtilities.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2017, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -192,6 +192,7 @@ public class TestUtilities {
         private final NodeAdapter<T> invoke;
         @Child private T node;
 
+        @SuppressWarnings("deprecation")
         TestRoot(T node, NodeAdapter<T> invoke) {
             super(TruffleLanguage.class, null, null);
             this.node = node;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RRootNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RRootNode.java
index d04204e0e385de54e1fe66c533b39e74cc27921d..f1ed9c18960d1dd7b7fdb932a1c27974c649d1b4 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RRootNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/RRootNode.java
@@ -47,6 +47,7 @@ public abstract class RRootNode extends RootNode implements HasSignature {
 
     private FastPathFactory fastPath;
 
+    @SuppressWarnings("deprecation")
     protected RRootNode(FrameDescriptor frameDescriptor, FastPathFactory fastPath) {
         super(RContext.getRForeignAccessFactory().getTruffleLanguage(), RSyntaxNode.SOURCE_UNAVAILABLE, frameDescriptor);
         this.fastPath = fastPath;
diff --git a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/FFIUpCallRootNode.java b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/FFIUpCallRootNode.java
index 475f51bdfdaa707914aa7a0d51b3965ebc94e9b3..f1420a80ceb006a19d14f758496a16e642c608f3 100644
--- a/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/FFIUpCallRootNode.java
+++ b/com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/ffi/FFIUpCallRootNode.java
@@ -47,6 +47,7 @@ public final class FFIUpCallRootNode extends RootNode {
     @Child private FFIUpCallNode theFFIUpCallNode;
     private final int numArgs;
 
+    @SuppressWarnings("deprecation")
     private FFIUpCallRootNode(FFIUpCallNode child) {
         super(RContext.getRRuntimeASTAccess().getTruffleRLanguage(), null, new FrameDescriptor());
         theFFIUpCallNode = child;
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RContext.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RContext.java
index b4a193b8fa0aa2726c82474ad2f867bbcd0ee0f3..7866245493af007477904b790f397416fc395446 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RContext.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RContext.java
@@ -35,7 +35,6 @@ import java.util.concurrent.Semaphore;
 import com.oracle.truffle.api.Assumption;
 import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
 import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
-import com.oracle.truffle.api.ExecutionContext;
 import com.oracle.truffle.api.Truffle;
 import com.oracle.truffle.api.TruffleLanguage;
 import com.oracle.truffle.api.TruffleLanguage.Env;
@@ -97,7 +96,8 @@ import com.oracle.truffle.r.runtime.rng.RRNG;
  *
  * Contexts can be destroyed
  */
-public final class RContext extends ExecutionContext {
+@SuppressWarnings("deprecation")
+public final class RContext extends com.oracle.truffle.api.ExecutionContext {
 
     public static final int CONSOLE_WIDTH = 80;
 
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypes.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypes.java
index 2ed40322333bf1bf693e42951d76dc1deb9af7ae..c7c9a3819d8f46b22196331fdc85c3c590d8f6d0 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypes.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RTypes.java
@@ -26,8 +26,6 @@ import com.oracle.truffle.api.dsl.ImplicitCast;
 import com.oracle.truffle.api.dsl.TypeCast;
 import com.oracle.truffle.api.dsl.TypeCheck;
 import com.oracle.truffle.api.dsl.TypeSystem;
-import com.oracle.truffle.api.dsl.internal.DSLOptions;
-import com.oracle.truffle.api.dsl.internal.DSLOptions.DSLGenerator;
 import com.oracle.truffle.r.runtime.data.model.RAbstractAtomicVector;
 import com.oracle.truffle.r.runtime.data.model.RAbstractComplexVector;
 import com.oracle.truffle.r.runtime.data.model.RAbstractContainer;
@@ -68,7 +66,6 @@ import com.oracle.truffle.r.runtime.nodes.RNode;
                 RAbstractContainer.class,
                 RArgsValuesAndNames.class
 })
-@DSLOptions(defaultGenerator = DSLGenerator.FLAT)
 public class RTypes {
 
     @TypeCheck(RNull.class)
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/DLL.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/DLL.java
index a536479f999311e12c2f0b266dfc75ede5d79a57..2bb5d9a64ae5afc53428ec640de1594bb98a051a 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/DLL.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/DLL.java
@@ -581,6 +581,7 @@ public class DLL {
 
         @Child RFindSymbolNode findSymbolNode = RFindSymbolNode.create();
 
+        @SuppressWarnings("deprecation")
         private RFindSymbolRootNode() {
             super(RContext.getRRuntimeASTAccess().getTruffleRLanguage(), null, new FrameDescriptor());
         }
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIRootNode.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIRootNode.java
index 71d8f98278e42b662db1ed71c61af3c27d70ff00..d6b8451a812102fa1304ee76503492aad10c0fc0 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIRootNode.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ffi/RFFIRootNode.java
@@ -31,6 +31,7 @@ import com.oracle.truffle.r.runtime.context.RContext;
 public abstract class RFFIRootNode<T extends Node> extends RootNode {
     @Child T rffiNode;
 
+    @SuppressWarnings("deprecation")
     protected RFFIRootNode(T baseRFFINode) {
         super(RContext.getRRuntimeASTAccess().getTruffleRLanguage(), null, new FrameDescriptor());
         this.rffiNode = baseRFFINode;
diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/rng/user/UserRNG.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/rng/user/UserRNG.java
index 93c1f237119fd4495b9a25e4d2310629f79cd5e3..27203104d213c47c8406464d4daef8f9a6c816e3 100644
--- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/rng/user/UserRNG.java
+++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/rng/user/UserRNG.java
@@ -78,6 +78,7 @@ public final class UserRNG implements RandomNumberGenerator {
     private abstract static class UserRNGRootNodeAdapter extends RootNode {
         @Child protected UserRngRFFI.UserRngRFFINode userRngRFFINode = RFFIFactory.getRFFI().getUserRngRFFI().createUserRngRFFINode();
 
+        @SuppressWarnings("deprecation")
         protected UserRNGRootNodeAdapter() {
             super(RContext.getRRuntimeASTAccess().getTruffleRLanguage(), null, new FrameDescriptor());
         }
diff --git a/documentation/dev/truffle_llvm_ffi.md b/documentation/dev/truffle_llvm_ffi.md
index 8eb7fd13ca344734107b2a70c0e9a4a9ce37aae1..511d667d43f38135dc850ca0aa6ed0ae5e01da8a 100644
--- a/documentation/dev/truffle_llvm_ffi.md
+++ b/documentation/dev/truffle_llvm_ffi.md
@@ -15,7 +15,7 @@ The `sulong` repository must be cloned to a sibling directory of `fastr` and bui
     mx build
     mx su-pulldragonegg
 
-The `mx build` step will clone the `graal-core` repository, if necessary, and build that also. The `mx su-pulldragonegg` step is required to be able to compile Fortran code to LLVM, which is required by FastR.
+The `mx build` step will clone the `compiler` repository, if necessary, and build that also. The `mx su-pulldragonegg` step is required to be able to compile Fortran code to LLVM, which is required by FastR.
 
 ## Additional Pre-Requisites
 
diff --git a/mx.fastr/mx_fastr.py b/mx.fastr/mx_fastr.py
index 0bc160dec4b1d3e783e5b0a22f000b67d82f5650..eb799067a57de755e503d37ed48971258df2f4f8 100644
--- a/mx.fastr/mx_fastr.py
+++ b/mx.fastr/mx_fastr.py
@@ -39,7 +39,7 @@ import os
 '''
 This is the launchpad for all the functions available for building/running/testing/analyzing
 FastR. FastR can run with or without the Graal compiler enabled. As a convenience if the
-graal-core suite is detected then the use of the Graal compiler is enabled without any
+compiler suite is detected then the use of the Graal compiler is enabled without any
 additional command line options being required to the mx command, i.e. it is as if --jdk jvmci
 was passed as an mx global option.
 '''
@@ -48,7 +48,7 @@ _fastr_suite = mx.suite('fastr')
 '''
 If this is None, then we run under the standard VM in interpreted mode only.
 '''
-_mx_graal = mx.suite("graal-core", fatalIfMissing=False)
+_mx_graal = mx.suite("compiler", fatalIfMissing=False)
 _mx_sulong = mx.suite("sulong", fatalIfMissing=False)
 
 _r_command_package = 'com.oracle.truffle.r.engine'
diff --git a/mx.fastr/suite.py b/mx.fastr/suite.py
index 39727463a8c14c9979337eca28fcb997a7db6ca8..1e31f049bab76714db753bd7a9cc3bea2de7432f 100644
--- a/mx.fastr/suite.py
+++ b/mx.fastr/suite.py
@@ -28,9 +28,10 @@ suite = {
     "suites" : [
             {
                "name" : "truffle",
-               "version" : "e4c752d5477f3177b30ba80af7cd3c3e61329d2e",
+               "subdir" : True,
+               "version" : "01a039cbfc6238fd78d9159292495f93d6428f2a",
                "urls" : [
-                    {"url" : "https://github.com/graalvm/truffle", "kind" : "git"},
+                    {"url" : "https://github.com/graalvm/graal", "kind" : "git"},
                     {"url" : "https://curio.ssw.jku.at/nexus/content/repositories/snapshots", "kind" : "binary"},
                 ]
             },