PsySH v0.10.0 Release Notes

Release Date: 2020-03-15 // over 1 year ago
  • ๐Ÿš€ 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 and category=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)
    • 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 command list alias. Now that PsySH supports arbitrary expressions as arguments for ls, having a list alias is sometimes ambiguous, for example when using the list keyword with a space before its parenthesis.
    • 0๏ธโƒฃ The --version short flag has changed to -V, as -v is now used for verbosity (matching Symfony Console defaults).
    • โœ‚ Remove deprecated InterfaceEnumerator and TraitEnumerator (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.