This might just be our... BIGGEST. RELEASE. EVER.
Note that PsySH v0.10.0 drops support for PHP < 5.5, and non-LTS HHVM.
Uppppppggggggrraaaaddddeeeee.
New:
- Isolate code in bundled phar releases. This means if you download a pre-packaged PsySH binary, it can't collide with code you have installed locally in your project (Thanks @theofidry!)
- Allow conditional bindings in
.inputrc
and.editrc
(Thanks @tgr!) - Add support for verbosity and interactivity flags ... try
-q
,-v
and-n
(Thanks @aksonnic!) - Several improvements for non-interactive UX:
- Support executing stdin, make it play nice with the rest of non-interactive mode.
- Add support for
--raw-output
(-r
) for printing var_export-style return values with non-interactive input. - Suppress startup messages when running with
--raw-output
and--no-interaction
- Only output bracketed paste control characters when interactive.
- Stop paginating non-interactive and raw output.
- Add support for namespace and use declarations in reflecting commands (
ls
,doc
, etc).
Improved:
- Better
instanceof
checks, catching more fatal errors before they fatal (Thanks @baukevdw!) - Add a check for empty
$array[]
expressions outside of the left-hand side of an assignment. - Add a check for
goto
with an invalid label (Thanks @zonuexe!) - Support passing unpacked arrays by reference.
- Improve output of the
ls
command with constants:- Make
category=internal
andcategory=user
equivalent to--user
and--internal
- Make
category
option case-insensitive - Fix "Interal Constants" typo that's been there basically forever
- Add appropriate-case labels for constant categories (e.g. JSON instead of Json)
- Make
- Suppress inherited private methods when listing methods on a class.
- Prevent shadowing namespace names when they collide with other use statement prefixes.
- Fix function signature formatting for optional array params.
- Warn if libedit refuses to write history file. Because apparently it does that sometimes.
- Clearer error message when
mkdir
fails while setting up PsySH (Thanks @GrahamCampbell!) - Test against PHP 7.3 and 7.4 on CI (Thanks @andreybolonin, @alexeyshockov, and @GrahamCampbell!)
- Add support for Symfony 5 (Thanks @Taluu!)
- Fix Symfony 4.1 table deprecation notices.
- Fix some PHP 7.4 deprecations in the PsySH codebase (Thanks @ejunker, @Salmatron)
- Fix some longstanding inconsistencies when running under HHVM.
- Make commands
--help
option more lenient. - Use white text instead of black for error messages (Thanks @kristianklok!)
- Don't throw error exceptions for warnings or notices. Log them and continue, just like you'd expect.
- Clean up interactive vs non-interactive mode code.
- More robust detection for pcntl and posix extension support.
- Improve test coverage.
- Code cleanup (Thanks @GrahamCampbell, @carusogabriel and PHPStan!)
- Update docblock copyright years.
- Move PHPUnit and Box to composer bin dependencies.
- Exclude unnecessary files and folders from release archives (Thanks @ankurk91!)
Removed:
- Drop support for PHP 5.4 and non-LTS HHVM. All y'all should join us in the future!
- Remove the
ls
commandlist
alias. Now that PsySH supports arbitrary expressions as arguments forls
, having alist
alias is sometimes ambiguous, for example when using the list keyword with a space before its parenthesis. - The
--version
short flag has changed to-V
, as-v
is now used for verbosity (matching Symfony Console defaults). - Remove deprecated
InterfaceEnumerator
andTraitEnumerator
(which have been unused for several releases). - Put HHVM on life support. Test against the LTS release of HHVM 3. Skip a bunch of known failing tests.