summaryrefslogtreecommitdiff
path: root/man/ruby.1
diff options
context:
space:
mode:
Diffstat (limited to 'man/ruby.1')
-rw-r--r--man/ruby.1322
1 files changed, 260 insertions, 62 deletions
diff --git a/man/ruby.1 b/man/ruby.1
index 5f13a0f4ed..8141a6d7ef 100644
--- a/man/ruby.1
+++ b/man/ruby.1
@@ -1,7 +1,6 @@
.\"Ruby is copyrighted by Yukihiro Matsumoto <matz@netlab.jp>.
-.Dd December 15, 2014
-.Dt RUBY(1) "" "Ruby Programmers Reference Guide"
-.\".Dt RUBY 1
+.Dd April 14, 2018
+.Dt RUBY \&1 "Ruby Programmer's Reference Guide"
.Os UNIX
.Sh NAME
.Nm ruby
@@ -14,18 +13,19 @@
.Op Fl 0 Ns Op Ar octal
.Op Fl C Ar directory
.Op Fl E Ar external Ns Op : Ns Ar internal
-.Op Fl F Ar pattern
+.Op Fl F Ns Op Ar pattern
.Op Fl I Ar directory
-.Op Fl K Ar c
+.Op Fl K Ns Op Ar c
.Op Fl T Ns Op Ar level
.Op Fl W Ns Op Ar level
.Op Fl e Ar command
.Op Fl i Ns Op Ar extension
.Op Fl r Ar library
.Op Fl x Ns Op Ar directory
-.Op - Ns Bro Cm enable Ns | Ns Cm disable Brc Ns - Ns Ar FEATURE
+.Op Fl - Ns Bro Cm enable Ns | Ns Cm disable Brc Ns - Ns Ar FEATURE
.Op Fl -dump Ns = Ns Ar target
.Op Fl -verbose
+.Op Fl -crash-report Ns = Ns Ar template
.Op Fl -
.Op Ar program_file
.Op Ar argument ...
@@ -101,10 +101,10 @@ different character encodings, without dependence on Unicode.
.It Sy "Bignums"
With built-in bignums, you can for example calculate factorial(400).
.Pp
-.It Sy "Reflection and domain specific languages"
+.It Sy "Reflection and domain-specific languages"
Class is also an instance of the Class class. Definition of classes and methods
is an expression just as 1+1 is. So your programs can even write and modify programs.
-Thus you can write your application in your own programming language on top of Ruby.
+Thus, you can write your application in your own programming language on top of Ruby.
.Pp
.It Sy "Exception handling"
As in Java(tm).
@@ -120,24 +120,36 @@ On most
systems, you can load object files into the Ruby interpreter
on-the-fly.
.It Sy "Rich libraries"
-Libraries called "builtin libraries" and "standard libraries" are bundled with Ruby.
-And you can obtain more libraries via the package management system called `RubyGems'.
-.Pp
-Moreover there are thousands of Ruby projects on GitHub
-.Aq Pa https://github.com/languages/Ruby .
+In addition to the
+.Dq builtin libraries
+and
+.Dq standard libraries
+that are bundled with Ruby, a vast amount of third-party libraries
+.Pq Dq gems
+are available via the package management system called
+.Sq RubyGems ,
+namely the
+.Xr gem 1
+command. Visit RubyGems.org
+.Pq Lk https://rubygems.org/
+to find the gems you need, and explore GitHub
+.Pq Lk https://github.com/
+to see how they are being developed and used.
.El
.Pp
.Sh OPTIONS
-Ruby interpreter accepts following command-line options (switches).
+The Ruby interpreter accepts the following command-line options (switches).
They are quite similar to those of
.Xr perl 1 .
.Bl -tag -width "1234567890123" -compact
.Pp
.It Fl -copyright
-Prints the copyright notice.
+Prints the copyright notice, and quits immediately without running any
+script.
.Pp
.It Fl -version
-Prints the version of Ruby interpreter.
+Prints the version of the Ruby interpreter, and quits immediately without
+running any script.
.Pp
.It Fl 0 Ns Op Ar octal
(The digit
@@ -208,6 +220,18 @@ on machines that don't support it, in the following manner:
exec /usr/local/bin/ruby -S $0 $*
.Ed
.Pp
+On some systems
+.Li "$0"
+does not always contain the full pathname, so you need the
+.Fl S
+switch to tell Ruby to search for the script if necessary (to handle embedded
+spaces and such). A better construct than
+.Li "$*"
+would be
+.Li ${1+"$@"} ,
+but it does not work if the script is being interpreted by
+.Xr csh 1 .
+.Pp
.It Fl T Ns Op Ar level=1
Turns on taint checks at the specified level (default 1).
.Pp
@@ -234,7 +258,7 @@ Verbose mode is "verbose". It sets the
.Li "$VERBOSE"
to true.
.Fl W Ns
-2 is same as
+2 is the same as
.Fl w
.
.El
@@ -248,6 +272,11 @@ In auto-split mode, Ruby executes
.Dl $F = $_.split
at beginning of each loop.
.Pp
+.It Fl -backtrace-limit Ns = Ns Ar num
+Limits the maximum length of backtraces to
+.Ar num
+lines (default -1, meaning no limit).
+.Pp
.It Fl c
Causes Ruby to check the syntax of the script and exit without
executing. If there are no syntax errors, Ruby will print
@@ -258,6 +287,8 @@ to the standard output.
.It Fl -debug
Turns on debug mode.
.Li "$DEBUG"
+and
+.Li "$VERBOSE"
will be set to true.
.Pp
.It Fl e Ar command
@@ -290,7 +321,7 @@ Enables automatic line-ending processing, which means to firstly set
to the value of
.Li "$/" ,
and secondly chops every line read using
-.Li chop! .
+.Li chomp! .
.Pp
.It Fl n
Causes Ruby to assume the following loop around your script, which
@@ -333,18 +364,6 @@ and set the corresponding variable in the script. For example:
print "true\en" if $xyz
.Ed
.Pp
-On some systems
-.Li "$0"
-does not always contain the full pathname, so you need the
-.Fl S
-switch to tell Ruby to search for the script if necessary (to handle embedded
-spaces and such). A better construct than
-.Li "$*"
-would be
-.Li ${1+"$@"} ,
-but it does not work if the script is being interpreted by
-.Xr csh 1 .
-.Pp
.It Fl v
Enables verbose mode. Ruby will print its version at the beginning
and set the variable
@@ -377,7 +396,7 @@ before executing script.
.Pp
.It Fl y
.It Fl -yydebug
-DO NOT USE.
+This option is not guaranteed to be compatible.
.Pp
Turns on compiler debug mode. Ruby will print a bunch of internal
state messages during compilation. Only specify this switch you are going to
@@ -386,8 +405,7 @@ debug the Ruby interpreter.
.It Fl -disable- Ns Ar FEATURE
.It Fl -enable- Ns Ar FEATURE
Disables (or enables) the specified
-.Ar FEATURE Ns
-\&.
+.Ar FEATURE .
.Bl -tag -width "--disable-rubyopt" -compact
.It Fl -disable-gems
.It Fl -enable-gems
@@ -409,26 +427,59 @@ Disables (or enables) all features.
.El
.Pp
.It Fl -dump Ns = Ns Ar target
-DO NOT USE.
+Dump some information.
.Pp
Prints the specified target.
.Ar target
-can be one of;
-.Bl -hang -offset indent
-.It Sy insns
-disassembled instructions
+can be one of:
+.Bl -hang -offset indent -width "version"
+.It Sy version
+Print version description (same as
+.Fl -version).
+.It Sy usage
+Print a brief usage message (same as
+.Fl h).
+.It Sy help
+Show long help message (same as
+.Fl -help).
+.It Sy syntax
+Check syntax (same as
+.Fl c
+.Fl -yydebug).
.Pp
.El
.Pp
-Only specify this switch if you are going to debug the Ruby interpreter.
+Or one of the following, which are intended for debugging the interpreter:
+.Bl -hang -offset indent -width "parsetree"
+.It Sy yydebug
+Enable compiler debug mode (same as
+.Fl -yydebug).
+.It Sy parsetree
+Print a textual representation of the Ruby AST for the program.
+.It Sy insns
+Print a list of disassembled bytecode instructions.
+.It Sy -optimize
+Disable various optimizations to print a list disassembled bytecode instructions.
+.It Sy +error-tolerant
+Enable error-tolerant parsing, when yydebug or parsetree.
+.It Sy +comment
+Annotate a textual representation of the Ruby AST for the program with the associated Ruby source code.
+.El
.Pp
.It Fl -verbose
Enables verbose mode without printing version message at the
beginning. It sets the
.Li "$VERBOSE"
variable to true.
-If this switch is given, and no other switches are present, Ruby quits
-after printing its version.
+If this switch is given, and no script arguments (script file or
+.Fl e
+options) are present, Ruby quits immediately.
+.Pp
+.It Fl -crash-report Ns = Ns Ar template
+Sets the template of path name to save crash report.
+See
+.Ev RUBY_CRASH_REPORT
+environment variable for details.
.El
.Pp
.Sh ENVIRONMENT
@@ -468,6 +519,43 @@ enabled for only mswin32, mingw32, and OS/2 platforms. If this
variable is not defined, Ruby refers to
.Ev COMSPEC .
.Pp
+.It Ev RUBY_FREE_AT_EXIT
+If set, Ruby tries to free all dynamically allocated memories.
+Introduced in Ruby 3.3, default: unset.
+.Pp
+.It Ev RUBY_BOX
+If set to
+.Li 1 ,
+Ruby Box is enabled and users will be able to execute
+.Li Ruby::Box.new .
+Ruby Box is an experimental feature introduced in Ruby 4.0.
+.Pp
+.It Ev RUBY_IO_BUFFER_DEFAULT_SIZE
+The custom default buffer size of
+.Li IO::Buffer .
+.Pp
+.It Ev RUBY_MAX_CPU
+The maximum number of native threads used by M:N Threads scheduler
+Introduced in Ruby 3.3, default: 8.
+.Pp
+.It Ev RUBY_MN_THREADS
+If set to
+.Li 1 ,
+M:N Thread scheduler is enabled on the main Ractor.
+Introduced in Ruby 3.3, default: unset.
+.Pp
+.It Ev RUBY_PAGER
+The pager command that will be used for
+.Fl -help
+option.
+Introduced in Ruby 3.0, default:
+.Ev PAGER
+environment variable.
+.Pp
+.It Ev RUBY_THREAD_TIMESLICE
+Sets the default thread time slice (thread quantum) in milliseconds.
+Introduced in Ruby 3.4, default: 100ms.
+.Pp
.It Ev PATH
Ruby refers to the
.Ev PATH
@@ -484,14 +572,14 @@ as below.
.Pp
.Sh GC ENVIRONMENT
The Ruby garbage collector (GC) tracks objects in fixed-sized slots,
-but each object may have auxillary memory allocations handled by the
+but each object may have auxiliary memory allocations handled by the
malloc family of C standard library calls (
.Xr malloc 3 ,
.Xr calloc 3 ,
and
.Xr realloc 3 ) .
-In this documentatation, the "heap" refers to the Ruby object heap
-of fixed-sized slots, while "malloc" refers to auxillary
+In this documentation, the "heap" refers to the Ruby object heap
+of fixed-sized slots, while "malloc" refers to auxiliary
allocations commonly referred to as the "process heap".
Thus there are at least two possible ways to trigger GC:
.Bl -hang -offset indent
@@ -512,10 +600,16 @@ Reaching the old malloc limit.
.El
.Pp
There are currently 4 possible areas where the GC may be tuned by
-the the following 11 environment variables:
-.Bl -hang -compact -width "RUBY_GC_OLDMALLOC_LIMIT_GROWTH_FACTOR"
-.It Ev RUBY_GC_HEAP_INIT_SLOTS
-Initial allocation slots. Introduced in Ruby 2.1, default: 10000.
+the following environment variables:
+.Bl -hang -compact -width "RUBY_GC_HEAP_n_INIT_SLOTS"
+.Pp
+.It Ev RUBY_GC_HEAP_ Ns Ar n Ns Ev _INIT_SLOTS
+Initial allocation of slots in a specific heap.
+The available heaps can be found in the keys of
+.Li GC.stat_heap .
+.Ar n
+is a decimal number between 0 and 4.
+Introduced in Ruby 3.3.
.Pp
.It Ev RUBY_GC_HEAP_FREE_SLOTS
Prepare at least this amount of slots after GC.
@@ -537,6 +631,12 @@ where R is this factor and N is the number of old objects after the
last full GC.
Introduced in Ruby 2.1.1, default: 2.0
.Pp
+.It Ev RUBY_GC_HEAP_REMEMBERED_WB_UNPROTECTED_OBJECTS_LIMIT_RATIO
+Used to calculate the
+.Li remembered_wb_unprotected_objects_limit
+using a ratio of
+.Li old_objects .
+Introduced in Ruby 3.3, default: 0.1, minimum: 0.0
.It Ev RUBY_GC_MALLOC_LIMIT
The initial limit of young generation allocation from the malloc-family.
GC will start when this limit is reached.
@@ -553,6 +653,31 @@ GC frequency but increasing malloc growth until RUBY_GC_MALLOC_LIMIT_MAX
is reached.
Introduced in Ruby 2.1, default: 1.4, minimum: 1.0 (no growth)
.Pp
+.It Ev RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO
+Allocate additional pages when the number of free slots is
+lower than the value
+.Li (total_slots * (this ratio)) .
+Introduced in Ruby 2.4, default: 0.2, minimum: 0.0, maximum: 1.0
+.Pp
+.It Ev RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO
+Allow to free pages when the number of free slots is greater than the value
+.Li (total_slots * (this ratio)) .
+Introduced in Ruby 2.4, default: 0.4, minimum:
+.Li RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO,
+maximum: 1.0
+.Pp
+.It Ev RUBY_GC_HEAP_FREE_SLOTS_GOAL_RATIO
+Allocate slots to satisfy this formula:
+.Li free_slots = total_slots * goal_ratio
+In other words, prepare
+.Li (total_slots * goal_ratio)
+free slots.
+if this value is 0.0, then use RUBY_GC_HEAP_GROWTH_FACTOR directly.
+Introduced in Ruby 2.4, default: 0.65, minimum:
+.Li RUBY_GC_HEAP_FREE_SLOTS_MIN_RATIO,
+maximum:
+.Li RUBY_GC_HEAP_FREE_SLOTS_MAX_RATIO
+.Pp
.It Ev RUBY_GC_OLDMALLOC_LIMIT
The initial limit of old generation allocation from malloc,
a full GC will start when this limit is reached.
@@ -570,6 +695,11 @@ GC frequency but increasing malloc growth until RUBY_GC_OLDMALLOC_LIMIT_MAX
is reached.
Introduced in Ruby 2.1, default: 1.2, minimum: 1.0 (no growth)
.Pp
+.It Ev RUBY_SHARED_FIBER_POOL_FREE_STACKS
+Frees stacks of pooled fibers, if set to 1.
+Do not free the stacks if set to 0.
+Introduced in Ruby 2.7, default: 1 (no growth)
+.Pp
.El
.Sh STACK SIZE ENVIRONMENT
Stack size environment variables are implementation-dependent and
@@ -585,11 +715,11 @@ All values are specified in bytes.
.Bl -hang -compact -width "RUBY_THREAD_MACHINE_STACK_SIZE"
.It Ev RUBY_THREAD_VM_STACK_SIZE
VM stack size used at thread creation.
-default: 131072 (32-bit CPU) or 262144 (64-bit)
+default: 524288 (32-bit CPU) or 1048576 (64-bit)
.Pp
.It Ev RUBY_THREAD_MACHINE_STACK_SIZE
Machine stack size used at thread creation.
-default: 524288 or 1048575
+default: 524288 or 1048576
.Pp
.It Ev RUBY_FIBER_VM_STACK_SIZE
VM stack size used at fiber creation.
@@ -600,30 +730,98 @@ Machine stack size used at fiber creation.
default: 262144 or 524288
.Pp
.El
+.Sh CRASH REPORT ENVIRONMENT
+.Pp
+.Bl -tag -compact -width "RUBY_CRASH_REPORT"
+.It Ev RUBY_CRASH_REPORT
+The template of path name to save crash report.
+default: none
+.El
+.Ss Naming crash report files
+The template can contain
+.Li \fB%\fP
+specifiers which are substituted by the following values when a crash
+report file is created:
+.Pp
+.Bl -hang -compact -width "%NNN"
+.It Li \fB%%\fP
+A single
+.Li \fB%\fP
+character.
+.It Li \fB%e\fP
+Basename of executable.
+.It Li \fB%E\fP
+Pathname of executable,
+with slashes (\fB/\fP) replaced by exclamation marks (\fB!\fP).
+.It Li \fB%f\fP
+Basename of the program name,
+.Li "$0" .
+.It Li \fB%F\fP
+Pathname of the program name,
+.Li "$0",
+with slashes (\fB/\fP) replaced by exclamation marks (\fB!\fP).
+.It Li \fB%p\fP
+PID of dumped process.
+.It Li \fB%t\fP
+Time of dump, expressed as seconds since the
+Epoch, 1970-01-01 00:00:00 +0000 (UTC).
+.It Li \fB%NNN\fP
+A character code in octal.
+.El
+.Pp
+A single
+.Li \fB%\fP
+at the end of the template is dropped from the core filename, as is
+the combination of a
+.Li \fB%\fP
+followed by any character other than those listed above. All other
+characters in the template become a literal part of the core filename.
+The template may include \(aq/\(aq characters, which are interpreted
+as delimiters for directory names.
+.Ss Piping crash reports to a program
+If the first character of this file is a pipe symbol (\fB|\fP),
+then the remainder of the line is interpreted as the command-line for
+a program (or script) that is to be executed.
+.Pp
+The pipe template is split on spaces into an argument list before the
+template parameters are expanded.
+.Sh MISC ENVIRONMENT
+.Pp
+.Bl -hang -compact -width "RUBY_TCP_NO_FAST_FALLBACK"
+.It Ev RUBY_TCP_NO_FAST_FALLBACK
+If set to
+.Li 1 ,
+disables the fast fallback feature by default in TCPSocket.new and Socket.tcp.
+When set to
+.Li 0
+or left unset, the fast fallback feature is enabled.
+Introduced in Ruby 3.4, default: unset.
.Sh SEE ALSO
-.Bl -hang -compact -width "http://www.ruby-lang.org/123"
-.It https://www.ruby-lang.org/
+.Bl -hang -compact -width "https://www.ruby-toolbox.com/"
+.It Lk https://www.ruby-lang.org/
The official web site.
-.It https://www.ruby-toolbox.com/
+.It Lk https://www.ruby-toolbox.com/
Comprehensive catalog of Ruby libraries.
.El
.Pp
.Sh REPORTING BUGS
.Bl -bullet
-.Li Security vulnerabilities should be reported via an email to
-.Aq security@ruby-lang.org Ns
-.Li .
-Reported problems will be published after they've been fixed.
-.Pp
-.Li And you can report other bugs and feature requests via the
-Ruby Issue Tracking System (https://bugs.ruby-lang.org/).
+.It
+Security vulnerabilities should be reported via an email to
+.Mt security@ruby-lang.org .
+Reported problems will be published after being fixed.
+.Pp
+.It
+Other bugs and feature requests can be reported via the
+Ruby Issue Tracking System
+.Pq Lk https://bugs.ruby-lang.org/ .
Do not report security vulnerabilities
-via the system because it publishes the vulnerabilities immediately.
+via this system because it publishes the vulnerabilities immediately.
.El
.Sh AUTHORS
Ruby is designed and implemented by
.An Yukihiro Matsumoto Aq matz@netlab.jp .
.Pp
See
-.Aq Pa https://bugs.ruby-lang.org/projects/ruby/wiki/Contributors
+.Aq Lk https://github.com/ruby/ruby/graphs/contributors
for contributors to Ruby.