Skip to content

Commit 1e4fff3

Browse files
authored
Merge branch 'master' into fix-heap-use-after-free-on-free_fast_fallback_getaddrinfo_entry
2 parents 00bdccf + 36c64b3 commit 1e4fff3

Some content is hidden

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

51 files changed

+1326
-1068
lines changed

.github/workflows/windows.yml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,6 @@ jobs:
2525
strategy:
2626
matrix:
2727
include:
28-
- os: 2019
29-
vc: 2015
30-
vcvars: '10.0.14393.0 -vcvars_ver=14.0' # The oldest Windows 10 SDK w/ VC++ 2015 toolset (v140)
31-
test_task: check
32-
- os: 2019
33-
vc: 2019
34-
test_task: check
3528
- os: 2022
3629
vc: 2019
3730
vcvars: '10.0.22621.0 -vcvars_ver=14.2' # The defautl Windows 11 SDK and toolset are broken at windows-2022
@@ -65,7 +58,6 @@ jobs:
6558

6659
env:
6760
GITPULLOPTIONS: --no-tags origin ${{ github.ref }}
68-
OS_VER: windows-${{ matrix.os < 2022 && '2019' || matrix.os }}
6961
VCPKG_DEFAULT_TRIPLET: ${{ matrix.target || 'x64' }}-windows
7062
RUBY_OPT_DIR: ${{ matrix.os == '11-arm' && 'C' || 'D' }}:/a/ruby/ruby/src/vcpkg_installed/%VCPKG_DEFAULT_TRIPLET%
7163

NEWS.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,9 @@ The following default gems are updated.
6666
* json 2.11.3
6767
* optparse 0.7.0.dev.2
6868
* prism 1.4.0
69-
* psych 5.2.3
69+
* psych 5.2.4
7070
* stringio 3.1.8.dev
71-
* strscan 3.1.4.dev
71+
* strscan 3.1.5.dev
7272
* uri 1.0.3
7373

7474
The following bundled gems are added.

addr2line.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2175,9 +2175,8 @@ fill_lines(int num_traces, void **traces, int check_debuglink,
21752175
}
21762176
}
21772177

