Open
Description
This would:
- make supporting virtual environments pretty easy
- make module reloading more reliable (no more not being able to reload some modules, no more having access to the same modules as bpython)
- get rid of the greenlet dependency (requires c compiler) - no more jumping back and forth between of user code and UI code
- make getting threads to work normally easier
- allow a cleaner evented system around a select loop
- make user subprocesses work correctly
- install one version of bpython (python2.6 - 3.4) and bpython works with all python versions
- let bipython reuse more of our code maybe
It would suck because:
- we would have to do all the completion with interprocess communication
- interprocess communication might not be fast enough for the user experience we need - and leads to caching which could get complicated in the best case, and not work in the worst
- Windows compatibility would probably go further out the window
- some code will have to run in the process (import completion, import observer, completion introspection)
- a simple python repl probably isn't enough - we'll still need an InteractiveInterpreter over there
- there are going to be difficulties with version compatibilities - every combination (n by n) of Python versions ought to be tested
- this may involve reading the IPython code and noticing that it's nicer in some ways than ours 😉