florianv/petrinet
A PHP implementation of Petri nets for modeling and simulating workflows, state machines, and concurrent processes. Define places, transitions, and tokens to represent business logic, then execute markings to track state and control transition firing.
Architecture fit. The package is a Laravel/PHP library consumed via Composer. The only signal in 2.1.0 is "PHP 8 support," which is a runtime-compatibility claim rather than an architectural one. It matters because Laravel 9+ requires PHP 8.0+ and Laravel 10/11 require 8.1+/8.2+, so a package declaring PHP 8 support is now eligible for modern Laravel applications. Without the prior constraint we cannot confirm whether this is additive (7.x and 8.x) or a floor bump (8.x only) — that distinction changes the architectural verdict materially.
Integration feasibility. Superficially straightforward: a minor version bump (2.1.0) implies a non-breaking, opt-in upgrade. The feasibility question is not "can we install it" but "what does the Composer constraint actually say." PHP 8 introduced real behavioral breakage relative to 7.x — removal of curly-brace string/array offsets, stricter internal function type errors, changes to sort/usort stability guarantees, and resource-to-object migrations. A package claiming support must demonstrate it, not just declare it.
Technical risk. Moderate and concentrated in three areas:
composer.json moved to ^8.0, consumers on PHP 7.4 are hard-cut off. Under SemVer that is a breaking change and arguably should have been 3.0.0, not 2.1.0.illuminate/* constraints are a separate axis entirely.Key questions.
illuminate/support and related Laravel version constraints?Stack fit. Strong if the floor is 8.0+ and Laravel constraints permit 9/10/11 — this is the minimum bar for adopting a package in a current-generation Laravel estate. Weak if the library still pins Laravel 8, which would force PHP 7.4 in practice and make the PHP 8 claim largely academic.
Migration path. Two scenarios:
Compatibility. Verify against the actual composer.json, not the changelog. Check require/require-dev PHP constraints, Laravel constraints, and whether the lockfile resolves cleanly in a scratch project on the target PHP minor. Pay attention to transitive dependencies that may still cap at PHP 7 — a common failure mode where the package is ready but its dependency tree is not.
Sequencing. (1) Confirm Composer constraints and CI matrix from the repository. (2) Pilot in a non-production service on the exact PHP minor targeted. (3) Run the consuming application's test suite with deprecations surfaced as errors (E_ALL plus convertDeprecationsToExceptions in PHPUnit). (4) Roll to production. (5) Only after this, evaluate a Laravel major upgrade if applicable.
Maintenance. PHP 8 support is a positive maintenance signal — it suggests an actively maintained project rather than an abandoned one. However, a one-line changelog is itself a mild negative indicator about release hygiene. Confirm commit activity, release cadence, and open-issue responsiveness before treating maintenance posture as established.
Support. The support surface we can claim is narrow: the vendor asserts PHP 8 compatibility. We cannot yet assert which minors, which Laravel versions, or for how long. Establish an internal position on which PHP minors we permit, and treat anything outside the verified CI matrix as unsupported for our purposes regardless of the vendor claim.
Scaling. No performance claims are made in 2.1.0 and none should be inferred. PHP 8's JIT and runtime improvements accrue to the application as a whole; do not attribute them to this package in any capacity planning. Capacity impact of this release is effectively zero.
Failure modes. The realistic risks are quiet rather than loud:
TypeError on edge-case inputs not covered by tests.Ramp-up. Low. The API surface is unchanged in a minor release; the learning cost is limited to the runtime constraint. Budget roughly half a day of engineer time per consuming service for constraint verification, test run with deprecations enabled, and staging validation. The dominant cost is coordination across services on heterogeneous PHP versions, not the package itself.
How can I help you explore Laravel packages today?