diff options
Diffstat (limited to 'man/ruby.1')
| -rw-r--r-- | man/ruby.1 | 322 |
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. |
