diff --git a/complex.c b/complex.c index 7b6c6c2a996a03..85d724f273b3ea 100644 --- a/complex.c +++ b/complex.c @@ -1803,7 +1803,7 @@ rb_dbl_complex_new(double real, double imag) * Complex.rect(1, Rational(0, 1)).to_i # => 1 * * Raises RangeError if self.imag is not exactly zero - * (either Integer(0) or Rational(0, _n_)). + * (either Integer(0) or Rational(0, n)). */ static VALUE nucomp_to_i(VALUE self) @@ -1827,7 +1827,7 @@ nucomp_to_i(VALUE self) * Complex.rect(1, Rational(0, 1)).to_f # => 1.0 * * Raises RangeError if self.imag is not exactly zero - * (either Integer(0) or Rational(0, _n_)). + * (either Integer(0) or Rational(0, n)). */ static VALUE nucomp_to_f(VALUE self) @@ -1852,7 +1852,7 @@ nucomp_to_f(VALUE self) * Complex.rect(1, 0.0).to_r # => (1/1) * * Raises RangeError if self.imag is not exactly zero - * (either Integer(0) or Rational(0, _n_)) + * (either Integer(0) or Rational(0, n)) * and self.imag.to_r is not exactly zero. * * Related: Complex#rationalize. diff --git a/dir.rb b/dir.rb index 0088bb39fa5399..eb1a408ee3ac5b 100644 --- a/dir.rb +++ b/dir.rb @@ -319,14 +319,14 @@ def self.[](*args, base: nil, sort: true) # # Dir.glob('io.?') # => ["io.c"] # - # - '[_set_]': Matches any one character in the string _set_; + # - '[set]': Matches any one character in the string _set_; # behaves like a {Regexp character class}[rdoc-ref:Regexp@Character+Classes], # including set negation ('[^a-z]'): # # Dir.glob('*.[a-z][a-z]').take(3) # # => ["CONTRIBUTING.md", "COPYING.ja", "KNOWNBUGS.rb"] # - # - '{_abc_,_xyz_}': + # - '{abc,xyz}': # Matches either string _abc_ or string _xyz_; # behaves like {Regexp alternation}[rdoc-ref:Regexp@Alternation]: # @@ -388,10 +388,10 @@ def self.[](*args, base: nil, sort: true) # # - File::FNM_EXTGLOB: # enables the pattern extension - # '{_a_,_b_}', which matches pattern _a_ and pattern _b_; + # '{a,b}', which matches pattern _a_ and pattern _b_; # behaves like a # {regexp union}[rdoc-ref:Regexp.union] - # (e.g., '(?:_a_|_b_)'): + # (e.g., '(?:a|b)'): # # pattern = '{LEGAL,BSDL}' # Dir.glob(pattern) # => ["LEGAL", "BSDL"] diff --git a/doc/_regexp.rdoc b/doc/_regexp.rdoc index 301a3fe11b5ce7..aa55a7eebfc6ce 100644 --- a/doc/_regexp.rdoc +++ b/doc/_regexp.rdoc @@ -414,21 +414,21 @@ Each of these anchors matches a boundary: Lookahead anchors: -- (?=_pat_): Positive lookahead assertion: +- (?=pat): Positive lookahead assertion: ensures that the following characters match _pat_, but doesn't include those characters in the matched substring. -- (?!_pat_): Negative lookahead assertion: +- (?!pat): Negative lookahead assertion: ensures that the following characters do not match _pat_, but doesn't include those characters in the matched substring. Lookbehind anchors: -- (?<=_pat_): Positive lookbehind assertion: +- (?<=pat): Positive lookbehind assertion: ensures that the preceding characters match _pat_, but doesn't include those characters in the matched substring. -- (?: Negative lookbehind assertion: +- (?: Negative lookbehind assertion: ensures that the preceding characters do not match _pat_, but doesn't include those characters in the matched substring. @@ -574,7 +574,7 @@ A simple regexp has (at most) one match: re.match('1943-02-04').size # => 1 re.match('foo') # => nil -Adding one or more pairs of parentheses, (_subexpression_), +Adding one or more pairs of parentheses, (subexpression), defines _groups_, which may result in multiple matched substrings, called _captures_: @@ -647,8 +647,8 @@ A regexp may contain any number of groups: - For a large number of groups: - - The ordinary \\_n_ notation applies only for _n_ in range (1..9). - - The MatchData[_n_] notation applies for any non-negative _n_. + - The ordinary \\n notation applies only for _n_ in range (1..9). + - The MatchData[n] notation applies for any non-negative _n_. - \0 is a special backreference, referring to the entire matched string; it may not be used within the regexp itself, @@ -661,7 +661,7 @@ A regexp may contain any number of groups: As seen above, a capture can be referred to by its number. A capture can also have a name, -prefixed as ?<_name_> or ?'_name_', +prefixed as ? or ?'name', and the name (symbolized) may be used as an index in MatchData[]: md = /\$(?\d+)\.(?'cents'\d+)/.match("$3.67") @@ -676,7 +676,7 @@ When a regexp contains a named capture, there are no unnamed captures: /\$(?\d+)\.(\d+)/.match("$3.67") # => # -A named group may be backreferenced as \k<_name_>: +A named group may be backreferenced as \k: /(?[aeiou]).\k.\k/.match('ototomy') # => # @@ -732,10 +732,10 @@ see {Atomic Group}[https://www.regular-expressions.info/atomic.html]. ==== Subexpression Calls -As seen above, a backreference number (\\_n_) or name (\k<_name_>) +As seen above, a backreference number (\\n) or name (\k) gives access to a captured _substring_; the corresponding regexp _subexpression_ may also be accessed, -via the number (\\gn) or name (\g<_name_>): +via the number n (\\gn) or name (\g): /\A(?\(\g*\))*\z/.match('(())') # ^1 @@ -768,12 +768,12 @@ See {Subexpression calls}[https://learnbyexample.github.io/Ruby_Regexp/groupings ==== Conditionals -The conditional construct takes the form (?(_cond_)_yes_|_no_), where: +The conditional construct takes the form (?(cond)yes|no), where: - _cond_ may be a capture number or name. - The match to be applied is _yes_ if _cond_ is captured; otherwise the match to be applied is _no_. -- If not needed, |_no_ may be omitted. +- If not needed, |no may be omitted. Examples: @@ -802,7 +802,7 @@ The absence operator is a special group that matches anything which does _not_ m ==== Unicode Properties -The /\p{_property_name_}/ construct (with lowercase +p+) +The /\p{property_name}/ construct (with lowercase +p+) matches characters using a Unicode property name, much like a character class; property +Alpha+ specifies alphabetic characters: @@ -1033,23 +1033,23 @@ See also {Extended Mode}[rdoc-ref:Regexp@Extended+Mode]. Each of these modifiers sets a mode for the regexp: -- +i+: /_pattern_/i sets +- +i+: /pattern/i sets {Case-Insensitive Mode}[rdoc-ref:Regexp@Case-Insensitive+Mode]. -- +m+: /_pattern_/m sets +- +m+: /pattern/m sets {Multiline Mode}[rdoc-ref:Regexp@Multiline+Mode]. -- +x+: /_pattern_/x sets +- +x+: /pattern/x sets {Extended Mode}[rdoc-ref:Regexp@Extended+Mode]. -- +o+: /_pattern_/o sets +- +o+: /pattern/o sets {Interpolation Mode}[rdoc-ref:Regexp@Interpolation+Mode]. Any, all, or none of these may be applied. Modifiers +i+, +m+, and +x+ may be applied to subexpressions: -- (?_modifier_) turns the mode "on" for ensuing subexpressions -- (?-_modifier_) turns the mode "off" for ensuing subexpressions -- (?_modifier_:_subexp_) turns the mode "on" for _subexp_ within the group -- (?-_modifier_:_subexp_) turns the mode "off" for _subexp_ within the group +- (?modifier) turns the mode "on" for ensuing subexpressions +- (?-modifier) turns the mode "off" for ensuing subexpressions +- (?modifier:subexp) turns the mode "on" for _subexp_ within the group +- (?-modifier:subexp) turns the mode "off" for _subexp_ within the group Example: @@ -1166,22 +1166,22 @@ A regular expression containing non-US-ASCII characters is assumed to use the source encoding. This can be overridden with one of the following modifiers. -- /_pat_/n: US-ASCII if only containing US-ASCII characters, +- /pat/n: US-ASCII if only containing US-ASCII characters, otherwise ASCII-8BIT: /foo/n.encoding # => # /foo\xff/n.encoding # => # /foo\x7f/n.encoding # => # -- /_pat_/u: UTF-8 +- /pat/u: UTF-8 /foo/u.encoding # => # -- /_pat_/e: EUC-JP +- /pat/e: EUC-JP /foo/e.encoding # => # -- /_pat_/s: Windows-31J +- /pat/s: Windows-31J /foo/s.encoding # => # diff --git a/doc/language/encodings.rdoc b/doc/language/encodings.rdoc index ee7f224f2ba550..683842d3fb8116 100644 --- a/doc/language/encodings.rdoc +++ b/doc/language/encodings.rdoc @@ -393,7 +393,7 @@ These keyword-value pairs specify encoding options: - :replace: nil (default): Set replacement string to default value: "\uFFFD" ("�") for a Unicode encoding, '?' otherwise. - - :replace: _some_string_: Set replacement string to the given +some_string+; + - :replace: some_string: Set replacement string to the given +some_string+; overrides +:fallback+. Examples: @@ -407,12 +407,12 @@ These keyword-value pairs specify encoding options: One of these may be specified: - :fallback: nil (default): No replacement fallback. - - :fallback: _hash_like_object_: Set replacement fallback to the given - +hash_like_object+; the replacement string is _hash_like_object_[X]. - - :fallback: _method_: Set replacement fallback to the given - +method+; the replacement string is _method_(X). - - :fallback: _proc_: Set replacement fallback to the given - +proc+; the replacement string is _proc_[X]. + - :fallback: hash_like_object: Set replacement fallback to the given + +hash_like_object+; the replacement string is hash_like_object[X]. + - :fallback: method: Set replacement fallback to the given + +method+; the replacement string is method(X). + - :fallback: proc: Set replacement fallback to the given + +proc+; the replacement string is proc[X]. Examples: diff --git a/doc/language/globals.md b/doc/language/globals.md index 83a024b141865f..ece950d3d844cf 100644 --- a/doc/language/globals.md +++ b/doc/language/globals.md @@ -21,16 +21,16 @@ require 'English' ### Matched \Data -| Variable | \English | Contains | Initially | Read-Only | Reset By | -|:-------------:|:-------------------:|-----------------------------------|:---------:|:---------:|-----------------| -| `$~` | `$LAST_MATCH_INFO` | \MatchData object or `nil` | `nil` | No | Matcher methods | -| `$&` | `$MATCH` | Matched substring or `nil` | `nil` | No | Matcher methods | -| `` $` `` | `$PRE_MATCH` | Substring left of match or `nil` | `nil` | No | Matcher methods | -| `$'` | `$POST_MATCH` | Substring right of match or `nil` | `nil` | No | Matcher methods | -| `$+` | `$LAST_PAREN_MATCH` | Last group matched or `nil` | `nil` | No | Matcher methods | -| `$1` | | First group matched or `nil` | `nil` | Yes | Matcher methods | -| `$2` | | Second group matched or `nil` | `nil` | Yes | Matcher methods | -| $_n_ | | nth group matched or `nil` | `nil` | Yes | Matcher methods | +| Variable | \English | Contains | Initially | Read-Only | Reset By | +|:---------:|:-------------------:|-----------------------------------|:---------:|:---------:|-----------------| +| `$~` | `$LAST_MATCH_INFO` | \MatchData object or `nil` | `nil` | No | Matcher methods | +| `$&` | `$MATCH` | Matched substring or `nil` | `nil` | No | Matcher methods | +| `` $` `` | `$PRE_MATCH` | Substring left of match or `nil` | `nil` | No | Matcher methods | +| `$'` | `$POST_MATCH` | Substring right of match or `nil` | `nil` | No | Matcher methods | +| `$+` | `$LAST_PAREN_MATCH` | Last group matched or `nil` | `nil` | No | Matcher methods | +| `$1` | | First group matched or `nil` | `nil` | Yes | Matcher methods | +| `$2` | | Second group matched or `nil` | `nil` | Yes | Matcher methods | +| `$n` | | nth group matched or `nil` | `nil` | Yes | Matcher methods | ### Separators @@ -167,7 +167,7 @@ English - `$LAST_PAREN_MATCH`. ### `$1`, `$2`, \Etc. (Matched Group) -For $_n_ the nth group of the match. +For $n the nth group of the match. No \English. @@ -282,9 +282,9 @@ by Kernel#load and Kernel#require. Singleton method `$LOAD_PATH.resolve_feature_path(feature)` returns: -- [:rb, _path_], where `path` is the path to the Ruby file to be +- [:rb, path], where `path` is the path to the Ruby file to be loaded for the given `feature`. -- [:so, _path_], where `path` is the path to the shared object file +- [:so, path], where `path` is the path to the shared object file to be loaded for the given `feature`. - `nil` if there is no such `feature` and `path`. diff --git a/file.c b/file.c index 867b041a44af0f..809253fab0d9da 100644 --- a/file.c +++ b/file.c @@ -7963,11 +7963,11 @@ Init_File(void) * * ==== File::FNM_EXTGLOB * - * Flag File::FNM_EXTGLOB enables pattern '{_a_,_b_}', + * Flag File::FNM_EXTGLOB enables pattern '{a,b}', * which matches pattern '_a_' and pattern '_b_'; * behaves like * a {regexp union}[rdoc-ref:Regexp.union] - * (e.g., '(?:_a_|_b_)'): + * (e.g., '(?:a|b)'): * * pattern = '{LEGAL,BSDL}' * Dir.glob(pattern) # => ["LEGAL", "BSDL"] diff --git a/gc/mmtk/mmtk.c b/gc/mmtk/mmtk.c index e8ba019ae14ae8..b1a836a8c533b4 100644 --- a/gc/mmtk/mmtk.c +++ b/gc/mmtk/mmtk.c @@ -348,11 +348,7 @@ rb_mmtk_vm_live_bytes(void) static void make_final_job(struct objspace *objspace, VALUE obj, VALUE table) { - RUBY_ASSERT(RB_FL_TEST(obj, RUBY_FL_FINALIZE)); - RUBY_ASSERT(mmtk_is_reachable((MMTk_ObjectReference)table)); - RUBY_ASSERT(RB_BUILTIN_TYPE(table) == T_ARRAY); - - RB_FL_UNSET(obj, RUBY_FL_FINALIZE); + MMTK_ASSERT(RB_BUILTIN_TYPE(table) == T_ARRAY); struct MMTk_final_job *job = xmalloc(sizeof(struct MMTk_final_job)); job->next = objspace->finalizer_jobs; @@ -365,15 +361,16 @@ make_final_job(struct objspace *objspace, VALUE obj, VALUE table) static int rb_mmtk_update_finalizer_table_i(st_data_t key, st_data_t value, st_data_t data, int error) { - RUBY_ASSERT(RB_FL_TEST(key, RUBY_FL_FINALIZE)); - RUBY_ASSERT(mmtk_is_reachable((MMTk_ObjectReference)value)); - RUBY_ASSERT(RB_BUILTIN_TYPE(value) == T_ARRAY); + MMTK_ASSERT(mmtk_is_reachable((MMTk_ObjectReference)value)); + MMTK_ASSERT(RB_BUILTIN_TYPE(value) == T_ARRAY); struct objspace *objspace = (struct objspace *)data; if (mmtk_is_reachable((MMTk_ObjectReference)key)) { VALUE new_key_location = rb_mmtk_call_object_closure((VALUE)key, false); + MMTK_ASSERT(RB_FL_TEST(new_key_location, RUBY_FL_FINALIZE)); + if (new_key_location != key) { return ST_REPLACE; } @@ -445,7 +442,7 @@ rb_mmtk_update_global_tables_replace_i(VALUE *ptr, void *data) static void rb_mmtk_update_global_tables(int table) { - RUBY_ASSERT(table < RB_GC_VM_WEAK_TABLE_COUNT); + MMTK_ASSERT(table < RB_GC_VM_WEAK_TABLE_COUNT); // TODO: set weak_only to true for non-moving GC rb_gc_vm_weak_table_foreach( @@ -606,7 +603,13 @@ rb_gc_impl_ractor_cache_free(void *objspace_ptr, void *cache_ptr) ccan_list_del(&cache->list_node); - RUBY_ASSERT(objspace->live_ractor_cache_count > 1); + if (ruby_free_at_exit_p()) { + MMTK_ASSERT(objspace->live_ractor_cache_count > 0); + } + else { + MMTK_ASSERT(objspace->live_ractor_cache_count > 1); + } + objspace->live_ractor_cache_count--; mmtk_destroy_mutator(cache->mutator); @@ -1502,7 +1505,7 @@ rb_gc_impl_object_metadata(void *objspace_ptr, VALUE obj) size_t n = 0; #define SET_ENTRY(na, v) do { \ - RUBY_ASSERT(n <= RB_GC_OBJECT_METADATA_ENTRY_COUNT); \ + MMTK_ASSERT(n <= RB_GC_OBJECT_METADATA_ENTRY_COUNT); \ object_metadata_entries[n].name = ID_##na; \ object_metadata_entries[n].val = v; \ n++; \ diff --git a/test/ruby/sentence.rb b/test/ruby/sentence.rb index 9bfd7c75992f2d..99ced05d2f2ae9 100644 --- a/test/ruby/sentence.rb +++ b/test/ruby/sentence.rb @@ -211,7 +211,7 @@ def inner_inspect(ary, r) # returns new sentence object which # _target_ is substituted by the block. # - # Sentence#subst invokes _target_ === _string_ for each + # Sentence#subst invokes target === string for each # string in the sentence. # The strings which === returns true are substituted by the block. # The block is invoked with the substituting string.