I fetched the release notes for FirebirdSQL/php-firebird and made a concise summary of the user-visible changes and upgrade impact for versions from PHP Firebird 5.0.2 up through 6.1.1-RC.2.
I retrieved the release entries for 5.0.2, 6.1.1-RC.0, 6.1.1-RC.1 and 6.1.1-RC.2 and distilled the highlights and upgrade impact into a short, actionable summary below.
Summary of changes (5.0.2 → 6.1.1-RC.2)
- PHP Firebird 5.0.2 (published 2025-04-24)
- Implemented INT128 support; values converted to string in PHP (PHP has no native 128-bit integer).
- Removed trailing whitespaces on CHAR data types.
- Added Windows installation requirement notes.
- Impact: INT128 columns will appear as strings — check code that expects numeric types.
- PHP Firebird 6.1.1-RC.0 (published 2025-11-05)
- Added IBASE_LOCK_TIMEOUT transaction option.
- Added support for Firebird 4/5 types: INT128, DECFLOAT, TIME WITH TIMEZONE, TIMESTAMP WITH TIMEZONE.
- New INI options:
- ibase.default_trans_params (e.g., IBASE_READ | IBASE_NOWAIT)
- ibase.default_lock_timeout (seconds; used together with IBASE_LOCK_TIMEOUT)
- Support for long metadata (long table/field names).
- Introduced IBASE_VER constant.
- Various optimizations and bug fixes.
- Note: Firebird 4/5 features require fbclient 4/5 dynamic library available in PATH.
- Impact: to use the new types/features, ensure fbclient is updated and on PATH; consider configuring the new INI options for default transaction behavior.
- PHP Firebird 6.1.1-RC.1 (published 2025-11-06)
- New function: ibase_get_client_version().
- Build/runtime change: no compile-time dependency on fb_get_master_interface() and fb_get_statement_interface(); the extension now checks for these interfaces dynamically in the fbclient library.
- A number of smaller fixes.
- Impact: improved compatibility with varying fbclient builds; you can query client version from PHP.
- PHP Firebird 6.1.1-RC.2 (published 2025-11-10)
- New functions: ibase_get_client_major_version(), ibase_get_client_minor_version().
- Addressed multiple issues (referenced as #22, #78, #88, #91, #92, #95, #96 in release notes).
- Possible breaking changes called out:
- ibase_close() now closes the connection immediately instead of decreasing a reference count (see issue #22). Impact: code relying on previous refcount-based behavior may see connections closed sooner.
- Fetching TIME fields with the IBASE_UNIXTIME flag now returns time as a string instead of negative values. Impact: code expecting numeric/negative values should be updated to handle string results.
- Impact: review uses of ibase_close() and any code relying on previous reference-count semantics; update time-handling code that uses IBASE_UNIXTIME.
Upgrade checklist / recommendations
- Test your application against the new release candidates before deploying to production — RC releases are marked prerelease and the maintainers asked for thorough testing.
- If you rely on Firebird 4/5 types (INT128, DECFLOAT, timezone-aware TIME/TIMESTAMP), make sure the corresponding fbclient 4/5 library is installed and found via PATH on your system.
- Audit code that:
- Expects INT128 as numeric — now strings.
- Uses ibase_close() expecting refcounted behavior — adapt to immediate close semantics.
- Fetches TIME values with IBASE_UNIXTIME — expect strings now; update parsing logic.
- Consider setting or reviewing the new INI options:
- ibase.default_trans_params
- ibase.default_lock_timeout
- Use the new client-version functions (ibase_get_client_version(), ibase_get_client_major_version(), ibase_get_client_minor_version()) for runtime checks to adapt behavior based on client capabilities.
- Run full test-suite / integration tests focusing on transactions, lock timeouts, date/time handling, and any code interacting with long metadata names.
Here is a one-page compatibility guide you can share with your team listing code snippets to change (e.g., ibase_close migration notes, TIME parsing examples).