Fireside 0.1.0-next.7
Native Storage rules and the owned Functions/Extensions runtime. Published on , as a preview.
Published as @fireside-dev/cli, before Firenook’s rename. About the former name.
A newer release is out: Firenook 0.2.0, the first release for public use.
What changed
The changes, as the release notes give them.
Storage Security Rules are evaluated natively (Phase G).
service firebase.storageruns in the Rust rules engine withfirestore.get()andfirestore.exists(),/internal/setRulesreloads rules on the running suite, and 306 production plus 334 official-emulator oracle steps replay identically. Java and the Storage rules jar left the product: no--javaor--storage-rules-jararguments, no Java check indoctor, andfireside setupfetches only the Emulator UI asset.firebase.jsonmay use the"storage": {"rules": …}object form (one file governs every bucket) and.firebaserctargets are optional. On the consumer's Linux host each rules-evaluated Storage operation is about 1 ms cheaper at p50 than through the Java runtime.Cloud Functions run in Fireside's own runtime (Phase H): a Rust supervisor with one Node worker per codebase (
support/functions-worker.mjs) covering discovery through the pinned SDK control API orfunctions.yaml, HTTP/callable/streaming requests, Firestore, Storage, Auth, Pub/Sub, Eventarc and schedule triggers, blocking Auth functions, dotenv and secret files, reload and the background controls. The corpus recorded from firebase-tools 15.22.0 (5 profiles, 43 programs, 281 steps, 250 handler observations inconformance/fixtures/functions-runtime-v1) replays with every step identical or a listed divergence (89 asserted, each with its reason, in the replay's divergence table).firebase-toolsleft the CLI's dependencies; the suite starts with it absent fromnode_modules.Extensions are resolved and run by Fireside: instances from local paths, vendored
extensions/.sources, the shared firebase-tools cache or the registry, with parameters resolved in the official precedence,${param:X}substitution and the registry's spec/trigger semantics. The registry is contacted with the Firebase CLI's stored login orFIREBASE_TOKENand its objects are cached beside the source, so later starts are offline. The Eventarc port now serves trigger registration,getTriggersandpublishEventson thegoogleand named channels and delivers toonCustomEventPublishedhandlers, Extensions custom events included.New local commands and options:
--inspect-functions[=port](one debugger port per codebase),functions:invoke NAME [--data JSON] [--region] [--method],ext:vendor(copy every resolved extension source into the project and record how unpinned refs resolved),--offlineorFIRESIDE_OFFLINE=1(any remaining registry access is a startup error) and adoctorreport of every extension instance with its source and offline readiness.--minimum-functionsnow defaults to 1, so a plainemulators:startno longer fails the positive-minimum check.
Known limits
What this release was known not to do yet, as its notes recorded it.
- Limitations recorded with this release: Python and Dart runtimes are ignored with a reason; dynamic (in-code) extensions and Secret Manager access are unsupported (
extensions/<instance>.secret.localinstead); the Cloud Tasks port still accepts queue registration only and answers dispatch with HTTP 501; there is nofunctions:shellREPL; the Emulator UI remains Google's 1.15.0 bundle fetched byfireside setup. State written by earlier versions upgrades on first start (CI verifies the upgrade from next.3 native state and the portable rollback). Prerelease onnext; no stable or universal-compatibility claim.
How it was checked
The source it was built from, the runs it passed, and how it was published.
- Pin the engine to
0720434e3de7e0886f129f52a39d5ef2972ce45f, the qualified head of PR #43 (Phases G and H) on the next.6 engine. This exact revision passed the seven-job CI (run 35254102986), the five-platform packed-install matrix without Java, and a representative private consumer's fresh, sequential official-then-Fireside full-data acceptance (two two-hour soaks, browser journeys before and after export/restart, exact stable-state parity, fresh setup on both backends and the regression commands, all with zero errors); seesupport/phase-g-storage-rules.md,support/phase-h-functions-runtime.mdand thereceiptsblocks ofbenchmarks/phase-g-storage-rules.jsonandbenchmarks/phase-h-functions-runtime.json. next.7 carries both phases; no next.7 was published before this one. - Measured in the consumer's Linux acceptance on the same host, seed and workload as next.6, against the official emulator on untuned HotSpot defaults (p50 milliseconds): function delivery 2.6 (next.6 3.2; official 3.8), Storage cycle 8.0 (official 11.6), write commit 3.3 (official 198), listener delivery 9 (official 198), catalogue query 6.4 (official 31.1); emulator peak PSS 1.77 GiB against 19.35 GiB, no swap on either stack. Application readiness was 51.2 s against 49.2 s official because Fireside binds its listeners only after the full-data import and
/backendsis answered after codebase discovery; both are recorded follow-ups.
The latest is 0.2.0
The first release for public use. Install it, and read what changed on the way.
npm install --save-dev firenook@0.2.0