Project

General

Profile

Actions

Bug #9204

closed

Issues when compiled with libedit instead of readline

Added by noniq (Stefan Daschek) over 10 years ago. Updated about 9 years ago.

Status:
Third Party's Issue
Assignee:
-
Target version:
-
ruby -v:
ruby 2.1.0dev (2013-11-23 trunk 43807) [x86_64-darwin13.0
[ruby-core:58832]

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?

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

  • Status changed from Open to Third Party's Issue

It's your choice.

Updated by noniq (Stefan Daschek) over 10 years 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

Updated by bapt (Baptiste Daroussin) about 9 years 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

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0