diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000000000000000000000000000000000000..73427dc38cd0e2ef1cf31b59a92bfd3eb1c83f5a
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,18 @@
+# Changelog
+
+All notable changes to this project will be documented in this file.
+
+The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
+and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+
+## [2.0.0] - 2023-10-21
+
+- Require PHP 8.x and PHPUnit 10.x #47
+
+## [1.1.0] - 2023-10-21
+
+- Final release that supports PHP 7.x.
+
+## [1.0.0] - 2023-10-10
+
+- Add tests for streams #39
diff --git a/composer.json b/composer.json
index 4d77920b748c593793f31c453f457f8424840140..2e628e70183f38696f98ed197c4da6f367b3c782 100644
--- a/composer.json
+++ b/composer.json
@@ -12,13 +12,13 @@
     "authors": [
         {
             "name": "PHP-FIG",
-            "homepage": "http://www.php-fig.org/"
+            "homepage": "https://www.php-fig.org/"
         }
     ],
     "require": {
-        "php": "^7.1 || ^8.0",
+        "php": "^8.0",
         "psr/http-factory": "^1.0",
-        "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0"
+        "phpunit/phpunit": "^10.0"
     },
     "autoload": {
         "psr-4": {
diff --git a/test/RequestFactoryTestCase.php b/test/RequestFactoryTestCase.php
index 9a9f4a9a83b5215c64c368f816fe7d09adda0340..7e3690592339444f14e6391e5f7c11e4a9513c8d 100644
--- a/test/RequestFactoryTestCase.php
+++ b/test/RequestFactoryTestCase.php
@@ -38,7 +38,7 @@ abstract class RequestFactoryTestCase extends TestCase
         $this->assertSame($uri, (string) $request->getUri());
     }
 
-    public function dataMethods()
+    public static function dataMethods()
     {
         return [
             ['GET'],
diff --git a/test/ResponseFactoryTestCase.php b/test/ResponseFactoryTestCase.php
index d7e2c11c99c953a289b63fd6c5c1f669cb447d61..e61875288677350bda1ee10bb1d18ef6af96b1d6 100644
--- a/test/ResponseFactoryTestCase.php
+++ b/test/ResponseFactoryTestCase.php
@@ -29,7 +29,7 @@ abstract class ResponseFactoryTestCase extends TestCase
         $this->assertSame($code, $response->getStatusCode());
     }
 
-    public function dataCodes()
+    public static function dataCodes()
     {
         return [
             [200],
diff --git a/test/ServerRequestFactoryTestCase.php b/test/ServerRequestFactoryTestCase.php
index 30846970a2257a1ff1dae1aa0997740354de0a0f..b19bc66427e72f2d4210ff663829270bbcb9cb52 100644
--- a/test/ServerRequestFactoryTestCase.php
+++ b/test/ServerRequestFactoryTestCase.php
@@ -38,7 +38,7 @@ abstract class ServerRequestFactoryTestCase extends TestCase
         $this->assertSame($uri, (string) $request->getUri());
     }
 
-    public function dataMethods()
+    public static function dataMethods()
     {
         return [
             ['GET'],
@@ -50,11 +50,11 @@ abstract class ServerRequestFactoryTestCase extends TestCase
         ];
     }
 
-    public function dataServer()
+    public static function dataServer()
     {
         $data = [];
 
-        foreach ($this->dataMethods() as $methodData) {
+        foreach (static::dataMethods() as $methodData) {
             $data[] = [
                 [
                     'REQUEST_METHOD' => $methodData[0],