The Ruby Programming Language [mirror]
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Jean Boussier 3f54d09a5b bignum.c: rb_int_parse_cstr handle `0` strings 11 hours ago
.github YJIT: Set RUST_BACKTRACE=1 on YJIT GitHub Actions (#7152) 2 weeks ago
basictest
benchmark Benchmark String interpolation across size pools 2 weeks ago
bin
bootstraptest Implement splat for cfuncs. Split exit exit cases to better capture where we are exiting (#6929) 2 weeks ago
ccan Fix -Wundef warnings 3 months ago
coroutine
coverage
cygwin
defs Link RUBYSPEC_CAPIEXT against the built library 5 days ago
doc [DOC] Change local method to local variable in assignment docs 1 week ago
enc Ensure newline at EOF [ci skip] 4 weeks ago
ext Extract check for RSTRING_SOCKLEN 12 hours ago
gems Update bundled gems list at 2023-01-20 2 weeks ago
include [Bug #19289] Retain `ruby_abi_version` function 2 weeks ago
internal Fix typo in RHASH_ST_CLEAR 1 week ago
lib [ruby/net-http] Correct doc error 2 days ago
libexec [ruby/irb] Removed Release Version and Revisions for old VCS software 3 weeks ago
man
misc Ivar copy needs to happen _before_ setting the shape 3 months ago
missing
sample sample/trick2022/03-mame/entry.rb: remove trailing spaces 1 month ago
spec [rubygems/rubygems] Don't warn on bundler binstubs --standalone --all 3 days ago
template YJIT: Fix shared/static library symbol leaks 3 days ago
test bignum.c: rb_int_parse_cstr handle `0` strings 11 hours ago
tool YJIT: Fix shared/static library symbol leaks 3 days ago
wasm wasm/README.md: Add a note about the Ruby built for wasm. [ci skip] 3 months ago
win32 Windows: Prefer USERPROFILE over HOMEPATH 1 month ago
yjit YJIT: Fix shared/static library symbol leaks 3 days ago
.appveyor.yml Ignore manual files only commits [ci skip] 3 months ago
.cirrus.yml Enable `clippy` checks for yjit in CI (#7093) 3 weeks ago
.dir-locals.el
.document Document the public interface of YJIT [ci skip] 1 month ago
.editorconfig
.gdbinit Fix a warning in .gdbinit 3 weeks ago
.git-blame-ignore-revs
.gitattributes
.gitignore Put RubyVM::MJIT::Compiler under ruby_vm directory (#6989) 1 month ago
.indent.pro
.rdoc_options
.rspec_parallel
.travis.yml
BSDL
CONTRIBUTING.md
COPYING
COPYING.ja
GPL
KNOWNBUGS.rb
LEGAL Remove about ext/psych/yaml which is no longer bundled [ci skip] 3 weeks ago
NEWS.md Update default gems list at b432867429 [ci skip] 16 hours ago
README.EXT
README.EXT.ja
README.ja.md svn.ruby-lang.org is already EOL 1 week ago
README.md Revert wrong sync in 9aa18f61f2 [ci skip] 2 months ago
aclocal.m4
addr2line.c addr2line.c: Silence GCC 11 false -Wmaybe-uninitialized warning 2 weeks ago
addr2line.h
array.c Remove function ary_recycle_hash 6 days ago
array.rb
ast.c Check if the argument is Thread::Backtrace::Location object 4 weeks ago
ast.rb [DOC] Document AST.parse's keyword arguments 1 month ago
autogen.sh
bignum.c bignum.c: rb_int_parse_cstr handle `0` strings 11 hours ago
builtin.c
builtin.h MJIT: Use a String buffer in builtin compilers 2 months ago
class.c [DOC] Move the internal document for `Init_class_hierarchy` 4 weeks ago
common.mk YJIT: Fix shared/static library symbol leaks 3 days ago
compar.c Change ArgumentError message when Comparable#clamp receives min value higher than max value 2 weeks ago
compile.c Make all of the references of iseq movable 1 week ago
complex.c [Bug #19087] Disallow successive underscores in Complex string 2 months ago
configure.ac configure: Keep OBJCOPY even when visibility options are available 3 days ago
constant.h
cont.c Docs: Fix problems with Fiber's docs 1 month ago
darray.h
debug.c
debug_counter.c Add debug counters to RubyVM.stat (#6086) 2 months ago
debug_counter.h Transition complex objects to "too complex" shape 2 months ago
dir.c Reuse NIL_OR_UNDEF_P macro 2 months ago
dir.rb
dln.c
dln.h
dln_find.c
dmydln.c
dmyenc.c
dmyext.c
encindex.h
encoding.c Remove Encoding#replicate 3 weeks ago
enum.c Introduce BOP_CMP for optimized comparison 2 months ago
enumerator.c Try to fix RDoc markup for Enumerator 1 month ago
error.c Docs: Fix rendering of SyntaxError#path 1 month ago
eval.c [Bug #19242] Prohibit circular causes to be loaded 1 month ago
eval_error.c [Bug #19242] Prohibit circular causes to be loaded 1 month ago
eval_intern.h
eval_jump.c [Bug #19016] re-order error handling at cleanup 2 months ago
file.c [DOC] Fix false link to ::Data 2 months ago
gc.c Add rb_gc_mark_and_move and implement on iseq 2 weeks ago
gc.h Fix crash in tracing object allocations 4 weeks ago
gc.rb [DOC] Fix formatting for GC.stat 4 weeks ago
gem_prelude.rb
golf_prelude.rb
goruby.c
hash.c Document thread-safety issues with Hash default_proc 1 week ago
hrtime.h Fix per-instance Regexp timeout (#6621) 3 months ago
id_table.c
id_table.h Transition complex objects to "too complex" shape 2 months ago
inits.c MJIT: Merge mjit_compiler.rb into mjit.rb 2 months ago
insns.def Adjust indents [ci skip] 3 months ago
internal.h Don't redefine RB_OBJ_WRITE 2 weeks ago
io.c Make IO#set_encoding with binary external encoding use nil internal encoding 4 weeks ago
io.rb
io_buffer.c [DOC] Document new methods of IO::Buffer and Fiber::Scheduler (#7016) 1 month ago
iseq.c Pass through `line_offset` argument correctly (but it was always 0). (#7177) 4 days ago
iseq.h Make all of the references of iseq movable 1 week ago
kernel.rb Rewrite Kernel#loop in Ruby (#6983) 1 month ago
lex.c.blt
load.c load.c: remove unneeded rb_str_freeze calls 1 month ago
loadpath.c
localeinit.c
main.c
marshal.c Stop transitioning to UNDEF when undefining an instance variable 2 months ago
marshal.rb
math.c
memory_view.c
method.h
mini_builtin.c
miniinit.c
mjit.c MJIT: Cancel all on disastrous situations (#7019) 1 month ago
mjit.h MJIT: Cancel all on disastrous situations (#7019) 1 month ago
mjit.rb MJIT: Cancel all on disastrous situations (#7019) 1 month ago
mjit_c.c Use a ruby-lang alias [ci skip] 2 months ago
mjit_c.h MJIT: Compile methods in batches (#6900) 2 months ago
mjit_c.rb MJIT: Cancel all on disastrous situations (#7019) 1 month ago
nilclass.rb
node.c Enhance keep_tokens option for RubyVM::AbstractSyntaxTree parsing methods 2 months ago
node.h Disallow mixed usage of ... and */** 2 months ago
numeric.c [Bug #19335] `Integer#remainder` should respect `#coerce` (#7120) 2 weeks ago
numeric.rb Fix Integer#ceildiv to respect #coerce (#7118) 1 week ago
object.c Adjust braces [ci skip] 1 week ago
pack.c Fix a typo in BUG message [ci skip] 2 weeks ago
pack.rb
parse.y Remove not used argument from tokenize_ident 6 days ago
prelude.rb
probes.d
probes_helper.h
proc.c Docs: Separate documentation for UnboundMethod#== 1 month ago
process.c [DOC] Change formatting in the exec docs 2 months ago
ractor.c MJIT: Cancel all on disastrous situations (#7019) 1 month ago
ractor.rb [DOC] Make changes to docs in ractor.rb (#7180) 2 days ago
ractor_core.h Let SHAPE_BITS take 32 bits on debug builds 2 months ago
random.c [DOC] Improve Random::Formatter docs 2 months ago
range.c [DOC] Fix most of Range#cover? marked as verbatim 1 month ago
rational.c Using UNDEF_P macro 3 months ago
re.c [DOC] Correction to RDoc for Regexp.new (#7130) 2 weeks ago
regcomp.c
regenc.c Prevent potential buffer overrun in onigmo 3 months ago
regenc.h Prevent potential buffer overflow on enclen 2 months ago
regerror.c
regexec.c Fix [Bug 19273], set correct value to `outer_repeat` on `OP_REPEAT` (#7035) 1 month ago
regint.h Use long instead of int 3 months ago
regparse.c Prevent potential buffer overrun in onigmo 3 months ago
regparse.h
regsyntax.c
ruby-runner.c
ruby.c YJIT: Make --yjit-stats always visible on --help (#6946) 1 month ago
ruby_assert.h
ruby_atomic.h
rubystub.c
scheduler.c [DOC] Document new methods of IO::Buffer and Fiber::Scheduler (#7016) 1 month ago
shape.c Revert "Limit maximum number of IVs on a shape" 4 days ago
shape.h Revert "Limit maximum number of IVs on a shape" 4 days ago
signal.c [DOC] [Bug #19290] fix formatting 4 weeks ago
siphash.c
siphash.h
sparc.c
sprintf.c [Bug #19167] Remove useless conversion of classes for special const 2 months ago
st.c
strftime.c Introduce encoding check macro 2 months ago
string.c [Feature #19314] Add new arguments of String#bytesplice 2 weeks ago
string.rb
struct.c [DOC] Fix call-seq for Data.define 1 month ago
symbol.c Rewrite Symbol#to_sym and #intern in Ruby (#6683) 3 months ago
symbol.h
symbol.rb Rewrite Symbol#to_sym and #intern in Ruby (#6683) 3 months ago
thread.c Remove unused struct member thgroup->group 1 week ago
thread_none.c [wasm] Scan machine stack based on `ec->machine.stack_{start,end}` 3 months ago
thread_none.h
thread_pthread.c
thread_pthread.h Use pthread API if the target platform doesn't support TLS attribute 1 month ago
thread_sync.c Add `queue_list` and `szqueue_list` macros 1 week ago
thread_sync.rb
thread_win32.c
thread_win32.h
time.c [Bug #19296] Precheck bits of time components 4 weeks ago
timev.h
timev.rb [Feature #18033] Add `precision:` option 2 months ago
trace_point.rb [DOC] Update TracePoint.allow_reentry docs 1 month ago
transcode.c [DOC] Use RDoc inclusions in transcode.c 2 weeks ago
transcode_data.h
transient_heap.c Transition complex objects to "too complex" shape 2 months ago
transient_heap.h
util.c
variable.c don't allow setting class variable on module that's frozen [Bug #19341] 2 weeks ago
variable.h
version.c YJIT: Show YJIT build option in RUBY_DESCRIPTION (#6738) 3 months ago
version.h
vm.c Fix off-by-one error in rb_vm_each_stack_value 3 weeks ago
vm_args.c Using UNDEF_P macro 3 months ago
vm_backtrace.c Return 0 if there is no CFP on the EC yet 3 weeks ago
vm_callinfo.h
vm_core.h Make all of the references of iseq movable 1 week ago
vm_debug.h
vm_dump.c Fix backtrace beyond _singtramp on macOS arm64 (#7015) 1 month ago
vm_eval.c Fix write barrier order for `klass` to `cme` edge 3 weeks ago
vm_exec.c Using UNDEF_P macro 3 months ago
vm_exec.h
vm_insnhelper.c Avoid checking interrupt when loading iseq 2 weeks ago
vm_insnhelper.h Remove unused class serial 3 months ago
vm_method.c fix `unused variables` warning 3 weeks ago
vm_opts.h
vm_sync.c
vm_sync.h
vm_trace.c Make all of the references of iseq movable 1 week ago
vsnprintf.c
warning.rb [DOC] [Bug #19290] fix formatting 4 weeks ago
yjit.c YJIT: implement codegen for `String#empty?` (#7148) 2 weeks ago
yjit.h YJIT: Invalidate redefined methods only through cme (#6734) 3 months ago
yjit.rb Add stats so we can keep track of x86 rel32 vs register calls (#7142) 2 weeks ago

README.md

Actions Status: MinGW Actions Status: MJIT Actions Status: Ubuntu Actions Status: Windows AppVeyor status Travis Status Cirrus Status

What is 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, etc.) cf. https://github.com/ruby/ruby/blob/master/doc/maintainers.rdoc#label-Platform+Maintainers

How to get Ruby with Git

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

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

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.

How to build

see Building Ruby

Ruby home page

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

Documentation

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.

Copying

See the file COPYING.

Feedback

Questions about the Ruby language can be asked on the Ruby-Talk mailing list or on websites like https://stackoverflow.com.

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

Contributing

See "Contributing to Ruby", which includes setup and build instructions.

The Author

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

matz@ruby-lang.org