ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
From: radek.bulat@gmail.com
To: ruby-core@ruby-lang.org
Subject: [ruby-core:102488] [Ruby master Bug#17629] macOS, readline compiled with libedit: adding entries to history doesn't work unless Readline.readline is called before populating it
Date: Sun, 14 Feb 2021 14:56:03 +0000 (UTC)	[thread overview]
Message-ID: <redmine.journal-90382.20210214145602.69@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-17629.20210214132928.69@ruby-lang.org

Issue #17629 has been updated by radarek (Radosław Bułat).

File Dockerfile added

I added `Dockerfile` with instruction to build ruby with libedit library to reproduce this bug more easier.

```
docker docker build -t readline-bug . # run inside directory with Dockerfile and bug.rb files
```

To reproduce bug:

```
docker run --rm -it -v $PWD:/app readline-bug /opt/bin/ruby /app/bug.rb
docker run --rm -it -v $PWD:/app -e WORKAROUND=1 readline-bug /opt/bin/ruby /app/bug.rb
```

----------------------------------------
Bug #17629: macOS, readline compiled with libedit: adding entries to history doesn't work unless Readline.readline is called before populating it
https://bugs.ruby-lang.org/issues/17629#change-90382

* Author: radarek (Radosław Bułat)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.1.0dev (2021-02-13T02:51:33Z master 813fe4c256) [arm64-darwin20]
* Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN
----------------------------------------
**Description**

If Ruby's readline extension is linked with libedit library and readline history is populated before `Readline.readline` method is called then items are not available via history navigation mechanism (`up/down` arrows).

**How to reproduce**

**bug.rb** (also attached to this issue)
``` ruby
require 'readline'

# calling below code before populating history will make it work
Readline.readline('press enter to continue', false) if ENV['WORKAROUND'] == '1'

Readline::HISTORY << 'Line1'
puts "History: #{Readline::HISTORY.to_a}"
Readline.readline('> ', true)
```

```
$ ~/opt/ruby/bin/ruby -v bug.rb
ruby 3.1.0dev (2021-02-13T02:51:33Z master 813fe4c256) [arm64-darwin20]
History: ["Line1"]
> # pressing up arrow doesn't show entries from history

$ WORKAROUND=1 ~/opt/ruby/bin/ruby -v bug.rb
ruby 3.1.0dev (2021-02-13T02:51:33Z master 813fe4c256) [arm64-darwin20]
press enter to continue
History: ["Line1"]
> Line1 # up arrow was pressed here and entry from history was shown up
```

Bug affects for example `pry` gem (history doesn't work).

**My setup**

```
macOS 11.2.1 Big Sur
architecture: arm64 (apple M1 processor)
ruby -v: ruby 3.1.0dev (2021-02-13T02:51:33Z master 813fe4c256) [arm64-darwin20]

readline extension linkage:
otool -L /Users/radarek/opt/ruby/lib/ruby/3.1.0/arm64-darwin20/readline.bundle
/Users/radarek/opt/ruby/lib/ruby/3.1.0/arm64-darwin20/readline.bundle:
	/usr/lib/libedit.3.dylib (compatibility version 2.0.0, current version 3.0.0)
	/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.60.1)
```

---Files--------------------------------
bug.rb (271 Bytes)
Dockerfile (340 Bytes)


-- 
https://bugs.ruby-lang.org/

  reply	other threads:[~2021-02-14 14:56 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-14 13:29 [ruby-core:102487] [Ruby master Bug#17629] macOS, readline compiled with libedit: adding entries to history doesn't work unless Readline.readline is called before populating it radek.bulat
2021-02-14 14:56 ` radek.bulat [this message]
2021-09-28 23:23 ` [ruby-core:105476] " radarek
2021-09-29  2:26 ` [ruby-core:105481] " nobu (Nobuyoshi Nakada)
2022-01-29 19:30 ` [ruby-core:107348] " radarek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.ruby-lang.org/en/community/mailing-lists/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=redmine.journal-90382.20210214145602.69@ruby-lang.org \
    --to=ruby-core@ruby-lang.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).