Internally, IronPython has two implementations of the console: BasicConsole and SuperConsole. The BasicConsole is very simple with no extras, while the SuperConsole has line history and tab completion added. Prior to 2.7.3, the BasicConsole was the default, but starting with 2.7.3 the SuperConsole is the default.

The main reason for this is the difference between Windows and Unix systems: on Windows the console provides line history for every application, while on Unix each program has to implement it for itself. In practice, Unix apps use something like GNU readline to implement it, but IronPython can’t use a native library.

I was all set to write the history code when I discovered that the SuperConsole already had it! It also has tab completion, which the default CPython shell lacks (although the brilliant IPython does have it). Once you get used to having tab completion in the shell, it’s really hard to go back.

The SuperConsole has been tested on multiple platforms and seems to work just fine, but if you have any issues you can switch back to the BasicConsole by passing -X:BasicConsole to ipy.exe. Also, please create an issue if you have any difficulty with the new console.