2178-
if (offset == -1) {
2178+
if (offset == 0) {
21792179
/* main executable */
2180-
offset = 0;
21812180
if (dynsym_shdr && dynstr_shdr) {
21822181
char *strtab = file + dynstr_shdr->sh_offset;
21832182
ElfW(Sym) *symtab = (ElfW(Sym) *)(file + dynsym_shdr->sh_offset);

common.mk

Lines changed: 236 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ COMMONOBJS = array.$(OBJEXT) \
189189
$(YJIT_LIBOBJ) \
190190
$(ZJIT_OBJ) \
191191
$(ZJIT_LIBOBJ) \
192+
$(JIT_OBJ) \
192193
$(COROUTINE_OBJ) \
193194
$(DTRACE_OBJ) \
194195
$(BUILTIN_ENCOBJS) \
@@ -9156,6 +9157,241 @@ iseq.$(OBJEXT): {$(VPATH)}vm_debug.h
91569157
iseq.$(OBJEXT): {$(VPATH)}vm_opts.h
91579158
iseq.$(OBJEXT): {$(VPATH)}vm_sync.h
91589159
iseq.$(OBJEXT): {$(VPATH)}yjit.h
9160+
jit.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
9161+
jit.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
9162+
jit.$(OBJEXT): $(CCAN_DIR)/list/list.h
9163+
jit.$(OBJEXT): $(CCAN_DIR)/str/str.h
9164+
jit.$(OBJEXT): $(hdrdir)/ruby/ruby.h
9165+
jit.$(OBJEXT): $(top_srcdir)/internal/array.h
9166+
jit.$(OBJEXT): $(top_srcdir)/internal/basic_operators.h
9167+
jit.$(OBJEXT): $(top_srcdir)/internal/class.h
9168+
jit.$(OBJEXT): $(top_srcdir)/internal/compilers.h
9169+
jit.$(OBJEXT): $(top_srcdir)/internal/gc.h
9170+
jit.$(OBJEXT): $(top_srcdir)/internal/imemo.h
9171+
jit.$(OBJEXT): $(top_srcdir)/internal/sanitizers.h
9172+
jit.$(OBJEXT): $(top_srcdir)/internal/serial.h
9173+
jit.$(OBJEXT): $(top_srcdir)/internal/set_table.h
9174+
jit.$(OBJEXT): $(top_srcdir)/internal/static_assert.h
9175+
jit.$(OBJEXT): $(top_srcdir)/internal/variable.h
9176+
jit.$(OBJEXT): $(top_srcdir)/internal/vm.h
9177+
jit.$(OBJEXT): $(top_srcdir)/internal/warnings.h
9178+
jit.$(OBJEXT): $(top_srcdir)/prism/defines.h
9179+
jit.$(OBJEXT): $(top_srcdir)/prism/encoding.h
9180+
jit.$(OBJEXT): $(top_srcdir)/prism/node.h
9181+
jit.$(OBJEXT): $(top_srcdir)/prism/options.h
9182+
jit.$(OBJEXT): $(top_srcdir)/prism/pack.h
9183+
jit.$(OBJEXT): $(top_srcdir)/prism/parser.h
9184+
jit.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
9185+
jit.$(OBJEXT): $(top_srcdir)/prism/prism.h
9186+
jit.$(OBJEXT): $(top_srcdir)/prism/regexp.h
9187+
jit.$(OBJEXT): $(top_srcdir)/prism/static_literals.h
9188+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_buffer.h
9189+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_char.h
9190+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_constant_pool.h
9191+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_integer.h
9192+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_list.h
9193+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_memchr.h
9194+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_newline_list.h
9195+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h
9196+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_strncasecmp.h
9197+
jit.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h
9198+
jit.$(OBJEXT): {$(VPATH)}assert.h
9199+
jit.$(OBJEXT): {$(VPATH)}atomic.h
9200+
jit.$(OBJEXT): {$(VPATH)}backward/2/assume.h
9201+
jit.$(OBJEXT): {$(VPATH)}backward/2/attributes.h
9202+
jit.$(OBJEXT): {$(VPATH)}backward/2/bool.h
9203+
jit.$(OBJEXT): {$(VPATH)}backward/2/gcc_version_since.h
9204+
jit.$(OBJEXT): {$(VPATH)}backward/2/inttypes.h
9205+
jit.$(OBJEXT): {$(VPATH)}backward/2/limits.h
9206+
jit.$(OBJEXT): {$(VPATH)}backward/2/long_long.h
9207+
jit.$(OBJEXT): {$(VPATH)}backward/2/stdalign.h
9208+
jit.$(OBJEXT): {$(VPATH)}backward/2/stdarg.h
9209+
jit.$(OBJEXT): {$(VPATH)}builtin.h
9210+
jit.$(OBJEXT): {$(VPATH)}config.h
9211+
jit.$(OBJEXT): {$(VPATH)}constant.h
9212+
jit.$(OBJEXT): {$(VPATH)}debug_counter.h
9213+
jit.$(OBJEXT): {$(VPATH)}defines.h
9214+
jit.$(OBJEXT): {$(VPATH)}encoding.h
9215+
jit.$(OBJEXT): {$(VPATH)}id.h
9216+
jit.$(OBJEXT): {$(VPATH)}id_table.h
9217+
jit.$(OBJEXT): {$(VPATH)}insns.def
9218+
jit.$(OBJEXT): {$(VPATH)}insns.inc
9219+
jit.$(OBJEXT): {$(VPATH)}insns_info.inc
9220+
jit.$(OBJEXT): {$(VPATH)}intern.h
9221+
jit.$(OBJEXT): {$(VPATH)}internal.h
9222+
jit.$(OBJEXT): {$(VPATH)}internal/abi.h
9223+
jit.$(OBJEXT): {$(VPATH)}internal/anyargs.h
9224+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic.h
9225+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/char.h
9226+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/double.h
9227+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/fixnum.h
9228+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/gid_t.h
9229+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/int.h
9230+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/intptr_t.h
9231+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long.h
9232+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/long_long.h
9233+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/mode_t.h
9234+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/off_t.h
9235+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/pid_t.h
9236+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/short.h
9237+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/size_t.h
9238+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/st_data_t.h
9239+
jit.$(OBJEXT): {$(VPATH)}internal/arithmetic/uid_t.h
9240+
jit.$(OBJEXT): {$(VPATH)}internal/assume.h
9241+
jit.$(OBJEXT): {$(VPATH)}internal/attr/alloc_size.h
9242+
jit.$(OBJEXT): {$(VPATH)}internal/attr/artificial.h
9243+
jit.$(OBJEXT): {$(VPATH)}internal/attr/cold.h
9244+
jit.$(OBJEXT): {$(VPATH)}internal/attr/const.h
9245+
jit.$(OBJEXT): {$(VPATH)}internal/attr/constexpr.h
9246+
jit.$(OBJEXT): {$(VPATH)}internal/attr/deprecated.h
9247+
jit.$(OBJEXT): {$(VPATH)}internal/attr/diagnose_if.h
9248+
jit.$(OBJEXT): {$(VPATH)}internal/attr/enum_extensibility.h
9249+
jit.$(OBJEXT): {$(VPATH)}internal/attr/error.h
9250+
jit.$(OBJEXT): {$(VPATH)}internal/attr/flag_enum.h
9251+
jit.$(OBJEXT): {$(VPATH)}internal/attr/forceinline.h
9252+
jit.$(OBJEXT): {$(VPATH)}internal/attr/format.h
9253+
jit.$(OBJEXT): {$(VPATH)}internal/attr/maybe_unused.h
9254+
jit.$(OBJEXT): {$(VPATH)}internal/attr/noalias.h
9255+
jit.$(OBJEXT): {$(VPATH)}internal/attr/nodiscard.h
9256+
jit.$(OBJEXT): {$(VPATH)}internal/attr/noexcept.h
9257+
jit.$(OBJEXT): {$(VPATH)}internal/attr/noinline.h
9258+
jit.$(OBJEXT): {$(VPATH)}internal/attr/nonnull.h
9259+
jit.$(OBJEXT): {$(VPATH)}internal/attr/noreturn.h
9260+
jit.$(OBJEXT): {$(VPATH)}internal/attr/packed_struct.h
9261+
jit.$(OBJEXT): {$(VPATH)}internal/attr/pure.h
9262+
jit.$(OBJEXT): {$(VPATH)}internal/attr/restrict.h
9263+
jit.$(OBJEXT): {$(VPATH)}internal/attr/returns_nonnull.h
9264+
jit.$(OBJEXT): {$(VPATH)}internal/attr/warning.h
9265+
jit.$(OBJEXT): {$(VPATH)}internal/attr/weakref.h
9266+
jit.$(OBJEXT): {$(VPATH)}internal/cast.h
9267+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is.h
9268+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is/apple.h
9269+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is/clang.h
9270+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is/gcc.h
9271+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is/intel.h
9272+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is/msvc.h
9273+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_is/sunpro.h
9274+
jit.$(OBJEXT): {$(VPATH)}internal/compiler_since.h
9275+
jit.$(OBJEXT): {$(VPATH)}internal/config.h
9276+
jit.$(OBJEXT): {$(VPATH)}internal/constant_p.h
9277+
jit.$(OBJEXT): {$(VPATH)}internal/core.h
9278+
jit.$(OBJEXT): {$(VPATH)}internal/core/rarray.h
9279+
jit.$(OBJEXT): {$(VPATH)}internal/core/rbasic.h
9280+
jit.$(OBJEXT): {$(VPATH)}internal/core/rbignum.h
9281+
jit.$(OBJEXT): {$(VPATH)}internal/core/rclass.h
9282+
jit.$(OBJEXT): {$(VPATH)}internal/core/rdata.h
9283+
jit.$(OBJEXT): {$(VPATH)}internal/core/rfile.h
9284+
jit.$(OBJEXT): {$(VPATH)}internal/core/rhash.h
9285+
jit.$(OBJEXT): {$(VPATH)}internal/core/robject.h
9286+
jit.$(OBJEXT): {$(VPATH)}internal/core/rregexp.h
9287+
jit.$(OBJEXT): {$(VPATH)}internal/core/rstring.h
9288+
jit.$(OBJEXT): {$(VPATH)}internal/core/rstruct.h
9289+
jit.$(OBJEXT): {$(VPATH)}internal/core/rtypeddata.h
9290+
jit.$(OBJEXT): {$(VPATH)}internal/ctype.h
9291+
jit.$(OBJEXT): {$(VPATH)}internal/dllexport.h
9292+
jit.$(OBJEXT): {$(VPATH)}internal/dosish.h
9293+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/coderange.h
9294+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/ctype.h
9295+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/encoding.h
9296+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/pathname.h
9297+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/re.h
9298+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/sprintf.h
9299+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/string.h
9300+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/symbol.h
9301+
jit.$(OBJEXT): {$(VPATH)}internal/encoding/transcode.h
9302+
jit.$(OBJEXT): {$(VPATH)}internal/error.h
9303+
jit.$(OBJEXT): {$(VPATH)}internal/eval.h
9304+
jit.$(OBJEXT): {$(VPATH)}internal/event.h
9305+
jit.$(OBJEXT): {$(VPATH)}internal/fl_type.h
9306+
jit.$(OBJEXT): {$(VPATH)}internal/gc.h
9307+
jit.$(OBJEXT): {$(VPATH)}internal/glob.h
9308+
jit.$(OBJEXT): {$(VPATH)}internal/globals.h
9309+
jit.$(OBJEXT): {$(VPATH)}internal/has/attribute.h
9310+
jit.$(OBJEXT): {$(VPATH)}internal/has/builtin.h
9311+
jit.$(OBJEXT): {$(VPATH)}internal/has/c_attribute.h
9312+
jit.$(OBJEXT): {$(VPATH)}internal/has/cpp_attribute.h
9313+
jit.$(OBJEXT): {$(VPATH)}internal/has/declspec_attribute.h
9314+
jit.$(OBJEXT): {$(VPATH)}internal/has/extension.h
9315+
jit.$(OBJEXT): {$(VPATH)}internal/has/feature.h
9316+
jit.$(OBJEXT): {$(VPATH)}internal/has/warning.h
9317+
jit.$(OBJEXT): {$(VPATH)}internal/intern/array.h
9318+
jit.$(OBJEXT): {$(VPATH)}internal/intern/bignum.h
9319+
jit.$(OBJEXT): {$(VPATH)}internal/intern/class.h
9320+
jit.$(OBJEXT): {$(VPATH)}internal/intern/compar.h
9321+
jit.$(OBJEXT): {$(VPATH)}internal/intern/complex.h
9322+
jit.$(OBJEXT): {$(VPATH)}internal/intern/cont.h
9323+
jit.$(OBJEXT): {$(VPATH)}internal/intern/dir.h
9324+
jit.$(OBJEXT): {$(VPATH)}internal/intern/enum.h
9325+
jit.$(OBJEXT): {$(VPATH)}internal/intern/enumerator.h
9326+
jit.$(OBJEXT): {$(VPATH)}internal/intern/error.h
9327+
jit.$(OBJEXT): {$(VPATH)}internal/intern/eval.h
9328+
jit.$(OBJEXT): {$(VPATH)}internal/intern/file.h
9329+
jit.$(OBJEXT): {$(VPATH)}internal/intern/hash.h
9330+
jit.$(OBJEXT): {$(VPATH)}internal/intern/io.h
9331+
jit.$(OBJEXT): {$(VPATH)}internal/intern/load.h
9332+
jit.$(OBJEXT): {$(VPATH)}internal/intern/marshal.h
9333+
jit.$(OBJEXT): {$(VPATH)}internal/intern/numeric.h
9334+
jit.$(OBJEXT): {$(VPATH)}internal/intern/object.h
9335+
jit.$(OBJEXT): {$(VPATH)}internal/intern/parse.h
9336+
jit.$(OBJEXT): {$(VPATH)}internal/intern/proc.h
9337+
jit.$(OBJEXT): {$(VPATH)}internal/intern/process.h
9338+
jit.$(OBJEXT): {$(VPATH)}internal/intern/random.h
9339+
jit.$(OBJEXT): {$(VPATH)}internal/intern/range.h
9340+
jit.$(OBJEXT): {$(VPATH)}internal/intern/rational.h
9341+
jit.$(OBJEXT): {$(VPATH)}internal/intern/re.h
9342+
jit.$(OBJEXT): {$(VPATH)}internal/intern/ruby.h
9343+
jit.$(OBJEXT): {$(VPATH)}internal/intern/select.h
9344+
jit.$(OBJEXT): {$(VPATH)}internal/intern/select/largesize.h
9345+
jit.$(OBJEXT): {$(VPATH)}internal/intern/signal.h
9346+
jit.$(OBJEXT): {$(VPATH)}internal/intern/sprintf.h
9347+
jit.$(OBJEXT): {$(VPATH)}internal/intern/string.h
9348+
jit.$(OBJEXT): {$(VPATH)}internal/intern/struct.h
9349+
jit.$(OBJEXT): {$(VPATH)}internal/intern/thread.h
9350+
jit.$(OBJEXT): {$(VPATH)}internal/intern/time.h
9351+
jit.$(OBJEXT): {$(VPATH)}internal/intern/variable.h
9352+
jit.$(OBJEXT): {$(VPATH)}internal/intern/vm.h
9353+
jit.$(OBJEXT): {$(VPATH)}internal/interpreter.h
9354+
jit.$(OBJEXT): {$(VPATH)}internal/iterator.h
9355+
jit.$(OBJEXT): {$(VPATH)}internal/memory.h
9356+
jit.$(OBJEXT): {$(VPATH)}internal/method.h
9357+
jit.$(OBJEXT): {$(VPATH)}internal/module.h
9358+
jit.$(OBJEXT): {$(VPATH)}internal/newobj.h
9359+
jit.$(OBJEXT): {$(VPATH)}internal/scan_args.h
9360+
jit.$(OBJEXT): {$(VPATH)}internal/special_consts.h
9361+
jit.$(OBJEXT): {$(VPATH)}internal/static_assert.h
9362+
jit.$(OBJEXT): {$(VPATH)}internal/stdalign.h
9363+
jit.$(OBJEXT): {$(VPATH)}internal/stdbool.h
9364+
jit.$(OBJEXT): {$(VPATH)}internal/stdckdint.h
9365+
jit.$(OBJEXT): {$(VPATH)}internal/symbol.h
9366+
jit.$(OBJEXT): {$(VPATH)}internal/value.h
9367+
jit.$(OBJEXT): {$(VPATH)}internal/value_type.h
9368+
jit.$(OBJEXT): {$(VPATH)}internal/variable.h
9369+
jit.$(OBJEXT): {$(VPATH)}internal/warning_push.h
9370+
jit.$(OBJEXT): {$(VPATH)}internal/xmalloc.h
9371+
jit.$(OBJEXT): {$(VPATH)}iseq.h
9372+
jit.$(OBJEXT): {$(VPATH)}jit.c
9373+
jit.$(OBJEXT): {$(VPATH)}method.h
9374+
jit.$(OBJEXT): {$(VPATH)}missing.h
9375+
jit.$(OBJEXT): {$(VPATH)}node.h
9376+
jit.$(OBJEXT): {$(VPATH)}onigmo.h
9377+
jit.$(OBJEXT): {$(VPATH)}oniguruma.h
9378+
jit.$(OBJEXT): {$(VPATH)}prism/ast.h
9379+
jit.$(OBJEXT): {$(VPATH)}prism/diagnostic.h
9380+
jit.$(OBJEXT): {$(VPATH)}prism/version.h
9381+
jit.$(OBJEXT): {$(VPATH)}prism_compile.h
9382+
jit.$(OBJEXT): {$(VPATH)}ruby_assert.h
9383+
jit.$(OBJEXT): {$(VPATH)}ruby_atomic.h
9384+
jit.$(OBJEXT): {$(VPATH)}rubyparser.h
9385+
jit.$(OBJEXT): {$(VPATH)}shape.h
9386+
jit.$(OBJEXT): {$(VPATH)}st.h
9387+
jit.$(OBJEXT): {$(VPATH)}subst.h
9388+
jit.$(OBJEXT): {$(VPATH)}thread_$(THREAD_MODEL).h
9389+
jit.$(OBJEXT): {$(VPATH)}thread_native.h
9390+
jit.$(OBJEXT): {$(VPATH)}vm_callinfo.h
9391+
jit.$(OBJEXT): {$(VPATH)}vm_core.h
9392+
jit.$(OBJEXT): {$(VPATH)}vm_debug.h
9393+
jit.$(OBJEXT): {$(VPATH)}vm_opts.h
9394+
jit.$(OBJEXT): {$(VPATH)}vm_sync.h
91599395
load.$(OBJEXT): $(CCAN_DIR)/check_type/check_type.h
91609396
load.$(OBJEXT): $(CCAN_DIR)/container_of/container_of.h
91619397
load.$(OBJEXT): $(CCAN_DIR)/list/list.h

configure.ac

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3967,6 +3967,7 @@ AS_CASE(["${YJIT_SUPPORT}"],
39673967
LDFLAGS="$LDFLAGS -lpthread -lc++abi"
39683968
])
39693969
YJIT_OBJ='yjit.$(OBJEXT)'
3970+
JIT_OBJ='jit.$(OBJEXT)'
39703971
AS_IF([test x"$YJIT_SUPPORT" != "xyes" ], [
39713972
AC_DEFINE_UNQUOTED(YJIT_SUPPORT, [$YJIT_SUPPORT])
39723973
])
@@ -4008,6 +4009,7 @@ AS_CASE(["${ZJIT_SUPPORT}"],
40084009
LDFLAGS="$LDFLAGS -lpthread -lc++abi"
40094010
])
40104011
ZJIT_OBJ='zjit.$(OBJEXT)'
4012+
JIT_OBJ='jit.$(OBJEXT)'
40114013
AS_IF([test x"$ZJIT_SUPPORT" != "xyes" ], [
40124014
AC_DEFINE_UNQUOTED(ZJIT_SUPPORT, [$ZJIT_SUPPORT])
40134015
])
@@ -4025,8 +4027,9 @@ AC_SUBST(ZJIT_CARGO_BUILD_ARGS)dnl for selecting Rust build profiles
40254027
AC_SUBST(YJIT_LIBS)dnl for optionally building the Rust parts of YJIT
40264028
AC_SUBST(YJIT_OBJ)dnl for optionally building the C parts of YJIT
40274029
AC_SUBST(ZJIT_SUPPORT)dnl what flavor of ZJIT the Ruby build includes
4028-
AC_SUBST(ZJIT_LIBS)dnl for optionally building the Rust parts of YJIT
4029-
AC_SUBST(ZJIT_OBJ)dnl for optionally building the C parts of YJIT
4030+
AC_SUBST(ZJIT_LIBS)dnl for optionally building the Rust parts of ZJIT
4031+
AC_SUBST(ZJIT_OBJ)dnl for optionally building the C parts of ZJIT
4032+
AC_SUBST(JIT_OBJ)dnl for optionally building C glue code for Rust FFI
40304033
}
40314034
40324035
[begin]_group "build section" && {

doc/string/new.rdoc

Lines changed: 22 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,38 @@
1-
Returns a new \String that is a copy of +string+.
1+
Returns a new \String object containing the given +string+.
22

3-
With no arguments, returns the empty string with the Encoding <tt>ASCII-8BIT</tt>:
3+
The +options+ are optional keyword options (see below).
44

5-
s = String.new
6-
s # => ""
7-
s.encoding # => #<Encoding:ASCII-8BIT>
5+
With no argument given and keyword +encoding+ also not given,
6+
returns an empty string with the Encoding <tt>ASCII-8BIT</tt>:
87

9-
With optional argument +string+ and no keyword arguments,
10-
returns a copy of +string+ with the same encoding:
8+
s = String.new # => ""
9+
s.encoding # => #<Encoding:ASCII-8BIT>
1110

12-
String.new('foo') # => "foo"
13-
String.new('тест') # => "тест"
14-
String.new('こんにちは') # => "こんにちは"
11+
With argument +string+ given and keyword option +encoding+ not given,
12+
returns a new string with the same encoding as +string+:
13+
14+
s0 = 'foo'.encode(Encoding::UTF_16)
15+
s1 = String.new(s0)
16+
s1.encoding # => #<Encoding:UTF-16 (dummy)>
1517

1618
(Unlike \String.new,
1719
a {string literal}[rdoc-ref:syntax/literals.rdoc@String+Literals] like <tt>''</tt> or a
1820
{here document literal}[rdoc-ref:syntax/literals.rdoc@Here+Document+Literals]
1921
always has {script encoding}[rdoc-ref:encodings.rdoc@Script+Encoding].)
2022

21-
With optional keyword argument +encoding+, returns a copy of +string+
22-
with the specified encoding;
23+
With keyword option +encoding+ given,
24+
returns a string with the specified encoding;
2325
the +encoding+ may be an Encoding object, an encoding name,
2426
or an encoding name alias:
2527

28+
String.new(encoding: Encoding::US_ASCII).encoding # => #<Encoding:US-ASCII>
29+
String.new('', encoding: Encoding::US_ASCII).encoding # => #<Encoding:US-ASCII>
2630
String.new('foo', encoding: Encoding::US_ASCII).encoding # => #<Encoding:US-ASCII>
2731
String.new('foo', encoding: 'US-ASCII').encoding # => #<Encoding:US-ASCII>
2832
String.new('foo', encoding: 'ASCII').encoding # => #<Encoding:US-ASCII>
2933

3034
The given encoding need not be valid for the string's content,
31-
and that validity is not checked:
35+
and its validity is not checked:
3236

3337
s = String.new('こんにちは', encoding: 'ascii')
3438
s.valid_encoding? # => false
@@ -37,19 +41,11 @@ But the given +encoding+ itself is checked:
3741

3842
String.new('foo', encoding: 'bar') # Raises ArgumentError.
3943

40-
With optional keyword argument +capacity+, returns a copy of +string+
41-
(or an empty string, if +string+ is not given);
42-
the given +capacity+ is advisory only,
44+
With keyword option +capacity+ given,
45+
the given value is advisory only,
4346
and may or may not set the size of the internal buffer,
4447
which may in turn affect performance:
4548

46-
String.new(capacity: 1)
47-
String.new('foo', capacity: 4096)
48-
49-
Note that Ruby strings are null-terminated internally, so the internal
50-
buffer size will be one or more bytes larger than the requested capacity
51-
depending on the encoding.
52-
53-
The +string+, +encoding+, and +capacity+ arguments may all be used together:
54-
55-
String.new('hello', encoding: 'UTF-8', capacity: 25)
49+
String.new('foo', capacity: 1) # Buffer size is at least 4 (includes terminal null byte).
50+
String.new('foo', capacity: 4096) # Buffer size is at least 4;
51+
# may be equal to, greater than, or less than 4096.

0 commit comments

Comments
 (0)