Skip to content

Releases: bobthecow/psysh

PsySH v0.10.9

10 Oct 13:40
Compare
Choose a tag to compare
  • Various code style fixes (Thanks @GrahamCampbell!)
  • Fix checking pass-by-reference with array fetch.
  • Distinctly style integer and float number types (Thanks @1ma!)
  • Test against PHP 8.1, minor fixes so tests pass.
  • Update HHVM CI environment, which unfortunately required us to drop testing for all but one HHVM version.

Note that PsySH v0.11.x will remove support for PHP 5.x and HHVM. That means this is quite likely the last release for either of those.

PsySH v0.10.8

10 Apr 16:27
Compare
Choose a tag to compare
  • Add support for accessing private properties and consts from parent classes via sudo.
  • Make psy\info() more resilient when extending Psy\Shell rather than using it directly.
  • Set $__file and $__dir magic variables after calling show $path.
  • Clean up path configuration, make it testable.
  • Add more smoketests to the phar build.

Note that v0.10.8 officially removes support for PHP 5.5 in the pre-built phars. They've been broken in PHP 5.5 since v0.10.0 a year ago, due to an incompatibility in the library we use to isolate code, so this is mostly about messaging that incompatibility.

Users who need to use PsySH under PHP 5.5 can continue to install via Composer, or download pre-built phars from v0.9.x.

PsySH v0.10.7

14 Mar 02:18
Compare
Choose a tag to compare

New:

  • Add a --yolo mode for running PsySH without input validation. Most of the time you don't want this, but now it's there as an escape hatch.

Improved:

  • Extend runkit reloading support to runkit7 (limited to versions below 4.0.0a1, unfortunately) (Thanks @maxime-aknin!)
  • Fix non-nullable internal function deprecation notice in PHP 8.1 (Thanks @Ayesh!)
  • Fix namespace alias resolution in reflecting commands. Class aliases used to work, but aliasing a namespace and referencing a class inside that namespace would fail.
  • Support aliases in reflecting commands when a namespace is set. Previously, commands like list would support either class name aliases or setting a current namespace, but not both. why_not_both.gif
  • Fix eval(psy\sh()) calls from non-class contexts in PHP >8.0.
  • Updated StyleCI config (Thanks @GrahamCampbell!)

PsySH v0.10.6

18 Jan 16:03
Compare
Choose a tag to compare
  • Suppress exit message in non-interactive mode.
  • Exclude BreakException from user exception treatment.
  • Don't enforce uniqueness for anonymous class names (since they're all null).
  • Add smoketests to the phar build.
  • Bring back CI tests for HHVM (Thanks @GrahamCampbell!)

PsySH v0.10.5

04 Dec 02:54
Compare
Choose a tag to compare

New:

  • PsySH + PHP 8.0 == <3
    • Better function signature rendering in PHP 8.0.
    • Support rendering union types in PHP 8.0.
    • Add return types to function signatures when available.
    • Fix tab completion for namespaced classes in PHP 8.0.
    • Get all tests passing in PHP 8.0!
  • All-new CI setup, improved testing:
    • Move testing and releases from Travis to GitHub Actions (Thanks for all the help on this, @GrahamCampbell!)
    • Update a ton of tests to work on the latest PHPUnit.
    • Test PHP 8.0 on CI.
    • Drop CI tests for HHVM. It doesn't play nice with Composer 2 :-/

Improved:

  • Improve pre-built phar version strings (to make reporting bugs easier!)
  • Fix unintentional slash normalization when printing exception messages
  • Fix instanceof check in PHP 7.3+
  • Make error messages for read-only temp dirs more clear (Thanks @shapito27)
  • Fix error when HOMEDRIVE is undefined on Windows (Thanks @emargareten!)
  • Fix class existence validation in the unexecuted half of ternaries.
  • Use catchable errors for new, class constant fetch, and static calls with non-existant classes in PHP 7+, rather than preventing them entirely.
  • Write code executed to stderr when running with --debug verbosity.
  • Better bracketed paste support detection.
  • Prevent fatal errors on isset() calls.
  • Load user-defined includes using include_once. Prevents issues when multiple interactive sessions happen in the same request (Thanks @Aryess!)
  • Use a less-strict shell history signature check. Fixes issues with some Libedit-based readline libraries.
  • Fix requiring local files when running from a pre-built phar.
  • Code style updates (Thanks @GrahamCampbell!)
  • Even more code style updates!

