Skip to content
Please note that GitHub no longer supports your web browser.

We recommend upgrading to the latest Google Chrome or Firefox.

Learn more
The Ruby Programming Language [mirror]
Branch: trunk
Clone or download
jeremyevans and hsbt Make psych.so deterministic
Fixes Ruby Bug #15890
Latest commit 06a2534 Jun 2, 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 Add a benchmark using IRB::Color Jun 1, 2019
bin bin/erb: improve documentation of -P flag Dec 16, 2018
bootstraptest Numbered parameters [Feature #4475] Mar 17, 2019
ccan ccan/list: sync with upstream Feb 1, 2018
coroutine Make COROUTINE_XMM_REGISTERS compile-time only too May 17, 2019
coverage Fix typo May 21, 2019
cygwin MFLAGS for nmake Feb 10, 2017
defs Force update all RDoc at install May 25, 2019
doc Add myself as OpenBSD platform maintainer Jun 1, 2019
enc remove Unicode 12.0.0 related directory and generated files Apr 5, 2019
ext Make psych.so deterministic Jun 2, 2019
gems Update test-unit May 19, 2019
include Added missing predicate macros May 28, 2019
lib Add Reline test for unknown macro Jun 1, 2019
libexec Merge Bundler 2.1.0.pre.1 as developed version from upstream. Apr 14, 2019
man Merge Bundler 2.1.0.pre.1 as developed version from upstream. Apr 14, 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 Update to ruby/spec@cfe908c May 31, 2019
template template/prelude.c.tmpl: allow UTF-8 characters Apr 19, 2019
test Add Reline test for unknown macro Jun 1, 2019
tool Add --limit option and default it to 20 May 31, 2019
win32 Do not export InitVM functions May 17, 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 Removed and ignore symlinks by in-place build [Bug #15870] May 24, 2019
.indent.pro * .indent.pro: added for ruby-style. Mar 11, 2010
.travis.yml .travis.yml: Minor reorder for shortening May 29, 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 leaked-globals: check if un-prefixed symbols leak externally May 16, 2019
NEWS NEWS: move GC.compact Jun 1, 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 Use conssitent documentation about repository [ci skip] May 21, 2019
README.md Use conssitent documentation about repository [ci skip] May 21, 2019
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 again! May 31, 2019
array.c do not use RARRAY_SET() directly in array.c. May 21, 2019
ast.c ast.c: update inspect results in the documents May 22, 2019
azure-pipelines.yml .azure-pipelines.yml: Add timeout to install dependencies May 26, 2019
bignum.c [DOC] fix markups [ci skip] Mar 22, 2019
class.c Eagerly name modules and classes May 22, 2019
common.mk Make the target name unique when BASERUBY=no May 30, 2019
compar.c Clarify requirements of <=> Apr 22, 2019
compile.c Use UNALIGNED_MEMBER_PTR May 31, 2019
complex.c Split long expression Apr 23, 2019
configure.ac Added --with-rdoc option May 25, 2019
constant.h Add `GC.compact` again. Apr 20, 2019
cont.c ia64: Don't clear register_stack_start Apr 27, 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 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 [DOC] fix markups [ci skip] Mar 22, 2019
enum.c enum.c (enum_tally): better example in rdoc May 23, 2019
enumerator.c [DOC] Improve documentation for Enumerator::Lazy May 18, 2019
error.c * expand tabs. May 26, 2019
eval.c * expand tabs. May 26, 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 Always mark the string returned by File.realpath as tainted Apr 28, 2019
gc.c * expand tabs. May 30, 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 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 (rb_hash_s_create): Reject `Hash[[nil]]` May 22, 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 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 Make opt_aref instruction support Integer#[] Jun 1, 2019
io.c Fixed about ARGF.lineno May 5, 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 [DOC] fix markups [ci skip] Mar 22, 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 avoid division by zero Nov 16, 2018
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 description of NODE_IN Apr 27, 2019
node.h parse.y: duplicated when clause warning May 4, 2019
numeric.c Make opt_aref instruction support Integer#[] Jun 1, 2019
object.c Avoid triggering autoload in Module#const_defined?(String) May 7, 2019
pack.c [DOC] fix markups [ci skip] Mar 28, 2019
parse.y parse.y: adjust here-doc error token May 30, 2019
prelude.rb Fix typos, grammar, and style May 4, 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 Add class ref to `UnboundMethod#owner` doc Apr 27, 2019
process.c process.c: [DOC] remove extra quotes [ci skip] Mar 30, 2019
random.c random.c: unify syscall with getrandom Feb 10, 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 regerror.c: lenghten MAX_ERROR_PAR_LEN to contain old property names Oct 16, 2018
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 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 Do not modify shared array May 21, 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 Symbol just represents a name May 13, 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 * expand tabs. May 26, 2019
thread_pthread.c * expand tabs. May 25, 2019
thread_pthread.h thread_pthread.h: rename `gvl.acquired' to `gvl.owner' and document Aug 28, 2018
thread_sync.c Use UNALIGNED_MEMBER_PTR May 31, 2019
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 [DOC] Use Rational literals than to_r in examples May 24, 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 Fix FrozenError when assigning frozen class to constant May 31, 2019
version.c Fallback RUBY_FULL_REVISION if not defined May 22, 2019
version.h * 2019-06-02 Jun 1, 2019
vm.c Make opt_aref instruction support Integer#[] Jun 1, 2019
vm_args.c update Array's length correctly. May 23, 2019
vm_backtrace.c * expand tabs. Mar 21, 2019
vm_core.h extend machine stacks when sanitizers are there Apr 26, 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 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 * expand tabs. Jun 1, 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 Fix typos Mar 27, 2019
vsnprintf.c give up sanitizing BSD_vfprintf Apr 26, 2019
wercker.yml Set git config to commit mjit-debug May 30, 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/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/

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