Skip to content

irb seems to be having output buffering issues on Windows. #9126

@YO4

Description

@YO4

Environment Information

Provide at least:

>c:\jruby-10.0.2.0\bin\jruby -v
jruby 10.0.2.0 (3.4.2) 2025-08-07 cba6031bd0 OpenJDK 64-Bit Server VM 25.0.1+8-LTS on 25.0.1+8-LTS +indy +jit [x86_64-mswin32]

>ver
Microsoft Windows [Version 10.0.26100.7171]

using irb on windows, nothing is wrote to console when reline interaction, and at last irb dumps whole output when exitting.
This shows output after starting irb and entering RUBY_PLATFORM and ctrl+D.

M:\>c:\jruby-10.0.2.0\bin\irb.bat
WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::load has been called by com.kenai.jffi.internal.StubLoader in an unnamed module
WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled

=> "java"

▽�[0mirb(main):001> �[0m�[0mR�[0m�[0m�[0m�[97;100mRDoc               �[0m�[37;100m█�[0m�[0m�[0m�[97;100mRELEASE_DATE       �[0m�[37;100m█�[0m�[0m�[0m�[97;100mRUBY_COPYRIGHT     �[0m�[37;100m█�[0m�[0m�[0m�[97;100mRUBY_DESCRIPTION   �[0m�[37;100m█�[0m�[0m�[0m�[97;100mRUBY_ENGINE        �[0m�[37;100m█�[0m�[0m�[0m�[97;100mRUBY_ENGINE_VERSION�[0m�[37;100m█�[0m�[0m�[0m�[97;100mRUBY_PATCHLEVEL    �[0m�[37;100m█�[0m�[0m�[0m�[97;100mRUBY_PLATFORM      �[0m�[37;100m█�[0m�[0m�[0m�[97;100mRUBY_RELEASE_DATE  �[0m�[37;100m█�[0m�[0m�[0m�[97;100mRUBY_REVISION      �[0m�[37;100m▀�[0m�[0m�[0m�[97;100mRUBY_VERSION       �[0m�[37;100m �[0m�[0m�[0m�[97;100mRandom             �[0m�[37;100m �[0m�[0m�[0m�[97;100mRange              �[0m�[37;100m �[0m�[0m�[0m�[97;100mRangeError         �[0m�[37;100m �[0m�[0m�[0m�[97;100mRational           �[0m�[37;100m �[0m�[0mRU�[0m�[0m�[0m�[97;100mRUBY_COPYRIGHT     �[0m�[0m�[0m�[97;100mRUBY_DESCRIPTION   �[0m�[0m�[0m�[97;100mRUBY_ENGINE        �[0m�[0m�[0m�[97;100mRUBY_ENGINE_VERSION�[0m�[0m�[0m�[97;100mRUBY_PATCHLEVEL    �[0m�[0m�[0m�[97;100mRUBY_PLATFORM      �[0m�[0m�[0m�[97;100mRUBY_RELEASE_DATE  �[0m�[0m�[0m�[97;100mRUBY_REVISION      �[0m�[0m�[0m�[97;100mRUBY_VERSION       �[0m�[0mRUB�[0m�[0mRUBY�[0m�[0mRUBY_�[0m�[0mRUBY_P�[0m�[0m�[0m�[97;100mRUBY_PATCHLEVEL�[0m�[0m�[0m�[97;100mRUBY_PLATFORM  �[0m�[0mRUBY_PL�[0m�[0m�[0m�[97;100mRUBY_PLATFORM�[0m�[0mRUBY_PLA�[0m�[0mRUBY_PLAT�[0m�[0mRUBY_PLATF�[0m�[0mRUBY_PLATFO�[0m�[0mRUBY_PLATFOR�[0m�[0mRUBY_PLATFORM�[0mirb(main):001> RUBY_PLATFORM
�[0mirb(main):002> �[0mirb(main):002>

I think this can be resolved by inserting @output.flush before calling the Windows console API.

I remember there were no issues with JRE 8 (with JRuby 9?). But I am not familiar with the changes made to the JVM and JRuby up to this point.
Are the changes in the reline reasonable?
Also, when making changes in reline, should I submit the PR to jruby or reline?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions