The Wayback Machine - https://web.archive.org/web/20190702131033/https://github.com/ruby/ruby
Skip to content
The Ruby Programming Language [mirror]
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
basictest colors file has been moved from test to tool Jul 2, 2019
benchmark Adjust memory_status.rb under the tool directory. Jul 2, 2019
bin Added binstub for racc executables. Jun 19, 2019
bootstraptest colors file has been moved from test to tool Jul 2, 2019
ccan ccan/list: sync with upstream Feb 1, 2018
coroutine Restore updated implementation of arm32 coroutine code, but prefer uc… Jun 26, 2019
coverage Fix typo May 21, 2019
cygwin MFLAGS for nmake Feb 10, 2017
defs Fix test-all substitution Jul 2, 2019
doc Prefer master rather than trunk in doc/contributing.rdoc [ci skip] Jul 2, 2019
enc remove UNREACHABLE Jun 24, 2019
ext Fixed inadvertent ID creation in rb_iv_get Jul 1, 2019
gems Update test-unit May 19, 2019
include Remove IA64 support. Jun 19, 2019
lib Keyword token that follows EXPR_FNAME must be a method name Jul 1, 2019
libexec Backport racc-1.4.15 from upstream. Jun 19, 2019
man Merge bundler master from upstream. Jun 9, 2019
misc add FROZEN to lldb debug output May 9, 2019
missing Split procstat_vm.c Feb 7, 2019
sample For this may be a syntax error (instead of LocalJumpError) in Ruby 2.7 Feb 4, 2019
spec Prefer master rather than trunk in README [ci skip] Jun 30, 2019
template Substitue suffixes with dot Jul 1, 2019
test Clean up temporary expired cert file Jul 2, 2019
tool Use GitHub ruby.git for make-snapshot Jul 2, 2019
win32 Remove IA64 support. Jun 19, 2019
.dir-locals.el add .dir-locals.el [ci skip] Dec 27, 2018
.document Include LEGAL in .document [ci skip] Dec 1, 2018
.editorconfig Remove duplicated and change order Mar 21, 2019
.gdbinit Prefix global_symbols with `ruby_` May 16, 2019
.gitattributes Add tool/format-release to .gitattributes Apr 23, 2019
.gitignore Only ignore build directories. Jun 20, 2019
.indent.pro * .indent.pro: added for ruby-style. Mar 11, 2010
.travis.yml The default branch is changed to master Jun 30, 2019
BSDL * BSDL: update copyright notice for 2013. Feb 9, 2013
CONTRIBUTING.md [DOC] Please see _the_ official issue tracker... [ci skip] Jun 13, 2014
COPYING COPYING: reformat as RDoc Feb 2, 2019
COPYING.ja COPYING: reformat as RDoc Feb 2, 2019
GPL * GPL: update text of GPLv2. [ruby-core:44488] [Bug #6328] Jun 3, 2012
KNOWNBUGS.rb compile.c: fix positions encode Apr 5, 2018
LEGAL Split procstat_vm.c Feb 7, 2019
Makefile.in Dummy Makefile.in for CIs Jun 7, 2019
NEWS [DOC] Fix typos [ci skip] Jun 30, 2019
README.EXT README.EXT: add redirect [ruby-core:68631] Mar 25, 2015
README.EXT.ja README.EXT.ja: add redirect [ruby-core:68631] Mar 30, 2015
README.ja.md Prefer master rather than trunk in README [ci skip] Jun 30, 2019
README.md Prefer master rather than trunk in README [ci skip] Jun 30, 2019
aclocal.m4 configure.ac: check finite,isinf,isnan as macros first Feb 8, 2019
addr2line.c Suppress warnings by gcc 9.1 Jun 8, 2019
addr2line.h Support Mach-O on backtrace with DWARF Oct 20, 2018
appveyor.yml Build AppVeyor only on master Jun 30, 2019
array.c array.c: Wrong heap size given to ruby_sized_xfree when freeing share… Jun 24, 2019
ast.c ast.c: update inspect results in the documents May 22, 2019
azure-pipelines.yml Now test-bundler is not working on macOS either Jun 18, 2019
bignum.c [DOC] fix markups [ci skip] Mar 22, 2019
class.c Eagerly name modules and classes May 22, 2019
common.mk ${} does not work with nmake.exe Jul 2, 2019
compar.c Clarify requirements of <=> Apr 22, 2019
compile.c * expand tabs. Jun 16, 2019
complex.c * expand tabs. Jun 19, 2019
configure.ac Use realpath(3) instead of custom realpath implementation if available Jul 1, 2019
constant.h Module#constant_source_location [Feature #10771] Jun 22, 2019
cont.c Use native coroutine implementation on OpenBSD-amd64 Jun 26, 2019
debug.c internal.h: remove dependecy on ruby/io.h Jan 9, 2018
debug_counter.c Add debug counter for MJIT stale_units Apr 14, 2019
debug_counter.h Reduce ONIG_NREGION from 10 to 4: power of 2 and testing revealed mos… May 7, 2019
dir.c [DOC] fix markups [ci skip] Mar 22, 2019
dln.c Remove IA64 support. Jun 19, 2019
dln.h dln.c: extra arguments Jun 30, 2013
dln_find.c dln_find.c: MAXPATHLEN is not used already Jun 2, 2016
dmydln.c UNREACHABLE_RETURN Jul 24, 2018
dmyenc.c load.c: tweak the return value Dec 3, 2014
dmyext.c dmyenc.c: separate Nov 27, 2014
encindex.h encoding.c: rb_enc_find_index2 Dec 22, 2017
encoding.c [DOC] fix markups [ci skip] Mar 22, 2019
enum.c squeeze space [ci skip] Jun 13, 2019
enumerator.c Remove duplicate functions Jun 21, 2019
error.c * expand tabs. Jun 13, 2019
eval.c Include inspect value of object in FrozenError messages Jun 5, 2019
eval_error.c eval_error.c: should not escapce newline and tab Jan 24, 2019
eval_intern.h Use UNALIGNED_MEMBER_PTR May 31, 2019
eval_jump.c `$SAFE` as a process global state. [Feature #14250] Dec 28, 2017
file.c Don't use native realpath(3) on Solaris Jul 1, 2019
gc.c Frozen objects in WeakMap Jun 22, 2019
gc.h don't need to sweep rest. May 16, 2019
gem_prelude.rb Reduce system calls by activating the `did_you_mean` gem. Feb 25, 2016
golf_prelude.rb golf_prelude.rb: suppress the redefining warning Jun 22, 2019
goruby.c goruby.c: FD leak [ci skip] Mar 9, 2017
hash.c Raise TypeError if calling ENV.freeze Jul 1, 2019
hrtime.h hrtime.h: fix typo in non-builtin overflow check Aug 30, 2018
id_table.c Add `GC.compact` again. Apr 20, 2019
id_table.h Add `GC.compact` again. Apr 20, 2019
inits.c Defer setting gc_stress until inits done Apr 24, 2019
insns.def add definemethod/definesmethod insn. Apr 5, 2019
internal.h Turned `recur` into `int` [Feature #15777] Jun 21, 2019
io.c O_EXCL has no meaning for fdopen Jun 28, 2019
iseq.c Use UNALIGNED_MEMBER_PTR May 31, 2019
iseq.h Add `GC.compact` again. Apr 20, 2019
lex.c.blt keywords: shrink struct kwtable Jan 21, 2018
load.c Turned `recur` into `int` [Feature #15777] Jun 21, 2019
loadpath.c -Wno-overlength-strings Jan 16, 2018
localeinit.c internal.h: remove dependecy on ruby/encoding.h Jan 9, 2018
main.c main.c: RUBY_DEBUG_ENV in devel Jun 30, 2017
marshal.c * expand tabs. Jul 1, 2019
math.c math.c: adjust cbrt Jun 6, 2018
method.h STATIC_ASSERT for VM_METHOD_TYPE_MINIMUM_BITS May 31, 2019
miniinit.c miniinit.c: built-in encoding aliases Dec 26, 2015
mjit.c Rename rb_gc_new_location to rb_gc_location May 18, 2019
mjit.h Rename mjit_gc_finish_hook to mjit_gc_exit_hook May 16, 2019
mjit_compile.c Revert "Try dropping const qualifier to suppress msiwn warning" Apr 21, 2019
mjit_worker.c Do not use rb_iseq_path() while moving ISeq pointers May 29, 2019
node.c Fix grammar of macro name: ECCESSED -> ECCESSIVE Jun 5, 2019
node.h Fix grammar of macro name: ECCESSED -> ECCESSIVE Jun 5, 2019
numeric.c Make opt_aref instruction support Integer#[] Jun 1, 2019
object.c * expand tabs. Jun 22, 2019
pack.c [DOC] fix markups [ci skip] Mar 28, 2019
parse.y Hoisted out f_rest_marg Jun 30, 2019
prelude.rb [DOC] update target_thread to TracePoint#enable Jun 30, 2019
probes.d change lingering dtrace probe documentation from function- to method- May 30, 2015
probes_helper.h vm.c: disable dtrace in jit source Feb 20, 2018
proc.c * expand tabs. Jun 11, 2019
process.c process.c: [DOC] remove extra quotes [ci skip] Mar 30, 2019
random.c * expand tabs. Jun 4, 2019
range.c range.c (inspect_range): omit beginless "nil" May 22, 2019
rational.c No TypeError at nil if exception: false Jan 12, 2019
re.c Remove member char_offset_updated from struct rmatch as member char_o… Apr 23, 2019
regcomp.c Fix issues detected by code analysis tool (mainly Coverity). Sep 15, 2018
regenc.c Merge Onigmo 6.1.1 Feb 11, 2017
regenc.h initializer paren-string `{("str")}` is a C99ism Jan 2, 2018
regerror.c Escape control codes in regexp warning message Jun 29, 2019
regexec.c Only define history_root member of the Oniguruma re_registers struct … Apr 23, 2019
regint.h Merge Onigmo 6.1.1 Feb 11, 2017
regparse.c Fixed String#grapheme_clusters with wide encodings Jun 29, 2019
regparse.h Fix typos. Jan 18, 2018
regsyntax.c Merge Onigmo 6.0.0 Dec 10, 2016
ruby-runner.c Give the MJIT header path name Dec 8, 2018
ruby.c * expand tabs. Jun 4, 2019
ruby_assert.h string literal longer than 509 characters is a C99ism Jan 2, 2018
ruby_atomic.h move atomic logic from mjit.c from ruby_atomic.h Aug 1, 2018
rubystub.c rubystub.c: sys/param.h for MAXPATHLEN Aug 20, 2016
safe.c `$SAFE` as a process global state. [Feature #14250] Dec 28, 2017
signal.c [DOC] fix markups [ci skip] Mar 28, 2019
siphash.c switch SipHash from SipHash24 to SipHash13 variant Jan 20, 2017
siphash.h blacklist UBSAN's unsigned integer overflow Nov 7, 2018
sparc.c configure.ac Sep 29, 2017
sprintf.c sprintf.c: fix typo Apr 22, 2018
st.c Add `GC.compact` again. Apr 20, 2019
strftime.c Prefer `rb_fstring_lit` over `rb_fstring_cstr` Oct 13, 2018
string.c * expand tabs. Jun 29, 2019
struct.c Define Struct#deconstruct Apr 17, 2019
symbol.c Prefix global_symbols with `ruby_` May 16, 2019
symbol.h Add RB_ID_SERIAL_MAX Apr 25, 2019
thread.c [DOC] Re-apply r11000, 41256fd Jun 28, 2019
thread_pthread.c * expand tabs. Jun 19, 2019
thread_pthread.h thread_pthread.h: rename `gvl.acquired' to `gvl.owner' and document Aug 28, 2018
thread_sync.c do_mutex_lock: release mutex before checking for interrupts (fixes is… Jun 11, 2019
thread_win32.c Remove IA64 support. Jun 19, 2019
thread_win32.h * ext/openssl/depend: remove dependency from internal headers. May 14, 2014
time.c Marshal distant past/future Jun 19, 2019
timev.h timev.h: dummy definition for TAGS Apr 10, 2019
transcode.c Prefer rb_check_arity when 0 or 1 arguments Dec 6, 2018
transcode_data.h transcode_data.h: missing cast Aug 8, 2015
transient_heap.c prefix ASAN related inline functions asan_ May 23, 2019
transient_heap.h Add `GC.compact` again. Apr 20, 2019
util.c Split dtoa.c Feb 7, 2019
variable.c * expand tabs. Jul 1, 2019
version.c Update RDoc of RUBY_REVISION Jun 5, 2019
version.h * 2019-07-02 Jul 1, 2019
vm.c Ensure that vm_stack is cleared in `thread_cleanup_func_before_exec`. Jun 20, 2019
vm_args.c update Array's length correctly. May 23, 2019
vm_backtrace.c Handle (empty) backtrace when thread is not born yet. Jun 19, 2019
vm_core.h Ensure that vm_stack is cleared in `thread_cleanup_func_before_exec`. Jun 20, 2019
vm_debug.h defines.h: RUBY_SYMBOL_EXPORT_{BEGIN,END} Apr 5, 2013
vm_dump.c Remove IA64 support. Jun 19, 2019
vm_eval.c Use UNALIGNED_MEMBER_PTR May 31, 2019
vm_exec.c vm_exec.c: reduced repeated same calls Mar 4, 2018
vm_exec.h use __GNUC__ instead of __GCC__. Mar 8, 2019
vm_insnhelper.c Fix SystemStackError when calling a method in an unused refinement Jun 11, 2019
vm_insnhelper.h Share vm_call_iseq_optimizable_p to reduce copy-paste Mar 21, 2019
vm_method.c * expand tabs. Apr 10, 2019
vm_opts.h vm_opts.h: share USE_IC_FOR_IVAR as OPT_IC_FOR_IVAR Oct 14, 2018
vm_trace.c Suppress warnings by gcc 9.1 Jun 8, 2019
vsnprintf.c give up sanitizing BSD_vfprintf Apr 26, 2019
wercker.yml Generalize timeout_scale Jun 11, 2019

README.md

Build Status wercker status 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

You can’t perform that action at this time.