The Ruby Programming Language
Clone or download
Pull request Compare This branch is even with ruby:trunk.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
basictest Prefer block_given? to iterator? Jan 18, 2019
benchmark benchmark/app_aobench.rb: complete commented code to write the image … Jan 21, 2019
bin bin/erb: improve documentation of -P flag Dec 16, 2018
bootstraptest parse.y: more token names Jan 21, 2019
ccan ccan/list: sync with upstream Feb 1, 2018
coroutine Ensure x86 stack is fortified, fixed #15335. Dec 11, 2018
coverage fix a typo [ci skip] Sep 12, 2014
cygwin MFLAGS for nmake Feb 10, 2017
defs Method reference operator Dec 31, 2018
doc [DOC] mention rb_str_modify Jan 18, 2019
enc implement special behavior for Georgian for String#capitalize Dec 9, 2018
ext Use `&` instead of `modulo` Jan 15, 2019
gems * gems/bundled_gems: Upgrade the did_you_mean gem to 1.3.0 Dec 19, 2018
include introduce rb_nogvl C-API to mark ubf as async-signal-safe Jan 4, 2019
lib Merge rubygems master targeted RubyGems 3.1.0. Jan 22, 2019
libexec Merge Bundler 2.0.1 from upstream. Jan 4, 2019
man Merge Bundler 2.0.1 from upstream. Jan 4, 2019
misc ruby-style.el: ruby-style-c-mode by VCS [ci skip] Nov 27, 2018
missing internal.h: unify our own stdtbool.h implementation Jan 6, 2019
sample sample/fib.py: Fix syntax error in Python 3 [ci skip] Dec 18, 2018
spec Update to ruby/spec@e2fbd4d Jan 20, 2019
template Disable tailcall optimization [Bug #15303] Dec 12, 2018
test Merge rubygems master targeted RubyGems 3.1.0. Jan 22, 2019
tool Revert r58345 and r58371. Jan 19, 2019
win32 win32/Makefile.sub: try to use __restrict on Visual Studio 2013 Jan 4, 2019
.dir-locals.el add .dir-locals.el [ci skip] Dec 27, 2018
.document Include LEGAL in .document [ci skip] Dec 1, 2018
.editorconfig Set indent_size of reg*.[ch] to 2 [ci skip] Oct 3, 2018
.gdbinit support theap for T_HASH. [Feature #14989] Oct 30, 2018
.gitattributes rename ruby-runner as bin/ruby Sep 15, 2017
.gitignore Use BUILDDIR in ruby-runner.h from config.status Dec 8, 2018
.indent.pro * .indent.pro: added for ruby-style. Mar 11, 2010
.travis.yml .travis.yml: allow C99 on pedanticism buid Jan 10, 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: expand tabs Feb 18, 2017
COPYING.ja Change encoding from EUC-JP to UTF-8. [Feature #5128] Sep 4, 2011
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 LEGAL: gathered util.c [ci skip] Dec 10, 2018
Makefile.in Revert r65800 Jan 16, 2019
NEWS NEWS: announce C99 requirement [ci skip] Jan 10, 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 [DOC] Update CI build status badges [ci skip] Dec 20, 2018
README.md README.md: add wercker status badge [ci skip] Nov 2, 2018
aclocal.m4 Update aclocal to 1.16.1 [ci skip] Oct 5, 2018
addr2line.c addr2line.c: fix -Wextra-semi Jan 10, 2019
addr2line.h Support Mach-O on backtrace with DWARF Oct 20, 2018
appveyor.yml Try with TZInfo and Timezone gems Nov 28, 2018
array.c Clarify Array#- and Array#difference documentation Jan 15, 2019
ast.c ast.c: fix missing head part in dynamic literal Jan 14, 2019
bignum.c * expand tabs. Jan 4, 2019
class.c class.c: refactor class_instance_method_list Jan 9, 2019
common.mk rbinstall.rb: add --exclude option for install-nodoc Jan 17, 2019
compar.c Comparable#clamp Aug 11, 2016
compile.c Fix styles [ci skip] Jan 9, 2019
complex.c No TypeError at nil if exception: false Jan 12, 2019
configure.ac fix typo in r66836, missing '/'s Jan 22, 2019
constant.h vm_insnhelper.c: rb_autoloading_value flag Feb 13, 2018
cont.c Fix styles [ci skip] Jan 9, 2019
debug.c internal.h: remove dependecy on ruby/io.h Jan 9, 2018
debug_counter.c add debug counters more. Sep 28, 2018
debug_counter.h rename li_table->ar_table (and related names). Dec 14, 2018
dir.c dir.c: fix Dir.glob with braces and matching dir Jan 16, 2019
dln.c reduce copy & paste Jul 30, 2018
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 encoding.c: check external encoding Sep 15, 2018
enum.c Prefer rb_check_arity when 0 or 1 arguments Dec 6, 2018
enumerator.c enumerator.c: fix inspect with the last empty hash Dec 24, 2018
error.c * expand tabs. Jan 8, 2019
eval.c mjit.c: use boolean type for boolean variables Jan 10, 2019
eval_error.c * expand tabs. Jan 8, 2019
eval_intern.h reduce copy & paste Jul 30, 2018
eval_jump.c `$SAFE` as a process global state. [Feature #14250] Dec 28, 2017
file.c file.c: use correct integer-conversion function Oct 23, 2018
gc.c hide ar_table internals from internal.h. Dec 29, 2018
gc.h remove rb_threadptr_during_gc(). Oct 29, 2017
gem_prelude.rb Reduce system calls by activating the `did_you_mean` gem. Feb 25, 2016
golf_prelude.rb added `f` for 1 byte FizzBuzz because Hexagony has such feature May 21, 2018
goruby.c goruby.c: FD leak [ci skip] Mar 9, 2017
hash.c reset bound if the size is 0. Jan 17, 2019
hrtime.h hrtime.h: fix typo in non-builtin overflow check Aug 30, 2018
ia64.S Change Makefile rule for assembly to use .S rather than .s Nov 24, 2018
id_table.c adjust styles [ci skip] May 10, 2017
id_table.h id_table.h: dummy sentinel Aug 6, 2016
inits.c initialize VM postponed_job first. [Bug #15288] Nov 8, 2018
insns.def insns.def (duparray, duphash): add dtrace hooks Jan 9, 2019
internal.h mjit.c: use boolean type for boolean variables Jan 10, 2019
io.c * io.c: use copy_file_range() if defined Jan 21, 2019
iseq.c Fix styles [ci skip] Jan 9, 2019
iseq.h `script_compiled` TracePoint event [Feature #15287] Dec 6, 2018
lex.c.blt keywords: shrink struct kwtable Jan 21, 2018
load.c * expand tabs. Dec 31, 2018
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 avoid division by zero Nov 16, 2018
math.c math.c: adjust cbrt Jun 6, 2018
method.h Enable refinements on symbol-proc in ruby-level methods Dec 18, 2018
miniinit.c miniinit.c: built-in encoding aliases Dec 26, 2015
mjit.c mjit.c: use boolean type for boolean variables Jan 10, 2019
mjit.h mjit.c: use boolean type for boolean variables Jan 10, 2019
mjit_compile.c mjit.c: use boolean type for boolean variables Jan 10, 2019
mjit_worker.c Revert "mjit_worker.c: try to simplify CC_DLDFLAGS_ARGS" Jan 19, 2019
node.c * expand tabs. Dec 31, 2018
node.h Method reference operator Dec 31, 2018
numeric.c complex.c: optimize zero check for Float Jan 9, 2019
object.c No FloatDomainError at non-finitive number if exception: false Jan 12, 2019
pack.c pack.c: cast from double to float can be undefined Nov 16, 2018
parse.y parse.y: literal add_mark_object Jan 22, 2019
prelude.rb `TracePoint#enable(target_thraed:)` [Feature #15473] Dec 29, 2018
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 proc.c: proc without block Jan 10, 2019
process.c process.c: [DOC] small improvements Jan 20, 2019
random.c Fix Random.urandom in a chroot on OpenBSD Jan 3, 2019
range.c Fix styles [ci skip] Jan 9, 2019
rational.c No TypeError at nil if exception: false Jan 12, 2019
re.c re.c: [DOC] fix typos Dec 13, 2018
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 regerror.c: lenghten MAX_ERROR_PAR_LEN to contain old property names Oct 16, 2018
regexec.c label as lvalue is a GCCism Jan 2, 2018
regint.h Merge Onigmo 6.1.1 Feb 11, 2017
regparse.c convert check for array length to assertion and comment out Dec 7, 2018
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 Defer escaping control char in error messages Jan 8, 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 Prefer rb_check_arity when 0 or 1 arguments Dec 6, 2018
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 st.c (rb_hash_bulk_insert_into_st_table): avoid out-of-bounds write Jan 15, 2019
strftime.c Prefer `rb_fstring_lit` over `rb_fstring_cstr` Oct 13, 2018
string.c Add more example of `String#dump` Jan 22, 2019
struct.c Struct#to_h: Add doc for block form. Dec 23, 2018
symbol.c parse.y: ignore constant name captures Dec 20, 2018
symbol.h parse.y: ignore constant name captures Dec 20, 2018
thread.c introduce rb_nogvl C-API to mark ubf as async-signal-safe Jan 4, 2019
thread_pthread.c introduce rb_nogvl C-API to mark ubf as async-signal-safe Jan 4, 2019
thread_pthread.h thread_pthread.h: rename `gvl.acquired' to `gvl.owner' and document Aug 28, 2018
thread_sync.c thread_sync.c (rb_mutex_t): eliminate fork_gen Dec 22, 2018
thread_win32.c thread.c (call_without_gvl): spawn thread for UBF iff single-threaded Jan 4, 2019
thread_win32.h * ext/openssl/depend: remove dependency from internal headers. May 14, 2014
time.c time.c: [DOC] small improvement Jan 20, 2019
timev.h Timezone support by Time [Feature #14850] Oct 8, 2018
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 rename li_table->ar_table (and related names). Dec 14, 2018
transient_heap.h introduce USE_TRANSIENT_HEAP to enable/disable theap. Nov 1, 2018
util.c suppress integer overflow warnings Nov 15, 2018
variable.c * expand tabs. Dec 28, 2018
version.c Moved version numbers Dec 28, 2018
version.h * 2019-01-23 Jan 22, 2019
vm.c vm.c: [DOC] small fix Jan 20, 2019
vm_args.c vm_args.c: search symbol proc in super classes Dec 30, 2018
vm_backtrace.c Make some internal functions static Nov 16, 2018
vm_core.h introduce rb_nogvl C-API to mark ubf as async-signal-safe Jan 4, 2019
vm_debug.h defines.h: RUBY_SYMBOL_EXPORT_{BEGIN,END} Apr 5, 2013
vm_dump.c * expand tabs. [ci skip] Nov 7, 2018
vm_eval.c fix missed script_compiled events. [Bug #15471] Dec 27, 2018
vm_exec.c vm_exec.c: reduced repeated same calls Mar 4, 2018
vm_exec.h fix typo. Sep 21, 2018
vm_insnhelper.c vm_insnhelper.c: make VM helpers inline Jan 14, 2019
vm_insnhelper.h vm_insnhelper.c: delete unused macros Dec 28, 2018
vm_method.c Fix styles [ci skip] Jan 9, 2019
vm_opts.h vm_opts.h: share USE_IC_FOR_IVAR as OPT_IC_FOR_IVAR Oct 14, 2018
vm_trace.c `TracePoint#enable(target_thraed:)` [Feature #15473] Dec 29, 2018
vsnprintf.c avoid division by zero Nov 16, 2018
wercker.yml wercker.yml: debug problematic test on test-all Nov 18, 2018

README.md

Build Status Build status wercker status

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 (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/trunk/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/

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

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

Or if you are using git then use 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:

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

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

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

Ruby home page

The URL of the Ruby home page is:

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

Mailing list

There is a mailing list to talk about 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

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 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).

Bug reports should be filed 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