Bug #9204

Issues when compiled with libedit instead of readline

Added by Stefan Daschek over 1 year ago. Updated 4 months ago.

[ruby-core:58832]
Status:Third Party's Issue
Priority:Normal
Assignee:-
ruby -v:ruby 2.1.0dev (2013-11-23 trunk 43807) [x86_64-darwin13.0 Backport:1.9.3: UNKNOWN, 2.0.0: UNKNOWN

Description

Compiling Ruby on Mac OS X uses BSD libedit instead of GNU readline, leading to various problems. Most notably: With libedit it’s not possible to input accented characters (e.g. ÄÖÜ) in irb or pry:

$ irb # Ruby 2.1.0-preview2
irb(main):001:0> "a \U+FFC3\U+FFA4" # typing 'a ä' results in this weird escape sequence
=> "a "

This issue has already been mentioned on ruby-core in 2009, but with no apparent result: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/21259

This shows up quite often, usually it’s suggested to manually install GNU readline before compiling Ruby (and making sure readline is actually found and used when configuring / compiling):

https://github.com/guard/guard/wiki/Add-Readline-support-to-Ruby-on-Mac-OS-X
https://github.com/wayneeseguin/rvm/issues/1016
http://jorgebernal.info/2009/11/18/fixing-snow-leopard-ruby-readline/

Maybe Ruby could bundle readline to avoid this kind of issues?

History

#1 Updated by Nobuyoshi Nakada over 1 year ago

  • Status changed from Open to Third Party's Issue

It's your choice.

#2 Updated by Stefan Daschek over 1 year ago

Indeed, but unfortunately it’s a badly documented choice with rather surprising consequences: Compiling Ruby works seemingly without any problems, and you may use Ruby for several days or even months before noticing the issue. And then it’s quite hard to find out that this has something todo with the way you initially compiled Ruby.

Could there at least be a big warning when compiling with libedit, saying something like “Warning: This build uses libedit instead of readline. You will not be able to use accented characters in irb.“? Dave Thomas already suggested this back in 2009: http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/21277

#3 Updated by Baptiste Daroussin 4 months ago

Please note that on FreeBSD I managed to fix the issue

Basically I added to the latest libedit a couple of patches:
https://svnweb.freebsd.org/ports/head/devel/libedit/files/patch-src_eln.c?view=markup

I have also had to remove the following line from the ext/readline/extconf.rb in ruby:
readline.have_func("rl_getc_function")

The env should be set to support UTF-8

Also available in: Atom PDF