diff --git a/DEPS b/DEPS
index 60c3656..f9f7f1b 100644
--- a/DEPS
+++ b/DEPS
@@ -58,7 +58,7 @@
   # Checkout extra javascript engines for testing or benchmarking.
   # d8, the V8 shell, is always checked out.
   "checkout_javascript_engines": False,
-  "d8_tag": "version:10.2.78",
+  "d8_tag": "version:10.4.31",
   "jsshell_tag": "version:95.0",
 
   # As Flutter does, we use Fuchsia's GN and Clang toolchain. These revision
@@ -124,7 +124,7 @@
   "linter_rev": "a8529c6692922b45bc287543b355c90d7b1286d3", # 1.24.0
   "lints_rev": "8294e5648ab49474541527e2911e72e4c5aefe55",
   "logging_rev": "dfbe88b890c3b4f7bc06da5a7b3b43e9e263b688",
-  "markdown_rev": "7479783f0493f6717e1d7ae31cb37d39a91026b2",
+  "markdown_rev": "5699cafa9ef004875fd7de8ae9ea00e5295e87a4", # 5.0.0
   "markupsafe_rev": "8f45f5cfa0009d2a70589bcda0349b8cb2b72783",
   "matcher_rev": "07595a7739d47a8315caba5a8e58fb9ae3d81261",
   "mime_rev": "c2c5ffd594674f32dc277521369da1557a1622d3",
@@ -135,7 +135,6 @@
   "platform_rev": "1ffad63428bbd1b3ecaa15926bacfb724023648c",
   "ply_rev": "604b32590ffad5cbb82e4afef1d305512d06ae93",
   "pool_rev": "c40cc32eabecb9d60f1045d1403108d968805f9a",
-  "process_rev": "2546dfef7ba839b1514e0c9045344692eb47b771",
   "protobuf_rev": "b149f801cf7a5e959cf1dbf72d61068ac275f24b",
   "pub_rev": "51435efcd574b7bc18d47a5dd620cb9759dea8f8",
   "pub_semver_rev": "ea6c54019948dc03042c595ce9413e17aaf7aa38",
@@ -380,8 +379,6 @@
       Var("dart_git") + "pool.git" + "@" + Var("pool_rev"),
   Var("dart_root") + "/third_party/pkg/protobuf":
        Var("dart_git") + "protobuf.git" + "@" + Var("protobuf_rev"),
-  Var("dart_root") + "/third_party/pkg/process":
-       Var("dart_git") + "process.dart.git" + "@" + Var("process_rev"),
   Var("dart_root") + "/third_party/pkg/pub_semver":
       Var("dart_git") + "pub_semver.git" + "@" + Var("pub_semver_rev"),
   Var("dart_root") + "/third_party/pkg/pub":
diff --git a/pkg/dev_compiler/test/sourcemap/stacktrace_testfiles/throw_in_static_method.dart b/pkg/dev_compiler/test/sourcemap/stacktrace_testfiles/throw_in_static_method.dart
index cdd06f4..eaf057b 100644
--- a/pkg/dev_compiler/test/sourcemap/stacktrace_testfiles/throw_in_static_method.dart
+++ b/pkg/dev_compiler/test/sourcemap/stacktrace_testfiles/throw_in_static_method.dart
@@ -10,6 +10,6 @@
 
 class Class {
   static void test() {
-    /*2:Function.test*/ throw '>ExceptionMarker<';
+    /*2:Class.test*/ throw '>ExceptionMarker<';
   }
 }
diff --git a/pkg/vm_service/pubspec.yaml b/pkg/vm_service/pubspec.yaml
index 59c815c..9eda722 100644
--- a/pkg/vm_service/pubspec.yaml
+++ b/pkg/vm_service/pubspec.yaml
@@ -12,14 +12,12 @@
 dependencies:
 
 dev_dependencies:
-  async: ^2.5.0
+  async: any
   expect: any
   lints: any
-  markdown: ^4.0.0
+  markdown: any
   mockito: any
-  path: ^1.8.0
-  process: ^4.0.0
-  pub_semver: ^2.0.0
-  test: ^1.16.0
-  test_package:
-    path: 'test/test_package'
+  path: any
+  pub_semver: any
+  test: any
+  test_package: any
diff --git a/pkg/vm_service/test/common/test_helper.dart b/pkg/vm_service/test/common/test_helper.dart
index 7561ce0..9f46c4d 100644
--- a/pkg/vm_service/test/common/test_helper.dart
+++ b/pkg/vm_service/test/common/test_helper.dart
@@ -8,7 +8,6 @@
 import 'dart:convert';
 import 'dart:io' as io;
 
-import 'package:process/process.dart';
 import 'package:test/test.dart';
 import 'package:vm_service/vm_service.dart';
 import 'package:vm_service/vm_service_io.dart';
@@ -170,11 +169,9 @@
       arguments.insert(0, '-D$k=$v');
     });
     print('** Launching $bashEnvironment$executable ${arguments.join(' ')}');
-    return LocalProcessManager().start(
-      [
-        executable,
-        ...arguments,
-      ],
+    return io.Process.start(
+      executable,
+      arguments,
       environment: environment,
     );
   }
diff --git a/pkg/vm_service/test/process_service_test.dart b/pkg/vm_service/test/process_service_test.dart
index 7fa9aba..14a4444 100644
--- a/pkg/vm_service/test/process_service_test.dart
+++ b/pkg/vm_service/test/process_service_test.dart
@@ -7,7 +7,6 @@
 import 'dart:developer';
 import 'dart:io' as io;
 
-import 'package:process/process.dart';
 import 'package:test/test.dart';
 import 'package:vm_service/vm_service.dart';
 
@@ -45,15 +44,12 @@
   }
 
   Future<ServiceExtensionResponse> setup(ignored_a, ignored_b) async {
-    final processManager = LocalProcessManager();
     try {
-      process1 = await processManager.start(
-        [io.Platform.resolvedExecutable, ...args],
-      );
-      process2 = await processManager.start([
+      process1 = await io.Process.start(io.Platform.resolvedExecutable, args);
+      process2 = await io.Process.start(
         io.Platform.resolvedExecutable,
-        ...(args..add('foobar')),
-      ]);
+        args..add('foobar'),
+      );
       final codeFilePath = dir.path + io.Platform.pathSeparator + "other_file";
       final codeFile = io.File(codeFilePath);
       await codeFile.writeAsString('''
@@ -63,11 +59,11 @@
             await stdin.drain();
           }
           ''');
-      process3 = await processManager.start(
+      process3 = await io.Process.start(
+        io.Platform.resolvedExecutable,
         [
-          io.Platform.resolvedExecutable,
           ...io.Platform.executableArguments,
-          codeFilePath
+          codeFilePath,
         ],
       );
     } catch (_) {
diff --git a/tools/VERSION b/tools/VERSION
index 2c21a7b..ef07cf2 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 138
+PRERELEASE 139
 PRERELEASE_PATCH 0
\ No newline at end of file
