PageSourceSearch

https://amphp.org/

html amphp.org collected 2026-09-24 18:13:03 UTC 87,136 bytes, 2,192 lines download raw bytes

1<!doctype html>
2<html lang="en" dir="ltr">
3<head>
4    <meta charset="utf-8">
5
6    
7
8
9    <title>Asynchronous Multitasking PHP | AMPHP</title>
10
11    <meta name="description" content="Amp is a non-blocking concurrency library for PHP based on Revolt.">
12    <meta name="keywords" content="amp, amphp, non-blocking, concurrency, io, php, future, coroutines, revolt">
13
14    <link rel="preconnect" href="https://fonts.googleapis.com">
15    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
16    <link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;600;700;800&family=Source+Code+Pro&display=swap" rel="stylesheet">
17
18    <link rel="stylesheet" href="/asset/css/screen.css?v=d13ce5f981516c15bf68181bc838d6f8df882ea9"/>
19
20    <!-- non-critical CSS is lazy-loaded -->
21    <link rel="preload" href="https://cdn.jsdelivr.net/npm/@docsearch/css@3" as="style" type="text/css">
22    <noscript><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@docsearch/css@3" type="text/css"></noscript>
23    <link rel="preload" href="/asset/css/font-awesome.min.css?v=d13ce5f981516c15bf68181bc838d6f8df882ea9" as="style" type="text/css">
24    <noscript><link rel="stylesheet" href="/asset/css/font-awesome.min.css?v=d13ce5f981516c15bf68181bc838d6f8df882ea9" type="text/css"></noscript>
25    <link rel="preload" href="/asset/css/code.css?v=d13ce5f981516c15bf68181bc838d6f8df882ea9" as="style" type="text/css">
26    <noscript><link rel="stylesheet" href="/asset/css/code.css?v=d13ce5f981516c15bf68181bc838d6f8df882ea9" type="text/css"></noscript>
27
28    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1">
29    <meta name="google-site-verification" content="lX-Oenz4-gpqzuAF71A-3MQBlDfgr9pIQIfrVniz1As">
30
31    <meta name="twitter:card" content="summary">
32    <meta name="twitter:site" content="@asyncphp">
33    <meta name="twitter:creator" content="@asyncphp">
34    <meta property="og:type" content="website">
35    <meta property="og:url" content="/">
36    <meta property="og:title" content="Asynchronous Multitasking PHP">
37    <meta property="og:image" content="https://amphp.org/asset/img/og-image.png">
38    <meta property="og:description" content="Amp is a non-blocking concurrency library for PHP based on Revolt.">
39    <meta property="og:locale" content="en_US">
40
41    <link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
42
43    <meta name="apple-mobile-web-app-title" content="AMPHP">
44    <meta name="application-name" content="AMPHP">
45    <meta name="theme-color" content="#1376dd">
46
47    
47<script>
48        function loadScript(src, onload) {
49            var script = document.createElement("script");
50            script.type = "application/javascript";
51            script.async = true;
52            script.onload = function () {
53                script.onload = null;
54                if (onload) {
55                    onload();
56                }
57            };
58
59            (document.getElementsByTagName("head")[0]).appendChild(script);
60            script.src = src;
61        }
62
63        function loadCss(src) {
64            var resource = document.createElement('link');
65            resource.setAttribute('rel', 'stylesheet');
66            resource.setAttribute('href', src);
67            resource.setAttribute('type', 'text/css');
68
69            (document.getElementsByTagName("head")[0]).appendChild(resource);
70        }
71    </script>
71
72
73    
73<script>
74        loadCss('https://cdn.jsdelivr.net/npm/@docsearch/css@3');
75        loadCss('/asset/css/font-awesome.min.css?v=d13ce5f981516c15bf68181bc838d6f8df882ea9');
76        loadCss('/asset/css/code.css?v=d13ce5f981516c15bf68181bc838d6f8df882ea9');
77
78        loadScript('/asset/js/anchor.min.js?v=d13ce5f981516c15bf68181bc838d6f8df882ea9', function () {
79            var anchors = new AnchorJS();
80            anchors.options.icon = "#";
81            anchors.options.placement = "left";
82            anchors.add("h2,h3,h4,h5,h6");
83        });
84
85        loadScript('https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.7/highlight.min.js', function () {
86            hljs.configure({tabReplace: '    ', languages: ['php', 'js']});
87            hljs.initHighlightingOnLoad();
88        });
89
90        loadScript('https://cdn.jsdelivr.net/npm/@docsearch/js@3', function () {
91            docsearch({
92                appId: 'A5ZG0Y68AG',
93                apiKey: '6b0e299ad51fa720d825ab4bca1bd7c7',
94                indexName: 'amphp_v3',
95                container: '#docsearch',
96                debug: false
97            });
98        });
99    </script>
99
100</head>
101<body>
102    
103
104
105<input type="checkbox" id="menu" name="menu">
106<header id="top">
107    <div class="mobile-only" id="menu-switch">
108        <label for="menu"><i class="fa fa-lg fa-bars"></i></label>
109    </div>
110
111    <div id="logo-container">
112        <a class="logo" href="/">
113            <span class="logo-img-container">
114                <img srcset="/asset/img/logo_text_60.png 1x, /asset/img/logo_text_120.png 2x" class="logo-img" width="200" height="60" alt="Amp Logo">
115            </span>
116        </a>
117    </div>
118
119    <div class="search">
120        <div id="docsearch"></div>
121    </div>
122</header>
123<aside class="navigation">
124  <div class="navigation-scroll">
125    <div id="top-menu">
126        <ul>
127            <li>
128                <span class="menu-section open">
129                    Getting Started
130                </span>
131
132                <ul class="open">
133                    <li>
134                        <a class="menu-item" href="/installation">
135                            Installation
136                        </a>
137                    </li>
138
139                    <li>
140                        <a class="menu-item" href="/architecture">
141                            Architecture
142                        </a>
143                    </li>
144
145                    <li>
146                        <a class="menu-item" href="/upgrade">
147                            Upgrade Guide
148                        </a>
149                    </li>
150                </ul>
151            </li>
152
153            <li>
154                <span class="menu-section open">
155                    Packages
156                </span>
157
158                <ul class="open">
159                    <li>
160                        <a class="menu-item d-flex justify-content-between" href="/amp">
161                            <code>amphp/amp</code>
162                            <code class="menu-item-version">3.x</code>
163                        </a>
164                    </li>
165
166                    <li>
167                        <a class="menu-item d-flex justify-content-between" href="/byte-stream">
168                            <code>amphp/byte-stream</code>
169                            <code class="menu-item-version">2.x</code>
170                        </a>
171                    </li>
172
173                    <li>
174                        <span class="menu-item d-flex justify-content-between" title="Undocumented" href="/beanstalk">
175                            <code>amphp/beanstalk</code>
176                        </span>
177                    </li>
178
179                    <li>
180                        <a class="menu-item d-flex justify-content-between" href="/cache">
181                            <code>amphp/cache</code>
182                            <code class="menu-item-version">2.x</code>
183                        </a>
184                    </li>
185
186                    <li>
187                        <a class="menu-item d-flex justify-content-between" href="/cluster">
188                            <code>amphp/cluster</code>
189                            <code class="menu-item-version">2.x</code>
190                        </a>
191                    </li>
192
193                    <li>
194                        <a class="menu-item d-flex justify-content-between" href="/dns">
195                            <code>amphp/dns</code>
196                            <code class="menu-item-version">2.x</code>
197                        </a>
198                    </li>
199
200                    <li>
201                        <a class="menu-item d-flex justify-content-between" href="/file">
202                            <code>amphp/file</code>
203                            <code class="menu-item-version">3.x</code>
204                        </a>
205                    </li>
206
207                    <li>
208                        <a class="menu-item d-flex justify-content-between" href="/http">
209                            <code>amphp/http</code>
210                            <code class="menu-item-version">2.x</code>
211                        </a>
212                    </li>
213
214                    <li>
215                        <a class="menu-item d-flex justify-content-between" href="/http-client">
216                            <code>
216amphp/http-client</code>
217                            <code class="menu-item-version">5.x</code>
218                        </a>
219                    </li>
220
221                    <li>
222                        <a class="menu-item d-flex justify-content-between" href="/http-server">
223                            <code>amphp/http-server</code>
224                            <code class="menu-item-version">3.x</code>
225                        </a>
226                    </li>
227
228                    <li>
229                        <a class="menu-item d-flex justify-content-between" href="/http-server-form-parser">
230                            <code>amphp/http-server-form-parser</code>
231                            <code class="menu-item-version">2.x</code>
232                        </a>
233                    </li>
234
235                    <li>
236                        <a class="menu-item d-flex justify-content-between" href="/http-server-router">
237                            <code>amphp/http-server-router</code>
238                            <code class="menu-item-version">2.x</code>
239                        </a>
240                    </li>
241
242                    <li>
243                        <a class="menu-item d-flex justify-content-between" href="/http-server-session">
244                            <code>amphp/http-server-session</code>
245                            <code class="menu-item-version">2.x</code>
246                        </a>
247                    </li>
248
249                    <li>
250                        <a class="menu-item d-flex justify-content-between" href="/http-server-static-content">
251                            <code>amphp/http-server-static-content</code>
252                            <code class="menu-item-version">2.x</code>
253                        </a>
254                    </li>
255
256                    <li>
257                        <a class="menu-item d-flex justify-content-between" href="/log">
258                            <code>amphp/log</code>
259                            <code class="menu-item-version">2.x</code>
260                        </a>
261                    </li>
262
263                    <li>
264                        <a class="menu-item d-flex justify-content-between" href="/mysql">
265                            <code>amphp/mysql</code>
266                            <code class="menu-item-version">3.x</code>
267                        </a>
268                    </li>
269
270                    <li>
271                        <a class="menu-item d-flex justify-content-between" href="/parallel">
272                            <code>amphp/parallel</code>
273                            <code class="menu-item-version">2.x</code>
274                        </a>
275                    </li>
276
277                    <li>
278                        <a class="menu-item d-flex justify-content-between" href="/parser">
279                            <code>amphp/parser</code>
280                            <code class="menu-item-version">1.x</code>
281                        </a>
282                    </li>
283
284                    <li>
285                        <a class="menu-item d-flex justify-content-between" href="/phpunit-util">
286                            <code>amphp/phpunit-util</code>
287                            <code class="menu-item-version">3.x</code>
288                        </a>
289                    </li>
290
291                    <li>
292                        <a class="menu-item d-flex justify-content-between" href="/pipeline">
293                            <code>amphp/pipeline</code>
294                            <code class="menu-item-version">1.x</code>
295                        </a>
296                    </li>
297
298                    <li>
299                        <a class="menu-item d-flex justify-content-between" href="/postgres">
300                            <code>amphp/postgres</code>
301                            <code class="menu-item-version">2.x</code>
302                        </a>
303                    </li>
304
305                    <li>
306                        <a class="menu-item d-flex justify-content-between" href="/process">
307                            <code>amphp/process</code>
308                            <code class="menu-item-version">2.x</code>
309                        </a>
310                    </li>
311
312                    <li>
313                        <a class="menu-item d-flex justify-content-between" href="/react-adapter">
314                            <code>amphp/react-adapter</code>
315                            <code class="menu-item-version">2.x</code>
316                        </a>
317                    </li>
318
319                    <li>
320                        <a class="menu-item d-flex justify-content-between" href="/redis">
321                            <code>amphp/redis</code>
322                            <code class="menu-item-version">2.x</code>
323                        </a>
324                    </li>
325
326                    <li>
327                        <span class="menu-item d-flex justify-content-between" title="Undocumented" href="/rpc">
328                            <code>amphp/rpc</code>
329                        </span>
330                    </li>
331
332                    <li>
333                        <a class="menu-item d-flex justify-content-between" href="/serialization">
334                            <code>amphp/serialization</code>
335                            <code class="menu-item-version">1.x</code>
336                        </a>
337                    </li>
338
339                    <li>
340                        <a class="menu-item d-flex justify-content-between" href="/socket">
341                            <code>amphp/socket</code>
342                            <code class="menu-item-version">2.x</code>
343                        </a>
344                    </li>
345
346                    <li>
347                        <a class="menu-item d-flex justify-content-between" href="/sync">
348                            <code>amphp/sync</code>
349                            <code class="menu-item-version">2.x</code>
350                        </a>
351                    </li>
352
353                    <li>
354                        <a class="menu-item d-flex justify-content-between" href="/websocket-client">
355                            <code>amphp/websocket-client</code>
356                            <code class="menu-item-version">2.x</code>
357                        </a>
358                    </li>
359
360                    <li>
361                        <a class="menu-item d-flex justify-content-between" href="/websocket-server">
362                            <code>amphp/websocket-server</code>
363                            <code class="menu-item-version">4.x</code>
364                        </a>
365                    </li>
366
367                    <li>
368                        <a class="menu-item d-flex justify-content-between" href="/windows-registry">
369                            <code>amphp/windows-registry</code>
370                            <code class="menu-item-version">1.x</code>
371                        </a>
372                    </li>
373                </ul>
374            </li>
375
376            <li>
377                <span class="menu-section">
378                    Testing & debugging
379                </span>
380
381                <ul>
382                    <li>
383                        <a class="menu-item" href="/testing">
384                            Writing tests
385                        </a>
386                    </li>
387
388                    <li>
389                        <a class="menu-item" href="/debugging">
390                            Debugging tools
391                        </a>
392                    </li>
393                </ul>
394            </li>
395
396            <li>
397                <span class="menu-section">
398                    Deployment
399                    <!-- Performance & optimization -->
400                </span>
401
402                <ul>
403                    <li>
404                        <a class="menu-item" href="/extensions">
405                            Scaling with extensions
406                        </a>
407                    </li>
408
409                    <li>
410                        <a class="menu-item" href="/production">
411                            Production performance
412                        </a>
413                    </li>
414                </ul>
415            </li>
416
417            <li>
418                <span class="menu-section">
419                    Community
420                </span>
421
422                <ul>
423                    <li>
424                        <a class="menu-item" href="/sponsors">
425                            Sponsoring
426                        </a>
427                    </li>
428
429                    <li>
430                        <a class="menu-item" href="/support">
431                            Support
432                        </a>
433                    </li>
434
435                    <li>
436                        <a class="menu-item" href="/faq">
437                            FAQ
438                        </a>
439                    </li>
440                </ul>
441            </li>
442        </ul>
443    </div>
444  </div>
445
446    
446<script>
447        document.querySelectorAll('.menu-section').forEach(element => {
448            element.addEventListener('click', () => {
449                element.classList.toggle('open');
450                element.nextElementSibling.classList.toggle('open');
451            });
452        });
453
454        document.querySelectorAll('.menu-item').forEach(element => {
455            if (element.href === window.location.href) {
456                element.classList.add('active');
457
458                element.parentElement.parentElement.classList.add('open');
459                element.parentElement.parentElement.previousElementSibling.classList.add('open');
460            }
461        });
462    </script>
462
463</aside>
464
465<div class="site-wrapper">
466    
467
468
469<div class="site-width">
470    <div class="content">
471        <div class="article-intro">
472            <h1 style="margin: 0 0 16px 0">Build fast, concurrent applications with PHP</h1>
473
474            <p>
475                Benefit from concurrency by replacing your blocking I/O with non-blocking I/O,<br>
476                or designing your system with non-blocking I/O from the ground up.
477            </p>
478        </div>
479
480        <div>
481            <p>
482                We shipped fibers in PHP 8.1 to extend its capabilities for concurrent applications.
483            </p>
484
485            <p>
486                The PHP standard library has already provided everything else we needed for years now, but it only ships the
487                low-level building blocks. AMPHP provides higher-level libraries using non-blocking I/O
488                under the hood.
489                Fibers allow these libraries to just work, no matter whether they're used in concurrent or traditional
490                contexts.
491            </p>
492        </div>
493
494        <div class="intro-start">
495            <a href="/installation" class="highlight-area-cta">Get Started <i class="fa fa-angle-right"></i></a>
496        </div>
497
498        <div class="clear-both"></div>
499
500        <h2>Latest Releases</h2>
501
502        <ul class="github-releases">
503            
504            <li class="github-release ">
505                
506                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
507                     src="/asset/img/logo_v3.png" width="53" height="32">
508                
509
510                <div class="github-release-meta">
511                <span class="github-release-date">
512                    <i class="fa fa-clock-o fa-fw"></i>
513
514                    Released on 2026-08-22
515                </span>
516
517                    <span class="github-release-tag">
518                    <i class="fa fa-tag fa-fw"></i>
519
520                    <a href="https://github.com/amphp/socket/releases/tag/v2.4.1">2.4.1 on GitHub</a>
521                </span>
522                </div>
523
524                <h3>
525                    amphp/socket 2.4.1
526
527                    
528                </h3>
529
530                <div class="github-release-body">
531                    <h2 id="whats-changed">What’s Changed</h2>
532<ul>
533  <li>Fixed validation of port in string provided to <code class="language-plaintext highlighter-rouge">InternetAddress::tryFromString</code></li>
534  <li><code class="language-plaintext highlighter-rouge">Socks5SocketConnector::tunnel()</code> now accepts target URLs which do not contain a scheme, fixing compatibility with providing an instance of <code class="language-plaintext highlighter-rouge">InternetAddress</code></li>
535  <li>Fixed validation of CIDR mask bits when constructing an instance of <code class="language-plaintext highlighter-rouge">CidrMatcher</code> to be between 0 and 32 (for IPv4) or 128 (for IPv6)</li>
536</ul>
537
538<p><strong>Full Changelog</strong>: https://github.com/amphp/socket/compare/v2.4.0…v2.4.1</p>
539
540                </div>
541            </li>
542            
543            <li class="github-release ">
544                
545                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
546                     src="/asset/img/logo_v3.png" width="53" height="32">
547                
548
549                <div class="github-release-meta">
550                <span class="github-release-date">
551                    <i class="fa fa-clock-o fa-fw"></i>
552
553                    Released on 2026-08-22
554                </span>
555
556                    <span class="github-release-tag">
557                    <i class="fa fa-tag fa-fw"></i>
558
559                    <a href="https://github.com/amphp/dns/releases/tag/v2.4.1">2.4.1 on GitHub</a>
560                </span>
561                </div>
562
563                <h3>
564                    amphp/dns 2.4.1
565
566                    
567                </h3>
568
569                <div class="github-release-body">
570                    <h2 id="whats-changed">What’s Changed</h2>
571<ul>
572  <li>Fixed cancellation of a query cancelling all outstanding queries for the same name</li>
573  <li>Fixed parsing hosts files with a comments starting after the first character in the line</li>
574</ul>
575
576<p><strong>Full Changelog</strong>: https://github.com/amphp/dns/compare/v2.4.0…v2.4.1</p>
577
578                </div>
579            </li>
580            
581            <li class="github-release ">
582                
583                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
584                     src="/asset/img/logo_v3.png" width="53" height="32">
585                
586
587                <div class="github-release-meta">
588                <span class="github-release-date">
589                    <i class="fa fa-clock-o fa-fw"></i>
590
591                    Released on 2026-07-26
592                </span>
593
594                    <span class="github-release-tag">
595                    <i class="fa fa-tag fa-fw"></i>
596
597                    <a href="https://github.com/amphp/pipeline/releases/tag/v1.2.7">1.2.7 on GitHub</a>
598                </span>
599                </div>
600
601                <h3>
602                    amphp/pipeline 1.2.7
603
604                    
605                </h3>
606
607                <div class="github-release-body">
608                    <h2 id="whats-changed">What’s Changed</h2>
609<ul>
610  <li>Fixed consuming a value from the concurrent iterator returned from <code class="language-plaintext highlighter-rouge">Pipeline::generate()</code> if consumption of the prior emitted value was cancelled in the same event-loop tick</li>
611  <li>Fixed relieving back-pressure from <code class="language-plaintext highlighter-rouge">Queue</code> when the consume disposes of the concurrent iterator</li>
612</ul>
613
614<p><strong>Full Changelog</strong>: https://github.com/amphp/pipeline/compare/v1.2.6…v1.2.7</p>
615
616                </div>
617            </li>
618            
619            <li class="github-release ">
620                
621                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
622                     src="/asset/img/logo_v3.png" width="53" height="32">
623                
624
625                <div class="github-release-meta">
626                <span class="github-release-date">
627                    <i class="fa fa-clock-o fa-fw"></i>
628
629                    Released on 2026-07-26
630                </span>
631
632                    <span class="github-release-tag">
633                    <i class="fa fa-tag fa-fw"></i>
634
635                    <a href="https://github.com/amphp/amp/releases/tag/v3.1.3">3.1.3 on GitHub</a>
636                </span>
637                </div>
638
639                <h3>
640                    amphp/amp 3.1.3
641
642                    
643                </h3>
644
645                <div class="github-release-body">
646                    <h2 id="whats-changed">What’s Changed</h2>
647<ul>
648  <li>Fixed garbage collection of the iterable returned from <code class="language-plaintext highlighter-rouge">Future::iterate()</code> when the source iterable is a <code class="language-plaintext highlighter-rouge">Traversable</code>. Previously, iteration would continue even if the returned iterable was destroyed.</li>
649</ul>
650
651<p><strong>Full Changelog</strong>: https://github.com/amphp/amp/compare/v3.1.2…v3.1.3</p>
652
653                </div>
654            </li>
655            
656            <li class="github-release ">
657                
658                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
659                     src="/asset/img/logo_v3.png" width="53" height="32">
660                
661
662                <div class="github-release-meta">
663                <span class="github-release-date">
664                    <i class="fa fa-clock-o fa-fw"></i>
665
666                    Released on 2026-06-27
667                </span>
668
669                    <span class="github-release-tag">
670                    <i class="fa fa-tag fa-fw"></i>
671
672                    <a href="https://github.com/amphp/http-server/releases/tag/v3.4.6">3.4.6 on GitHub</a>
673                </span>
674                </div>
675
676                <h3>
677                    amphp/http-server 3.4.6
678
679                    
680                </h3>
681
682                <div class="github-release-body">
683                    <ul>
684  <li><a href="https://github.com/amphp/http-server/commit/8a971bf92cf8cf2bc511f37a75b39126d5305315">Fix SocketException import in ClientFactory</a></li>
685</ul>
686
687                </div>
688            </li>
689            
690            <li class="github-release ">
691                
692                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
693                     src="/asset/img/logo_v3.png" width="53" height="32">
694                
695
696                <div class="github-release-meta">
697                <span class="github-release-date">
698                    <i class="fa fa-clock-o fa-fw"></i>
699
700                    Released on 2026-05-31
701                </span>
702
703                    <span class="github-release-tag">
704                    <i class="fa fa-tag fa-fw"></i>
705
706                    <a href="https://github.com/amphp/process/releases/tag/v2.1.0">2.1.0 on GitHub</a>
707                </span>
708                </div>
709
710                <h3>
711                    amphp/process 2.1.0
712
713                    
714                </h3>
715
716                <div class="github-release-body">
717                    <h2 id="whats-changed">What’s Changed</h2>
718<ul>
719  <li>Added <code class="language-plaintext highlighter-rouge">getSignalName()</code> function which returns the signal constant name, if defined, from a signal number. Requires <code class="language-plaintext highlighter-rouge">ext-pcntl</code>, otherwise <code class="language-plaintext highlighter-rouge">null</code> is always returned.</li>
720</ul>
721
722<p><strong>Full Changelog</strong>: https://github.com/amphp/process/compare/v2.0.3…v2.1.0</p>
723
724                </div>
725            </li>
726            
727            <li class="github-release ">
728                
729                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
730                     src="/asset/img/logo_v3.png" width="53" height="32">
731                
732
733                <div class="github-release-meta">
734                <span class="github-release-date">
735                    <i class="fa fa-clock-o fa-fw"></i>
736
737                    Released on 2026-05-16
738                </span>
739
740                    <span class="github-release-tag">
741                    <i class="fa fa-tag fa-fw"></i>
742
743                    <a href="https://github.com/amphp/mysql/releases/tag/v3.1.1">3.1.1 on GitHub</a>
744                </span>
745                </div>
746
747                <h3>
748                    amphp/mysql 3.1.1
749
750                    
751                </h3>
752
753                <div class="github-release-body">
754                    <h2 id="whats-changed">What’s Changed</h2>
755<ul>
756  <li>Add MariaDB CI job and integration test for native UUID column by @webpatser in https://github.com/amphp/mysql/pull/144</li>
757  <li>Silence PHP 8.5 chr() deprecation in encodeInt8 by @webpatser in https://github.com/amphp/mysql/pull/145</li>
758  <li>Added compatibility for <a href="https://github.com/amphp/file"><code class="language-plaintext highlighter-rouge">amphp/<span class="__cf_email__" data-cfemail="fb9d92979ebbcfd583">[email&#160;protected]</span></code></a></li>
759</ul>
760
761<p><strong>Full Changelog</strong>: https://github.com/amphp/mysql/compare/v3.1.0…v3.1.1</p>
762
763                </div>
764            </li>
765            
766            <li class="github-release ">
767                
768                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
769                     src="/asset/img/logo_v3.png" width="53" height="32">
770                
771
772                <div class="github-release-meta">
773                <span class="github-release-date">
774                    <i class="fa fa-clock-o fa-fw"></i>
775
776                    Released on 2026-05-16
777                </span>
778
779                    <span class="github-release-tag">
780                    <i class="fa fa-tag fa-fw"></i>
781
782                    <a href="https://github.com/amphp/http-client/releases/tag/v5.3.6">5.3.6 on GitHub</a>
783                </span>
784                </div>
785
786                <h3>
787                    amphp/http-client 5.3.6
788
789                    
790                </h3>
791
792                <div class="github-release-body">
793                    <h2 id="whats-changed">What’s Changed</h2>
794<ul>
795  <li>Fix idle HTTP/1 connection GC leak by @danog in https://github.com/amphp/http-client/pull/400</li>
796</ul>
797
798<p><strong>Full Changelog</strong>: https://github.com/amphp/http-client/compare/v5.3.5…v5.3.6</p>
799
800                </div>
801            </li>
802            
803            <li class="github-release ">
804                
805                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
806                     src="/asset/img/logo_v3.png" width="53" height="32">
807                
808
809                <div class="github-release-meta">
810                <span class="github-release-date">
811                    <i class="fa fa-clock-o fa-fw"></i>
812
813                    Released on 2026-05-16
814                </span>
815
816                    <span class="github-release-tag">
817                    <i class="fa fa-tag fa-fw"></i>
818
819                    <a href="https://github.com/amphp/parallel/releases/tag/v2.4.0">2.4.0 on GitHub</a>
820                </span>
821                </div>
822
823                <h3>
824                    amphp/parallel 2.4.0
825
826                    
827                </h3>
828
829                <div class="github-release-body">
830                    <h2 id="whats-changed">What’s Changed</h2>
831<ul>
832  <li>Silently ignore result send failure during shutdown by @nicolas-grekas in https://github.com/amphp/parallel/pull/226</li>
833  <li>Add ForkContext by @trowski and @danog  in https://github.com/amphp/parallel/pull/212</li>
834</ul>
835
836<p><strong>Full Changelog</strong>: https://github.com/amphp/parallel/compare/v2.3.4…v2.4.0</p>
837
838                </div>
839            </li>
840            
841            <li class="github-release ">
842                
843                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
844                     src="/asset/img/logo_v3.png" width="53" height="32">
845                
846
847                <div class="github-release-meta">
848                <span class="github-release-date">
849                    <i class="fa fa-clock-o fa-fw"></i>
850
851                    Released on 2026-05-09
852                </span>
853
854                    <span class="github-release-tag">
855                    <i class="fa fa-tag fa-fw"></i>
856
857                    <a href="https://github.com/amphp/file/releases/tag/v4.0.0">4.0.0 on GitHub</a>
858                </span>
859                </div>
860
861                <h3>
862                    amphp/file 4.0.0
863
864                    
865                </h3>
866
867                <div class="github-release-body">
868                    <p>Users of <code class="language-plaintext highlighter-rouge">3.x</code> should be able to update to <code class="language-plaintext highlighter-rouge">4.x</code> without code changes unless their application did one of the following:</p>
869<ul>
870  <li>Defined a custom <code class="language-plaintext highlighter-rouge">File</code> implementation</li>
871  <li>Initialized <code class="language-plaintext highlighter-rouge">ParallelFilesystemDriver</code> with a custom worker count.</li>
872</ul>
873
874<hr />
875
876<h2 id="breaking-changes">Breaking Changes</h2>
877
878<p>This release adds a <code class="language-plaintext highlighter-rouge">lock()</code>, <code class="language-plaintext highlighter-rouge">tryLock()</code>, and <code class="language-plaintext highlighter-rouge">unlock()</code> to the <code class="language-plaintext highlighter-rouge">File</code> interface. These methods provide a non-blocking means of locking and unlocking a file.</p>
879<ul>
880  <li><code class="language-plaintext highlighter-rouge">File::lock()</code>: Non-blocking method to obtain a shared or exclusive lock on the file. This method must only return once the lock has been obtained.</li>
881  <li><code class="language-plaintext highlighter-rouge">File::tryLock()</code>: Makes a single non-blocking attempt to obtain a shared or exclusive lock on the file. Returns true if the lock was obtained, otherwise false.</li>
882  <li><code class="language-plaintext highlighter-rouge">File::unlock()</code>: Unlocks the file if the lock is currently held.</li>
883</ul>
884
885<p>In <code class="language-plaintext highlighter-rouge">3.x</code>, the constructor of <code class="language-plaintext highlighter-rouge">ParallelFilesystemDriver</code> accepted an optional <code class="language-plaintext highlighter-rouge">WorkerPool</code> and a number of workers to use from that pool. In <code class="language-plaintext highlighter-rouge">4.x</code>, instead the constructor now requires only an optional <code class="language-plaintext highlighter-rouge">LimitedWorkerPool</code> (a new pool is created if one is not provided). The number of workers used for opening files is determined by the value returned from <code class="language-plaintext highlighter-rouge">LimitedWorkerPool::getWorkerLimit()</code>. Use a <code class="language-plaintext highlighter-rouge">DelegateWorkerPool</code> if you wish to use an existing pool and limit the number of workers used from the pool to open files. In general, it is not necessary to customize the parallel filesystem driver.</p>
886
887<hr />
888
889<p><strong>Full Changelog</strong>: https://github.com/amphp/file/compare/v3.2.0…v4.0.0</p>
890
891                </div>
892            </li>
893            
894            <li class="github-release ">
895                
896                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
897                     src="/asset/img/logo_v3.png" width="53" height="32">
898                
899
900                <div class="github-release-meta">
901                <span class="github-release-date">
902                    <i class="fa fa-clock-o fa-fw"></i>
903
904                    Released on 2026-05-03
905                </span>
906
907                    <span class="github-release-tag">
908                    <i class="fa fa-tag fa-fw"></i>
909
910                    <a href="https://github.com/amphp/hpack/releases/tag/v3.2.2">3.2.2 on GitHub</a>
911                </span>
912                </div>
913
914                <h3>
915                    amphp/hpack 3.2.2
916
917                    
918                </h3>
919
920                <div class="github-release-body">
921                    <h2 id="whats-changed">What’s Changed</h2>
922<ul>
923  <li>Fix <code class="language-plaintext highlighter-rouge">chr()</code> deprecation warning in Huffman encoding  by @aleswita in https://github.com/amphp/hpack/pull/18</li>
924  <li>Add PHP 8.5, 8.4, 8.3 to test matrix by @kelunik in https://github.com/amphp/hpack/pull/24</li>
925</ul>
926
927<h2 id="new-contributors">New Contributors</h2>
928<ul>
929  <li>@aleswita made their first contribution in https://github.com/amphp/hpack/pull/18</li>
930  <li>@dependabot made their first contribution in https://github.com/amphp/hpack/pull/22</li>
931</ul>
932
933<p><strong>Full Changelog</strong>: https://github.com/amphp/hpack/compare/v3.2.1…v3.2.2</p>
934
935                </div>
936            </li>
937            
938            <li class="github-release ">
939                
940                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
941                     src="/asset/img/logo_v3.png" width="53" height="32">
942                
943
944                <div class="github-release-meta">
945                <span class="github-release-date">
946                    <i class="fa fa-clock-o fa-fw"></i>
947
948                    Released on 2026-04-05
949                </span>
950
951                    <span class="github-release-tag">
952                    <i class="fa fa-tag fa-fw"></i>
953
954                    <a href="https://github.com/amphp/serialization/releases/tag/v1.1.0">1.1.0 on GitHub</a>
955                </span>
956                </div>
957
958                <h3>
959                    amphp/serialization 1.1.0
960
961                    
962                </h3>
963
964                <div class="github-release-body">
965                    <h2 id="whats-changed">What’s Changed</h2>
966<ul>
967  <li>Now requires PHP &gt;= 7.4</li>
968  <li>Added <code class="language-plaintext highlighter-rouge">#[Override]</code> attributes were applicable</li>
969  <li>Fix installation instruction by @mathroc in https://github.com/amphp/serialization/pull/1</li>
970</ul>
971
972<h2 id="new-contributors">New Contributors</h2>
973<ul>
974  <li>@mathroc made their first contribution in https://github.com/amphp/serialization/pull/1</li>
975</ul>
976
977<p><strong>Full Changelog</strong>: https://github.com/amphp/serialization/compare/v1.0.0…v1.1.0</p>
978
979                </div>
980            </li>
981            
982            <li class="github-release ">
983                
984                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
985                     src="/asset/img/logo_v3.png" width="53" height="32">
986                
987
988                <div class="github-release-meta">
989                <span class="github-release-date">
990                    <i class="fa fa-clock-o fa-fw"></i>
991
992                    Released on 2026-03-03
993                </span>
994
995                    <span class="github-release-tag">
996                    <i class="fa fa-tag fa-fw"></i>
997
998                    <a href="https://github.com/amphp/redis/releases/tag/v2.0.4">2.0.4 on GitHub</a>
999                </span>
1000                </div>
1001
1002                <h3>
1003                    amphp/redis 2.0.4
1004
1005                    
1006                </h3>
1007
1008                <div class="github-release-body">
1009                    <h2 id="whats-changed">What’s Changed</h2>
1010<ul>
1011  <li>Fix <code class="language-plaintext highlighter-rouge">hget</code> TypeError instead of returning <code class="language-plaintext highlighter-rouge">null</code> by @PNixx in https://github.com/amphp/redis/pull/101</li>
1012</ul>
1013
1014<h2 id="new-contributors">New Contributors</h2>
1015<ul>
1016  <li>@PNixx made their first contribution in https://github.com/amphp/redis/pull/101</li>
1017</ul>
1018
1019<p><strong>Full Changelog</strong>: https://github.com/amphp/redis/compare/v2.0.3…v2.0.4</p>
1020
1021                </div>
1022            </li>
1023            
1024            <li class="github-release ">
1025                
1026                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1027                     src="/asset/img/logo_v3.png" width="53" height="32">
1028                
1029
1030                <div class="github-release-meta">
1031                <span class="github-release-date">
1032                    <i class="fa fa-clock-o fa-fw"></i>
1033
1034                    Released on 2026-02-25
1035                </span>
1036
1037                    <span class="github-release-tag">
1038                    <i class="fa fa-tag fa-fw"></i>
1039
1040                    <a href="https://github.com/amphp/postgres/releases/tag/v2.2.1">2.2.1 on GitHub</a>
1041                </span>
1042                </div>
1043
1044                <h3>
1045                    amphp/postgres 2.2.1
1046
1047                    
1048                </h3>
1049
1050                <div class="github-release-body">
1051                    <h2 id="whats-changed">What’s Changed</h2>
1052
1053<ul>
1054  <li>Fixed generation of connection strings if a connection parameter value contains a space.</li>
1055</ul>
1056
1057<p><strong>Full Changelog</strong>: https://github.com/amphp/postgres/compare/v2.2.0…v2.2.1</p>
1058
1059                </div>
1060            </li>
1061            
1062            <li class="github-release ">
1063                
1064                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1065                     src="/asset/img/logo_v3.png" width="53" height="32">
1066                
1067
1068                <div class="github-release-meta">
1069                <span class="github-release-date">
1070                    <i class="fa fa-clock-o fa-fw"></i>
1071
1072                    Released on 2026-02-25
1073                </span>
1074
1075                    <span class="github-release-tag">
1076                    <i class="fa fa-tag fa-fw"></i>
1077
1078                    <a href="https://github.com/amphp/sql/releases/tag/v2.1.1">2.1.1 on GitHub</a>
1079                </span>
1080                </div>
1081
1082                <h3>
1083                    amphp/sql 2.1.1
1084
1085                    
1086                </h3>
1087
1088                <div class="github-release-body">
1089                    <h2 id="whats-changed">What’s Changed</h2>
1090
1091<ul>
1092  <li>Fix acceptance of escaped spaces in connection strings</li>
1093</ul>
1094
1095<p><strong>Full Changelog</strong>: https://github.com/amphp/sql/compare/v2.1.0…v2.1.1</p>
1096
1097                </div>
1098            </li>
1099            
1100            <li class="github-release ">
1101                
1102                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1103                     src="/asset/img/logo_v3.png" width="53" height="32">
1104                
1105
1106                <div class="github-release-meta">
1107                <span class="github-release-date">
1108                    <i class="fa fa-clock-o fa-fw"></i>
1109
1110                    Released on 2026-01-12
1111                </span>
1112
1113                    <span class="github-release-tag">
1114                    <i class="fa fa-tag fa-fw"></i>
1115
1116                    <a href="https://github.com/amphp/http-server-session/releases/tag/v3.0.1">3.0.1 on GitHub</a>
1117                </span>
1118                </div>
1119
1120                <h3>
1121                    amphp/http-server-session 3.0.1
1122
1123                    
1124                </h3>
1125
1126                <div class="github-release-body">
1127                    <h2 id="whats-changed">What’s Changed</h2>
1128<ul>
1129  <li>Add examples &amp; docs by @thgs in https://github.com/amphp/http-server-session/pull/16</li>
1130  <li>Fix nullable deprecations for PHP 8.4 by @bwoebi in https://github.com/amphp/http-server-session/commit/776b57e2cfe2336a80265609ca37c5576fe2e8b0</li>
1131  <li>Extend <code class="language-plaintext highlighter-rouge">paragonie/constant_time_encoding</code> version coverage by @wtsergo in https://github.com/amphp/http-server-session/pull/18</li>
1132</ul>
1133
1134<h2 id="new-contributors">New Contributors</h2>
1135<ul>
1136  <li>@thgs made their first contribution in https://github.com/amphp/http-server-session/pull/16</li>
1137  <li>@wtsergo made their first contribution in https://github.com/amphp/http-server-session/pull/18</li>
1138</ul>
1139
1140<p><strong>Full Changelog</strong>: https://github.com/amphp/http-server-session/compare/v3.0.0…v3.0.1</p>
1141
1142                </div>
1143            </li>
1144            
1145            <li class="github-release ">
1146                
1147                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1148                     src="/asset/img/logo_v3.png" width="53" height="32">
1149                
1150
1151                <div class="github-release-meta">
1152                <span class="github-release-date">
1153                    <i class="fa fa-clock-o fa-fw"></i>
1154
1155                    Released on 2025-12-17
1156                </span>
1157
1158                    <span class="github-release-tag">
1159                    <i class="fa fa-tag fa-fw"></i>
1160
1161                    <a href="https://github.com/amphp/sql-common/releases/tag/v2.0.4">2.0.4 on GitHub</a>
1162                </span>
1163                </div>
1164
1165                <h3>
1166                    amphp/sql-common 2.0.4
1167
1168                    
1169                </h3>
1170
1171                <div class="github-release-body">
1172                    <h2 id="whats-changed">What’s Changed</h2>
1173<ul>
1174  <li>Fix PHP 8.5 deprecation by @luzrain in https://github.com/amphp/sql-common/pull/7</li>
1175</ul>
1176
1177<h2 id="new-contributors">New Contributors</h2>
1178<ul>
1179  <li>@luzrain made their first contribution in https://github.com/amphp/sql-common/pull/7</li>
1180</ul>
1181
1182<p><strong>Full Changelog</strong>: https://github.com/amphp/sql-common/compare/v2.0.3…v2.0.4</p>
1183
1184                </div>
1185            </li>
1186            
1187            <li class="github-release ">
1188                
1189                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1190                     src="/asset/img/logo_v3.png" width="53" height="32">
1191                
1192
1193                <div class="github-release-meta">
1194                <span class="github-release-date">
1195                    <i class="fa fa-clock-o fa-fw"></i>
1196
1197                    Released on 2025-08-27
1198                </span>
1199
1200                    <span class="github-release-tag">
1201                    <i class="fa fa-tag fa-fw"></i>
1202
1203                    <a href="https://github.com/amphp/php-cs-fixer-config/releases/tag/v2.1.1">2.1.1 on GitHub</a>
1204                </span>
1205                </div>
1206
1207                <h3>
1208                    amphp/php-cs-fixer-config 2.1.1
1209
1210                    
1211                </h3>
1212
1213                <div class="github-release-body">
1214                    <ul>
1215  <li>Fix formatting of <code class="language-plaintext highlighter-rouge">str_increment</code></li>
1216</ul>
1217
1218<p><strong>Full Changelog</strong>: https://github.com/amphp/php-cs-fixer-config/compare/v2.1.0…v2.1.1</p>
1219
1220                </div>
1221            </li>
1222            
1223            <li class="github-release ">
1224                
1225                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1226                     src="/asset/img/logo_v3.png" width="53" height="32">
1227                
1228
1229                <div class="github-release-meta">
1230                <span class="github-release-date">
1231                    <i class="fa fa-clock-o fa-fw"></i>
1232
1233                    Released on 2025-08-24
1234                </span>
1235
1236                    <span class="github-release-tag">
1237                    <i class="fa fa-tag fa-fw"></i>
1238
1239                    <a href="https://github.com/amphp/websocket-client/releases/tag/v2.0.2">2.0.2 on GitHub</a>
1240                </span>
1241                </div>
1242
1243                <h3>
1244                    amphp/websocket-client 2.0.2
1245
1246                    
1247                </h3>
1248
1249                <div class="github-release-body">
1250                    <h2 id="whats-changed">What’s Changed</h2>
1251
1252<ul>
1253  <li>Fix <code class="language-plaintext highlighter-rouge">League\Uri\Http</code> deprecation warning by @foxycode in https://github.com/amphp/websocket-client/pull/56</li>
1254</ul>
1255
1256<p><strong>Full Changelog</strong>: https://github.com/amphp/websocket-client/compare/v2.0.1…v2.0.2</p>
1257
1258                </div>
1259            </li>
1260            
1261            <li class="github-release ">
1262                
1263                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1264                     src="/asset/img/logo_v3.png" width="53" height="32">
1265                
1266
1267                <div class="github-release-meta">
1268                <span class="github-release-date">
1269                    <i class="fa fa-clock-o fa-fw"></i>
1270
1271                    Released on 2025-06-26
1272                </span>
1273
1274                    <span class="github-release-tag">
1275                    <i class="fa fa-tag fa-fw"></i>
1276
1277                    <a href="https://github.com/amphp/http-client-guzzle-adapter/releases/tag/v1.1.3">1.1.3 on GitHub</a>
1278                </span>
1279                </div>
1280
1281                <h3>
1282                    amphp/http-client-guzzle-adapter 1.1.3
1283
1284                    
1285                </h3>
1286
1287                <div class="github-release-body">
1288                    <h2 id="whats-changed">What’s Changed</h2>
1289<ul>
1290  <li>Improved curl options check by @root-aza in https://github.com/amphp/http-client-guzzle-adapter/pull/4</li>
1291</ul>
1292
1293<h2 id="new-contributors">New Contributors</h2>
1294<ul>
1295  <li>@root-aza made their first contribution in https://github.com/amphp/http-client-guzzle-adapter/pull/4</li>
1296</ul>
1297
1298<p><strong>Full Changelog</strong>: https://github.com/amphp/http-client-guzzle-adapter/compare/v1.1.2…v1.1.3</p>
1299
1300                </div>
1301            </li>
1302            
1303            <li class="github-release ">
1304                
1305                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1306                     src="/asset/img/logo_v3.png" width="53" height="32">
1307                
1308
1309                <div class="github-release-meta">
1310                <span class="github-release-date">
1311                    <i class="fa fa-clock-o fa-fw"></i>
1312
1313                    Released on 2025-03-16
1314                </span>
1315
1316                    <span class="github-release-tag">
1317                    <i class="fa fa-tag fa-fw"></i>
1318
1319                    <a href="https://github.com/amphp/byte-stream/releases/tag/v2.1.2">2.1.2 on GitHub</a>
1320                </span>
1321                </div>
1322
1323                <h3>
1324                    amphp/byte-stream 2.1.2
1325
1326                    
1327                </h3>
1328
1329                <div class="github-release-body">
1330                    <ul>
1331  <li>Fixed the exception type thrown if <code class="language-plaintext highlighter-rouge">ReadableIterableStream</code> is closed (<code class="language-plaintext highlighter-rouge">Amp\Pipeline\DisposedException</code> was leaked, now an <code class="language-plaintext highlighter-rouge">Amp\ByteStream\ClosedException</code> is thrown).</li>
1332</ul>
1333
1334<p><strong>Full Changelog</strong>: https://github.com/amphp/byte-stream/compare/v2.1.1…v2.1.2</p>
1335
1336                </div>
1337            </li>
1338            
1339            <li class="github-release ">
1340                
1341                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1342                     src="/asset/img/logo_v3.png" width="53" height="32">
1343                
1344
1345                <div class="github-release-meta">
1346                <span class="github-release-date">
1347                    <i class="fa fa-clock-o fa-fw"></i>
1348
1349                    Released on 2025-02-12
1350                </span>
1351
1352                    <span class="github-release-tag">
1353                    <i class="fa fa-tag fa-fw"></i>
1354
1355                    <a href="https://github.com/amphp/http-tunnel/releases/tag/v2.0.0">2.0.0 on GitHub</a>
1356                </span>
1357                </div>
1358
1359                <h3>
1360                    amphp/http-tunnel 2.0.0
1361
1362                    
1363                </h3>
1364
1365                <div class="github-release-body">
1366                    <p>Stable release compatible with AMPHP v3 and fibers! 🎉</p>
1367
1368<p>As with other libraries compatible with AMPHP v3, most cases of parameters or returns of <code class="language-plaintext highlighter-rouge">Promise&lt;ResolutionType&gt;</code> have been replaced with <code class="language-plaintext highlighter-rouge">ResolutionType</code>.</p>
1369
1370<p>This library provides an implementation of <code class="language-plaintext highlighter-rouge">Amp\Socket\SocketConnector</code> from <a href="https://github.com/amphp/socket"><code class="language-plaintext highlighter-rouge">amphp/socket</code></a> which establishes a socket connection via an HTTP/1.1 <code class="language-plaintext highlighter-rouge">CONNECT</code> request to a proxy.</p>
1371
1372                </div>
1373            </li>
1374            
1375            <li class="github-release ">
1376                
1377                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1378                     src="/asset/img/logo_v3.png" width="53" height="32">
1379                
1380
1381                <div class="github-release-meta">
1382                <span class="github-release-date">
1383                    <i class="fa fa-clock-o fa-fw"></i>
1384
1385                    Released on 2024-12-21
1386                </span>
1387
1388                    <span class="github-release-tag">
1389                    <i class="fa fa-tag fa-fw"></i>
1390
1391                    <a href="https://github.com/amphp/cluster/releases/tag/v2.0.1">2.0.1 on GitHub</a>
1392                </span>
1393                </div>
1394
1395                <h3>
1396                    amphp/cluster 2.0.1
1397
1398                    
1399                </h3>
1400
1401                <div class="github-release-body">
1402                    <h2 id="whats-changed">What’s Changed</h2>
1403<ul>
1404  <li>Report ExitFailures from cluster worker exits by @bwoebi in https://github.com/amphp/cluster/pull/21</li>
1405</ul>
1406
1407<h2 id="new-contributors">New Contributors</h2>
1408<ul>
1409  <li>@bwoebi made their first contribution in https://github.com/amphp/cluster/pull/21</li>
1410</ul>
1411
1412<p><strong>Full Changelog</strong>: https://github.com/amphp/cluster/compare/v2.0.0…v2.0.1</p>
1413
1414                </div>
1415            </li>
1416            
1417            <li class="github-release ">
1418                
1419                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1420                     src="/asset/img/logo_v3.png" width="53" height="32">
1421                
1422
1423                <div class="github-release-meta">
1424                <span class="github-release-date">
1425                    <i class="fa fa-clock-o fa-fw"></i>
1426
1427                    Released on 2024-11-23
1428                </span>
1429
1430                    <span class="github-release-tag">
1431                    <i class="fa fa-tag fa-fw"></i>
1432
1433                    <a href="https://github.com/amphp/http/releases/tag/v2.1.2">2.1.2 on GitHub</a>
1434                </span>
1435                </div>
1436
1437                <h3>
1438                    amphp/http 2.1.2
1439
1440                    
1441                </h3>
1442
1443                <div class="github-release-body">
1444                    <h2 id="whats-changed">What’s Changed</h2>
1445
1446<ul>
1447  <li>Added support for PHP 8.4 by @Bilge in https://github.com/amphp/http/pull/29</li>
1448</ul>
1449
1450<p><strong>Full Changelog</strong>: https://github.com/amphp/http/compare/v2.1.1…v2.1.2</p>
1451
1452                </div>
1453            </li>
1454            
1455            <li class="github-release ">
1456                
1457                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1458                     src="/asset/img/logo_v3.png" width="53" height="32">
1459                
1460
1461                <div class="github-release-meta">
1462                <span class="github-release-date">
1463                    <i class="fa fa-clock-o fa-fw"></i>
1464
1465                    Released on 2024-11-15
1466                </span>
1467
1468                    <span class="github-release-tag">
1469                    <i class="fa fa-tag fa-fw"></i>
1470
1471                    <a href="https://github.com/amphp/http-client-psr7/releases/tag/v1.1.1">1.1.1 on GitHub</a>
1472                </span>
1473                </div>
1474
1475                <h3>
1476                    amphp/http-client-psr7 1.1.1
1477
1478                    
1479                </h3>
1480
1481                <div class="github-release-body">
1482                    <h2 id="whats-changed">What’s Changed</h2>
1483
1484<ul>
1485  <li>Fixed support for PSR-7 requests with a protocol version of <code class="language-plaintext highlighter-rouge">"2.0"</code> by converting the protocol version to <code class="language-plaintext highlighter-rouge">"2"</code> when converting to an <code class="language-plaintext highlighter-rouge">Amp\Http\Client\Request</code> (#15).</li>
1486</ul>
1487
1488<p><strong>Full Changelog</strong>: https://github.com/amphp/http-client-psr7/compare/v1.1.0…v1.1.1</p>
1489
1490                </div>
1491            </li>
1492            
1493            <li class="github-release ">
1494                
1495                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1496                     src="/asset/img/logo_v3.png" width="53" height="32">
1497                
1498
1499                <div class="github-release-meta">
1500                <span class="github-release-date">
1501                    <i class="fa fa-clock-o fa-fw"></i>
1502
1503                    Released on 2024-10-28
1504                </span>
1505
1506                    <span class="github-release-tag">
1507                    <i class="fa fa-tag fa-fw"></i>
1508
1509                    <a href="https://github.com/amphp/websocket/releases/tag/v2.0.4">2.0.4 on GitHub</a>
1510                </span>
1511                </div>
1512
1513                <h3>
1514                    amphp/websocket 2.0.4
1515
1516                    
1517                </h3>
1518
1519                <div class="github-release-body">
1520                    <h2 id="whats-changed">What’s Changed</h2>
1521
1522<ul>
1523  <li>Fixed assertion failure when interleaving control frames between continuation frames in <code class="language-plaintext highlighter-rouge">Rfc6455FrameCompiler</code>.</li>
1524</ul>
1525
1526<p><strong>Full Changelog</strong>: https://github.com/amphp/websocket/compare/v2.0.3…v2.0.4</p>
1527
1528                </div>
1529            </li>
1530            
1531            <li class="github-release ">
1532                
1533                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1534                     src="/asset/img/logo_v3.png" width="53" height="32">
1535                
1536
1537                <div class="github-release-meta">
1538                <span class="github-release-date">
1539                    <i class="fa fa-clock-o fa-fw"></i>
1540
1541                    Released on 2024-08-04
1542                </span>
1543
1544                    <span class="github-release-tag">
1545                    <i class="fa fa-tag fa-fw"></i>
1546
1547                    <a href="https://github.com/amphp/sync/releases/tag/v2.3.0">2.3.0 on GitHub</a>
1548                </span>
1549                </div>
1550
1551                <h3>
1552                    amphp/sync 2.3.0
1553
1554                    
1555                </h3>
1556
1557                <div class="github-release-body">
1558                    <h2 id="whats-changed">What’s Changed</h2>
1559<ul>
1560  <li>Fixed posix semaphore blocking thread when there is no space left on device by @azjezz in https://github.com/amphp/sync/pull/29</li>
1561  <li>Added a buffer size parameter to <code class="language-plaintext highlighter-rouge">createChannelPair()</code> to specify a number of items which may be buffered in memory before back pressure is applied.</li>
1562</ul>
1563
1564<h2 id="new-contributors">New Contributors</h2>
1565<ul>
1566  <li>@azjezz made their first contribution in https://github.com/amphp/sync/pull/29</li>
1567</ul>
1568
1569<p><strong>Full Changelog</strong>: https://github.com/amphp/sync/compare/v2.2.0…v2.3.0</p>
1570
1571                </div>
1572            </li>
1573            
1574            <li class="github-release ">
1575                
1576                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1577                     src="/asset/img/logo_v3.png" width="53" height="32">
1578                
1579
1580                <div class="github-release-meta">
1581                <span class="github-release-date">
1582                    <i class="fa fa-clock-o fa-fw"></i>
1583
1584                    Released on 2024-04-19
1585                </span>
1586
1587                    <span class="github-release-tag">
1588                    <i class="fa fa-tag fa-fw"></i>
1589
1590                    <a href="https://github.com/amphp/cache/releases/tag/v2.0.1">2.0.1 on GitHub</a>
1591                </span>
1592                </div>
1593
1594                <h3>
1595                    amphp/cache 2.0.1
1596
1597                    
1598                </h3>
1599
1600                <div class="github-release-body">
1601                    <h1 id="whats-changed">What’s Changed</h1>
1602
1603<ul>
1604  <li>Make implicit nullable types explicit to avoid deprecation notice in PHP 8.4.</li>
1605</ul>
1606
1607<p><strong>Full Changelog</strong>: https://github.com/amphp/cache/compare/v2.0.0…v2.0.1</p>
1608
1609                </div>
1610            </li>
1611            
1612            <li class="github-release ">
1613                
1614                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1615                     src="/asset/img/logo_v3.png" width="53" height="32">
1616                
1617
1618                <div class="github-release-meta">
1619                <span class="github-release-date">
1620                    <i class="fa fa-clock-o fa-fw"></i>
1621
1622                    Released on 2024-03-21
1623                </span>
1624
1625                    <span class="github-release-tag">
1626                    <i class="fa fa-tag fa-fw"></i>
1627
1628                    <a href="https://github.com/amphp/parser/releases/tag/v1.1.1">1.1.1 on GitHub</a>
1629                </span>
1630                </div>
1631
1632                <h3>
1633                    amphp/parser 1.1.1
1634
1635                    
1636                </h3>
1637
1638                <div class="github-release-body">
1639                    <h2 id="whats-changed">What’s Changed</h2>
1640<ul>
1641  <li>Make implicit nullable types explicit by @nicolas-grekas in https://github.com/amphp/parser/pull/6</li>
1642</ul>
1643
1644<h2 id="new-contributors">New Contributors</h2>
1645<ul>
1646  <li>@nicolas-grekas made their first contribution in https://github.com/amphp/parser/pull/6</li>
1647</ul>
1648
1649<p><strong>Full Changelog</strong>: https://github.com/amphp/parser/compare/v1.1.0…v1.1.1</p>
1650
1651                </div>
1652            </li>
1653            
1654            <li class="github-release ">
1655                
1656                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1657                     src="/asset/img/logo_v3.png" width="53" height="32">
1658                
1659
1660                <div class="github-release-meta">
1661                <span class="github-release-date">
1662                    <i class="fa fa-clock-o fa-fw"></i>
1663
1664                    Released on 2024-03-19
1665                </span>
1666
1667                    <span class="github-release-tag">
1668                    <i class="fa fa-tag fa-fw"></i>
1669
1670                    <a href="https://github.com/amphp/rpc/releases/tag/v2.0.0">2.0.0 on GitHub</a>
1671                </span>
1672                </div>
1673
1674                <h3>
1675                    amphp/rpc 2.0.0
1676
1677                    
1678                </h3>
1679
1680                <div class="github-release-body">
1681                    <p>Stable release compatible with AMPHP v3 and fibers! 🎉</p>
1682
1683<p>As with other libraries compatible with AMPHP v3, most cases of parameters or returns of <code class="language-plaintext highlighter-rouge">Promise&lt;ResolutionType&gt;</code> have been replaced with <code class="language-plaintext highlighter-rouge">ResolutionType</code>.</p>
1684
1685                </div>
1686            </li>
1687            
1688            <li class="github-release ">
1689                
1690                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1691                     src="/asset/img/logo_v3.png" width="53" height="32">
1692                
1693
1694                <div class="github-release-meta">
1695                <span class="github-release-date">
1696                    <i class="fa fa-clock-o fa-fw"></i>
1697
1698                    Released on 2024-01-30
1699                </span>
1700
1701                    <span class="github-release-tag">
1702                    <i class="fa fa-tag fa-fw"></i>
1703
1704                    <a href="https://github.com/amphp/windows-registry/releases/tag/v1.0.1">1.0.1 on GitHub</a>
1705                </span>
1706                </div>
1707
1708                <h3>
1709                    amphp/windows-registry 1.0.1
1710
1711                    
1712                </h3>
1713
1714                <div class="github-release-body">
1715                    <h2 id="whats-changed">What’s Changed</h2>
1716<ul>
1717  <li>Removed nullability from return type of <code class="language-plaintext highlighter-rouge">WindowsRegistry::read()</code>, the method throws if the key is not found.</li>
1718</ul>
1719
1720<p><strong>Full Changelog</strong>: https://github.com/amphp/windows-registry/compare/v1.0.0…v1.0.1</p>
1721
1722                </div>
1723            </li>
1724            
1725            <li class="github-release ">
1726                
1727                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1728                     src="/asset/img/logo_v3.png" width="53" height="32">
1729                
1730
1731                <div class="github-release-meta">
1732                <span class="github-release-date">
1733                    <i class="fa fa-clock-o fa-fw"></i>
1734
1735                    Released on 2023-12-29
1736                </span>
1737
1738                    <span class="github-release-tag">
1739                    <i class="fa fa-tag fa-fw"></i>
1740
1741                    <a href="https://github.com/amphp/websocket-server/releases/tag/v4.0.0">4.0.0 on GitHub</a>
1742                </span>
1743                </div>
1744
1745                <h3>
1746                    amphp/websocket-server 4.0.0
1747
1748                    
1749                </h3>
1750
1751                <div class="github-release-body">
1752                    <p>The <code class="language-plaintext highlighter-rouge">4.0.0</code> release fixes compression support with a couple small compatibility breaks from <code class="language-plaintext highlighter-rouge">3.x</code>.</p>
1753
1754<p>Users of <code class="language-plaintext highlighter-rouge">2.x</code> should upgrade directly to <code class="language-plaintext highlighter-rouge">4.0.0</code>.</p>
1755
1756<p>Users of <code class="language-plaintext highlighter-rouge">3.x</code> can upgrade directly to <code class="language-plaintext highlighter-rouge">4.0.0</code> if compression is not being used. If a custom <code class="language-plaintext highlighter-rouge">WebsocketAcceptor</code> was created to support compression, this custom implementation may be dropped, instead passing an instance of <code class="language-plaintext highlighter-rouge">WebsocketCompressionContextFactory</code> to each <code class="language-plaintext highlighter-rouge">Websocket</code> request handler.</p>
1757
1758<h2 id="backward-compatibility-breaks">Backward Compatibility Breaks</h2>
1759
1760<ul>
1761  <li>The <code class="language-plaintext highlighter-rouge">WebsocketCompressionContextFactory</code> constructor  parameter of <code class="language-plaintext highlighter-rouge">Rfc6455ClientFactory</code> has been removed and is instead a constructor parameter of the <code class="language-plaintext highlighter-rouge">Websocket</code> class.</li>
1762  <li>A nullable <code class="language-plaintext highlighter-rouge">WebsocketCompressionContext</code> parameter was added to <code class="language-plaintext highlighter-rouge">WebsocketClientFactory::createClient()</code>.</li>
1763</ul>
1764
1765                </div>
1766            </li>
1767            
1768            <li class="github-release ">
1769                
1770                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1771                     src="/asset/img/logo_v3.png" width="53" height="32">
1772                
1773
1774                <div class="github-release-meta">
1775                <span class="github-release-date">
1776                    <i class="fa fa-clock-o fa-fw"></i>
1777
1778                    Released on 2023-11-25
1779                </span>
1780
1781                    <span class="github-release-tag">
1782                    <i class="fa fa-tag fa-fw"></i>
1783
1784                    <a href="https://github.com/amphp/parallel-functions/releases/tag/v2.0.0">2.0.0 on GitHub</a>
1785                </span>
1786                </div>
1787
1788                <h3>
1789                    amphp/parallel-functions 2.0.0
1790
1791                    
1792                </h3>
1793
1794                <div class="github-release-body">
1795                    <p>Stable release compatible with AMPHP v3 and fibers! 🎉</p>
1796
1797<p>As with other libraries compatible with AMPHP v3, most cases of parameters or returns of <code class="language-plaintext highlighter-rouge">Promise&lt;ResolutionType&gt;</code> have been replaced with <code class="language-plaintext highlighter-rouge">ResolutionType</code>.</p>
1798
1799                </div>
1800            </li>
1801            
1802            <li class="github-release ">
1803                
1804                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1805                     src="/asset/img/logo_v3.png" width="53" height="32">
1806                
1807
1808                <div class="github-release-meta">
1809                <span class="github-release-date">
1810                    <i class="fa fa-clock-o fa-fw"></i>
1811
1812                    Released on 2023-10-08
1813                </span>
1814
1815                    <span class="github-release-tag">
1816                    <i class="fa fa-tag fa-fw"></i>
1817
1818                    <a href="https://github.com/amphp/http-client-cookies/releases/tag/v2.0.0">2.0.0 on GitHub</a>
1819                </span>
1820                </div>
1821
1822                <h3>
1823                    amphp/http-client-cookies 2.0.0
1824
1825                    
1826                </h3>
1827
1828                <div class="github-release-body">
1829                    <p>Stable release compatible with AMPHP v3 and fibers! 🎉</p>
1830
1831<p>As with other libraries compatible with AMPHP v3, most cases of parameters or returns of <code class="language-plaintext highlighter-rouge">Promise&lt;ResolutionType&gt;</code> have been replaced with <code class="language-plaintext highlighter-rouge">ResolutionType</code>.</p>
1832
1833<ul>
1834  <li>Renamed <code class="language-plaintext highlighter-rouge">InMemoryCookieJar</code> to <code class="language-plaintext highlighter-rouge">LocalCookieJar</code></li>
1835</ul>
1836
1837                </div>
1838            </li>
1839            
1840            <li class="github-release ">
1841                
1842                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1843                     src="/asset/img/logo_v3.png" width="53" height="32">
1844                
1845
1846                <div class="github-release-meta">
1847                <span class="github-release-date">
1848                    <i class="fa fa-clock-o fa-fw"></i>
1849
1850                    Released on 2023-08-25
1851                </span>
1852
1853                    <span class="github-release-tag">
1854                    <i class="fa fa-tag fa-fw"></i>
1855
1856                    <a href="https://github.com/amphp/http-server-form-parser/releases/tag/v2.0.0">2.0.0 on GitHub</a>
1857                </span>
1858                </div>
1859
1860                <h3>
1861                    amphp/http-server-form-parser 2.0.0
1862
1863                    
1864                </h3>
1865
1866                <div class="github-release-body">
1867                    <p>This release is compatible with <code class="language-plaintext highlighter-rouge">amphp/http-server@^3</code>.</p>
1868
1869<ul>
1870  <li>Renamed <code class="language-plaintext highlighter-rouge">BufferingParser</code> and <code class="language-plaintext highlighter-rouge">StreamingParser</code> to <code class="language-plaintext highlighter-rouge">FormParser</code> and <code class="language-plaintext highlighter-rouge">StreamingFormParser</code>, respectively.</li>
1871  <li>Removed the <code class="language-plaintext highlighter-rouge">parseForm</code> function in favor of the <code class="language-plaintext highlighter-rouge">Form::fromRequest()</code> static method.</li>
1872  <li>Removed <code class="language-plaintext highlighter-rouge">ParsingMiddleware</code>. Use <code class="language-plaintext highlighter-rouge">Form::fromRequest()</code> instead.</li>
1873  <li>Removed <code class="language-plaintext highlighter-rouge">ParseException</code>. Form parsing errors will throw an <code class="language-plaintext highlighter-rouge">HttpErrorException</code> from <code class="language-plaintext highlighter-rouge">amphp/http-server</code> instead, which do not need to be caught (the server will automatically return an error response).</li>
1874</ul>
1875
1876                </div>
1877            </li>
1878            
1879            <li class="github-release ">
1880                
1881                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1882                     src="/asset/img/logo_v3.png" width="53" height="32">
1883                
1884
1885                <div class="github-release-meta">
1886                <span class="github-release-date">
1887                    <i class="fa fa-clock-o fa-fw"></i>
1888
1889                    Released on 2023-08-20
1890                </span>
1891
1892                    <span class="github-release-tag">
1893                    <i class="fa fa-tag fa-fw"></i>
1894
1895                    <a href="https://github.com/amphp/http-server-static-content/releases/tag/v2.0.0">2.0.0 on GitHub</a>
1896                </span>
1897                </div>
1898
1899                <h3>
1900                    amphp/http-server-static-content 2.0.0
1901
1902                    
1903                </h3>
1904
1905                <div class="github-release-body">
1906                    <p>This release is compatible with <code class="language-plaintext highlighter-rouge">amphp/http-server@^3</code>.</p>
1907
1908<ul>
1909  <li><code class="language-plaintext highlighter-rouge">DocumentRoot</code> now requires an instance of <code class="language-plaintext highlighter-rouge">HttpServer</code> and <code class="language-plaintext highlighter-rouge">ErrorHandler</code> to construct</li>
1910  <li>Removed <code class="language-plaintext highlighter-rouge">DocumentRoot::onStart()</code> and <code class="language-plaintext highlighter-rouge">DocumentRoot::onStop()</code>, as it’s now internally registered</li>
1911  <li>Removed support for <code class="language-plaintext highlighter-rouge">ServerObserver</code>, as it’s been removed from <code class="language-plaintext highlighter-rouge">amphp/http-server</code></li>
1912  <li>Added <code class="language-plaintext highlighter-rouge">StaticResource</code> to serve a single static file</li>
1913</ul>
1914
1915                </div>
1916            </li>
1917            
1918            <li class="github-release ">
1919                
1920                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1921                     src="/asset/img/logo_v3.png" width="53" height="32">
1922                
1923
1924                <div class="github-release-meta">
1925                <span class="github-release-date">
1926                    <i class="fa fa-clock-o fa-fw"></i>
1927
1928                    Released on 2023-08-05
1929                </span>
1930
1931                    <span class="github-release-tag">
1932                    <i class="fa fa-tag fa-fw"></i>
1933
1934                    <a href="https://github.com/amphp/http-server-router/releases/tag/v2.0.0">2.0.0 on GitHub</a>
1935                </span>
1936                </div>
1937
1938                <h3>
1939                    amphp/http-server-router 2.0.0
1940
1941                    
1942                </h3>
1943
1944                <div class="github-release-body">
1945                    <p>This release is compatible with <code class="language-plaintext highlighter-rouge">amphp/http-server@^3</code>.</p>
1946
1947<ul>
1948  <li>A PSR-3 logger is now required in the <code class="language-plaintext highlighter-rouge">Router</code> constructor</li>
1949  <li>Starting the server with an empty <code class="language-plaintext highlighter-rouge">Router</code> is now allowed and only logs a notice instead of throwing an exception</li>
1950  <li>Middleware can be added via <code class="language-plaintext highlighter-rouge">addMiddleware()</code> instead of <code class="language-plaintext highlighter-rouge">stack()</code></li>
1951  <li>Removed support for adding middleware directly via <code class="language-plaintext highlighter-rouge">addRoute()</code>, use <code class="language-plaintext highlighter-rouge">stackMiddleware()</code> instead if you need this</li>
1952  <li>Removed <code class="language-plaintext highlighter-rouge">Router::onStart()</code>, as it’s now internally registered</li>
1953  <li>Removed support for <code class="language-plaintext highlighter-rouge">ServerObserver</code>, as it’s been removed from <code class="language-plaintext highlighter-rouge">amphp/http-server</code></li>
1954</ul>
1955
1956                </div>
1957            </li>
1958            
1959            <li class="github-release ">
1960                
1961                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
1962                     src="/asset/img/logo_v3.png" width="53" height="32">
1963                
1964
1965                <div class="github-release-meta">
1966                <span class="github-release-date">
1967                    <i class="fa fa-clock-o fa-fw"></i>
1968
1969                    Released on 2023-08-05
1970                </span>
1971
1972                    <span class="github-release-tag">
1973                    <i class="fa fa-tag fa-fw"></i>
1974
1975                    <a href="https://github.com/amphp/log/releases/tag/v2.0.0">2.0.0 on GitHub</a>
1976                </span>
1977                </div>
1978
1979                <h3>
1980                    amphp/log 2.0.0
1981
1982                    
1983                </h3>
1984
1985                <div class="github-release-body">
1986                    <ul>
1987  <li>Increased minimum PHP version to 8.1</li>
1988  <li>Make use of fibers with Amp v3 and Revolt</li>
1989  <li>Added support for Monolog v3.x</li>
1990</ul>
1991
1992<p>This release does not contain any changes in comparison to <code class="language-plaintext highlighter-rouge">v2.0.0-beta.2</code>.</p>
1993
1994                </div>
1995            </li>
1996            
1997            <li class="github-release ">
1998                
1999                <img title="This release is based on the Revolt event loop." class="github-release-v3 float-right"
2000                     src="/asset/img/logo_v3.png" width="53" height="32">
2001                
2002
2003                <div class="github-release-meta">
2004                <span class="github-release-date">
2005                    <i class="fa fa-clock-o fa-fw"></i>
2006
2007                    Released on 2022-12-18
2008                </span>
2009
2010                    <span class="github-release-tag">
2011                    <i class="fa fa-tag fa-fw"></i>
2012
2013                    <a href="https://github.com/amphp/phpunit-util/releases/tag/v3.0.0">3.0.0 on GitHub</a>
2014                </span>
2015                </div>
2016
2017                <h3>
2018                    amphp/phpunit-util 3.0.0
2019
2020                    
2021                </h3>
2022
2023                <div class="github-release-body">
2024                    <p>
2024This package has been redesigned for compatibility with AMPHP v3 and fibers. <code class="language-plaintext highlighter-rouge">AsyncTestCase</code> serves a similar purpose as before, providing helper methods for unit testing within an async context. Each test case is run within a unique fiber to allow suspending during the test run.</p>
2025
2026<ul>
2027  <li><code class="language-plaintext highlighter-rouge">AsyncTestCase::setUpAsync()</code> and <code class="language-plaintext highlighter-rouge">tearDownAsync()</code> have been removed. Use <code class="language-plaintext highlighter-rouge">AsyncTestCase::setUp()</code> and <code class="language-plaintext highlighter-rouge">tearDown()</code> instead, as both of these methods are now able to execute async using fibers.</li>
2028  <li><code class="language-plaintext highlighter-rouge">AsyncTestCase::createCallback()</code> now returns a <code class="language-plaintext highlighter-rouge">Closure</code>. Additionally, an optional parameter for expected arguments upon invocation have been added (uses <code class="language-plaintext highlighter-rouge">InvocationMocker::with(...)</code> to set expected arguments).</li>
2029</ul>
2030
2031                </div>
2032            </li>
2033            
2034            <li class="github-release ">
2035                
2036                <img title="This release is based on the Amp v2 event loop." class="github-release-v2 float-right"
2037                     src="/asset/img/logo_v2.png" width="53" height="32">
2038                
2039
2040                <div class="github-release-meta">
2041                <span class="github-release-date">
2042                    <i class="fa fa-clock-o fa-fw"></i>
2043
2044                    Released on 2020-11-18
2045                </span>
2046
2047                    <span class="github-release-tag">
2048                    <i class="fa fa-tag fa-fw"></i>
2049
2050                    <a href="https://github.com/amphp/beanstalk/releases/tag/v0.3.2">0.3.2 on GitHub</a>
2051                </span>
2052                </div>
2053
2054                <h3>
2055                    amphp/beanstalk 0.3.2
2056
2057                    
2058                </h3>
2059
2060                <div class="github-release-body">
2061                    <ul>
2062  <li>Added support for Symfony YAML library v4 and v5. (#34)</li>
2063</ul>
2064
2065                </div>
2066            </li>
2067            
2068            <li class="github-release ">
2069                
2070                <img title="This release is based on the Amp v2 event loop." class="github-release-v2 float-right"
2071                     src="/asset/img/logo_v2.png" width="53" height="32">
2072                
2073
2074                <div class="github-release-meta">
2075                <span class="github-release-date">
2076                    <i class="fa fa-clock-o fa-fw"></i>
2077
2078                    Released on 2019-12-21
2079                </span>
2080
2081                    <span class="github-release-tag">
2082                    <i class="fa fa-tag fa-fw"></i>
2083
2084                    <a href="https://github.com/amphp/http-client-cache/releases/tag/v1.0.0">1.0.0 on GitHub</a>
2085                </span>
2086                </div>
2087
2088                <h3>
2089                    amphp/http-client-cache 1.0.0
2090
2091                    
2092                </h3>
2093
2094                <div class="github-release-body">
2095                    <p>Initial release.</p>
2096
2097                </div>
2098            </li>
2099            
2100            <li class="github-release ">
2101                
2102                <img title="This release is based on the Amp v2 event loop." class="github-release-v2 float-right"
2103                     src="/asset/img/logo_v2.png" width="53" height="32">
2104                
2105
2106                <div class="github-release-meta">
2107                <span class="github-release-date">
2108                    <i class="fa fa-clock-o fa-fw"></i>
2109
2110                    Released on 2019-11-04
2111                </span>
2112
2113                    <span class="github-release-tag">
2114                    <i class="fa fa-tag fa-fw"></i>
2115
2116                    <a href="https://github.com/amphp/react-adapter/releases/tag/v2.1.0">2.1.0 on GitHub</a>
2117                </span>
2118                </div>
2119
2120                <h3>
2121                    amphp/react-adapter 2.1.0
2122
2123                    
2124                </h3>
2125
2126                <div class="github-release-body">
2127                    <ul>
2128  <li><code class="language-plaintext highlighter-rouge">React\EventLoop\Factory</code> is now automatically replaced with another implementation that throws on each usage to prevent two loops existing concurrently by accident.
2129Set <code class="language-plaintext highlighter-rouge">AMP_REACT_ADAPTER_DISABLE_FACTORY_OVERRIDE=1</code> as environment variable or constant to disable this protection.</li>
2130</ul>
2131
2132                </div>
2133            </li>
2134            
2135            <li class="github-release ">
2136                
2137                <img title="This release is based on the Amp v2 event loop." class="github-release-v2 float-right"
2138                     src="/asset/img/logo_v2.png" width="53" height="32">
2139                
2140
2141                <div class="github-release-meta">
2142                <span class="github-release-date">
2143                    <i class="fa fa-clock-o fa-fw"></i>
2144
2145                    Released on 2018-03-07
2146                </span>
2147
2148                    <span class="github-release-tag">
2149                    <i class="fa fa-tag fa-fw"></i>
2150
2151                    <a href="https://github.com/amphp/react-stream-adapter/releases/tag/v0.1.0">0.1.0 on GitHub</a>
2152                </span>
2153                </div>
2154
2155                <h3>
2156                    amphp/react-stream-adapter 0.1.0
2157
2158                    
2159                </h3>
2160
2161                <div class="github-release-body">
2162                    <p>Initial release.</p>
2163
2164                </div>
2165            </li>
2166            
2167        </ul>
2168    </div>
2169</div>
2170
2171
2172    <div id="footer" style="background: #fff">
2173        <div class="site-width">
2174            <div class="content footer-columns py-0">
2175                <div class="text-center">
2176                    <ul class="footer-networking-list">
2177                        <li class="footer-list-item"><a href="https://github.com/amphp/amp"><i
2178                                class="fa fa-fw fa-github"></i>GitHub</a></li>
2179                        <li class="footer-list-item"><a href="https://stackoverflow.com/questions/tagged/amphp"><i
2180                                class="fa fa-fw fa-stack-overflow"></i>Stack Overflow</a></li>
2181                        <li class="footer-list-item"><a href="https://t.me/amphpchat"><i class="fa fa-fw fa-telegram"></i>Telegram</a>
2182                        </li>
2183                        <li class="footer-list-item"><a href="https://twitter.com/asyncphp"><i class="fa fa-fw fa-twitter"></i>Twitter</a></li>
2184                    </ul>
2185                </div>
2186            </div>
2187        </div>
2188    </div>
2189</div>
vendor: 110 bytes, lines 2189-2191
2189
2190
2191<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
2191</body>
2192</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.