The Wayback Machine - https://web.archive.org/web/20190216212052/https://github.com/ruby/ruby
Skip to content
The Ruby Programming Language [mirror] https://www.ruby-lang.org/
Branch: trunk
Clone or download
matzbot * 2019-02-17
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67081 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Latest commit 1ce2ba3 Feb 16, 2019
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 on-smash canary detection Feb 1, 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 GNU make does not need srcs_vpath Feb 14, 2019
doc NEWS: use note-list Feb 2, 2019
enc Removed duplicate dependents Feb 14, 2019
ext Prefer relative directory from srcdir to top_srcdir Feb 14, 2019
gems * gems/bundled_gems: Upgrade the did_you_mean gem to 1.3.0 Dec 19, 2018
include Introduce RVALUE_EMBED_LEN_MAX to remove a magic number Feb 14, 2019
lib Merge RubyGems master@9be7858f7f17eae3058204f3c03e4b798ba18b9c Feb 14, 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 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 Accept a third value for NaNs, as produced by the Sun Studio C Compiler Feb 11, 2019
template Disable tailcall optimization [Bug #15303] Dec 12, 2018
test Merge RubyGems master@9be7858f7f17eae3058204f3c03e4b798ba18b9c Feb 14, 2019
tool Prefer relative directory from srcdir to top_srcdir Feb 14, 2019
win32 Parenthesize `for` to ignore errors Feb 13, 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: 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 Cleaning gems should not clean ext Feb 13, 2019
NEWS enum.c: Enumerable#tally Feb 7, 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 configure.ac: check finite,isinf,isnan as macros first Feb 8, 2019
addr2line.c Use _NSGetMachExecuteHeader() instead of _mh_execute_header Jan 31, 2019
addr2line.h Support Mach-O on backtrace with DWARF Oct 20, 2018
appveyor.yml appveyor.yml: retry zlib downloads Feb 7, 2019
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 Bump the benchmark-driver git ref to v0.14.13 (macOS memory runner su… Feb 15, 2019
compar.c Comparable#clamp Aug 11, 2016
compile.c Show proper location for warning [Feature #15575] Feb 4, 2019
complex.c No TypeError at nil if exception: false Jan 12, 2019
configure.ac random.c: use getrandom() if available. Feb 10, 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 enum.c: [DOC] tally does not take a block Feb 8, 2019
enumerator.c * expand tabs. Jan 30, 2019
error.c Remove message to recommend to repot bug Feb 13, 2019
eval.c mjit.c: use boolean type for boolean variables Jan 10, 2019
eval_error.c eval_error.c: should not escapce newline and tab Jan 24, 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 Revert "Assert that union sizes match" Feb 16, 2019
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 hash.c: hoisted out st_index_hash Jan 30, 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: opt_regexpmatch1 is not a leaf insn Feb 1, 2019
internal.h Introduce RVALUE_EMBED_LEN_MAX to remove a magic number Feb 14, 2019
io.c io.c: remove unused variable and fix typo Feb 11, 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 Add refinements support to method/instance_method. Jan 28, 2019
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 enumerator.c: fix arith_seq_first for Infinity Jan 30, 2019
object.c Fix `Module#const_defined?` on inherited constants Jan 28, 2019
pack.c pack.c: cast from double to float can be undefined Nov 16, 2018
parse.y parse.y: trim newline in erred code Jan 26, 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 * expand tabs. Jan 28, 2019
process.c new constant: Process::CLOCK_TAI. Feb 9, 2019
random.c random.c: unify syscall with getrandom Feb 10, 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 * string.c (chopped_length): early return for empty strings Feb 7, 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 Split dtoa.c Feb 7, 2019
variable.c * expand tabs. Dec 28, 2018
version.c Moved version numbers Dec 28, 2018
version.h * 2019-02-17 Feb 16, 2019
vm.c on-smash canary detection Feb 1, 2019
vm_args.c on-smash canary detection Feb 1, 2019
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 Split procstat_vm.c Feb 7, 2019
vm_eval.c on-smash canary detection Feb 1, 2019
vm_exec.c vm_exec.c: reduced repeated same calls Mar 4, 2018
vm_exec.h fix typo. Sep 21, 2018
vm_insnhelper.c on-smash canary detection Feb 1, 2019
vm_insnhelper.h on-smash canary detection Feb 1, 2019
vm_method.c Add refinements support to method/instance_method. Jan 28, 2019
vm_opts.h vm_opts.h: share USE_IC_FOR_IVAR as OPT_IC_FOR_IVAR Oct 14, 2018
vm_trace.c vm_trace.c: trick rdoc for TracePoint#enable Feb 1, 2019
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

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.