's readline (libreadline) is used ubiquitous
ly in many programs to provide input
line editing and history
. The most popular example would probably be bash
which uses readline to handle keyboard
input. Many language
s provide binding
s to use readline natively, and it's dead-simple to use in any language.
4.4BSD editline(3)/libedit should probably be used in most cases instead, as it has a bit nicer API, cleaner code, and less restrictive license, but many people tend to prefer GNU stuff just because it's GNU.