Skip to content
The Ruby Programming Language [mirror]
Branch: trunk
Clone or download
nobu ruby.c: respect features by command line
* ruby.c (process_options): feature options in command line
  arguments take precedence over options in RUBYOPT environment
  variable.  [ruby-core:92052] [Bug #15738]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Latest commit b84eed5 Mar 30, 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 Numbered parameters [Feature #4475] Mar 17, 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 Removed from standard library. No one maintains it from Ruby 2.0.0. Mar 11, 2019
enc delete directory and files related to Unicode version 11.0.0 Mar 6, 2019
ext Numbered parameters [Feature #4475] Mar 17, 2019
gems Update power_assert to 1.1.4 Mar 24, 2019
include Introduce RVALUE_EMBED_LEN_MAX to remove a magic number Feb 14, 2019
lib rdoc: Colorize background of code/pre [ci skip] Mar 30, 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 Add some more buffer for timeout check Mar 29, 2019
template Disable tailcall optimization [Bug #15303] Dec 12, 2018
test ruby.c: respect features by command line Mar 30, 2019
tool Add debug counters for MJIT cancel Mar 29, 2019
win32 FindFirstFile cannot glob share names Mar 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 Remove duplicated and change order Mar 21, 2019
.gdbinit .gdbinit (rp): follow up changes in r66390 Feb 17, 2019
.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 Debug make install instead of make Mar 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 Cleaning gems should not clean ext Feb 13, 2019
NEWS NEWS: Fix a typo [ci skip] Mar 28, 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 Add Azure Pipelines build status badge [ci skip] Mar 1, 2019
README.md Add Azure Pipelines build status badge [ci skip] Feb 28, 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 Drop invalid trailing comma in JSON object Mar 17, 2019
array.c array.c: [DOC] remove unnecessary markups [ci skip] Mar 21, 2019
ast.c [DOC] fix markups [ci skip] Mar 22, 2019
azure-pipelines.yml Fix broken retry logic Mar 29, 2019
bignum.c [DOC] fix markups [ci skip] Mar 22, 2019
class.c * expand tabs. Mar 11, 2019
common.mk ruby tool/update-deps --fix Mar 29, 2019
compar.c [DOC] fix markups [ci skip] Mar 22, 2019
compile.c * expand tabs. Mar 15, 2019
complex.c No TypeError at nil if exception: false Jan 12, 2019
configure.ac Check stx_btime in struct statx Feb 24, 2019
constant.h vm_insnhelper.c: rb_autoloading_value flag Feb 13, 2018
cont.c [DOC] fix markups [ci skip] Mar 22, 2019
debug.c internal.h: remove dependecy on ruby/io.h Jan 9, 2018
debug_counter.c Add debug counters for MJIT cancel Mar 29, 2019
debug_counter.h Add mjit_compile_failures debug counter Mar 29, 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 [DOC] fix markups [ci skip] Mar 22, 2019
enumerator.c Add Enumerator::Lazy docs. Mar 20, 2019
error.c [DOC] fix markups [ci skip] Mar 22, 2019
eval.c [DOC] fix markups [ci skip] Mar 22, 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: raise NotImplementedError instread of Errno::ENOSYS Mar 23, 2019
gc.c [DOC] fix markups [ci skip] Mar 22, 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 [DOC] fix markups [ci skip] Mar 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 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 * expand tabs. Mar 29, 2019
internal.h Introduce RVALUE_EMBED_LEN_MAX to remove a magic number Feb 14, 2019
io.c [DOC] fix markups [ci skip] Mar 22, 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 [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 change `cfunc->invoker` type for opt. Feb 22, 2019
miniinit.c miniinit.c: built-in encoding aliases Dec 26, 2015
mjit.c Prevent mjit length counters from being 0 Mar 29, 2019
mjit.h Add debug counters for MJIT Mar 29, 2019
mjit_compile.c Add debug counters for MJIT cancel Mar 29, 2019
mjit_worker.c mjit_worker.c: explicitly ignore the unused result of RB_DEBUG_COUNTE… Mar 29, 2019
node.c * expand tabs. Mar 15, 2019
node.h node.h: introduce nd_brace to determine if a hash literal is a keyword Mar 15, 2019
numeric.c numeric.c: fix infinite loop Mar 11, 2019
object.c [DOC] fix markups [ci skip] Mar 22, 2019
pack.c [DOC] fix markups [ci skip] Mar 28, 2019
parse.y parse.y: show error line separately Mar 28, 2019
prelude.rb Improve TracePoint docs. Mar 20, 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 [DOC] fix markups [ci skip] Mar 28, 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 [DOC] fix markups [ci skip] Mar 28, 2019
rational.c No TypeError at nil if exception: false Jan 12, 2019
re.c [DOC] fix markups [ci skip] Mar 28, 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 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 ruby.c: respect features by command line Mar 30, 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 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: [DOC] fix reference to sprintf [ci skip] Mar 20, 2019
struct.c Struct#to_h: Add doc for block form. Dec 23, 2018
symbol.c [DOC] fix markups [ci skip] Mar 28, 2019
symbol.h parse.y: ignore constant name captures Dec 20, 2018
thread.c [DOC] fix markups [ci skip] Mar 28, 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 [DOC] Fix method references to Method instance methods Mar 28, 2019
version.c Moved version numbers Dec 28, 2018
version.h * 2019-03-30 Mar 29, 2019
vm.c on-smash canary detection Feb 1, 2019
vm_args.c on-smash canary detection Feb 1, 2019
vm_backtrace.c * expand tabs. Mar 21, 2019
vm_core.h Prefer using vm_base_ptr rather than cfp->bp Mar 25, 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 [DOC] fix markups [ci skip] Mar 28, 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 Prefer using vm_base_ptr rather than cfp->bp Mar 25, 2019
vm_insnhelper.h Share vm_call_iseq_optimizable_p to reduce copy-paste Mar 21, 2019
vm_method.c [DOC] Fix method references to Method instance methods Mar 28, 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 avoid division by zero Nov 16, 2018
wercker.yml Stop sharding --jit-wait testing Mar 1, 2019

README.md

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