Skip to content

Commit 315c55f

Browse files
authored
Merge branch 'master' into c11-atomic
2 parents ea5a308 + a691db3 commit 315c55f

File tree

103 files changed

+1555
-976
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+1555
-976
lines changed

.document

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ marshal.rb
2222
numeric.rb
2323
nilclass.rb
2424
pack.rb
25+
pathname_builtin.rb
2526
ractor.rb
2627
string.rb
2728
symbol.rb

.github/workflows/check_misc.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ jobs:
6464
- name: Generate docs
6565
id: docs
6666
run: |
67-
ruby -W0 --disable-gems -I./lib tool/rdoc-srcdir -q --op html .
67+
ruby -W0 --disable-gems tool/rdoc-srcdir -q --op html .
6868
echo htmlout=ruby-html-${GITHUB_SHA:0:10} >> $GITHUB_OUTPUT
6969
# Generate only when document commit/PR
7070
if: >-

.github/workflows/windows.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,8 @@ jobs:
8686
scoop install vcpkg uutils-coreutils cmake@3.31.6
8787
shell: pwsh
8888

89-
# vcpkg built-in cache is not working now
9089
- name: Restore vcpkg artifact
91-
uses: actions/cache@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
90+
uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
9291
with:
9392
path: src\vcpkg_installed
9493
key: windows-${{ matrix.os }}-vcpkg-${{ hashFiles('src/vcpkg.json') }}
@@ -98,6 +97,12 @@ jobs:
9897
vcpkg install --vcpkg-root=C:\Users\runneradmin\scoop\apps\vcpkg\current
9998
working-directory: src
10099

100+
- name: Save vcpkg artifact
101+
uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
102+
with:
103+
path: src\vcpkg_installed
104+
key: windows-${{ matrix.os }}-vcpkg-${{ hashFiles('src/vcpkg.json') }}
105+
101106
- name: setup env
102107
# Available Ruby versions: https://github.com/actions/runner-images/blob/main/images/windows/Windows2019-Readme.md#ruby
103108
# %TEMP% is inconsistent with %TMP% and test-all expects they are consistent.

.github/workflows/zjit-macos.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,8 @@ jobs:
3838
- test_task: 'ruby' # build test for combo build
3939
configure: '--enable-yjit --enable-zjit'
4040

41-
- test_task: 'test-all'
41+
- test_task: 'zjit-test-all'
4242
configure: '--enable-zjit=dev'
43-
tests: '../src/test/ruby/test_zjit.rb'
4443

4544
- test_task: 'btest'
4645
configure: '--enable-zjit=dev'

.github/workflows/zjit-ubuntu.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,8 @@ jobs:
4040
- test_task: 'zjit-test'
4141
configure: '--enable-yjit --enable-zjit=dev'
4242

43-
- test_task: 'test-all'
43+
- test_task: 'zjit-test-all'
4444
configure: '--enable-zjit=dev'
45-
tests: '../src/test/ruby/test_zjit.rb'
4645

4746
- test_task: 'btest'
4847
configure: '--enable-zjit=dev'

