Releases: greenarmor/bamboo
v1.2.3 “Stand” – Some changes: 1. Isolate RequestContext per coroutine and 2. Make outbound HTTP truly non-blocking
To go straight to the main goal (creating a truly fast and asynchronous PHP ) some changes have been applied:
1. Isolate RequestContext per coroutine
-
Added a coroutine-aware RequestContextScope service that persists request metadata in the current coroutine while providing a synchronous fallback.
-
Registered the scope in the application container, seeding it for each request, and updated the logging processor to pull request details from the coroutine-local scope.
-
Updated HTTP middleware to read and write request metadata through the new scope and refreshed tests to validate scope-based context resolution.
Commit 9177a48
2. Make outbound HTTP truly non-blocking -
Enabled OpenSwoole coroutine hooks at the start of the HTTP server bootstrap to keep blocking I/O cooperative within workers.
-
Applied the same coroutine hook guard in the Bamboo CLI launcher and HTTP benchmark harness so command-line workflows benefit from cooperative scheduling.
-
Documented the requirement to keep coroutine hooks enabled in the HTTP client configuration guide for deployers.
Commit 2b3cfa5
v1.2.2 “Stand” – Fixes 1. Html embedding into the controller and 2. ResolveDescriptor logic is duplication across two controllers
v1.2.2 “Stand” – Fixes
- The inline landing page markup in Home::index confirms the reviewer: @giangvincent's concern about HTML embedded in the controller.
Commit d042df9 - The resolveDescriptor logic is duplicated across two controllers, matching the comment about duplicate methods.
Commit bac7e36
Thanks to @giangvincent
v1.2.1 "Stand" amend the packlist release
Added /mkdocs.yml and /site to the export-ignore list so MkDocs configuration and build output are excluded from release archives. and include the .env.example to be in release pack
v1.2.0 "Stand" - Added a TemplateEngineInterface, TemplateEngineManager
Added a TemplateEngineInterface, TemplateEngineManager, and default ComponentTemplateEngine to enable pluggable rendering drivers for Bamboo’s landing experience.
Updated LandingPageContent to resolve HTML through the configured engine and introduced etc/view.php plus container bindings so applications can select custom view drivers in configuration.
Documented the new view schema, strengthened validation and tests for engine overrides, and described the pluggable layer in the README.
v1.1.0
What's Changed
- Add JWT authentication to CLI toolkit by @greenarmor in #2
New Contributors
- @greenarmor made their first contribution in #2
Full Changelog: v1.0.0...v1.1.0
v1.0.0 “Stand” (stable core)
Bamboo v1.0.0 Release Summary
Bamboo 1.0.0 graduates into a lightweight, OpenSwoole-powered PHP microframework that keeps an Express-style developer experience while locking in the contracts needed for long-lived services.
Runtime and Framework Foundation
-
Ships an OpenSwoole application core with:
- Dependency injection
- Route caching
- Module bootstrapping
- Optional Eloquent support
-
All pre-wired by bootstrap scripts that validate configuration and register default providers before the HTTP server comes online.
-
The default HTTP surface includes:
- Landing content
/metrics,/healthz,/readyz- A concurrency demo that fans out to httpbin
- Redis-backed job enqueue endpoint to showcase core capabilities out of the box
Resilience and Observability
-
Global middleware standardises:
- Request IDs
- End-to-end HTTP metrics
- Circuit breaker enforcement
- Timeout handling
-
Configuration knobs for global and per-route policies baked into the new resilience config file.
-
Metrics provider exposes Prometheus counters, gauges, and histograms, with storage backends:
- Swoole-table
- APCu
- In-memory
-
HTTP & circuit-breaker metric classes register instruments and bucket layouts.
-
Resilience provider binds shared health state and circuit-breaker registries.
-
Controllers serve:
- JSON health checks
- Prometheus text metrics
- Graceful fallbacks when dependencies are unavailable
Async Client and Integration Tooling
-
PSR-18 client wrapper provides:
- Concurrent fan-out via OpenSwoole wait groups
- Automatic sequential fallbacks (with warnings if extension missing)
- JSON error wrapping
- Default headers
- Configurable retry/backoff policies
-
Application provider:
- Attaches request-context metadata to Monolog records
- Exposes a Predis factory
- Binds the HTTP client facade
-
Sample routes exercise bindings for:
- Concurrent upstream calls
- Queue writes
Operations and Developer Experience
-
CLI kernel now freezes the dot-notation command catalogue, covering:
- HTTP serving
- Route inspection and caching
- Cache purges
- Key generation
- Redis work queues
- WebSockets
- Client probes
- Config validation
- Scheduling
- Dev watch
- Package introspection
-
config.validatewraps the formal configuration validator, enforcing schema rules across:- Server
- Cache
- Redis
- HTTP client
- App secrets
- Metrics
- Resilience settings
-
Operational helpers:
- Redis BLPOP worker with
--once/--max-jobssafety rails - Inotify/Symfony Finder–backed dev watcher (supervises HTTP process with debounce, signal handling, and restart logic)
- WebSocket echo server for quick smoke tests
- Redis BLPOP worker with
Documentation, Starters, and Quality Tooling
-
v1.0 documentation freeze includes:
- Complete references for CLI, router, module lifecycle, configuration schema
- Upgrade guidance
- Performance benchmarking
- Starter blueprints
- Standard quick-start workflow
-
Official Composer starters:
- REST APIs
- Queue workers
- WebSocket gateways
-
Release engineering:
- Reproducible HTTP benchmark harness
- Documented workflows for composer, lint, static analysis, test, and CI
- PHP 8.2–8.4 support
- Contracts locked post-1.0