1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
The Ruby Programming Language [mirror]
Find a file
aycabta 0057fe4063
Ruby 2.7 backport about IRB (#2990)
* [ruby/reline] Sort completion list

#### Legacy mode:

  ```console
  $ irb --legacy
  irb(main):001:0> l[TAB][TAB]
  lambda           load             local_variables  loop
  ```

#### Before this patch:

  ```console
  $ irb
  irb(main):001:0> l[TAB][TAB]
  local_variables
  loop
  lambda
  load
  ```

#### After this patch:

  ```console
  $ irb
  irb(main):001:0> l[TAB][TAB]
  lambda
  load
  local_variables
  loop
  ```

6074069c7d

* Drop an invalid char as UTF-8

* Add test_completion_with_indent_and_completer_quote_characters

This is for 8a705245e5.

* [ruby/irb] Add tests for RubyLex

The set_auto_indent method calculates the correct number of spaces for
indenting a line. We think there might be a few bugs in this method so
we are testing the current functionality to make sure nothing breaks
when we address those bugs.

Example test failure:

```
  1) Failure:
TestIRB::TestRubyLex#test_auto_indent [/Users/Ben/Projects/irb/test/irb/test_ruby_lex.rb:75]:
Calculated the wrong number of spaces for:
 def each_top_level_statement
  initialize_input
  catch(:TERM_INPUT) do
    loop do
      begin
        prompt
        unless l = lex
          throw :TERM_INPUT if @line == ''
        else
.
<10> expected but was
<12>.
```

752d5597ab

* [ruby/reline] Degenerate the terminal size to [$LINES, $COLUMNS] if it is unknown

This is a workaround for https://github.com/ruby/irb/issues/50

5725677d1a

* [ruby/irb] Fix newline depth with multiple braces

This commit fixes the check_newline_depth_difference method to multiple
open braces on one line into account. Before this change we were
subtracting from the depth in check_newline_depth_difference on
every open brace. This is the right thing to do if the opening and
closing brace are on the same line. For example in a method definition we
have an opening and closing parentheses we want to add 1 to our depth,
and then remove it.

```
def foo()
end
```

However this isn't the correct behavior when the brace spans multiple
lines. If a brace spans multiple lines we don't want to subtract from
check_newline_depth_difference and we want to treat the braces the same
way as we do `end` and allow check_corresponding_token_depth to pop the
correct depth.

Example of bad behavior:

```
def foo()
  [
  ]
puts 'bar'
end
```

Example of desired behavior:

```
def foo()
  [
  ]
  puts 'bar'
end
```

7dc8af01e0

* text/readline/test_readline.rb - fix skip on Reline (#2743)

TestRelineAsReadline#test_input_metachar passes on MinGW

* Add "require 'openstruct'" what is forgotten

* [ruby/irb] Fix lib name of OpenStruct

1f3a84ab6b

* Add load path and require for ruby/ruby

* Rescue EOFError

If C-d is pressed before IRB is ready, IRB crashes because EOFError occurs.

* Complete indented and quoted string correctly

  def foo
    ''.upca[TAB]

This will be completed to be:

  def foo
  ''.upcase

The indent was gone. This commit fixes the bug.

* [ruby/irb] Fix crashing when multiple open braces per line

https://github.com/ruby/irb/issues/55

If we had put multiple open braces on a line the with no closing brace
spaces_of_nest array keeps getting '0' added to it. This means that when
we pop off of this array we are saying that we should be in position zero
for the next line. This is an issue because we don't always want to be
in position 0 after a closing brace.

Example:
```
[[[
]
]
]
```
In the above example the 'spaces_of_nest' array looks like this after
the first line is entered: [0,0,0]. We really want to be indented 4
spaces for the 1st closing brace 2 for the 2nd and 0 for the 3rd. i.e.
we want it to be: [0,2,4].

We also saw this issue with a heredoc inside of an array.

```
[<<FOO]
hello
FOO
```

80c69c8272

* Support history-size in .inputrc correctly

* Introduce an abstracted structure about the encoding of Reline

The command prompt on Windows always uses Unicode to take input and print
output but most Reline implementation depends on Encoding.default_external.
This commit introduces an abstracted structure about the encoding of Reline.

* Remove an unused setting variable

* Use Reline.encoding_system_needs if exists

* Add tests for vi_insert and vi_add

* Implement vi_insert_at_bol and vi_add_at_eol

* [ruby/reline] Implement vi_to_next_char

066ecb0a21

* [ruby/reline] Implement vi_prev_char and vi_to_prev_char

0ad3ee63fa

* [ruby/readline-ext] Include ruby/assert.h in ruby/ruby.h so that assertions can be there

4d44c12832

* Stop using minitest dependent methods

* Skip a test that uses assert_ruby_status if it doesn't exist

* Use omit instead of skip

* Check DONT_RUN_RELINE_TEST envvar

* [ruby/irb] Add newline_before_multiline_output

9eb1801a66

* [ruby/irb] Fix compatibility with rails before 5.2

Rails before 5.2 added Array#append as an alias to Array#<< ,
so that it expects only one argument.
However ruby-2.5 added Array#append as an alias to Array#push
which takes any number of arguments.

If irb completion is used in `rails c` (for example "IO.<tab>")
it fails with:
  irb/completion.rb:206:in `<<': wrong number of arguments (given 3, expected 1) (ArgumentError)

Using Array#push instead of Array#append fixes compatibility.

5b7bbf9c34

* Reline: Use a more robust detection of MinTTY

The previous detection per get_screen_size fails when stdout is passed
to a pipe. That is the case when running ruby tests in parallel ("-j" switch).
In this case Reline believes that it's running on MinTTY and the tests
are running with ANSI IOGate instead of the Windows adapter on MINGW.
So parallel test results were different to that of a single process.
This commit fixes these differencies.

The code is taken from git sources and translated to ruby.
NtQueryObject() is replaced by GetFileInformationByHandleEx(), because
NtQueryObject() is undocumented and is more difficult to use:
  c5a03b1e29/compat/winansi.c (L558)

* Reline: Fix changed test results due to change to UTF-8 on Windows

In commit f8ea2860b0 the Reline encoding
for native windows console was changed to hardcoded UTF-8.
This caused failures in reline and readline tests, but they were hidden,
because parallel ruby tests incorrectly used Reline::ANSI as IOGate.
Tests failures were raised in single process mode, but not with -j switch.

This patch corrects encodings on native Windows console.

* [ruby/irb] [ruby/irb] Rewrite an expression to detect multiline

ed5cf375a6

5b7bbf9c34

* [ruby/reline] Implement vi_change_meta

8538e0e10f

* Always refer to Reline::IOGate.encoding

* Always use UTF-8 for Reline::GeneralIO on Windows

* Use test_mode on Reline::History::Test for encoding

* [ruby/reline] Support GNOME style Home/End key sequences [Bug #16510]

788f0df845

* [ruby/irb] Add a new easter egg: dancing ruby

e37dc7e58e

* [ruby/irb] Exclude useless files from RDoc

8f1ab2400c

* [ruby/irb] Exclude useless files from RDoc

* Fix inaccuracy in encoding tests

These tests assume
  Encoding.find('locale') == Encoding.find('external')
and fail if they are distinct.

* [ruby/reline] Fix Reline::Windows#scroll_down

I mistook Right and Bottom.

8be401c5f5

* [ruby/reline] Bypass cursor down when a char is rendered at eol on Windows

A newline is automatically inserted if a character is rendered at eol on
Windows command prompt.

4bfea07e4a

* [ruby/reline] Organize special keys escape sequences

41deb1a3d9

* [ruby/readline-ext] Remove unnecessary -I$(top_srcdir) when it's an individual gem

efaca4a5f4

* [ruby/readline-ext] Check TestRelineAsReadline existance

c0a6303168

* [ruby/readline-ext] The ruby/assert.h is adopted by Ruby 2.7 or later

106c31fc1b

* Revert "[ruby/readline-ext] Include ruby/assert.h in ruby/ruby.h so that assertions can be there"

This reverts commit 425b2064d3.

This cherry-pick was a mistake.

* [ruby/readline-ext] Use require check instead of DONT_RUN_RELINE_TEST env

1df99d1481

* [ruby/readline-ext] Add spec.extensions

8c33abb13c

* [ruby/readline-ext] Use rake/extensiokntask to build

b0b5f709bd

* Fix readline build dependency

* [ruby/irb] Add test_complete_symbol

dbbf086c1f

* [ruby/irb] Check doc namespace correctly

IRB::InputCompletor::PerfectMatchedProc crashes when doc not found because a
variable name was incorrect.

889fd4928f

* [ruby/irb] Fix auto indent with closed brace

A closed brace in auto-indent shouldn't affect the next brace in the same line,
but it behaves like below:

  p() {
    }

It's a bug.

fbe59e344f

* [ruby/irb] Use 0.step instead of (..0).each for Ruby 2.5

5d628ca40e

* Revert "[ruby/irb] Add test_complete_symbol"

This reverts commit 3af3431c2c.

* [ruby/irb] fix reserved words and completion for them

6184b227ad

* Add test_complete_symbol

The previous version of the test method used a symbol, ":abcdefg" to complete
but longer symbols that can be completed are defined by other test methods of
other libs.

* test/irb/test_completion.rb: suppress a warning: unused literal ignored

* [ruby/reline] Use IO#write instead of IO#print

IO#print always adds a string of $\ automatically.

a93119c847

* [ruby/irb] Version 1.2.2

a71753f15a

* [ruby/reline] Version 0.1.3

ea2b182466

* [ruby/irb] Include easter-egg.rb in gemspec

`irb` doesn't run because this file isn't included in the gem.
73cda56d25

* [ruby/irb] Version 1.2.3

dd56e06df5

* support multi-run test for test_readline.rb

* [ruby/irb] `yield` outside method definition is a syntax error

dbc7b059c7

* test/readline - allow ENV control of test class creation

In ruby/ruby, the tests run on both readline & reline by creating four test classes:
```
TestReadline
TestReadlineHistory

TestRelineAsReadline
TestRelineAsReadlineHistory
```

Reline inports the test files and uses them in its CI.  Adding the ENV control allows it to only run the `TestRelineAsReadline` classes.

* Omit test_using_quoting_detection_proc_with_multibyte_input temporarily for random order test

* support random order test.

test_readline:
  HISTORY should be empty.

test_using_quoting_detection_proc:
test_using_quoting_detection_proc_with_multibyte_input:
  Readline.completer_quote_characters= and
  Readline.completer_word_break_characters= doesn't accept nil,
  so skip if previous values are nil.

* Set Readline.completion_append_character = nil always

GNU Readline add a white space when Readline.completion_append_character is
not initialized.

* Fix a typo [ci skip]

* skip test if Reline.completion_proc is nil.

Some other tests can set Reline.completion_proc, so if it is nil,
simply skip this test.

* Reset Reline.point

TestRelineAsReadline#test_insert_text expects Readline.point == 0
at the beginning of the test, but a test violate this assumption.

* Convert incompatible encoding symbol names

* Ignore incompatible convert of symbols

* Add workaround for test-bundler failure

https://github.com/ruby/actions/runs/500526558?check_suite_focus=true#step:16:127
```
Failures:

  1) Bundler.setup when Bundler is bundled doesn't blow up
     Failure/Error: expect(err).to be_empty

       expected `"fatal: not a git repository (or any of the parent directories): .git\nfatal: not a git repository (o...the parent directories): .git\nfatal: not a git repository (or any of the parent directories): .git".empty?` to return true, got false

       Commands:
       $ /home/runner/work/actions/actions/snapshot-master/ruby \
         -I/home/runner/work/actions/actions/snapshot-master/lib:/home/runner/work/actions/actions/snapshot-master/spec/bundler \
         -rsupport/hax -rsupport/artifice/fail \
         /home/runner/work/actions/actions/snapshot-master/libexec/bundle install --retry 0
       Resolving dependencies...
       Using bundler 2.1.4
       Bundle complete! 1 Gemfile dependency, 1 gem now installed.
       Use `bundle info [gemname]` to see where a bundled gem is installed.
       fatal: not a git repository (or any of the parent directories): .git
       fatal: not a git repository (or any of the parent directories): .git
       fatal: not a git repository (or any of the parent directories): .git
       # $? => 0

       $ /home/runner/work/actions/actions/snapshot-master/ruby \
         -I/home/runner/work/actions/actions/snapshot-master/lib:/home/runner/work/actions/actions/snapshot-master/spec/bundler \
         -rsupport/hax -rsupport/artifice/fail \
         /home/runner/work/actions/actions/snapshot-master/libexec/bundle exec ruby -e \
         require\ \'bundler\'\;\ Bundler.setup
       fatal: not a git repository (or any of the parent directories): .git
       fatal: not a git repository (or any of the parent directories): .git
       fatal: not a git repository (or any of the parent directories): .git
       # $? => 0
     # ./spec/bundler/runtime/setup_spec.rb:1056:in `block (3 levels) in <top (required)>'
     # ./spec/bundler/spec_helper.rb:111:in `block (3 levels) in <top (required)>'
     # ./spec/bundler/spec_helper.rb:111:in `block (2 levels) in <top (required)>'
     # ./spec/bundler/spec_helper.rb:78:in `block (2 levels) in <top (required)>'
make: *** [yes-test-bundler] Error 1
```

* [ruby/irb] Unnamed groups are not captured when named groups are used

0a641a69b0

* [ruby/reline] Work with wrong $/ value correctly

962ebf5a1b

* [ruby/irb] Detect multiple lines output simplify

The old implementation performance test code:

    require 'objspace'
    puts "%.5g MB" % (ObjectSpace.memsize_of_all * 0.001 * 0.001)
    /\A.*\Z/ !~ ('abc' * 20_000_000)
    puts "%.5g MB" % (ObjectSpace.memsize_of_all * 0.001 * 0.001)

and run `time test.rb`:

    2.5868 MB
    62.226 MB

    real    0m1.307s
    user    0m0.452s
    sys     0m0.797s

The new implementation performance test code:

    require 'objspace'
    puts "%.5g MB" % (ObjectSpace.memsize_of_all * 0.001 * 0.001)
    ('abc' * 20_000_000).include?("\n")
    puts "%.5g MB" % (ObjectSpace.memsize_of_all * 0.001 * 0.001)

and run `time test.rb`:

    2.5861 MB
    62.226 MB

    real    0m0.132s
    user    0m0.088s
    sys     0m0.042s

40d6610baf

* [ruby/reline] Suppress error in case INPUTRC env is empty

bce7e7562b

* [ruby/reline] Add yamatanooroti rendering test

f092519525

* [ruby/reline] Rename test suite name of yamatanooroti test

b0f32f5de4

* [ruby/reline] Add a comment why rescue yamatanooroti loading error on the test

2a8061daec

* [ruby/irb] Suppress crashing when EncodingError has occurred without lineno

13572d8cdc

* [ruby/reline] Suppress error when check ambiguous char width in LANG=C

623dffdd75

* [ruby/io-console] Enable only interrupt bits on `intr: true`

baaf929041

* [ruby/io-console] bump up to 0.5.4

* [ruby/io-console] Update the minimum requirement of Ruby version

73e7b6318a

* [ruby/io-console] Filter Ruby engine name rather than just /ruby/

This breaks tests using this path on JRuby because the `jruby`
executable turns into `jjruby` after the sub.

e5951aa34c

* [ruby/io-console] bump up to 0.5.5

* [ruby/io-console] Prefer keyword arguments

5facbfc4c8

* [ruby/io-console] [DOC] Improved about `intr:`

82b630cd79

* [ruby/io-console] Just ignore the extension on other than CRuby

41b6f09574

* [ruby/io-console] bump up to 0.5.6

Co-authored-by: KOBAYASHI Shuji <shuujii@gmail.com>
Co-authored-by: Ben <kanobt61@gmail.com>
Co-authored-by: Yusuke Endoh <mame@ruby-lang.org>
Co-authored-by: MSP-Greg <MSP-Greg@users.noreply.github.com>
Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
Co-authored-by: Kenta Murata <mrkn@mrkn.jp>
Co-authored-by: Lars Kanis <lars@greiz-reinsdorf.de>
Co-authored-by: Lars Kanis <kanis@comcard.de>
Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
Co-authored-by: Hiroshi SHIBATA <hsbt@ruby-lang.org>
Co-authored-by: Nobuhiro IMAI <nov@yo.rim.or.jp>
Co-authored-by: Nick Lewis <nick@puppet.com>
Co-authored-by: S-H-GAMELINKS <gamelinks007@gmail.com>
Co-authored-by: Koichi Sasada <ko1@atdot.net>
Co-authored-by: Kazuhiro NISHIYAMA <zn@mbf.nifty.com>
Co-authored-by: Charles Oliver Nutter <headius@headius.com>
2020-03-30 19:09:50 +09:00
.github Use brew upgrade instead of brew update 2020-02-20 17:08:45 +09:00
basictest Fixed misspellings 2019-12-20 09:32:42 +09:00
benchmark Remove unneeded exec bits from some files 2019-11-09 21:36:30 +09:00
bin Deprecate taint/trust and related methods, and make the methods no-ops 2019-11-18 01:00:25 +02:00
bootstraptest Show the failed message too 2019-12-12 23:26:35 +09:00
ccan Fix typos [ci skip] 2019-10-14 17:30:04 +09:00
coroutine coroutine/ucontext/Context.c: define __EXTENSIONS__ explicitly 2019-12-05 22:24:58 +09:00
coverage
cygwin
defs Fixed misspellings 2019-12-20 09:32:42 +09:00
doc Update documentation for Array/Hash Argument section of methods.rdoc 2020-03-13 21:31:10 +09:00
enc enc/x_emoji.h: fixed dead-links [ci skip] 2019-12-24 10:33:32 +09:00
ext Ruby 2.7 backport about IRB (#2990) 2020-03-30 19:09:50 +09:00
gems Use power_assert 1.1.7 2020-03-26 21:18:25 +09:00
include Reword keyword arguments warning messages to convey these are deprecation warnings 2019-12-23 16:47:33 -05:00
lib Ruby 2.7 backport about IRB (#2990) 2020-03-30 19:09:50 +09:00
libexec Fixed misspellings 2019-12-20 12:19:45 +09:00
man Merge bundler-2.1.4 2020-03-27 14:43:20 +09:00
misc Fixed misspellings 2019-12-20 09:32:42 +09:00
missing Get rid of false positive misspellings 2019-12-24 10:33:32 +09:00
sample Fixed misspellings 2019-12-20 09:32:42 +09:00
spec Merge bundler-2.1.4 2020-03-27 14:43:20 +09:00
template remove prelude.c 2019-12-11 11:24:42 +09:00
test Ruby 2.7 backport about IRB (#2990) 2020-03-30 19:09:50 +09:00
tool Make RbConfig::CONFIG values mutable [Bug #16738] 2020-03-27 14:51:35 +09:00
win32 Fixed misspellings 2019-12-20 09:32:42 +09:00
.dir-locals.el
.document Added warning.rb to .document 2019-12-24 13:12:28 +09:00
.editorconfig
.gdbinit
.gitattributes Add tool/leaked-globals to .gitattributes [ci skip] 2019-07-15 13:45:14 +09:00
.gitignore Check -1 arity for C++ 2019-11-22 18:42:49 +09:00
.rspec_parallel Introduce test-bundler-parallel task. 2019-08-22 08:02:48 +10:00
.travis.yml Fix .travis.yml to keep s390x-linux as allow_features 2019-12-11 21:54:18 +09:00
aclocal.m4
addr2line.c retrieve current path on macOS 2019-08-20 02:05:10 +09:00
addr2line.h
appveyor.yml Drop MinGW build from AppVeyor 2020-03-14 16:32:29 +09:00
array.c make functions static 2019-11-19 12:36:19 +09:00
ast.c Revert "Method reference operator" 2019-11-12 17:24:48 +09:00
ast.rb Improve highlighting in RubyVM::AbstractSyntaxTree docs when using ri 2019-12-14 12:26:30 +01:00
bignum.c make functions static 2019-11-19 12:36:19 +09:00
BSDL
builtin.c take care of USE_LAZY_LOAD=1. 2019-12-25 14:12:33 +09:00
builtin.h readable function names for inline functions. 2019-12-13 17:55:45 +09:00
class.c Reword keyword arguments warning messages to convey these are deprecation warnings 2019-12-23 16:47:33 -05:00
common.mk Fixed symbol misused as ID 2020-03-14 16:00:46 +09:00
compar.c [DOC] Improve readability of requirements for <=> 2019-12-23 15:02:59 +01:00
compile.c export a function for MJIT. 2019-12-25 14:37:53 +09:00
complex.c Improve consistency of bool/true/false 2019-11-25 15:09:09 +09:00
configure.ac Allow more than one major version number in target_os 2019-12-13 08:58:42 +09:00
constant.h delete unused functions 2019-11-14 20:35:48 +09:00
cont.c Prevent unloading methods used in root_fiber while calling another Fiber (#2939) 2020-03-15 19:35:24 +09:00
CONTRIBUTING.md
COPYING
COPYING.ja
debug.c add additional CF info for CI env 2019-12-05 14:47:31 +09:00
debug_counter.c add debug_counter access functions. 2019-12-25 01:34:41 +09:00
debug_counter.h add debug_counter access functions. 2019-12-25 01:34:41 +09:00
dir.c [DOC] Added File::FNM_SYSCASE example [Bug #16391] [ci skip] 2019-12-04 21:52:29 +09:00
dln.c Remove IA64 support. 2019-06-19 23:30:04 +12:00
dln.h
dln_find.c
dmydln.c
dmyenc.c
dmyext.c
encindex.h
encoding.c [Doc] Fix sample in Encoding#names 2019-12-22 23:01:45 +09:00
enum.c [DOC] Improve documentation for Enumerable#tally 2019-12-22 22:36:14 +01:00
enumerator.c [DOC] Improve docs for Enumerator.produce, Enumerator.new 2019-12-24 09:03:42 +01:00
error.c Fix FrozenError#receiver and #initialize docs 2019-12-22 23:17:39 +09:00
eval.c Kernel#abort without arguments should print error info 2019-12-16 14:55:59 +09:00
eval_error.c Renamed ruby_finalize_{0,1} 2019-08-13 09:47:08 +09:00
eval_intern.h Create backtrace location array directly 2019-12-13 20:47:07 +09:00
eval_jump.c drop-in type check for rb_define_global_function 2019-08-29 18:34:09 +09:00
file.c Revert "Should return "." for File.extname("file.") also on Windows" 2019-12-23 11:54:25 +09:00
gc.c Separate objspace argument for rb_gc_disable and rb_gc_enable 2020-03-13 22:08:42 +09:00
gc.h gc.h: Add SET_MACHINE_STACK_END specific for Powerpc64 (#1767) 2019-12-16 10:05:21 +09:00
gc.rb fix line break code (fix to LF) 2019-11-08 15:32:01 +09:00
gem_prelude.rb Do not call 'gem "did_you_mean"' for now 2019-11-30 21:08:19 -05:00
golf_prelude.rb golf_prelude.rb: suppress the redefining warning 2019-06-22 23:38:07 +09:00
goruby.c
GPL
hash.c check ar_table first. 2020-03-26 21:18:26 +09:00
hrtime.h
id_table.c Revert https://github.com/ruby/ruby/pull/2486 2019-10-03 12:45:24 +09:00
id_table.h Revert https://github.com/ruby/ruby/pull/2486 2019-10-03 12:45:24 +09:00
inits.c Moved Kernel#warn to warning.rb 2019-12-13 20:47:07 +09:00
insns.def Introduce an "Inline IVAR cache" struct 2019-12-05 13:37:02 -08:00
internal.h Prevent unloading methods used in root_fiber while calling another Fiber (#2939) 2020-03-15 19:35:24 +09:00
io.c Pass keyword arguments to IOs properly [Bug #16639] 2020-03-13 23:27:19 +09:00
io.rb Define IO#read/write_nonblock with builtins. 2019-11-08 10:03:19 +09:00
iseq.c Fixed misspellings 2019-12-20 09:32:42 +09:00
iseq.h vm_args.c (rb_warn_check): Use iseq_unique_id instead of its pointer 2019-12-09 15:22:48 +09:00
KNOWNBUGS.rb
LEGAL
lex.c.blt
load.c Add the loaded feature after no exception raised 2020-03-13 22:34:09 +09:00
loadpath.c
localeinit.c
main.c main.c: Add doxygen mainpage 2019-08-08 17:36:12 +09:00
marshal.c Deprecate taint/trust and related methods, and make the methods no-ops 2019-11-18 01:00:25 +02:00
math.c [DOC] Fix wording in Math::E documentation 2019-12-24 00:13:46 +01:00
method.h per-method serial number 2019-12-18 12:52:28 +09:00
mini_builtin.c readable function names for inline functions. 2019-12-13 17:55:45 +09:00
miniinit.c support builtin features with Ruby and C. 2019-11-08 09:09:29 +09:00
mjit.c Prevent unloading methods used in root_fiber while calling another Fiber (#2939) 2020-03-15 19:35:24 +09:00
mjit.h Constified mjit_init 2019-12-01 20:26:28 +09:00
mjit_compile.c Add a proper cast to pass JIT tests on mswin. 2019-11-21 04:38:40 +09:00
mjit_worker.c Allow specifying arbitrary MJIT flags by --jit-debug 2019-12-01 00:58:47 -08:00
NEWS Add readline and readline-ext to default gems list in NEWS 2019-12-25 12:55:53 +09:00
node.c Revert "Method reference operator" 2019-11-12 17:24:48 +09:00
node.h Deprecate taint/trust and related methods, and make the methods no-ops 2019-11-18 01:00:25 +02:00
numeric.c make functions static 2019-11-19 12:36:19 +09:00
object.c Object#=~ warning also obeys Warning[:deprecated] 2019-12-24 18:53:14 +09:00
pack.c Deprecate taint/trust and related methods, and make the methods no-ops 2019-11-18 01:00:25 +02:00
pack.rb Rubified the APIs of pack.c 2019-11-08 23:51:51 +09:00
parse.y Preserve kwarg flag and fix up f5c904c2a9 2020-03-28 04:01:15 +09:00
prelude.rb Define IO#read/write_nonblock with builtins. 2019-11-08 10:03:19 +09:00
probes.d
probes_helper.h
proc.c Don't display singleton class in Method#inspect unless method defined there 2020-03-14 16:15:15 +09:00
process.c Restart timer thread even after preparation failed 2020-02-13 13:50:57 +09:00
random.c rand(beginless_range) raise Errno::EDOM instead of TypeError 2019-12-15 14:47:36 +09:00
range.c range.c: Range#min with a beginless one now raise an explicit exception 2019-12-25 13:36:23 +09:00
rational.c Deprecate taint/trust and related methods, and make the methods no-ops 2019-11-18 01:00:25 +02:00
re.c Regexp in MatchData can be nil 2020-01-16 15:26:28 +09:00
README.EXT
README.EXT.ja
README.ja.md Add badge of Cygwin 2019-12-09 16:08:12 +09:00
README.md Add badge of Cygwin 2019-12-09 16:08:12 +09:00
regcomp.c
regenc.c
regenc.h
regerror.c Escape control codes in regexp warning message 2019-06-29 19:07:25 +09:00
regexec.c
regint.h
regparse.c Fixed misspellings 2019-12-20 09:32:42 +09:00
regparse.h
regsyntax.c
ruby-runner.c Fix warnings 2019-08-28 16:51:48 +09:00
ruby.c Added -W:experimental to --help [Feature #16420] 2019-12-24 12:11:42 +09:00
ruby_assert.h respect NDEBUG. 2019-07-19 12:04:32 +09:00
ruby_atomic.h
rubystub.c
safe.c Deprecate taint/trust and related methods, and make the methods no-ops 2019-11-18 01:00:25 +02:00
signal.c Deprecate rb_eval_cmd, add rb_eval_cmd_kw 2019-11-18 01:00:25 +02:00
siphash.c
siphash.h
sparc.c
sprintf.c Deprecate taint/trust and related methods, and make the methods no-ops 2019-11-18 01:00:25 +02:00
st.c Fixed misspellings 2019-12-20 09:32:42 +09:00
strftime.c
string.c Refined the warning message for $, and $; 2019-12-20 15:09:23 +09:00
struct.c Avoid needless object allocation 2019-11-19 08:53:01 -06:00
symbol.c delete unused functions 2019-11-14 20:35:48 +09:00
symbol.h
thread.c check flags passed to rb_nogvl() 2020-03-26 21:18:26 +09:00
thread_pthread.c rb_thread_create now free from ANYARGS 2019-08-27 15:52:26 +09:00
thread_pthread.h
thread_sync.c add assertion for mutex_lock. 2019-10-28 12:19:18 +09:00
thread_win32.c Remove IA64 support. 2019-06-19 23:30:04 +12:00
thread_win32.h
time.c [DOC] Fix typo in Time#inspect 2019-12-24 21:50:27 +01:00
timev.h
trace_point.rb Make TracePoint.stat a singleton method again (#2726) 2019-12-04 21:02:21 -05:00
transcode.c Fixed symbol misused as ID 2020-03-14 16:00:46 +09:00
transcode_data.h
transient_heap.c rb_aligned_malloc can return NULL 2019-11-01 16:58:19 +09:00
transient_heap.h
util.c
variable.c Enhance docs for Module#deprecate_constant 2019-12-22 23:17:39 +09:00
variable.h fastpath for ivar read of FL_EXIVAR objects. 2019-11-29 03:11:04 +09:00
version.c Provides ruby2_keywords 2019-10-23 00:19:25 +09:00
version.h * 2020-03-28 [ci skip] 2020-03-28 06:14:02 +09:00
vm.c Disable GC until VM objects get initialized [Bug #16616] 2020-03-13 21:51:06 +09:00
vm_args.c Do not autosplat when calling proc with empty keyword splat 2020-03-15 20:52:43 +09:00
vm_backtrace.c Create backtrace location array directly 2019-12-13 20:47:07 +09:00
vm_core.h Kernel#lambda: return forwarded block as non-lambda proc 2019-12-21 09:08:52 -05:00
vm_debug.h add rp() and bp() in internal.h. 2019-08-09 14:01:15 +09:00
vm_dump.c Fixed misspellings 2019-12-20 09:32:42 +09:00
vm_eval.c script_compiled event on compile error. 2020-01-16 15:08:36 +09:00
vm_exec.c
vm_exec.h Fixed format specifiers 2019-09-20 23:57:20 +09:00
vm_insnhelper.c Fixed misspellings 2019-12-20 09:32:42 +09:00
vm_insnhelper.h per-method serial number 2019-12-18 12:52:28 +09:00
vm_method.c per-method serial number 2019-12-18 12:52:28 +09:00
vm_opts.h Use cppflags to pass preprocessor options 2019-10-23 02:53:36 +09:00
vm_trace.c Renamed load_*.inc as *.rbinc to utilize a suffix rule 2019-11-08 16:30:28 +09:00
vsnprintf.c Use array indexing with considering clang's feeling 2019-08-27 14:25:58 +09:00
warning.rb Fix visibility as module_function 2019-12-13 20:51:58 +09:00

Build Status Build status

What's Ruby

Ruby is an interpreted object-oriented programming language often used for web development. It also offers many scripting features to process plain text and serialized files, or manage system tasks. It is simple, straightforward, and extensible.

Features of Ruby

  • Simple Syntax
  • Normal Object-oriented Features (e.g. class, method calls)
  • Advanced Object-oriented Features (e.g. mix-in, singleton-method)
  • Operator Overloading
  • Exception Handling
  • Iterators and Closures
  • Garbage Collection
  • Dynamic Loading of Object Files (on some architectures)
  • Highly Portable (works on many Unix-like/POSIX compatible platforms as well as Windows, macOS, Haiku, etc.) cf. https://github.com/ruby/ruby/blob/master/doc/contributing.rdoc#platform-maintainers

How to get Ruby

For a complete list of ways to install Ruby, including using third-party tools like rvm, see:

https://www.ruby-lang.org/en/downloads/

Git

The mirror of the Ruby source tree can be checked out with the following command:

$ git clone https://github.com/ruby/ruby.git

There are some other branches under development. Try the following command to see the list of branches:

$ git ls-remote https://github.com/ruby/ruby.git

You may also want to use https://git.ruby-lang.org/ruby.git (actual master of Ruby source) if you are a committer.

Subversion

Stable branches for older Ruby versions can be checked out with the following command:

$ svn co https://svn.ruby-lang.org/repos/ruby/branches/ruby_2_6/ ruby

Try the following command to see the list of branches:

$ svn ls https://svn.ruby-lang.org/repos/ruby/branches/

Ruby home page

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

Mailing list

There is a mailing list to discuss Ruby. To subscribe to this list, please send the following phrase:

subscribe

in the mail body (not subject) to the address ruby-talk-request@ruby-lang.org.

How to compile and install

  1. If you want to use Microsoft Visual C++ to compile Ruby, read win32/README.win32 instead of this document.

  2. If ./configure does not exist or is older than configure.ac, run autoconf to (re)generate configure.

  3. Run ./configure, which will generate config.h and Makefile.

    Some C compiler flags may be added by default depending on your environment. Specify optflags=.. and warnflags=.. as necessary to override them.

  4. Edit defines.h if you need. Usually this step will not be needed.

  5. Remove comment mark(#) before the module names from ext/Setup (or add module names if not present), if you want to link modules statically.

    If you don't want to compile non static extension modules (probably on architectures which do not allow dynamic loading), remove comment mark from the line "#option nodynamic" in ext/Setup.

    Usually this step will not be needed.

  6. Run make.

    • On Mac, set RUBY_CODESIGN environment variable with a signing identity. It uses the identity to sign ruby binary. See also codesign(1).
  7. Optionally, run 'make check' to check whether the compiled Ruby interpreter works well. If you see the message "check succeeded", your Ruby works as it should (hopefully).

  8. Optionally, run make update-gems and make extract-gems.

    If you want to install bundled gems, run make update-gems and make extract-gems before running make install.

  9. Run 'make install'.

    This command will create the following directories and install files into them.

    • ${DESTDIR}${prefix}/bin
    • ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}
    • ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
    • ${DESTDIR}${prefix}/lib
    • ${DESTDIR}${prefix}/lib/ruby
    • ${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}
    • ${DESTDIR}${prefix}/lib/ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
    • ${DESTDIR}${prefix}/lib/ruby/site_ruby
    • ${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}
    • ${DESTDIR}${prefix}/lib/ruby/site_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
    • ${DESTDIR}${prefix}/lib/ruby/vendor_ruby
    • ${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}
    • ${DESTDIR}${prefix}/lib/ruby/vendor_ruby/${MAJOR}.${MINOR}.${TEENY}/${PLATFORM}
    • ${DESTDIR}${prefix}/lib/ruby/gems/${MAJOR}.${MINOR}.${TEENY}
    • ${DESTDIR}${prefix}/share/man/man1
    • ${DESTDIR}${prefix}/share/ri/${MAJOR}.${MINOR}.${TEENY}/system

    If Ruby's API version is 'x.y.z', the ${MAJOR} is 'x', the ${MINOR} is 'y', and the ${TEENY} is 'z'.

    NOTE: teeny of the API version may be different from one of Ruby's program version

    You may have to be a super user to install Ruby.

If you fail to compile Ruby, please send the detailed error report with the error log and machine/OS type, to help others.

Some extension libraries may not get compiled because of lack of necessary external libraries and/or headers, then you will need to run 'make distclean-ext' to remove old configuration after installing them in such case.

Copying

See the file COPYING.

Feedback

Questions about the Ruby language can be asked on the Ruby-Talk mailing list (https://www.ruby-lang.org/en/community/mailing-lists) or on websites like (https://stackoverflow.com).

Bugs should be reported at https://bugs.ruby-lang.org. Read HowToReport for more information.

Contributing

See the file CONTRIBUTING.md

The Author

Ruby was originally designed and developed by Yukihiro Matsumoto (Matz) in 1995.

matz@ruby-lang.org