PsySH v0.10.4

03 May 19:44
Compare
Choose a tag to compare

New:

  • Print exception traces when running --verbose or higher.
  • Add an --all option to the doc command for showing inherited docs.
  • Include class signatures when using doc on class methods or properties.
  • Add graceful handling for invalid return types.
  • Add a notice when globally-installed PsySH defers to a local dependency.

Improved:

  • Fix doc rendering when docblock description is missing (Thanks @GrahamCampbell!)
  • More clear error messages when config files are invalid.
  • Fix STDIN input detection when running the cli-server SAPI.
  • Remove unhelpful deprecation warning in throw-up command.
  • Remove getenv and putenv calls in favor of direct $_SERVER superglobal access.

PsySH v0.10.3

07 Apr 06:54
Compare
Choose a tag to compare

This one's almost too big for a point release!

New:

  • New command line options:
    • --interactive and --no-interactive, to explicitly enable or disable interactive mode.
    • --verbose, --quiet and -v/-vv/-vvv for output verbosity. This one kind of worked before, but only sometimes, and only kind of :)
    • ... and a bunch of aliases, for those familiar with Symfony, Composer and other tools.
  • New and improved command line option handling, making it easier for libraries that wrap PsySH to support the same options as psysh does!
  • New configuration options:
    • verbosity, equivalent to the -v, -vv, -vvv and --silent command line options.
    • interactiveMode, equivalent to --interactive and --no-interactive command line options.
    • formatterStyles, for overriding command line colors.
  • Default to non-interactive mode when input is coming from a pipe.
  • Cleaner output when using --raw-output, or STDOUT is redirected.
  • Exceptions and errors are now written to STDERR not STDOUT, which makes it easier to split them off from desired output.
  • Brand new shiny code formatter. It's more consistent between different commands, the colors match class and method signatures in ls and elsewhere, the line numbers are the same style and colors as in history, etc.
  • Tab completion for interfaces, as well as classes (Thanks @GrahamCampbell!)
  • The ls command can now list namespaces! This means, for example, that ls --classes Psy will return all known classes inside the Psy namespace. This works for constants, functions, interfaces and traits as well.
  • The show command now shows files! Try show __DIR__ . '/vendor/autoload.php'. This is super handy when combined with the $__file magic variable set by ls and doc :)

Improved:

  • Support redisplay in HOA/Console readline (Thanks @zonuexe!)
  • The show command now includes doc comments for classes, interfaces, traits, functions and methods.
  • The whereami command now has a --file option for showing the entire file.
  • Set the PsySH process title without the proctitle extension.
  • Fix an issue with pre-packaged phar releases which added a couple of unnecessary functions to the global namespace.
  • Fix a bug parsing single-line docblocks for the doc command.
  • Fix a small bug parsing code in sudo, parse and throwup commands.
  • A bunch of housekeepking and general cleanup (Thanks @GrahamCampbell!)
  • Modernize some code.

PsySH v0.10.2

21 Mar 07:00
Compare
Choose a tag to compare
  • Work around bug with code isolation in pre-packaged phars.

(Skipping v0.10.1, which was supposed to fix this but didn't)

PsySH v0.10.0

15 Mar 22:57
Compare
Choose a tag to compare

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.
  • 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.

PsySH v0.9.12

06 Dec 14:33
Compare
Choose a tag to compare
  • Update XdgBaseDir dependency to v0.1.*