NEWS.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,11 @@ Note: We're only listing outstanding class updates.
111111
waiting on a blocking IO operation when the IO operation is closed.
112112
[[Feature #21166]]
113113

114+
* Pathname
115+
116+
* Pathname has been promoted from a default gem to a core class of Ruby.
117+
[[Feature #17473]]
118+
114119
## Stdlib updates
115120

116121
The following bundled gems are promoted from default gems.
@@ -140,7 +145,10 @@ The following default gems are updated.
140145

141146
* RubyGems 3.7.0.dev
142147
* bundler 2.7.0.dev
143-
* erb 5.0.1
148+
* erb 5.0.2
149+
* etc 1.4.6
150+
* io-console 0.8.1
151+
* io-nonblock 0.3.2
144152
* json 2.12.2
145153
* optparse 0.7.0.dev.2
146154
* prism 1.4.0
@@ -233,3 +241,4 @@ The following bundled gems are updated.
233241
[Feature #21262]: https://bugs.ruby-lang.org/issues/21262
234242
[Feature #21287]: https://bugs.ruby-lang.org/issues/21287
235243
[Feature #21347]: https://bugs.ruby-lang.org/issues/21347
244+
[Feature #17473]: https://bugs.ruby-lang.org/issues/17473

common.mk

Lines changed: 181 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ COMMONOBJS = \
148148
numeric.$(OBJEXT) \
149149
object.$(OBJEXT) \
150150
pack.$(OBJEXT) \
151+
pathname.$(OBJEXT) \
151152
parse.$(OBJEXT) \
152153
parser_st.$(OBJEXT) \
153154
proc.$(OBJEXT) \
@@ -1227,6 +1228,7 @@ BUILTIN_RB_SRCS = \
12271228
$(srcdir)/array.rb \
12281229
$(srcdir)/hash.rb \
12291230
$(srcdir)/kernel.rb \
1231+
$(srcdir)/pathname_builtin.rb \
12301232
$(srcdir)/ractor.rb \
12311233
$(srcdir)/symbol.rb \
12321234
$(srcdir)/timev.rb \
@@ -11245,6 +11247,7 @@ miniinit.$(OBJEXT): {$(VPATH)}numeric.rb
1124511247
miniinit.$(OBJEXT): {$(VPATH)}onigmo.h
1124611248
miniinit.$(OBJEXT): {$(VPATH)}oniguruma.h
1124711249
miniinit.$(OBJEXT): {$(VPATH)}pack.rb
11250+
miniinit.$(OBJEXT): {$(VPATH)}pathname_builtin.rb
1124811251
miniinit.$(OBJEXT): {$(VPATH)}prelude.rb
1124911252
miniinit.$(OBJEXT): {$(VPATH)}prism/ast.h
1125011253
miniinit.$(OBJEXT): {$(VPATH)}prism/diagnostic.h
@@ -12860,6 +12863,184 @@ parser_st.$(OBJEXT): {$(VPATH)}parser_st.c
1286012863
parser_st.$(OBJEXT): {$(VPATH)}parser_st.h
1286112864
parser_st.$(OBJEXT): {$(VPATH)}parser_value.h
1286212865
parser_st.$(OBJEXT): {$(VPATH)}st.c
12866+
pathname.$(OBJEXT): $(hdrdir)/ruby.h
12867+
pathname.$(OBJEXT): $(hdrdir)/ruby/ruby.h
12868+
pathname.$(OBJEXT): $(top_srcdir)/internal/compilers.h
12869+
pathname.$(OBJEXT): $(top_srcdir)/internal/warnings.h
12870+
pathname.$(OBJEXT): {$(VPATH)}assert.h
12871+
pathname.$(OBJEXT): {$(VPATH)}backward.h
12872+
pathname.$(OBJEXT): {$(VPATH)}backward/2/assume.h
12873+
pathname.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
12874+
pathname.$(OBJEXT): {$(VPATH)}backward/2/bool.h
12875+
pathname.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
12876+
pathname.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
12877+
pathname.$(OBJEXT): {$(VPATH)}backward/2/limits.h
12878+
pathname.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
12879+
pathname.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
12880+
pathname.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
12881+
pathname.$(OBJEXT): {$(VPATH)}builtin.h
12882+
pathname.$(OBJEXT): {$(VPATH)}config.h
12883+
pathname.$(OBJEXT): {$(VPATH)}defines.h
12884+
pathname.$(OBJEXT): {$(VPATH)}encoding.h
12885+
pathname.$(OBJEXT): {$(VPATH)}intern.h
12886+
pathname.$(OBJEXT): {$(VPATH)}internal/abi.h
12887+
pathname.$(OBJEXT): {$(VPATH)}internal/anyargs.h
12888+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
12889+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
12890+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
12891+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
12892+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
12893+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
12894+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
12895+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
12896+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
12897+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
12898+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
12899+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
12900+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
12901+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
12902+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
12903+
pathname.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
12904+
pathname.$(OBJEXT): {$(VPATH)}internal/assume.h
12905+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
12906+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
12907+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
12908+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/const.h
12909+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
12910+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
12911+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
12912+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
12913+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/error.h
12914+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
12915+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
12916+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/format.h
12917+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
12918+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
12919+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
12920+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
12921+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
12922+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
12923+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
12924+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
12925+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
12926+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
12927+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
12928+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
12929+
pathname.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
12930+
pathname.$(OBJEXT): {$(VPATH)}internal/cast.h
12931+
pathname.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
12932+
pathname.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
12933+
pathname.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
12934+
pathname.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
12935+
pathname.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
12936+
pathname.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
12937+
pathname.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
12938+
pathname.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
12939+
pathname.$(OBJEXT): {$(VPATH)}internal/config.h
12940+
pathname.$(OBJEXT): {$(VPATH)}internal/constant_p.h
12941+
pathname.$(OBJEXT): {$(VPATH)}internal/core.h
12942+
pathname.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
12943+
pathname.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
12944+
pathname.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
12945+
pathname.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
12946+
pathname.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
12947+
pathname.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
12948+
pathname.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
12949+
pathname.$(OBJEXT): {$(VPATH)}internal/core/robject.h
12950+
pathname.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
12951+
pathname.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
12952+
pathname.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
12953+
pathname.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
12954+
pathname.$(OBJEXT): {$(VPATH)}internal/ctype.h
12955+
pathname.$(OBJEXT): {$(VPATH)}internal/dllexport.h
12956+
pathname.$(OBJEXT): {$(VPATH)}internal/dosish.h
12957+
pathname.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
12958+
pathname.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
12959+
pathname.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
12960+
pathname.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
12961+
pathname.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
12962+
pathname.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
12963+
pathname.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
12964+
pathname.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
12965+
pathname.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
12966+
pathname.$(OBJEXT): {$(VPATH)}internal/error.h
12967+
pathname.$(OBJEXT): {$(VPATH)}internal/eval.h
12968+
pathname.$(OBJEXT): {$(VPATH)}internal/event.h
12969+
pathname.$(OBJEXT): {$(VPATH)}internal/fl_type.h
12970+
pathname.$(OBJEXT): {$(VPATH)}internal/gc.h
12971+
pathname.$(OBJEXT): {$(VPATH)}internal/glob.h
12972+
pathname.$(OBJEXT): {$(VPATH)}internal/globals.h
12973+
pathname.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
12974+
pathname.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
12975+
pathname.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
12976+
pathname.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
12977+
pathname.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
12978+
pathname.$(OBJEXT): {$(VPATH)}internal/has/extension.h
12979+
pathname.$(OBJEXT): {$(VPATH)}internal/has/feature.h
12980+
pathname.$(OBJEXT): {$(VPATH)}internal/has/warning.h
12981+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/array.h
12982+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
12983+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/class.h
12984+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
12985+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
12986+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
12987+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
12988+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
12989+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
12990+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/error.h
12991+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
12992+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/file.h
12993+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
12994+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/io.h
12995+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/load.h
12996+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
12997+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
12998+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/object.h
12999+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
13000+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
13001+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/process.h
13002+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/random.h
13003+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/range.h
13004+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
13005+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/re.h
13006+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
13007+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/select.h
13008+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
13009+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/set.h
13010+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
13011+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
13012+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/string.h
13013+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
13014+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
13015+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/time.h
13016+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
13017+
pathname.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
13018+
pathname.$(OBJEXT): {$(VPATH)}internal/interpreter.h
13019+
pathname.$(OBJEXT): {$(VPATH)}internal/iterator.h
13020+
pathname.$(OBJEXT): {$(VPATH)}internal/memory.h
13021+
pathname.$(OBJEXT): {$(VPATH)}internal/method.h
13022+
pathname.$(OBJEXT): {$(VPATH)}internal/module.h
13023+
pathname.$(OBJEXT): {$(VPATH)}internal/newobj.h
13024+
pathname.$(OBJEXT): {$(VPATH)}internal/scan_args.h
13025+
pathname.$(OBJEXT): {$(VPATH)}internal/special_consts.h
13026+
pathname.$(OBJEXT): {$(VPATH)}internal/static_assert.h
13027+
pathname.$(OBJEXT): {$(VPATH)}internal/stdalign.h
13028+
pathname.$(OBJEXT): {$(VPATH)}internal/stdbool.h
13029+
pathname.$(OBJEXT): {$(VPATH)}internal/stdckdint.h
13030+
pathname.$(OBJEXT): {$(VPATH)}internal/symbol.h
13031+
pathname.$(OBJEXT): {$(VPATH)}internal/value.h
13032+
pathname.$(OBJEXT): {$(VPATH)}internal/value_type.h
13033+
pathname.$(OBJEXT): {$(VPATH)}internal/variable.h
13034+
pathname.$(OBJEXT): {$(VPATH)}internal/warning_push.h
13035+
pathname.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
13036+
pathname.$(OBJEXT): {$(VPATH)}missing.h
13037+
pathname.$(OBJEXT): {$(VPATH)}onigmo.h
13038+
pathname.$(OBJEXT): {$(VPATH)}oniguruma.h
13039+
pathname.$(OBJEXT): {$(VPATH)}pathname.c
13040+
pathname.$(OBJEXT): {$(VPATH)}pathname_builtin.rbinc
13041+
pathname.$(OBJEXT): {$(VPATH)}ruby.h
13042+
pathname.$(OBJEXT): {$(VPATH)}st.h
13043+
pathname.$(OBJEXT): {$(VPATH)}subst.h
1286313044
prism/api_node.$(OBJEXT): $(hdrdir)/ruby.h
1286413045
prism/api_node.$(OBJEXT): $(hdrdir)/ruby/ruby.h
1286513046
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/defines.h

concurrent_set.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ struct concurrent_set {
2121
rb_atomic_t size;
2222
unsigned int capacity;
2323
unsigned int deleted_entries;
24-
struct rb_concurrent_set_funcs *funcs;
24+
const struct rb_concurrent_set_funcs *funcs;
2525
struct concurrent_set_entry *entries;
2626
};
2727

@@ -51,7 +51,7 @@ static const rb_data_type_t concurrent_set_type = {
5151
};
5252

5353
VALUE
54-
rb_concurrent_set_new(struct rb_concurrent_set_funcs *funcs, int capacity)
54+
rb_concurrent_set_new(const struct rb_concurrent_set_funcs *funcs, int capacity)
5555
{
5656
struct concurrent_set *set;
5757
VALUE obj = TypedData_Make_Struct(0, struct concurrent_set, &concurrent_set_type, set);

doc/string.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,8 @@
427427
# - #slice!, #[]=: Removes a substring determined by a given index, start/length, range, regexp, or substring.
428428
# - #squeeze!: Removes contiguous duplicate characters; returns +self+.
429429
# - #delete!: Removes characters as determined by the intersection of substring arguments.
430+
# - #delete_prefix!: Removes leading prefix; returns +self+ if any changes, +nil+ otherwise.
431+
# - #delete_suffix!: Removes trailing suffix; returns +self+ if any changes, +nil+ otherwise.
430432
# - #lstrip!: Removes leading whitespace; returns +self+ if any changes, +nil+ otherwise.
431433
# - #rstrip!: Removes trailing whitespace; returns +self+ if any changes, +nil+ otherwise.
432434
# - #strip!: Removes leading and trailing whitespace; returns +self+ if any changes, +nil+ otherwise.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy