diff --git a/CHANGELOG.md b/CHANGELOG.md
index bd92971..3ea84c9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,7 @@
-## 0.3.5-dev
+## 0.3.5
 
 * Require Dart >=2.1
+* Remove dependency on `package:charcode`.
 
 ## 0.3.4
 
@@ -41,7 +42,7 @@
 main() async {
   // Prints the first line entered on stdin.
   print(await sharedStdIn.nextLine());
-  
+
   // Prints all remaining lines.
   await for (final line in sharedStdIn.lines) {
     print(line);
@@ -79,7 +80,7 @@
 
 - Added the `shellSplit()` function, which parses a list of arguments in the
   same manner as [the POSIX shell][what_is_posix_shell].
-  
+
 [what_is_posix_shell]: http://pubs.opengroup.org/onlinepubs/9699919799/utilities/contents.html
 
 ## 0.2.0
diff --git a/lib/src/charcodes.dart b/lib/src/charcodes.dart
new file mode 100644
index 0000000..d6557e8
--- /dev/null
+++ b/lib/src/charcodes.dart
@@ -0,0 +1,34 @@
+// Copyright 2021, the Dart project authors.  Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// Generated using:
+//  pub global run charcode \$=dollar \'=single_quote \"=double_quote \
+//      \' '\\\n"$`# \t'
+
+/// "Horizontal Tab" control character, common name.
+const int $tab = 0x09;
+
+/// "Line feed" control character.
+const int $lf = 0x0a;
+
+/// Space character.
+const int $space = 0x20;
+
+/// Character `"`, short name.
+const int $doubleQuote = 0x22;
+
+/// Character `#`.
+const int $hash = 0x23;
+
+/// Character `$`.
+const int $dollar = 0x24;
+
+/// Character "'".
+const int $singleQuote = 0x27;
+
+/// Character `\`.
+const int $backslash = 0x5c;
+
+/// Character `` ` ``.
+const int $backquote = 0x60;
diff --git a/lib/src/shell_words.dart b/lib/src/shell_words.dart
index 8e057d7..d293e39 100644
--- a/lib/src/shell_words.dart
+++ b/lib/src/shell_words.dart
@@ -4,9 +4,10 @@
 
 // ignore_for_file: comment_references
 
-import 'package:charcode/charcode.dart';
 import 'package:string_scanner/string_scanner.dart';
 
+import 'charcodes.dart';
+
 /// Splits [command] into tokens according to [the POSIX shell
 /// specification][spec].
 ///
@@ -48,19 +49,19 @@
         token.writeCharCode(scanner.readChar());
         break;
 
-      case $single_quote:
+      case $singleQuote:
         hasToken = true;
         // Section 2.2.2: Enclosing characters in single-quotes ( '' ) shall
         // preserve the literal value of each character within the
         // single-quotes. A single-quote cannot occur within single-quotes.
         final firstQuote = scanner.position - 1;
-        while (!scanner.scanChar($single_quote)) {
+        while (!scanner.scanChar($singleQuote)) {
           _checkUnmatchedQuote(scanner, firstQuote);
           token.writeCharCode(scanner.readChar());
         }
         break;
 
-      case $double_quote:
+      case $doubleQuote:
         hasToken = true;
         // Section 2.2.3: Enclosing characters in double-quotes ( "" ) shall
         // preserve the literal value of all characters within the
@@ -71,7 +72,7 @@
         // or dollar sign within double quotes, since those are dynamic
         // features.)
         final firstQuote = scanner.position - 1;
-        while (!scanner.scanChar($double_quote)) {
+        while (!scanner.scanChar($doubleQuote)) {
           _checkUnmatchedQuote(scanner, firstQuote);
 
           if (scanner.scanChar($backslash)) {
@@ -86,7 +87,7 @@
             if (next == $lf) continue;
             if (next == $dollar ||
                 next == $backquote ||
-                next == $double_quote ||
+                next == $doubleQuote ||
                 next == $backslash) {
               token.writeCharCode(next);
             } else {
diff --git a/pubspec.yaml b/pubspec.yaml
index 7bb19ba..242344c 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -2,14 +2,13 @@
 description: >-
   Utilities for the Dart VM Runtime including support for ANSI colors,
   file copying, and standard exit code values.
-version: 0.3.5-dev
+version: 0.3.5
 homepage: https://github.com/dart-lang/io
 
 environment:
   sdk: ">=2.1.0 <3.0.0"
 
 dependencies:
-  charcode: ^1.0.0
   meta: ^1.0.2
   path: ^1.5.1
   string_scanner: ">=0.1.5 <2.0.0"
