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 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 >= 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 & 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<ResolutionType></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<ResolutionType></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<ResolutionType></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<ResolutionType></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.