Skip to content

Releases: ichinya/laramago

0.1.6

Choose a tag to compare

@ichinya ichinya released this 17 Oct 05:16
d6438a7

Changes since 0.1.5

  • Skip impossible argument shapes before expensive physical-source parsing in the possible-callback-tuple, guarded-local-model-tuple and model-property argument filters. The shortcut can only retain a diagnostic; suppression still requires the existing physical-source and native-metadata proofs. Parenthesized, commented, dynamic and unknown syntax keeps the full proof path.
  • Add handler CPU profiling, reproducible benchmark tooling, parser-based shape controls and public analyzer-depth witnesses.
  • Strengthen benchmark integrity: rediscover the complete source path/hash set after each run, verify full diagnostic multisets, retain malformed-output failures and reject incomplete resume state. Stop elapsed timing immediately after the analyzer exits.

Measured result

On the documented anonymous Laravel workload, three counterbalanced Linux runs reduced median elapsed time from 308.84 s to 236.68 s (23.37%), and median CPU from 539.73 s to 411.24 s (23.81%). All 13,196 complete diagnostic records remained equal, including duplicates. This is local, workload-specific evidence on a shared workstation, not a universal speed claim. The optimized run still took 4.89 times the Larastan level-10 run; their check sets differ.

CPU profile, repeated measurements and limitations

Validation

  • Parser-based syntax oracle: 79 controls.
  • Four focused native suites, including genuine diagnostic removals, complete residual diagnostics, source/SDK mutation and one/three-worker controls. Three suites used a test-only 600,000 ms IPC request deadline after an unmodified local control exceeded 120,000 ms; assertions and production source were unchanged.
  • Fresh native/candidate depth follow-up: 132 marked observations across 33 defect/control pairs, matching the archived matrices. The PHPStan levels 0-10 matrix is an archived reference, not a newly rerun matrix.
  • Cache controls: 10 syntax assertions, 28 query assertions and 62 consumer controls.
  • Benchmark protocol: 13 tests, including five Linux-runner tests with synthetic analyzers.
  • PHP syntax checks and strict Composer manifest validation.

Full composer check and hosted analyzer CI were not run. Failed pilots and the rejected cache-compression experiment are documented and excluded from accepted timing samples; production syntax-cache behavior is unchanged.

Update

composer require --dev ichinya/laramago:^0.1.6

Full comparison from 0.1.5

0.1.5

Choose a tag to compare

@ichinya ichinya released this 15 Oct 08:40
1a96f88

Changes since 0.1.4

  • Add the optional laramago-runtime collector for explicitly selected Eloquent models. Initial support covers file-backed SQLite schema metadata, nullable/STRICT columns, connections, table prefixes and casts. Enable a generated snapshot through --runtime-metadata or LARAMAGO_RUNTIME_METADATA. See runtime schema documentation. (#5)
  • Reject stale configuration sources and malformed or incompatible metadata envelopes. Final revision checks retain native diagnostics when configuration, manifests or selected sources change during analysis. (#4)
  • Remove 70 source lint warnings and 7 help diagnostics without suppressions or relaxed rules. Configure private PHP diagnostics at startup while preserving collector deadlines, exit codes and effective PHP options. (#6)

Runtime collection is opt-in and executes trusted application PHP. Only file-backed SQLite is supported in this release; default analysis does not collect database metadata. Direct CLI relaunch requires a permitted writable temporary directory and, on Windows, the built-in whoami/icacls tools. Details and startup-hook guidance are in the runtime documentation.

Validation

The release commit has exactly the tested source tree: default PHP 8.2 lint on Mago 1.48.1 and 1.55.0 reports no diagnostics across 46 runtime/consumer/CLI files. Acceptance includes 626 validator comparisons, 9 decoder comparisons, 46 boundary controls and 49 collector/native controls on each Mago version, plus installed Composer bin proxy and Windows ACL checks. The collector uses real Laravel 12.69.3 and SQLite fixtures; native analysis uses synthetic framework declarations.

One initial Mago 1.48.1 run exceeded the unchanged 10-second whole-analysis timeout assertion. The isolated timeout control and a fresh full run passed without source or threshold changes; the original failure remains recorded. Full composer check and server databases were not tested. Composer validation and the exact release archive contents were checked before tagging.

Install or update

composer require --dev ichinya/laramago:^0.1.5

Full comparison from 0.1.4

0.0.1

Choose a tag to compare

@ichinya ichinya released this 14 Sep 17:54

Initial release of Laramago: Laravel presets and analyzer support for the native Mago CLI.

Included

  • Composer plugin that creates a Laravel Mago configuration without overwriting existing configuration.
  • Mago ^1.48.1 as a package dependency.
  • Laravel linter and formatter defaults.
  • Native analyzer support for magic Eloquent where, orWhere, whereNot, and orWhereNot calls, preserving model types and argument validation.
  • Reproducible Larastan/Mago comparison tooling.

Installation

The package is not registered on Packagist. Add the GitHub VCS repository:

composer config repositories.laramago vcs https://github.com/ichinya/laramago
composer require --dev ichinya/laramago:0.0.1
vendor/bin/mago lint

Allow the ichinya/laramago Composer plugin when prompted. Existing Mago configurations require the preset and extension-host entries described in the README.

Limitations

Analyzer coverage is intentionally limited in this initial release. Model attributes, relationships, other dynamic methods, and custom query builders are not yet fully supported. Analysis does not require a database or bootstrap Laravel.

Validation

  • Composer validation passed.
  • 14 installer, 7 linter, and 21 analyzer scenarios passed.
  • Native Mago lint and analyze were verified with a copied Composer path installation, a custom vendor directory, and spaces in the project path.
  • Private comparison reports, local dependencies, and composer.lock are excluded from package archives.