Skip to content

Releases: Thavarshan/matrix

v3.1.0

20 Dec 20:23
Compare
Choose a tag to compare

Added

  • Enhanced async() and await() Functions:
    • Automatically manage the ReactPHP event loop, removing the need for manual getLoop()->run() calls in most scenarios.
    • Added improved handling of promise resolution and rejection, ensuring consistent results in asynchronous workflows.

Changed

  • Simplified Code Structure:
    • Removed reliance on pcntl_fork() for child process management, enabling better compatibility with web server environments.
    • Improved API consistency for seamless integration in both CLI and web-based applications.
  • Deprecated Fork-Based Concurrency:
    • Eliminated the usage of pcntl_fork() to support non-blocking asynchronous operations without requiring process forking.
    • Streamlined error handling and promise lifecycle management by adopting a purely ReactPHP-based approach.

Fixed

  • Web Compatibility:
    • Resolved issues that previously caused incompatibility with multi-threaded web server configurations like Apache's Worker MPM.
    • Ensured that asynchronous tasks can now execute reliably in web contexts.

v3.0.1

18 Dec 14:08
b3c42da
Compare
Choose a tag to compare

Changed

  • Refactored catch method in AsyncPromise class to use React PHP's catch method instead of otherwise method as it is deprecated.

v3.0.0

16 Dec 18:36
6b63128
Compare
Choose a tag to compare

Added

  • async() Helper: Introduce a global async() function that starts an asynchronous task in a child process and returns an AsyncPromise, simplifying async task initialization.
  • AsyncProcessManager: New class responsible for forking child processes, running callables, and returning results via ReactPHP promises. Enables true parallel execution of tasks.
  • AsyncPromise: A promise-like wrapper around ReactPHP promises, providing a JavaScript-inspired .then() and .catch() API for handling asynchronous results and errors.
  • Non-blocking Event Loop Integration: Leverages ReactPHP’s event loop to ensure the parent process never blocks, improving concurrency and throughput.

Changed

  • Concurrency Model: Replaced the previous Fiber-based approach with a pcntl_fork() and event-loop-driven model, allowing tasks to run in fully parallel child processes rather than cooperatively within a single process.
  • API Simplification: Removed complex Fiber management and lifecycle control in favor of a simpler, promise-based API that closely resembles JavaScript promises.
  • Error Handling: Exceptions are now serialized in child processes and rethrown in the parent, streamlining error handling and eliminating Fiber-based error propagation.
  • User Experience: The entire asynchronous execution flow now relies on async() and AsyncPromise for a more intuitive and familiar development experience, reducing the mental overhead of previous Fiber lifecycle methods.

Fixed

  • Blocking Behavior: Previous code using Fibers sometimes led to partial blocking or complicated flow control. The new process-based approach ensures truly non-blocking behavior, improving application responsiveness.
  • Complex Error Traces: With Fibers, debugging could be cumbersome. Now, error messages, file, line, and stack traces are cleanly serialized by the child and rethrown in the parent, simplifying debugging.
  • Limited Concurrency: The old Fiber system provided concurrency but not true parallelism. By using separate child processes, we’ve fixed previous limitations and enabled multiple tasks to genuinely run at the same time.

v2.0.0

06 Dec 05:01
Compare
Choose a tag to compare

Added

  • Support fopr PHP 8.4 and PHP 8.3 (#2)

Changed

  • Updated dev dependencies

Changed

  • Dropped support for PHP 8.2

Full Changelog: 1.0.1...2.0.0

v1.0.1

19 Oct 02:57
Compare
Choose a tag to compare

Added

  • Laravel Pint for code style linting and formating

Changed

  • Update code styling for less strinc Laravel styles
  • Update dependencies (testing/mocking)

v1.0.0

29 Sep 19:58
Compare
Choose a tag to compare

Initial release.