change 2nd argument of Pry.view_clip() to accept a Hash of options with two keys: max_length (default 60) and id (default false) the custom prompt proc's in lib/pry.rb clip the object shown to look better visually. this change still supports that behavior but also adds the option to include a hex representation of the object's ID by including id: true. @rf- suggested supporting both (with & without id) to be able to keep printer proc's pretty but also support other code that's okay with printing inspects that are hex-y, like the Pry::CLIPPED_PRINT. also changes Pry::CLIPPED_PRINT to print return values with a hex ID included since it is a bit different from prompt proc's.
before:  pry(main)> Pry.view_clip(_pry_) => "#<Pry>" after:  pry(main)> Pry.view_clip(_pry_) => "#<Pry:7f97e16d7bc8>"
prior to commit both would be loaded but in most cases you'd only use one or the other. when `bond` is available and `_pry_.config.completer` has not been set to nil before the pry session has started & editline is not being used(OSX only), then "pry/bond_completer" is loaded. otherwise the default fallback is Pry::InputCompleter("pry/input_completer")
remove require of "ffi" on jruby.
a long long time ago "ffi" was automatically required by pry on jruby. no one has a clear idea why. it looks like without the require of ffi the tests still pass and pry still boots: $ jruby -S bundle exec pry  pry(main)> require "ffi" => true  pry(main)> $ Pry .... $ jruby -v jruby 1.7.9 (1.9.3p392)
the next version of pry will be 0.10.0 and to make sure plugins are still working it's easier to drop the version requirement so that gems like pry-debugger don't prevent pry from booting and so that pry-remote is not a deactivated gem when pry boots.
pry adds behavior(methods) to the exception it returns at _pry_.last_exception in a repl but when the exception has been passed along as a frozen object ruby will raise an exception and pry fails to function as usual. the commit changes that behavior so that the exception is wrapped in an instance of Pry::LastException who is a subclass of BasicObject. Pry::LastException is a copy&paste of what was defined dynamically in pry_instance.rb but it allows for frozen exceptions to remain frozen and still provides the methods pry dynamically defined on an exception object before. through a wrapper class pry also no longer modifies an exception object that it doesn't own.