Skip to content
This repository

A concerted effort to augment and enhance Ruby MRI documentation

branch: trunk

This branch is 0 commits ahead and 0 commits behind trunk

* parse.y (ENC_SINGLE): Unused macro removed.

git-svn-id: svn+ssh:// b2dd03c8-39d4-4d8f-98ff-823fe69b080e
latest commit 537ee14ff4
Narihiro Nakamura authorNari authored March 07, 2014
Octocat-spinner-32 benchmark
Octocat-spinner-32 bin
Octocat-spinner-32 bootstraptest
Octocat-spinner-32 cygwin
Octocat-spinner-32 defs
Octocat-spinner-32 doc
Octocat-spinner-32 enc
Octocat-spinner-32 ext
Octocat-spinner-32 include
Octocat-spinner-32 lib
Octocat-spinner-32 man
Octocat-spinner-32 misc
Octocat-spinner-32 missing fix typos. Patch by k_takata. May 19, 2013
Octocat-spinner-32 nacl fix typos. Patch by k_takata. May 19, 2013
Octocat-spinner-32 sample * remove trailing spaces, append newline at EOF. December 25, 2013
Octocat-spinner-32 spec
Octocat-spinner-32 symbian
Octocat-spinner-32 template verconf.h.tmpl: rename December 27, 2013
Octocat-spinner-32 test * test/openssl/test_ssl.rb: Reuse TLS default options from March 07, 2014
Octocat-spinner-32 tool find_svn_log may return blank xml March 01, 2014
Octocat-spinner-32 win32, win32/Makefile.sub: PACKED_STRUCT with VC February 25, 2014
Octocat-spinner-32 .document * .document: Removed extra space January 16, 2013
Octocat-spinner-32 .editorconfig
Octocat-spinner-32 .gdbinit .gdbinit: initialize December 13, 2013
Octocat-spinner-32 .gitignore .gitignore: ignore benchmark files February 22, 2014
Octocat-spinner-32 * added for ruby-style. March 11, 2010
Octocat-spinner-32 .travis.yml * .travis.yml: Rebuild Travis CI's "ruby-head" version on successful October 07, 2013
Octocat-spinner-32 BSDL
Octocat-spinner-32 COPYING
Octocat-spinner-32 COPYING.ja Change encoding from EUC-JP to UTF-8. [Feature #5128] September 04, 2011
Octocat-spinner-32 ChangeLog * parse.y (ENC_SINGLE): Unused macro removed. March 07, 2014
Octocat-spinner-32 GPL * GPL: update text of GPLv2. [ruby-core:44488] [Bug #6328] June 03, 2012
Octocat-spinner-32 KNOWNBUGS.rb
Octocat-spinner-32 LEGAL
Octocat-spinner-32 * ".DEFAULT" target removed because it is not for March 04, 2014
Octocat-spinner-32 NEWS
Octocat-spinner-32 README.EXT use do/while(0) around GetDBM macros March 02, 2014
Octocat-spinner-32 README.EXT.ja
Octocat-spinner-32 *, removed (wrong) mode setting for emacs. February 24, 2014
Octocat-spinner-32 addr2line.c
Octocat-spinner-32 addr2line.h * addr2line.c: use USE_ELF instead of __ELF__ because Solaris July 08, 2011
Octocat-spinner-32 array.c
Octocat-spinner-32 bignum.c
Octocat-spinner-32 class.c
Octocat-spinner-32 compar.c * compar.c (cmp_equal): warn for this release and still rescue January 18, 2014
Octocat-spinner-32 compile.c compile.c: use correct key for block when loading serialized iseqs January 27, 2014
Octocat-spinner-32 complex.c
Octocat-spinner-32 constant.h constant.h: reduce rb_const_entry_t size on 64-bit February 06, 2014
Octocat-spinner-32 cont.c vm_core.h: rb_thread_struct::machine January 28, 2014
Octocat-spinner-32 debug.c * include/ruby/ruby.h: rename FL_OLDGEN to FL_PROMOTED. November 04, 2013
Octocat-spinner-32 dir.c dir.c (dir_s_glob): RB_GC_GUARD instead of volatile February 16, 2014
Octocat-spinner-32 dln.c adjust indent and style February 27, 2014
Octocat-spinner-32 dln.h dln.c: extra arguments June 30, 2013
Octocat-spinner-32 dln_find.c dln.c: extra arguments June 30, 2013
Octocat-spinner-32 dmydln.c * encoding.c (rb_enc_codepoint_len): Use UNREACHABLE to avoid "control April 13, 2012
Octocat-spinner-32 dmyext.c no K&R style May 19, 2012
Octocat-spinner-32 encoding.c string.c: use actual encodings January 15, 2014
Octocat-spinner-32 enum.c
Octocat-spinner-32 enumerator.c
Octocat-spinner-32 error.c
Octocat-spinner-32 eval.c
Octocat-spinner-32 eval_error.c
Octocat-spinner-32 eval_intern.h
Octocat-spinner-32 eval_jump.c eval_jump.c: reuse same tag November 19, 2013
Octocat-spinner-32 file.c
Octocat-spinner-32 gc.c gc.c: simplify condition March 01, 2014
Octocat-spinner-32 gc.h
Octocat-spinner-32 gem_prelude.rb
Octocat-spinner-32 golf_prelude.rb
Octocat-spinner-32 goruby.c
Octocat-spinner-32 hash.c class.c: do nothing if copying self February 21, 2014
Octocat-spinner-32 ia64.s
Octocat-spinner-32 inits.c
Octocat-spinner-32 insns.def insns.def: adjust style January 25, 2014
Octocat-spinner-32 internal.h * internal.h: Move BDIGIT and related definitions from February 17, 2014
Octocat-spinner-32 io.c * io.c (rb_io_fsync): need to fsync even if on Windows. fixed mistake of March 02, 2014
Octocat-spinner-32 iseq.c
Octocat-spinner-32 iseq.h * include/ruby/ruby.h (struct rb_data_type_struct), gc.c: add June 19, 2013
Octocat-spinner-32 lex.c.blt
Octocat-spinner-32 load.c load.c (ruby_init_ext): make idempotent to suppress warnings March 02, 2014
Octocat-spinner-32 loadpath.c * loadpath.c (RUBY_REVISION): Defined to suppress revision.h June 17, 2013
Octocat-spinner-32 localeinit.c
Octocat-spinner-32 main.c * include/ruby/debug.h: introdudced. November 20, 2012
Octocat-spinner-32 marshal.c marshal.c: do not recycle wrapper objects February 17, 2014
Octocat-spinner-32 math.c
Octocat-spinner-32 method.h * method.h: rearrange rb_method_definition_struct to save 8 bytes in January 23, 2014
Octocat-spinner-32 miniinit.c
Octocat-spinner-32 node.c * include/ruby/util.h: removed extra semicolon in definition of November 21, 2012
Octocat-spinner-32 node.h * node.h: catch up comments for last commit. November 04, 2013
Octocat-spinner-32 numeric.c * numeric.c: Mention that Float::DIG is the minimum number March 02, 2014
Octocat-spinner-32 object.c
Octocat-spinner-32 pack.c pack.c: hide associated objects February 05, 2014
Octocat-spinner-32 parse.y * parse.y (ENC_SINGLE): Unused macro removed. March 07, 2014
Octocat-spinner-32 prelude.rb * prelude.rb: Moved Mutex#synchronize to November 19, 2012
Octocat-spinner-32 probes.d
Octocat-spinner-32 probes_helper.h
Octocat-spinner-32 proc.c
Octocat-spinner-32 process.c * process.c: [DOC] typo fix by @jkassemi [fix GH-544][ci skip] February 23, 2014
Octocat-spinner-32 random.c
Octocat-spinner-32 range.c
Octocat-spinner-32 rational.c * internal.h: Rename macro names: RBIGNUM_FOO to BIGNUM_FOO. February 15, 2014
Octocat-spinner-32 re.c re.c (rb_reg_raise): remove volatile February 13, 2014
Octocat-spinner-32 regcomp.c
Octocat-spinner-32 regenc.c Revert r41786 "broken utf-8" July 09, 2013
Octocat-spinner-32 regenc.h
Octocat-spinner-32 regerror.c
Octocat-spinner-32 regexec.c * Merge Onigmo 5.13.4 f22cf2e. April 13, 2013
Octocat-spinner-32 regint.h * Merge Onigmo 5.13.4 f22cf2e. April 13, 2013
Octocat-spinner-32 regparse.c * Merge Onigmo 5.13.4 f22cf2e. April 13, 2013
Octocat-spinner-32 regparse.h defines.h: RUBY_SYMBOL_EXPORT_{BEGIN,END} April 05, 2013
Octocat-spinner-32 regsyntax.c
Octocat-spinner-32 ruby.c ruby.c: check argc February 07, 2014
Octocat-spinner-32 ruby_atomic.h
Octocat-spinner-32 safe.c
Octocat-spinner-32 signal.c
Octocat-spinner-32 siphash.c siphash.c: fix missing condition November 30, 2013
Octocat-spinner-32 siphash.h
Octocat-spinner-32 sparc.c * sparc.c: Use __asm__ instead of asm for gcc. April 27, 2013
Octocat-spinner-32 sprintf.c
Octocat-spinner-32 st.c
Octocat-spinner-32 strftime.c * strftime.c (rb_strftime_with_timespec): Test yday range. April 06, 2013
Octocat-spinner-32 string.c
Octocat-spinner-32 struct.c * include/ruby/intern.h, February 14, 2014
Octocat-spinner-32 thread.c adjust indent and style February 27, 2014
Octocat-spinner-32 thread_native.h
Octocat-spinner-32 thread_pthread.c define SET_THREAD_NAME February 27, 2014
Octocat-spinner-32 thread_pthread.h * thread_(pthread|win32).h: rename rb_thread_cond_t to July 23, 2013
Octocat-spinner-32 thread_win32.c vm_core.h: rb_thread_struct::machine January 28, 2014
Octocat-spinner-32 thread_win32.h
Octocat-spinner-32 time.c [DOC] February 28, 2014
Octocat-spinner-32 timev.h, win32/Makefile.sub: PACKED_STRUCT with VC February 25, 2014
Octocat-spinner-32 transcode.c
Octocat-spinner-32 transcode_data.h
Octocat-spinner-32 util.c
Octocat-spinner-32 variable.c
Octocat-spinner-32 version.c
Octocat-spinner-32 version.h * 2014-03-07 March 06, 2014
Octocat-spinner-32 vm.c adjust indent and style February 27, 2014
Octocat-spinner-32 vm_backtrace.c
Octocat-spinner-32 vm_core.h
Octocat-spinner-32 vm_debug.h
Octocat-spinner-32 vm_dump.c
Octocat-spinner-32 vm_eval.c vm_eval.c: compare method type January 30, 2014
Octocat-spinner-32 vm_exec.c * vm_exec.c (cfp): Fixes a SEGV issue in r44554. January 14, 2014
Octocat-spinner-32 vm_exec.h * vm_exec.h (VM_DEBUG_STACKOVERFLOW): added. December 18, 2013
Octocat-spinner-32 vm_insnhelper.c
Octocat-spinner-32 vm_insnhelper.h
Octocat-spinner-32 vm_method.c vm_method.c: disable GMC writing if GMC is disabled March 02, 2014
Octocat-spinner-32 vm_opts.h
Octocat-spinner-32 vm_trace.c
Octocat-spinner-32 vsnprintf.c * vsnprintf.c: remove duplicated def of `UNINITIALIZED_VAR()'. February 05, 2014

What's Ruby

Ruby is the interpreted scripting language for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in Perl). It is simple, straight-forward, and extensible.

Features of Ruby

  • Simple Syntax
  • Normal Object-Oriented features(ex. class, method calls)
  • Advanced Object-Oriented features(ex. Mix-in, Singleton-method)
  • Operator Overloading
  • Exception Handling
  • Iterators and Closures
  • Garbage Collection
  • Dynamic Loading of Object files(on some architecture)
  • Highly Portable (works on many Unix-like/POSIX compatible platforms as well as Windows, Mac OS X, BeOS etc.) cf.

How to get Ruby

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

The Ruby distribution files can be found in the following FTP site:

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

$ svn co ruby

Or if you are using git then use the following command:

$ git clone git://

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

$ svn ls

Or if you are using git then use the following command:

$ git ls-remote git://

Ruby home-page

The URL of the Ruby home-page is:

Mailing list

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


in the mail body (not subject) to the address

How to compile and install

This is what you need to do to compile and install Ruby:

  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, 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 does 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.

  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. Run 'make install'

    This command will create following directories and install files onto them.

    • ${DESTDIR}${prefix}/bin
    • ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}
    • ${DESTDIR}${prefix}/include/ruby-${MAJOR}.${MINOR}.${TEENY}/${PLATFOR M}
    • ${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}/${P LATFORM}
    • ${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.


See the file COPYING.


Questions about the Ruby language can be asked on the Ruby-Talk mailing list ( or on websites like (

Bug reports should be filed at

The Author

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

Something went wrong with that request. Please try again.