This is an archive of the discontinued LLVM Phabricator instance.

[lldb] Remove pydoc import during script interpreter init
ClosedPublic

Authored by kastiglione on Feb 15 2023, 2:09 PM.

Details

Summary

The Python script interpreter imports pydoc during initialization, but this can be
slow in some cases, and doesn't seem to be necessary any more.

This can be slow because pydoc may execute shell commands (for example xcrun on
macOS). The shell commands may have variable performance, depending on their caches and
search space.

The 2012 bug report for the original commit (f71a8399997bfdc1ddeeb30c6a8897554a11c382)
says the following:

"script help" in lldb pipes the help documentation through less(1) but there's some
problem with the key handling and often the keys you'd use to move in less (space to
move down a page, 'q' to quit) are not received by less (they're going to lldb
instead)

This was resolved at the time by overriding pydoc's pager to be the plainpager
function.

I have manually tested script help(lldb.SBDebugger) and found no issues with the
pager, including using "space" for paging, "/" for searching, and "q" for quitting.

The presumption is that lldb and/or Python have improved I/O handling that eliminates
the original problem.

The original bug report gave an ~/.lldbinit workaround:

script import pydoc; pydoc.pager = pydoc.plainpager

Note that calling Python's help() will import pydoc, but this will only happen for
users who use help() from the script command.

rdar://105015455

Diff Detail

Event Timeline

kastiglione created this revision.Feb 15 2023, 2:09 PM
Herald added a project: Restricted Project. · View Herald TranscriptFeb 15 2023, 2:10 PM
kastiglione requested review of this revision.Feb 15 2023, 2:10 PM
Herald added a project: Restricted Project. · View Herald TranscriptFeb 15 2023, 2:10 PM
aprantl accepted this revision.Feb 15 2023, 2:13 PM
This revision is now accepted and ready to land.Feb 15 2023, 2:13 PM
kastiglione edited the summary of this revision. (Show Details)Feb 15 2023, 2:17 PM
mib accepted this revision.Feb 15 2023, 2:23 PM