Merge ~vpa1977/ubuntu/+source/jruby:2054619 into ubuntu/+source/jruby:ubuntu/devel

Proposed by Vladimir Petko
Status: Superseded
Proposed branch: ~vpa1977/ubuntu/+source/jruby:2054619
Merge into: ubuntu/+source/jruby:ubuntu/devel
Diff against target: 546774 lines (+265070/-62871) (has conflicts)
3425 files modified
.github/workflows/ci.yml (+210/-327)
.github/workflows/nightly-snapshot-publish.yml (+21/-0)
.github/workflows/snapshot-publish.yml (+6/-1)
.gitignore (+46/-14)
.mvn/extensions.xml (+1/-1)
.mvn/wrapper/maven-wrapper.properties (+18/-1)
BUILDING.md (+1/-1)
Gemfile (+1/-1)
README.md (+3/-3)
VERSION (+1/-1)
bin/jirb_swing (+1/-0)
bin/jruby.sh (+652/-204)
core/pom.rb (+69/-32)
core/pom.xml (+87/-40)
core/src/main/java/org/jruby/AbstractRubyMethod.java (+17/-2)
core/src/main/java/org/jruby/BasicObjectStub.java (+1/-4)
core/src/main/java/org/jruby/DelegatedModule.java (+5/-0)
core/src/main/java/org/jruby/EvalType.java (+4/-1)
core/src/main/java/org/jruby/FiberScheduler.java (+210/-0)
core/src/main/java/org/jruby/IncludedModule.java (+1/-1)
core/src/main/java/org/jruby/Main.java (+40/-14)
core/src/main/java/org/jruby/ObjectFlags.java (+5/-5)
core/src/main/java/org/jruby/PrependedModule.java (+1/-1)
core/src/main/java/org/jruby/Ruby.java (+361/-260)
core/src/main/java/org/jruby/RubyArgsFile.java (+144/-49)
core/src/main/java/org/jruby/RubyArithmeticSequence.java (+77/-5)
core/src/main/java/org/jruby/RubyArray.java (+358/-113)
core/src/main/java/org/jruby/RubyBasicObject.java (+271/-285)
core/src/main/java/org/jruby/RubyBignum.java (+180/-11)
core/src/main/java/org/jruby/RubyBinding.java (+26/-10)
core/src/main/java/org/jruby/RubyBoolean.java (+23/-8)
core/src/main/java/org/jruby/RubyChain.java (+31/-1)
core/src/main/java/org/jruby/RubyClass.java (+73/-36)
core/src/main/java/org/jruby/RubyComparable.java (+32/-8)
core/src/main/java/org/jruby/RubyComplex.java (+121/-82)
core/src/main/java/org/jruby/RubyConverter.java (+22/-17)
core/src/main/java/org/jruby/RubyDir.java (+78/-34)
core/src/main/java/org/jruby/RubyEnumerable.java (+365/-347)
core/src/main/java/org/jruby/RubyEnumerator.java (+121/-185)
core/src/main/java/org/jruby/RubyException.java (+36/-15)
core/src/main/java/org/jruby/RubyFile.java (+164/-68)
core/src/main/java/org/jruby/RubyFileStat.java (+3/-3)
core/src/main/java/org/jruby/RubyFixnum.java (+28/-13)
core/src/main/java/org/jruby/RubyFloat.java (+63/-30)
core/src/main/java/org/jruby/RubyFrozenError.java (+59/-0)
core/src/main/java/org/jruby/RubyGC.java (+51/-2)
core/src/main/java/org/jruby/RubyGenerator.java (+6/-4)
core/src/main/java/org/jruby/RubyGlobal.java (+123/-79)
core/src/main/java/org/jruby/RubyHash.java (+321/-195)
core/src/main/java/org/jruby/RubyIO.java (+173/-143)
core/src/main/java/org/jruby/RubyIOBuffer.java (+2260/-0)
core/src/main/java/org/jruby/RubyInstanceConfig.java (+43/-23)
core/src/main/java/org/jruby/RubyInteger.java (+162/-25)
core/src/main/java/org/jruby/RubyInterrupt.java (+3/-3)
core/src/main/java/org/jruby/RubyKernel.java (+314/-143)
core/src/main/java/org/jruby/RubyKeyError.java (+5/-5)
core/src/main/java/org/jruby/RubyMarshal.java (+26/-14)
core/src/main/java/org/jruby/RubyMatchData.java (+115/-65)
core/src/main/java/org/jruby/RubyMath.java (+47/-13)
core/src/main/java/org/jruby/RubyMethod.java (+60/-16)
core/src/main/java/org/jruby/RubyModule.java (+715/-161)
core/src/main/java/org/jruby/RubyNameError.java (+13/-4)
core/src/main/java/org/jruby/RubyNil.java (+11/-7)
core/src/main/java/org/jruby/RubyNoMatchingPatternError.java (+28/-7)
core/src/main/java/org/jruby/RubyNumeric.java (+56/-27)
core/src/main/java/org/jruby/RubyObject.java (+13/-4)
core/src/main/java/org/jruby/RubyObjectSpace.java (+30/-13)
core/src/main/java/org/jruby/RubyProc.java (+61/-11)
core/src/main/java/org/jruby/RubyProcess.java (+129/-21)
core/src/main/java/org/jruby/RubyProducer.java (+97/-0)
core/src/main/java/org/jruby/RubyRandom.java (+101/-398)
core/src/main/java/org/jruby/RubyRandomBase.java (+547/-0)
core/src/main/java/org/jruby/RubyRange.java (+186/-82)
core/src/main/java/org/jruby/RubyRational.java (+123/-45)
core/src/main/java/org/jruby/RubyRegexp.java (+75/-66)
core/src/main/java/org/jruby/RubySignalException.java (+4/-3)
core/src/main/java/org/jruby/RubyString.java (+509/-343)
core/src/main/java/org/jruby/RubyStruct.java (+134/-51)
core/src/main/java/org/jruby/RubySymbol.java (+108/-29)
core/src/main/java/org/jruby/RubySystemCallError.java (+12/-13)
core/src/main/java/org/jruby/RubySystemExit.java (+11/-7)
core/src/main/java/org/jruby/RubyThread.java (+231/-136)
core/src/main/java/org/jruby/RubyThreadGroup.java (+0/-1)
core/src/main/java/org/jruby/RubyTime.java (+265/-122)
core/src/main/java/org/jruby/RubyUnboundMethod.java (+48/-5)
core/src/main/java/org/jruby/RubyUncaughtThrowError.java (+5/-2)
core/src/main/java/org/jruby/RubyYielder.java (+11/-1)
core/src/main/java/org/jruby/TopSelfFactory.java (+9/-2)
core/src/main/java/org/jruby/anno/AnnotationBinder.java (+10/-4)
core/src/main/java/org/jruby/anno/InvokerGenerator.java (+10/-2)
core/src/main/java/org/jruby/anno/JRubyMethod.java (+13/-0)
core/src/main/java/org/jruby/ast/AndNode.java (+1/-1)
core/src/main/java/org/jruby/ast/ArgsCatNode.java (+1/-1)
core/src/main/java/org/jruby/ast/ArgsNode.java (+13/-3)
core/src/main/java/org/jruby/ast/ArgsPushNode.java (+1/-1)
core/src/main/java/org/jruby/ast/ArrayPatternNode.java (+92/-0)
core/src/main/java/org/jruby/ast/BlockAcceptingNode.java (+1/-1)
core/src/main/java/org/jruby/ast/BlockPassNode.java (+2/-2)
core/src/main/java/org/jruby/ast/CallNode.java (+2/-3)
core/src/main/java/org/jruby/ast/CanRaise.java (+4/-0)
core/src/main/java/org/jruby/ast/DefHolder.java (+45/-0)
core/src/main/java/org/jruby/ast/FCallNode.java (+1/-2)
core/src/main/java/org/jruby/ast/FindPatternNode.java (+59/-0)
core/src/main/java/org/jruby/ast/ForwardingBlockArgNode.java (+7/-0)
core/src/main/java/org/jruby/ast/HashNode.java (+49/-18)
core/src/main/java/org/jruby/ast/HashPatternNode.java (+84/-0)
core/src/main/java/org/jruby/ast/InNode.java (+51/-0)
core/src/main/java/org/jruby/ast/NilRestArgNode.java (+28/-0)
core/src/main/java/org/jruby/ast/NodeType.java (+2/-1)
core/src/main/java/org/jruby/ast/OpElementAsgnNode.java (+1/-1)
core/src/main/java/org/jruby/ast/PatternCaseNode.java (+100/-0)
core/src/main/java/org/jruby/ast/SymbolNode.java (+6/-0)
core/src/main/java/org/jruby/ast/TwoValueNode.java (+6/-0)
core/src/main/java/org/jruby/ast/VCallNode.java (+1/-2)
core/src/main/java/org/jruby/ast/executable/RuntimeCache.java (+14/-23)
core/src/main/java/org/jruby/ast/util/ArgsUtil.java (+76/-16)
core/src/main/java/org/jruby/ast/visitor/AbstractNodeVisitor.java (+30/-0)
core/src/main/java/org/jruby/ast/visitor/InstanceVariableFinder.java (+6/-0)
core/src/main/java/org/jruby/ast/visitor/NodeVisitor.java (+6/-0)
core/src/main/java/org/jruby/common/IRubyWarnings.java (+8/-2)
core/src/main/java/org/jruby/common/RubyWarnings.java (+159/-49)
core/src/main/java/org/jruby/embed/AttributeName.java (+2/-2)
core/src/main/java/org/jruby/embed/EmbedEvalUnit.java (+1/-1)
core/src/main/java/org/jruby/embed/EmbedRubyInstanceConfigAdapter.java (+1/-1)
core/src/main/java/org/jruby/embed/EmbedRubyInterfaceAdapter.java (+1/-1)
core/src/main/java/org/jruby/embed/EmbedRubyObjectAdapter.java (+1/-1)
core/src/main/java/org/jruby/embed/EmbedRubyRuntimeAdapter.java (+1/-1)
core/src/main/java/org/jruby/embed/EvalFailedException.java (+1/-1)
core/src/main/java/org/jruby/embed/InvokeFailedException.java (+1/-1)
core/src/main/java/org/jruby/embed/LocalContextScope.java (+2/-2)
core/src/main/java/org/jruby/embed/LocalVariableBehavior.java (+1/-1)
core/src/main/java/org/jruby/embed/ParseFailedException.java (+1/-1)
core/src/main/java/org/jruby/embed/PathType.java (+1/-1)
core/src/main/java/org/jruby/embed/PropertyName.java (+1/-1)
core/src/main/java/org/jruby/embed/ScriptingContainer.java (+7/-7)
core/src/main/java/org/jruby/embed/internal/AbstractLocalContextProvider.java (+1/-1)
core/src/main/java/org/jruby/embed/internal/BiVariableMap.java (+22/-23)
core/src/main/java/org/jruby/embed/internal/ConcurrentLocalContextProvider.java (+1/-1)
core/src/main/java/org/jruby/embed/internal/EmbedEvalUnitImpl.java (+1/-1)
core/src/main/java/org/jruby/embed/internal/EmbedRubyInterfaceAdapterImpl.java (+1/-1)
core/src/main/java/org/jruby/embed/internal/EmbedRubyObjectAdapterImpl.java (+8/-12)
core/src/main/java/org/jruby/embed/internal/EmbedRubyRuntimeAdapterImpl.java (+1/-1)
core/src/main/java/org/jruby/embed/internal/LocalContext.java (+1/-1)
core/src/main/java/org/jruby/embed/internal/LocalContextProvider.java (+1/-1)
core/src/main/java/org/jruby/embed/internal/SingleThreadLocalContextProvider.java (+1/-1)
core/src/main/java/org/jruby/embed/internal/SingletonLocalContextProvider.java (+1/-1)
core/src/main/java/org/jruby/embed/internal/ThreadSafeLocalContextProvider.java (+1/-1)
core/src/main/java/org/jruby/embed/io/ReaderInputStream.java (+1/-1)
core/src/main/java/org/jruby/embed/io/WriterOutputStream.java (+2/-2)
core/src/main/java/org/jruby/embed/jsr223/JRubyCompiledScript.java (+1/-1)
core/src/main/java/org/jruby/embed/jsr223/JRubyContext.java (+1/-1)
core/src/main/java/org/jruby/embed/jsr223/JRubyEngine.java (+1/-1)
core/src/main/java/org/jruby/embed/jsr223/JRubyEngineFactory.java (+1/-1)
core/src/main/java/org/jruby/embed/jsr223/JRubyScriptEngineManager.java (+1/-1)
core/src/main/java/org/jruby/embed/jsr223/Utils.java (+1/-1)
core/src/main/java/org/jruby/embed/osgi/OSGiScriptingContainer.java (+12/-6)
core/src/main/java/org/jruby/embed/osgi/internal/JRubyOSGiBundleClassLoader.java (+4/-25)
core/src/main/java/org/jruby/embed/osgi/internal/OSGiBundleLibrary.java (+2/-2)
core/src/main/java/org/jruby/embed/osgi/internal/OSGiLoadService.java (+3/-36)
core/src/main/java/org/jruby/embed/osgi/package.html (+1/-2)
core/src/main/java/org/jruby/embed/osgi/utils/OSGiFileLocator.java (+1/-1)
core/src/main/java/org/jruby/embed/util/SystemPropertyCatcher.java (+1/-1)
core/src/main/java/org/jruby/embed/variable/AbstractVariable.java (+1/-1)
core/src/main/java/org/jruby/embed/variable/Argv.java (+1/-5)
core/src/main/java/org/jruby/embed/variable/BiVariable.java (+4/-5)
core/src/main/java/org/jruby/embed/variable/ClassVariable.java (+3/-7)
core/src/main/java/org/jruby/embed/variable/Constant.java (+1/-1)
core/src/main/java/org/jruby/embed/variable/GlobalVariable.java (+3/-6)
core/src/main/java/org/jruby/embed/variable/InstanceVariable.java (+2/-6)
core/src/main/java/org/jruby/embed/variable/LocalGlobalVariable.java (+2/-4)
core/src/main/java/org/jruby/embed/variable/PersistentLocalVariable.java (+2/-3)
core/src/main/java/org/jruby/embed/variable/TransientLocalVariable.java (+2/-3)
core/src/main/java/org/jruby/embed/variable/VariableInterceptor.java (+4/-6)
core/src/main/java/org/jruby/exceptions/NoMatchingPatternError.java (+12/-7)
core/src/main/java/org/jruby/exceptions/RaiseException.java (+3/-8)
core/src/main/java/org/jruby/ext/bigdecimal/RubyBigDecimal.java (+495/-262)
core/src/main/java/org/jruby/ext/coverage/CoverageData.java (+80/-28)
core/src/main/java/org/jruby/ext/coverage/CoverageModule.java (+144/-53)
core/src/main/java/org/jruby/ext/date/RubyDate.java (+85/-55)
core/src/main/java/org/jruby/ext/date/RubyDateTime.java (+23/-22)
core/src/main/java/org/jruby/ext/digest/RubyDigest.java (+29/-18)
core/src/main/java/org/jruby/ext/etc/RubyEtc.java (+17/-8)
core/src/main/java/org/jruby/ext/ffi/AbstractInvoker.java (+4/-3)
core/src/main/java/org/jruby/ext/ffi/AbstractMemory.java (+98/-52)
core/src/main/java/org/jruby/ext/ffi/CallbackInfo.java (+11/-10)
core/src/main/java/org/jruby/ext/ffi/Factory.java (+12/-11)
core/src/main/java/org/jruby/ext/ffi/MemoryIO.java (+20/-20)
core/src/main/java/org/jruby/ext/ffi/MemoryUtil.java (+2/-3)
core/src/main/java/org/jruby/ext/ffi/Platform.java (+9/-5)
core/src/main/java/org/jruby/ext/ffi/Pointer.java (+3/-4)
core/src/main/java/org/jruby/ext/ffi/Struct.java (+9/-9)
core/src/main/java/org/jruby/ext/ffi/StructLayout.java (+24/-18)
core/src/main/java/org/jruby/ext/ffi/Type.java (+10/-10)
core/src/main/java/org/jruby/ext/ffi/Util.java (+1/-4)
core/src/main/java/org/jruby/ext/ffi/io/FileDescriptorByteChannel.java (+5/-5)
core/src/main/java/org/jruby/ext/ffi/jffi/DefaultMethod.java (+1/-1)
core/src/main/java/org/jruby/ext/ffi/jffi/DefaultMethodFactory.java (+3/-3)
core/src/main/java/org/jruby/ext/ffi/jffi/DynamicLibrary.java (+58/-4)
core/src/main/java/org/jruby/ext/ffi/jffi/FFIUtil.java (+1/-2)
core/src/main/java/org/jruby/ext/ffi/jffi/Factory.java (+10/-12)
core/src/main/java/org/jruby/ext/ffi/jffi/FastIntMethodGenerator.java (+1/-0)
core/src/main/java/org/jruby/ext/ffi/jffi/FastLongMethodGenerator.java (+1/-0)
core/src/main/java/org/jruby/ext/ffi/jffi/FastNumericMethodGenerator.java (+1/-1)
core/src/main/java/org/jruby/ext/ffi/jffi/Function.java (+7/-4)
core/src/main/java/org/jruby/ext/ffi/jffi/NativeCallbackFactory.java (+2/-2)
core/src/main/java/org/jruby/ext/ffi/jffi/NativeInvoker.java (+1/-1)
core/src/main/java/org/jruby/ext/ffi/jffi/VariadicInvoker.java (+1/-1)
core/src/main/java/org/jruby/ext/fiber/FiberQueue.java (+9/-8)
core/src/main/java/org/jruby/ext/fiber/ThreadFiber.java (+349/-59)
core/src/main/java/org/jruby/ext/fiber/ThreadFiberLibrary.java (+6/-0)
core/src/main/java/org/jruby/ext/jruby/JRubyExecutionContextLocal.java (+1/-1)
core/src/main/java/org/jruby/ext/jruby/JRubyLibrary.java (+9/-6)
core/src/main/java/org/jruby/ext/jruby/JRubyUtilLibrary.java (+7/-4)
core/src/main/java/org/jruby/ext/pathname/RubyPathname.java (+26/-21)
core/src/main/java/org/jruby/ext/rbconfig/RbConfigLibrary.java (+6/-0)
core/src/main/java/org/jruby/ext/ripper/HeredocTerm.java (+31/-15)
core/src/main/java/org/jruby/ext/ripper/RipperLibrary.java (+0/-2)
core/src/main/java/org/jruby/ext/ripper/RipperParser.java (+4875/-2127)
core/src/main/java/org/jruby/ext/ripper/RipperParserBase.java (+591/-86)
core/src/main/java/org/jruby/ext/ripper/RubyLexer.java (+2499/-0)
core/src/main/java/org/jruby/ext/ripper/RubyRipper.java (+27/-19)
core/src/main/java/org/jruby/ext/ripper/StrTerm.java (+1/-1)
core/src/main/java/org/jruby/ext/ripper/StringTerm.java (+57/-38)
core/src/main/java/org/jruby/ext/ripper/YyTables.java (+6177/-4833)
core/src/main/java/org/jruby/ext/ripper/skeleton.parser (+146/-123)
core/src/main/java/org/jruby/ext/set/RubySet.java (+90/-40)
core/src/main/java/org/jruby/ext/set/RubySortedSet.java (+7/-3)
core/src/main/java/org/jruby/ext/socket/Addrinfo.java (+39/-13)
core/src/main/java/org/jruby/ext/socket/Ifaddr.java (+7/-3)
core/src/main/java/org/jruby/ext/socket/Option.java (+1/-1)
core/src/main/java/org/jruby/ext/socket/RubyBasicSocket.java (+17/-13)
core/src/main/java/org/jruby/ext/socket/RubySocket.java (+30/-9)
core/src/main/java/org/jruby/ext/socket/RubyTCPServer.java (+1/-1)
core/src/main/java/org/jruby/ext/socket/RubyTCPSocket.java (+87/-21)
core/src/main/java/org/jruby/ext/socket/RubyUDPSocket.java (+9/-4)
core/src/main/java/org/jruby/ext/socket/RubyUNIXSocket.java (+13/-6)
core/src/main/java/org/jruby/ext/socket/Shutdownable.java (+1/-1)
core/src/main/java/org/jruby/ext/socket/SocketUtils.java (+16/-6)
core/src/main/java/org/jruby/ext/socket/SubnetUtils.java (+1/-1)
core/src/main/java/org/jruby/ext/tempfile/Tempfile.java (+8/-4)
core/src/main/java/org/jruby/ext/thread/Queue.java (+19/-0)
core/src/main/java/org/jruby/ext/thread/SizedQueue.java (+1/-1)
core/src/main/java/org/jruby/ext/tracepoint/TracePoint.java (+2/-2)
core/src/main/java/org/jruby/ext/zlib/JZlibDeflate.java (+6/-4)
core/src/main/java/org/jruby/ext/zlib/JZlibInflate.java (+4/-1)
core/src/main/java/org/jruby/ext/zlib/JZlibRubyGzipReader.java (+101/-20)
core/src/main/java/org/jruby/ext/zlib/JZlibRubyGzipWriter.java (+17/-18)
core/src/main/java/org/jruby/ext/zlib/RubyGzipFile.java (+4/-5)
core/src/main/java/org/jruby/ext/zlib/RubyZlib.java (+4/-7)
core/src/main/java/org/jruby/ext/zlib/ZStream.java (+1/-1)
core/src/main/java/org/jruby/internal/runtime/AbstractIRMethod.java (+12/-0)
core/src/main/java/org/jruby/internal/runtime/RubyRunnable.java (+7/-3)
core/src/main/java/org/jruby/internal/runtime/ThreadService.java (+13/-14)
core/src/main/java/org/jruby/internal/runtime/methods/AliasMethod.java (+29/-12)
core/src/main/java/org/jruby/internal/runtime/methods/AttrReaderMethod.java (+1/-0)
core/src/main/java/org/jruby/internal/runtime/methods/AttrWriterMethod.java (+1/-0)
core/src/main/java/org/jruby/internal/runtime/methods/CompiledIRMethod.java (+3/-3)
core/src/main/java/org/jruby/internal/runtime/methods/CompiledIRNoProtocolMethod.java (+3/-3)
core/src/main/java/org/jruby/internal/runtime/methods/DelegatingDynamicMethod.java (+5/-0)
core/src/main/java/org/jruby/internal/runtime/methods/DescriptorInfo.java (+8/-0)
core/src/main/java/org/jruby/internal/runtime/methods/DynamicMethod.java (+27/-0)
core/src/main/java/org/jruby/internal/runtime/methods/HandleMethod.java (+94/-37)
core/src/main/java/org/jruby/internal/runtime/methods/IRMethodArgs.java (+1/-0)
core/src/main/java/org/jruby/internal/runtime/methods/InterpretedIRMethod.java (+3/-5)
core/src/main/java/org/jruby/internal/runtime/methods/InvocationMethodFactory.java (+15/-6)
core/src/main/java/org/jruby/internal/runtime/methods/InvokeDynamicMethodFactory.java (+17/-22)
core/src/main/java/org/jruby/internal/runtime/methods/JavaMethod.java (+5/-4)
core/src/main/java/org/jruby/internal/runtime/methods/MethodMethod.java (+0/-7)
core/src/main/java/org/jruby/internal/runtime/methods/MixedModeIRMethod.java (+4/-5)
core/src/main/java/org/jruby/internal/runtime/methods/NullMethod.java (+1/-1)
core/src/main/java/org/jruby/internal/runtime/methods/ProcMethod.java (+10/-0)
core/src/main/java/org/jruby/internal/runtime/methods/ProfilingDynamicMethod.java (+7/-0)
core/src/main/java/org/jruby/internal/runtime/methods/SynchronizedDynamicMethod.java (+9/-0)
core/src/main/java/org/jruby/ir/IRBuilder.java (+1122/-358)
core/src/main/java/org/jruby/ir/IRClosure.java (+2/-2)
core/src/main/java/org/jruby/ir/IRManager.java (+15/-0)
core/src/main/java/org/jruby/ir/IRMethod.java (+33/-8)
core/src/main/java/org/jruby/ir/IRScope.java (+33/-4)
core/src/main/java/org/jruby/ir/IRVisitor.java (+8/-1)
core/src/main/java/org/jruby/ir/Operation.java (+5/-1)
core/src/main/java/org/jruby/ir/dataflow/analyses/LoadLocalVarPlacementNode.java (+6/-6)
core/src/main/java/org/jruby/ir/instructions/ArgReceiver.java (+11/-0)
core/src/main/java/org/jruby/ir/instructions/ArrayDerefInstr.java (+12/-8)
core/src/main/java/org/jruby/ir/instructions/AsFixnumInstr.java (+37/-0)
core/src/main/java/org/jruby/ir/instructions/AsStringInstr.java (+8/-5)
core/src/main/java/org/jruby/ir/instructions/AttrAssignInstr.java (+18/-13)
core/src/main/java/org/jruby/ir/instructions/BIntInstr.java (+97/-0)
core/src/main/java/org/jruby/ir/instructions/BSwitchInstr.java (+27/-9)
core/src/main/java/org/jruby/ir/instructions/BlockGivenInstr.java (+0/-6)
core/src/main/java/org/jruby/ir/instructions/BuildCompoundArrayInstr.java (+13/-5)
core/src/main/java/org/jruby/ir/instructions/BuildCompoundStringInstr.java (+8/-9)
core/src/main/java/org/jruby/ir/instructions/BuildLambdaInstr.java (+0/-6)
core/src/main/java/org/jruby/ir/instructions/BuildSplatInstr.java (+0/-1)
core/src/main/java/org/jruby/ir/instructions/CallBase.java (+22/-23)
core/src/main/java/org/jruby/ir/instructions/CallInstr.java (+23/-35)
core/src/main/java/org/jruby/ir/instructions/CheckArityInstr.java (+17/-11)
core/src/main/java/org/jruby/ir/instructions/ClassSuperInstr.java (+16/-9)
core/src/main/java/org/jruby/ir/instructions/CopyInstr.java (+0/-6)
core/src/main/java/org/jruby/ir/instructions/DebugOutputInstr.java (+35/-0)
core/src/main/java/org/jruby/ir/instructions/DefineClassInstr.java (+0/-2)
core/src/main/java/org/jruby/ir/instructions/DefineMetaClassInstr.java (+0/-1)
core/src/main/java/org/jruby/ir/instructions/DefineModuleInstr.java (+3/-4)
core/src/main/java/org/jruby/ir/instructions/EQQInstr.java (+8/-2)
core/src/main/java/org/jruby/ir/instructions/GetClassVariableInstr.java (+4/-1)
core/src/main/java/org/jruby/ir/instructions/GetFieldInstr.java (+25/-12)
core/src/main/java/org/jruby/ir/instructions/GetGlobalVariableInstr.java (+0/-6)
core/src/main/java/org/jruby/ir/instructions/GetInstr.java (+0/-1)
core/src/main/java/org/jruby/ir/instructions/InheritanceSearchConstInstr.java (+0/-1)
core/src/main/java/org/jruby/ir/instructions/InstanceSuperInstr.java (+16/-8)
core/src/main/java/org/jruby/ir/instructions/IntegerMathInstr.java (+80/-0)
core/src/main/java/org/jruby/ir/instructions/LexicalSearchConstInstr.java (+0/-1)
core/src/main/java/org/jruby/ir/instructions/LineNumberInstr.java (+1/-1)
core/src/main/java/org/jruby/ir/instructions/LoadLocalVarInstr.java (+4/-6)
core/src/main/java/org/jruby/ir/instructions/MatchInstr.java (+4/-2)
core/src/main/java/org/jruby/ir/instructions/MultipleAsgnBase.java (+7/-0)
core/src/main/java/org/jruby/ir/instructions/NoResultCallInstr.java (+19/-14)
core/src/main/java/org/jruby/ir/instructions/NopInstr.java (+1/-1)
core/src/main/java/org/jruby/ir/instructions/OneOperandResultBaseInstr.java (+7/-0)
core/src/main/java/org/jruby/ir/instructions/OptArgMultipleAsgnInstr.java (+0/-2)
core/src/main/java/org/jruby/ir/instructions/ProcessModuleBodyInstr.java (+6/-19)
core/src/main/java/org/jruby/ir/instructions/ReceiveArgBase.java (+9/-17)
core/src/main/java/org/jruby/ir/instructions/ReceiveIndexedArgBase.java (+27/-0)
core/src/main/java/org/jruby/ir/instructions/ReceiveKeywordArgInstr.java (+11/-6)
core/src/main/java/org/jruby/ir/instructions/ReceiveKeywordRestArgInstr.java (+11/-19)
core/src/main/java/org/jruby/ir/instructions/ReceiveKeywordsInstr.java (+71/-0)
core/src/main/java/org/jruby/ir/instructions/ReceiveOptArgInstr.java (+12/-8)
core/src/main/java/org/jruby/ir/instructions/ReceivePostReqdArgInstr.java (+14/-10)
core/src/main/java/org/jruby/ir/instructions/ReceivePreReqdArgInstr.java (+6/-12)
core/src/main/java/org/jruby/ir/instructions/ReceiveRestArgInstr.java (+13/-9)
core/src/main/java/org/jruby/ir/instructions/ReifyClosureInstr.java (+0/-6)
core/src/main/java/org/jruby/ir/instructions/ReqdArgMultipleAsgnInstr.java (+4/-5)
core/src/main/java/org/jruby/ir/instructions/RestArgMultipleAsgnInstr.java (+3/-5)
core/src/main/java/org/jruby/ir/instructions/RuntimeHelperCall.java (+15/-12)
core/src/main/java/org/jruby/ir/instructions/SearchConstInstr.java (+3/-4)
core/src/main/java/org/jruby/ir/instructions/SearchModuleForConstInstr.java (+0/-1)
core/src/main/java/org/jruby/ir/instructions/SetCapturedVarInstr.java (+0/-1)
core/src/main/java/org/jruby/ir/instructions/ToAryInstr.java (+0/-6)
core/src/main/java/org/jruby/ir/instructions/TraceInstr.java (+19/-6)
core/src/main/java/org/jruby/ir/instructions/UndefMethodInstr.java (+0/-6)
core/src/main/java/org/jruby/ir/instructions/UnresolvedSuperInstr.java (+16/-10)
core/src/main/java/org/jruby/ir/instructions/YieldInstr.java (+14/-4)
core/src/main/java/org/jruby/ir/instructions/ZSuperInstr.java (+13/-7)
core/src/main/java/org/jruby/ir/instructions/specialized/OneArgOperandAttrAssignInstr.java (+8/-5)
core/src/main/java/org/jruby/ir/instructions/specialized/OneFixnumArgNoBlockCallInstr.java (+13/-6)
core/src/main/java/org/jruby/ir/instructions/specialized/OneFloatArgNoBlockCallInstr.java (+13/-6)
core/src/main/java/org/jruby/ir/instructions/specialized/OneOperandArgBlockCallInstr.java (+12/-7)
core/src/main/java/org/jruby/ir/instructions/specialized/OneOperandArgNoBlockCallInstr.java (+17/-10)
core/src/main/java/org/jruby/ir/instructions/specialized/OneOperandArgNoBlockNoResultCallInstr.java (+9/-6)
core/src/main/java/org/jruby/ir/instructions/specialized/TwoOperandArgNoBlockCallInstr.java (+15/-7)
core/src/main/java/org/jruby/ir/instructions/specialized/ZeroOperandArgNoBlockCallInstr.java (+17/-15)
core/src/main/java/org/jruby/ir/interpreter/ExitableInterpreterContext.java (+22/-8)
core/src/main/java/org/jruby/ir/interpreter/ExitableInterpreterEngine.java (+3/-19)
core/src/main/java/org/jruby/ir/interpreter/Interpreter.java (+9/-7)
core/src/main/java/org/jruby/ir/interpreter/InterpreterContext.java (+6/-2)
core/src/main/java/org/jruby/ir/interpreter/InterpreterEngine.java (+23/-17)
core/src/main/java/org/jruby/ir/interpreter/Profiler.java (+2/-1)
core/src/main/java/org/jruby/ir/interpreter/StartupInterpreterEngine.java (+3/-24)
core/src/main/java/org/jruby/ir/operands/Bignum.java (+1/-1)
core/src/main/java/org/jruby/ir/operands/BuiltinClass.java (+56/-6)
core/src/main/java/org/jruby/ir/operands/ClosureLocalVariable.java (+4/-12)
core/src/main/java/org/jruby/ir/operands/Fixnum.java (+1/-1)
core/src/main/java/org/jruby/ir/operands/Hash.java (+21/-21)
core/src/main/java/org/jruby/ir/operands/Integer.java (+67/-0)
core/src/main/java/org/jruby/ir/operands/LocalVariable.java (+5/-15)
core/src/main/java/org/jruby/ir/operands/OperandType.java (+2/-1)
core/src/main/java/org/jruby/ir/operands/Range.java (+82/-0)
core/src/main/java/org/jruby/ir/operands/Self.java (+5/-5)
core/src/main/java/org/jruby/ir/operands/Symbol.java (+6/-0)
core/src/main/java/org/jruby/ir/operands/SymbolProc.java (+1/-1)
core/src/main/java/org/jruby/ir/operands/TemporaryVariable.java (+0/-7)
core/src/main/java/org/jruby/ir/operands/UnboxedFixnum.java (+1/-1)
core/src/main/java/org/jruby/ir/operands/UndefinedValue.java (+82/-170)
core/src/main/java/org/jruby/ir/operands/Variable.java (+1/-2)
core/src/main/java/org/jruby/ir/passes/CompilerPass.java (+2/-2)
core/src/main/java/org/jruby/ir/persistence/IRDumper.java (+6/-7)
core/src/main/java/org/jruby/ir/persistence/IRReaderStream.java (+14/-4)
core/src/main/java/org/jruby/ir/representations/BasicBlock.java (+2/-4)
core/src/main/java/org/jruby/ir/representations/CFG.java (+2/-2)
core/src/main/java/org/jruby/ir/runtime/IRRuntimeHelpers.java (+432/-278)
core/src/main/java/org/jruby/ir/targets/BranchCompiler.java (+6/-0)
core/src/main/java/org/jruby/ir/targets/IRBytecodeAdapter.java (+18/-5)
core/src/main/java/org/jruby/ir/targets/InstanceVariableCompiler.java (+8/-4)
core/src/main/java/org/jruby/ir/targets/InvocationCompiler.java (+50/-27)
core/src/main/java/org/jruby/ir/targets/JVMVisitor.java (+273/-152)
core/src/main/java/org/jruby/ir/targets/LocalVariableCompiler.java (+24/-0)
core/src/main/java/org/jruby/ir/targets/ValueCompiler.java (+41/-0)
core/src/main/java/org/jruby/ir/targets/indy/ArrayBootstrap.java (+48/-0)
core/src/main/java/org/jruby/ir/targets/indy/ArrayDerefInvokeSite.java (+35/-10)
core/src/main/java/org/jruby/ir/targets/indy/AsStringSite.java (+68/-0)
core/src/main/java/org/jruby/ir/targets/indy/Bootstrap.java (+13/-1485)
core/src/main/java/org/jruby/ir/targets/indy/CallInfoBootstrap.java (+37/-0)
core/src/main/java/org/jruby/ir/targets/indy/CallSiteCacheBootstrap.java (+44/-0)
core/src/main/java/org/jruby/ir/targets/indy/CallTraceSite.java (+27/-11)
core/src/main/java/org/jruby/ir/targets/indy/CheckArityBootstrap.java (+76/-0)
core/src/main/java/org/jruby/ir/targets/indy/CheckpointSite.java (+60/-0)
core/src/main/java/org/jruby/ir/targets/indy/ClassSuperInvokeSite.java (+3/-2)
core/src/main/java/org/jruby/ir/targets/indy/ClassSuperIterInvokeSite.java (+3/-2)
core/src/main/java/org/jruby/ir/targets/indy/ConstantLookupSite.java (+8/-6)
core/src/main/java/org/jruby/ir/targets/indy/ConstructBlockBootstrap.java (+104/-0)
core/src/main/java/org/jruby/ir/targets/indy/CoverageSite.java (+44/-0)
core/src/main/java/org/jruby/ir/targets/indy/HashBootstrap.java (+99/-0)
core/src/main/java/org/jruby/ir/targets/indy/HeapVariableBootstrap.java (+84/-0)
core/src/main/java/org/jruby/ir/targets/indy/IndyArgumentsCompiler.java (+1/-1)
core/src/main/java/org/jruby/ir/targets/indy/IndyBlockCompiler.java (+1/-1)
core/src/main/java/org/jruby/ir/targets/indy/IndyBranchCompiler.java (+28/-2)
core/src/main/java/org/jruby/ir/targets/indy/IndyCheckpointCompiler.java (+1/-1)
core/src/main/java/org/jruby/ir/targets/indy/IndyDynamicValueCompiler.java (+2/-2)
core/src/main/java/org/jruby/ir/targets/indy/IndyGlobalVariableCompiler.java (+3/-2)
core/src/main/java/org/jruby/ir/targets/indy/IndyInstanceVariableCompiler.java (+6/-3)
core/src/main/java/org/jruby/ir/targets/indy/IndyInvocationCompiler.java (+44/-22)
core/src/main/java/org/jruby/ir/targets/indy/IndyLocalVariableCompiler.java (+37/-0)
core/src/main/java/org/jruby/ir/targets/indy/IndyValueCompiler.java (+36/-9)
core/src/main/java/org/jruby/ir/targets/indy/InstanceSuperInvokeSite.java (+3/-2)
core/src/main/java/org/jruby/ir/targets/indy/InstanceSuperIterInvokeSite.java (+3/-2)
core/src/main/java/org/jruby/ir/targets/indy/InvokeSite.java (+750/-82)
core/src/main/java/org/jruby/ir/targets/indy/IsNilSite.java (+60/-0)
core/src/main/java/org/jruby/ir/targets/indy/IsTrueSite.java (+64/-0)
core/src/main/java/org/jruby/ir/targets/indy/JavaBootstrap.java (+292/-0)
core/src/main/java/org/jruby/ir/targets/indy/LiteralValueBootstrap.java (+175/-0)
core/src/main/java/org/jruby/ir/targets/indy/MetaClassBootstrap.java (+57/-0)
core/src/main/java/org/jruby/ir/targets/indy/RangeObjectSite.java (+39/-0)
core/src/main/java/org/jruby/ir/targets/indy/RegexpObjectSite.java (+1/-1)
core/src/main/java/org/jruby/ir/targets/indy/ResolvedSuperInvokeSite.java (+5/-5)
core/src/main/java/org/jruby/ir/targets/indy/SelfInvokeSite.java (+7/-14)
core/src/main/java/org/jruby/ir/targets/indy/StringBootstrap.java (+142/-0)
core/src/main/java/org/jruby/ir/targets/indy/SuperInvokeSite.java (+11/-11)
core/src/main/java/org/jruby/ir/targets/indy/UnresolvedSuperInvokeSite.java (+3/-2)
core/src/main/java/org/jruby/ir/targets/indy/UnresolvedSuperIterInvokeSite.java (+3/-2)
core/src/main/java/org/jruby/ir/targets/indy/ZSuperInvokeSite.java (+3/-2)
core/src/main/java/org/jruby/ir/targets/simple/NormalBranchCompiler.java (+33/-0)
core/src/main/java/org/jruby/ir/targets/simple/NormalInstanceVariableCompiler.java (+16/-11)
core/src/main/java/org/jruby/ir/targets/simple/NormalInvocationCompiler.java (+178/-69)
core/src/main/java/org/jruby/ir/targets/simple/NormalInvokeSite.java (+7/-14)
core/src/main/java/org/jruby/ir/targets/simple/NormalLocalVariableCompiler.java (+56/-0)
core/src/main/java/org/jruby/ir/targets/simple/NormalValueCompiler.java (+40/-4)
core/src/main/java/org/jruby/ir/transformations/inlining/CFGInliner.java (+1/-1)
core/src/main/java/org/jruby/java/addons/ArrayJavaAddons.java (+29/-17)
core/src/main/java/org/jruby/java/addons/ClassJavaAddons.java (+6/-3)
core/src/main/java/org/jruby/java/codegen/RealClassGenerator.java (+3/-3)
core/src/main/java/org/jruby/java/dispatch/CallableSelector.java (+2/-2)
core/src/main/java/org/jruby/java/invokers/ConstructorInvoker.java (+1/-2)
core/src/main/java/org/jruby/java/proxies/ArrayJavaProxy.java (+34/-18)
core/src/main/java/org/jruby/java/proxies/ArrayJavaProxyCreator.java (+1/-2)
core/src/main/java/org/jruby/java/proxies/ConcreteJavaProxy.java (+68/-59)
core/src/main/java/org/jruby/java/proxies/InterfaceJavaProxy.java (+0/-1)
core/src/main/java/org/jruby/java/proxies/JavaInterfaceTemplate.java (+8/-10)
core/src/main/java/org/jruby/java/proxies/JavaProxy.java (+61/-30)
core/src/main/java/org/jruby/java/proxies/MapJavaProxy.java (+20/-12)
core/src/main/java/org/jruby/java/util/ArrayUtils.java (+2/-3)
core/src/main/java/org/jruby/java/util/ClassUtils.java (+198/-0)
core/src/main/java/org/jruby/javasupport/Java.java (+52/-69)
core/src/main/java/org/jruby/javasupport/JavaArray.java (+8/-13)
core/src/main/java/org/jruby/javasupport/JavaArrayUtilities.java (+0/-6)
core/src/main/java/org/jruby/javasupport/JavaCallable.java (+9/-69)
core/src/main/java/org/jruby/javasupport/JavaClass.java (+42/-748)
core/src/main/java/org/jruby/javasupport/JavaConstructor.java (+14/-120)
core/src/main/java/org/jruby/javasupport/JavaEmbedUtils.java (+25/-17)
core/src/main/java/org/jruby/javasupport/JavaField.java (+1/-18)
core/src/main/java/org/jruby/javasupport/JavaMethod.java (+7/-168)
core/src/main/java/org/jruby/javasupport/JavaObject.java (+16/-46)
core/src/main/java/org/jruby/javasupport/JavaPackage.java (+11/-5)
core/src/main/java/org/jruby/javasupport/JavaProxyMethods.java (+72/-29)
core/src/main/java/org/jruby/javasupport/JavaSupport.java (+222/-131)
core/src/main/java/org/jruby/javasupport/JavaSupportImpl.java (+77/-232)
core/src/main/java/org/jruby/javasupport/JavaUtil.java (+71/-13)
core/src/main/java/org/jruby/javasupport/binding/MethodGatherer.java (+10/-9)
core/src/main/java/org/jruby/javasupport/binding/MethodInstaller.java (+1/-1)
core/src/main/java/org/jruby/javasupport/ext/JavaExtensions.java (+1/-1)
core/src/main/java/org/jruby/javasupport/ext/JavaLang.java (+37/-22)
core/src/main/java/org/jruby/javasupport/ext/JavaLangReflect.java (+3/-3)
core/src/main/java/org/jruby/javasupport/ext/JavaUtil.java (+3/-2)
core/src/main/java/org/jruby/javasupport/ext/JavaUtilRegex.java (+1/-1)
core/src/main/java/org/jruby/javasupport/ext/Module.java (+2/-2)
core/src/main/java/org/jruby/javasupport/proxy/JavaProxyClass.java (+19/-19)
core/src/main/java/org/jruby/javasupport/proxy/JavaProxyConstructor.java (+20/-24)
core/src/main/java/org/jruby/javasupport/proxy/JavaProxyReflectionObject.java (+2/-6)
core/src/main/java/org/jruby/javasupport/util/JavaClassConfiguration.java (+3/-3)
core/src/main/java/org/jruby/lexer/JavaSignatureLexer.java (+3/-3)
core/src/main/java/org/jruby/lexer/LexingCommon.java (+297/-15)
core/src/main/java/org/jruby/lexer/StrptimeLexer.java (+4/-4)
core/src/main/java/org/jruby/lexer/yacc/HeredocTerm.java (+1/-2)
core/src/main/java/org/jruby/lexer/yacc/LexContext.java (+37/-0)
core/src/main/java/org/jruby/lexer/yacc/RubyLexer.java (+381/-573)
core/src/main/java/org/jruby/lexer/yacc/ShareableConstantValue.java (+8/-0)
core/src/main/java/org/jruby/lexer/yacc/StringTerm.java (+17/-20)
core/src/main/java/org/jruby/parser/JavaSignatureParser.java (+4/-4)
core/src/main/java/org/jruby/parser/Parser.java (+0/-9)
core/src/main/java/org/jruby/parser/ParserConfiguration.java (+22/-17)
core/src/main/java/org/jruby/parser/ParserState.java (+2/-4)
core/src/main/java/org/jruby/parser/ProductionState.java (+9/-2)
core/src/main/java/org/jruby/parser/RubyParser.java (+4423/-2201)
core/src/main/java/org/jruby/parser/RubyParser.y (+3267/-1250)
core/src/main/java/org/jruby/parser/RubyParserBase.java (+762/-107)
core/src/main/java/org/jruby/parser/ScopedParserState.java (+6/-4)
core/src/main/java/org/jruby/parser/StaticScope.java (+12/-0)
core/src/main/java/org/jruby/parser/YyTables.java (+6131/-4691)
core/src/main/java/org/jruby/parser/signature_skeleton.parser (+5/-5)
core/src/main/java/org/jruby/parser/skeleton.parser (+11/-7)
core/src/main/java/org/jruby/platform/Platform.java (+2/-31)
core/src/main/java/org/jruby/runtime/ArgumentDescriptor.java (+31/-0)
core/src/main/java/org/jruby/runtime/Arity.java (+5/-0)
core/src/main/java/org/jruby/runtime/Binding.java (+13/-12)
core/src/main/java/org/jruby/runtime/Block.java (+15/-1)
core/src/main/java/org/jruby/runtime/BlockBody.java (+7/-0)
core/src/main/java/org/jruby/runtime/CallSite.java (+32/-6)
core/src/main/java/org/jruby/runtime/ClassIndex.java (+1/-0)
core/src/main/java/org/jruby/runtime/CompiledIRBlockBody.java (+1/-1)
core/src/main/java/org/jruby/runtime/DynamicScope.java (+1/-1)
core/src/main/java/org/jruby/runtime/EventHook.java (+2/-3)
core/src/main/java/org/jruby/runtime/Frame.java (+3/-6)
core/src/main/java/org/jruby/runtime/Helpers.java (+180/-88)
core/src/main/java/org/jruby/runtime/IRBlockBody.java (+14/-9)
core/src/main/java/org/jruby/runtime/InterpretedIRBlockBody.java (+1/-1)
core/src/main/java/org/jruby/runtime/JavaSites.java (+25/-1)
core/src/main/java/org/jruby/runtime/MethodIndex.java (+4/-1)
core/src/main/java/org/jruby/runtime/MixedModeIRBlockBody.java (+1/-1)
core/src/main/java/org/jruby/runtime/ObjectSpace.java (+3/-0)
core/src/main/java/org/jruby/runtime/RubyEvent.java (+3/-3)
core/src/main/java/org/jruby/runtime/Signature.java (+6/-0)
core/src/main/java/org/jruby/runtime/ThreadContext.java (+111/-26)
core/src/main/java/org/jruby/runtime/TraceEventManager.java (+278/-0)
core/src/main/java/org/jruby/runtime/backtrace/TraceType.java (+31/-7)
core/src/main/java/org/jruby/runtime/builtin/IRubyObject.java (+20/-23)
core/src/main/java/org/jruby/runtime/callsite/ArefCallSite.java (+1/-1)
core/src/main/java/org/jruby/runtime/callsite/BimorphicCallSite.java (+1/-1)
core/src/main/java/org/jruby/runtime/callsite/CachingCallSite.java (+170/-143)
core/src/main/java/org/jruby/runtime/callsite/NotEqCallSite.java (+113/-0)
core/src/main/java/org/jruby/runtime/callsite/ProfilingCachingCallSite.java (+10/-130)
core/src/main/java/org/jruby/runtime/callsite/RefinedCachingCallSite.java (+11/-10)
core/src/main/java/org/jruby/runtime/callsite/RespondToCallSite.java (+32/-28)
core/src/main/java/org/jruby/runtime/encoding/EncodingService.java (+8/-6)
core/src/main/java/org/jruby/runtime/invokedynamic/GlobalSite.java (+104/-5)
core/src/main/java/org/jruby/runtime/invokedynamic/JRubyCallSite.java (+9/-0)
core/src/main/java/org/jruby/runtime/invokedynamic/MathLinker.java (+22/-5)
core/src/main/java/org/jruby/runtime/invokedynamic/VariableSite.java (+11/-4)
core/src/main/java/org/jruby/runtime/ivars/FieldVariableAccessor.java (+19/-0)
core/src/main/java/org/jruby/runtime/ivars/VariableAccessor.java (+23/-0)
core/src/main/java/org/jruby/runtime/ivars/VariableTableManager.java (+5/-4)
core/src/main/java/org/jruby/runtime/load/LibrarySearcher.java (+4/-16)
core/src/main/java/org/jruby/runtime/load/LoadService.java (+87/-745)
core/src/main/java/org/jruby/runtime/marshal/MarshalCommon.java (+33/-0)
core/src/main/java/org/jruby/runtime/marshal/MarshalStream.java (+6/-14)
core/src/main/java/org/jruby/runtime/marshal/UnmarshalCache.java (+48/-22)
core/src/main/java/org/jruby/runtime/marshal/UnmarshalStream.java (+487/-219)
core/src/main/java/org/jruby/runtime/opto/ConstantCache.java (+2/-1)
core/src/main/java/org/jruby/runtime/profile/package-info.java (+2/-2)
core/src/main/java/org/jruby/specialized/RubyArrayOneObject.java (+0/-4)
core/src/main/java/org/jruby/specialized/RubyArraySpecialized.java (+1/-1)
core/src/main/java/org/jruby/specialized/RubyArrayTwoObject.java (+0/-5)
core/src/main/java/org/jruby/util/ByteList.java (+1/-1)
core/src/main/java/org/jruby/util/CommonByteLists.java (+13/-1)
core/src/main/java/org/jruby/util/Dir.java (+53/-18)
core/src/main/java/org/jruby/util/IdUtil.java (+1/-1)
core/src/main/java/org/jruby/util/JRubyClassLoader.java (+4/-3)
core/src/main/java/org/jruby/util/JRubyFile.java (+10/-0)
core/src/main/java/org/jruby/util/KCode.java (+2/-1)
core/src/main/java/org/jruby/util/Numeric.java (+3/-4)
core/src/main/java/org/jruby/util/OSEnvironment.java (+6/-16)
core/src/main/java/org/jruby/util/OneShotClassLoader.java (+1/-1)
core/src/main/java/org/jruby/util/Pack.java (+225/-178)
core/src/main/java/org/jruby/util/Random.java (+12/-3)
core/src/main/java/org/jruby/util/RecursiveComparator.java (+7/-1)
core/src/main/java/org/jruby/util/ReferenceReaper.java (+1/-1)
core/src/main/java/org/jruby/util/RegexpSupport.java (+21/-9)
core/src/main/java/org/jruby/util/ResourceException.java (+1/-1)
core/src/main/java/org/jruby/util/RubyDateFormatter.java (+14/-9)
core/src/main/java/org/jruby/util/RubyDateParser.java (+2/-4)
core/src/main/java/org/jruby/util/RubyStringBuilder.java (+13/-0)
core/src/main/java/org/jruby/util/RubyTimeOutputFormatter.java (+1/-1)
core/src/main/java/org/jruby/util/SafeDecimalParser.java (+1/-2)
core/src/main/java/org/jruby/util/ShellLauncher.java (+1/-1)
core/src/main/java/org/jruby/util/SipHashInline.java (+18/-18)
core/src/main/java/org/jruby/util/Sprintf.java (+20/-20)
core/src/main/java/org/jruby/util/StringSupport.java (+114/-23)
core/src/main/java/org/jruby/util/StrptimeFormat.java (+1/-1)
core/src/main/java/org/jruby/util/StrptimeToken.java (+1/-1)
core/src/main/java/org/jruby/util/TypeConverter.java (+57/-36)
core/src/main/java/org/jruby/util/cli/ArgumentProcessor.java (+96/-24)
core/src/main/java/org/jruby/util/cli/Category.java (+3/-2)
core/src/main/java/org/jruby/util/cli/Options.java (+9/-2)
core/src/main/java/org/jruby/util/cli/OutputStrings.java (+152/-80)
core/src/main/java/org/jruby/util/collections/ConcurrentWeakHashMap.java (+51/-51)
core/src/main/java/org/jruby/util/collections/DoubleObject.java (+16/-0)
core/src/main/java/org/jruby/util/collections/NonBlockingHashMapLong.java (+39/-35)
core/src/main/java/org/jruby/util/collections/SingleBoolean.java (+14/-0)
core/src/main/java/org/jruby/util/collections/SingleDouble.java (+14/-0)
core/src/main/java/org/jruby/util/collections/SingleInt.java (+14/-0)
core/src/main/java/org/jruby/util/collections/SingleLong.java (+14/-0)
core/src/main/java/org/jruby/util/collections/SingleObject.java (+14/-0)
core/src/main/java/org/jruby/util/func/ObjectObjectIntFunction.java (+5/-0)
core/src/main/java/org/jruby/util/io/EncodingUtils.java (+18/-13)
core/src/main/java/org/jruby/util/io/FilenoUtil.java (+10/-7)
core/src/main/java/org/jruby/util/io/Getline.java (+15/-0)
core/src/main/java/org/jruby/util/io/OpenFile.java (+226/-34)
core/src/main/java/org/jruby/util/io/PopenExecutor.java (+21/-8)
core/src/main/java/org/jruby/util/io/PosixShim.java (+71/-42)
core/src/main/java/org/jruby/util/io/SelectExecutor.java (+4/-4)
core/src/main/java/org/jruby/util/io/SelectorPool.java (+35/-26)
core/src/main/java/org/jruby/util/log/StandardErrorLogger.java (+1/-1)
core/src/main/resources/org/jruby/runtime/Constants.java (+4/-13)
core/src/main/ruby/jruby/bigdecimal.rb (+5/-3)
core/src/main/ruby/jruby/java/core_ext/object.rb (+0/-13)
core/src/main/ruby/jruby/kernel.rb (+1/-0)
core/src/main/ruby/jruby/kernel/enumerator.rb (+30/-3)
core/src/main/ruby/jruby/kernel/gc.rb (+4/-2)
core/src/main/ruby/jruby/kernel/kernel.rb (+1/-1)
core/src/main/ruby/jruby/kernel/prelude.rb (+1/-7)
core/src/main/ruby/jruby/kernel/proc.rb (+16/-7)
core/src/main/ruby/jruby/kernel/signal.rb (+4/-3)
core/src/main/ruby/jruby/kernel/thread.rb (+7/-0)
core/src/test/java/org/jruby/embed/ReaderInputStreamTest.java (+1/-1)
core/src/test/java/org/jruby/embed/ScriptingContainerTest.java (+41/-39)
core/src/test/java/org/jruby/javasupport/JavaEmbedUtilsTest.java (+93/-1)
core/src/test/java/org/jruby/javasupport/TestJava.java (+24/-27)
core/src/test/java/org/jruby/runtime/EventHookTest.java (+1/-1)
core/src/test/java/org/jruby/runtime/load/TestLoadService.java (+11/-2)
core/src/test/java/org/jruby/test/TestCommandlineParser.java (+0/-1)
core/src/test/java/org/jruby/test/TestMethodFactories.java (+43/-0)
core/src/test/java/org/jruby/test/TestRuby.java (+1/-1)
core/src/test/java/org/jruby/test/TestRubyObject.java (+0/-6)
core/src/test/java/org/jruby/util/TestIOChannel.java (+0/-2)
debian/README.source (+9/-23)
debian/changelog (+90/-0)
debian/control (+33/-18)
debian/copyright (+27/-17)
debian/gbp.conf (+5/-0)
debian/jruby.classpath (+1/-1)
debian/jruby.dirs (+1/-0)
debian/jruby.install (+0/-1)
debian/jruby.links (+13/-9)
debian/jruby.lintian-overrides.in (+2/-1)
debian/maven.ignoreRules (+1/-4)
debian/maven.rules (+1/-0)
debian/patches/0001-patch-ruby-poms.patch (+284/-0)
debian/patches/0002-disable-buildnumber-maven-plugin.patch (+26/-0)
debian/patches/0003-disable-checksum-maven-plugin.patch (+65/-0)
debian/patches/0004-disable-truezip-plugin.patch (+27/-0)
debian/patches/0005-disable-jnr-ffi-native-usage.patch (+33/-0)
debian/patches/0007-omit-bundled-gems.patch (+26/-0)
debian/patches/0011-Fix-testRevision-testcase.patch (+3/-3)
debian/patches/0012-Fix-test-failures-related-to-Module-PTY.patch (+6/-7)
debian/patches/0013-Work-around-JarResourceTest-failure.patch (+29/-0)
debian/patches/Update-to-use-non-expired-certificates.patch (+239/-0)
debian/patches/gems/io-console-architectures.patch (+16/-0)
debian/patches/gems/load-java-libraries-from-usj.patch (+29/-0)
debian/patches/gems/series (+2/-0)
debian/patches/series (+14/-0)
debian/rubygems-download.sh (+57/-0)
debian/rules (+63/-88)
debian/salsa-ci.yml (+15/-0)
debian/source/lintian-overrides (+4/-2)
debian/tests/common.sh (+53/-11)
debian/tests/control (+22/-1)
debian/tests/jgem (+5/-0)
debian/tests/jirb.exp (+6/-4)
debian/tests/jruby (+19/-9)
debian/tests/mri-core (+29/-16)
debian/tests/mri-stdlib (+31/-22)
debian/tests/smoke (+2/-0)
debian/tests/spec-ffi (+3/-3)
debian/tests/spec-ruby (+26/-30)
default.build.properties (+3/-4)
dev/null (+0/-55)
install/jruby.install4j (+2/-0)
lib/pom.rb (+151/-63)
lib/pom.xml (+795/-171)
lib/ruby/stdlib/date.rb (+24/-20)
lib/ruby/stdlib/fiddle.rb (+28/-5)
lib/ruby/stdlib/fiddle/cparser.rb (+94/-27)
lib/ruby/stdlib/fiddle/function.rb (+11/-0)
lib/ruby/stdlib/fiddle/import.rb (+3/-5)
lib/ruby/stdlib/fiddle/struct.rb (+338/-43)
lib/ruby/stdlib/fiddle/types.rb (+18/-17)
lib/ruby/stdlib/fiddle/version.rb (+3/-0)
lib/ruby/stdlib/jruby/open3_windows.rb (+9/-0)
lib/ruby/stdlib/monitor.rb (+1/-1)
lib/ruby/stdlib/net/imap.rb (+14/-11)
lib/ruby/stdlib/net/net-ftp.gemspec (+36/-0)
lib/ruby/stdlib/net/net-imap.gemspec (+37/-0)
lib/ruby/stdlib/net/net-pop.gemspec (+34/-0)
lib/ruby/stdlib/net/net-protocol.gemspec (+36/-0)
lib/ruby/stdlib/net/net-smtp.gemspec (+35/-0)
lib/ruby/stdlib/objspace.rb (+3/-1)
lib/ruby/stdlib/pathname.rb (+26/-13)
lib/ruby/stdlib/pty.rb (+16/-31)
lib/ruby/stdlib/rbconfig/sizeof.rb (+7/-0)
lib/ruby/stdlib/resolv.rb (+46/-17)
lib/ruby/stdlib/ripper/core.rb (+2/-0)
lib/ruby/stdlib/ripper/lexer.rb (+162/-46)
lib/ruby/stdlib/ripper/sexp.rb (+34/-5)
lib/ruby/stdlib/rubygems/defaults/jruby.rb (+9/-7)
lib/ruby/stdlib/socket.rb (+5/-4)
lib/ruby/stdlib/syslog.rb (+131/-0)
lib/ruby/stdlib/syslog/logger.rb (+2/-2)
lib/ruby/stdlib/tempfile.rb (+2/-2)
lib/ruby/stdlib/tmpdir.rb (+37/-27)
lib/ruby/stdlib/unicode_normalize/tables.rb (+36/-0)
lib/ruby/stdlib/win32/resolv.rb (+0/-13)
lib/ruby/stdlib/win32/sspi.rb (+317/-310)
lifecycle-mapping-metadata.xml (+4/-4)
maven/jruby-complete/pom.rb (+1/-1)
maven/jruby-complete/src/it/GH-3095-gem-install-with-forked-jruby/pom.xml (+2/-2)
maven/jruby-complete/src/it/extended/Mavenfile (+1/-1)
maven/jruby-complete/src/it/runnable/Mavenfile (+3/-3)
maven/jruby-complete/src/templates/osgi_many_bundles_with_embedded_gems/gems-bundle/pom.rb (+2/-2)
maven/jruby-complete/src/templates/osgi_many_bundles_with_embedded_gems/pom.rb (+1/-1)
maven/jruby-jars/Mavenfile (+1/-1)
maven/jruby-jars/jruby-jars.gemspec (+1/-1)
maven/jruby-jars/src/it/integrity/pom.xml (+2/-5)
maven/jruby/src/it/j2ee_jetty/pom.rb (+2/-2)
maven/jruby/src/it/j2ee_jetty_rack/Mavenfile (+2/-2)
maven/jruby/src/it/j2ee_tomcat/pom.rb (+2/-2)
maven/jruby/src/it/j2ee_tomcat_rack/Mavenfile (+2/-2)
maven/jruby/src/it/j2ee_wildfly/pom.rb (+2/-2)
maven/jruby/src/it/jetty/Mavenfile (+2/-2)
maven/jruby/src/it/many_jars_with_embedded_gems/app/pom.rb (+1/-1)
maven/jruby/src/it/many_jars_with_embedded_gems/pom.rb (+1/-1)
maven/jruby/src/it/many_jars_with_embedded_gems/zip_gem/pom.rb (+1/-1)
maven/jruby/src/it/many_jars_with_embedded_gems_ng/gem1/pom.rb (+1/-1)
maven/jruby/src/it/many_jars_with_embedded_gems_ng/gem2/Gemfile (+1/-1)
maven/jruby/src/it/many_jars_with_embedded_gems_ng/gem2/pom.rb (+1/-1)
maven/jruby/src/it/many_jars_with_embedded_gems_ng/pom.rb (+1/-1)
maven/jruby/src/it/terminate-container-and-extensions-GH-3300/pom.xml (+4/-7)
maven/jruby/src/it/tomcat/pom.rb (+2/-2)
maven/jruby/src/templates/hellowarld/Mavenfile (+2/-2)
maven/jruby/src/templates/j2ee_wlp/pom.rb (+2/-2)
maven/jruby/src/templates/osgi_all_inclusive/pom.rb (+2/-2)
mvnw (+179/-109)
mvnw.cmd (+205/-145)
pom.rb (+5/-5)
pom.xml (+6/-6)
rakelib/commands.rake (+5/-1)
rakelib/rubyspec.rake (+13/-1)
rakelib/test.rake (+14/-3)
samples/ffi/pty.rb (+2/-2)
shaded/pom.xml (+1/-1)
spec/compiler/general_spec.rb (+137/-42)
spec/ffi/fixtures/GNUmakefile (+3/-1)
spec/ffi/fixtures/compile.rb (+2/-0)
spec/ffi/function_spec.rb (+0/-4)
spec/java_integration/addons/net_spec.rb (+1/-1)
spec/java_integration/extensions/collection_spec.rb (+10/-8)
spec/java_integration/extensions/list_spec.rb (+8/-25)
spec/java_integration/extensions/thread_spec.rb (+29/-0)
spec/java_integration/fixtures/CoreTypeMethods.java (+40/-0)
spec/java_integration/fixtures/MethodNames.java (+4/-0)
spec/java_integration/fixtures/UsesSingleMethodInterface.java (+4/-0)
spec/java_integration/interfaces/implementation_spec.rb (+1/-1)
spec/java_integration/methods/dispatch_spec.rb (+15/-0)
spec/java_integration/methods/java_alias_spec.rb (+21/-0)
spec/java_integration/methods/naming_spec.rb (+4/-0)
spec/java_integration/methods/reflecting_spec.rb (+3/-3)
spec/java_integration/reify/become_java_spec.rb (+11/-2)
spec/java_integration/types/array_spec.rb (+4/-3)
spec/java_integration/types/construction_spec.rb (+1/-2)
spec/java_integration/types/map_spec.rb (+2/-15)
spec/java_integration/types/wrapping_spec.rb (+5/-3)
spec/jruby.mspec (+6/-3)
spec/jruby/core/dir/glob_spec.rb (+13/-2)
spec/jruby/core/file/absolute_path_spec.rb (+109/-0)
spec/jruby/core/kernel/require_spec.rb (+18/-2)
spec/jruby/core/module/define_method_spec.rb (+17/-16)
spec/jruby/language/return_spec.rb (+2/-4)
spec/jruby/library/pathname/absolute_spec.rb (+69/-0)
spec/jruby/library/pathname/root_spec.rb (+66/-0)
spec/mspec/bin/mspec (+1/-1)
spec/mspec/lib/mspec/commands/mkspec.rb (+3/-13)
spec/mspec/lib/mspec/commands/mspec.rb (+4/-7)
spec/mspec/lib/mspec/expectations/expectations.rb (+4/-0)
spec/mspec/lib/mspec/guards/platform.rb (+4/-0)
spec/mspec/lib/mspec/guards/superuser.rb (+10/-0)
spec/mspec/lib/mspec/guards/version.rb (+28/-0)
spec/mspec/lib/mspec/helpers/datetime.rb (+1/-0)
spec/mspec/lib/mspec/helpers/io.rb (+2/-2)
spec/mspec/lib/mspec/helpers/numeric.rb (+3/-1)
spec/mspec/lib/mspec/helpers/ruby_exe.rb (+37/-10)
spec/mspec/lib/mspec/matchers/base.rb (+24/-6)
spec/mspec/lib/mspec/matchers/complain.rb (+0/-2)
spec/mspec/lib/mspec/matchers/output.rb (+4/-4)
spec/mspec/lib/mspec/matchers/raise_error.rb (+4/-2)
spec/mspec/lib/mspec/runner/actions/leakchecker.rb (+2/-1)
spec/mspec/lib/mspec/runner/actions/timeout.rb (+71/-2)
spec/mspec/lib/mspec/runner/context.rb (+1/-0)
spec/mspec/lib/mspec/runner/exception.rb (+1/-1)
spec/mspec/lib/mspec/runner/formatters/base.rb (+21/-5)
spec/mspec/lib/mspec/runner/mspec.rb (+8/-3)
spec/mspec/lib/mspec/runner/shared.rb (+6/-2)
spec/mspec/lib/mspec/utils/name_map.rb (+6/-1)
spec/mspec/lib/mspec/utils/options.rb (+15/-2)
spec/mspec/lib/mspec/utils/script.rb (+14/-2)
spec/mspec/lib/mspec/utils/warnings.rb (+0/-43)
spec/mspec/spec/commands/mkspec_spec.rb (+1/-1)
spec/mspec/spec/commands/mspec_spec.rb (+0/-27)
spec/mspec/spec/helpers/numeric_spec.rb (+8/-2)
spec/mspec/spec/helpers/ruby_exe_spec.rb (+11/-11)
spec/mspec/spec/runner/context_spec.rb (+1/-1)
spec/mspec/spec/utils/script_spec.rb (+0/-5)
spec/mspec/tool/check_require_spec_helper.rb (+34/-0)
spec/mspec/tool/remove_old_guards.rb (+58/-5)
spec/mspec/tool/sync/sync-rubyspec.rb (+1/-1)
spec/mspec/tool/tag_from_output.rb (+22/-4)
spec/regression/GH-1460_pathname_ivar_spec.rb (+1/-1)
spec/regression/GH-1578_bigdecimal_to_i_with_no_args_spec.rb (+4/-4)
spec/regression/GH-1633_bigdecimal_operations_with_nil_spec.rb (+3/-3)
spec/regression/GH-1695_bigdecimal_and_rational_multiplication_rounds_the_rational_number_spec.rb (+3/-3)
spec/regression/GH-2524_bigdecimal_loss_of_precision_with_different_excution_order_spec.rb (+3/-3)
spec/regression/GH-2868_big_decimal_can_not_be_copied_spec.rb (+1/-1)
spec/regression/GH-7529_enumerator_inspect_has_ascii_encoding_spec.rb (+36/-0)
spec/regression/JRUBY-4463_bigdecimal_marshal_roundtrip_spec.rb (+2/-2)
spec/regression/JRUBY-5122_nonblocking_io_spec.rb (+3/-3)
spec/ruby/.mspec.constants (+4/-0)
spec/ruby/.rubocop.yml (+57/-2)
spec/ruby/.rubocop_todo.yml (+1/-11)
spec/ruby/CONTRIBUTING.md (+20/-16)
spec/ruby/README.md (+18/-10)
spec/ruby/command_line/backtrace_limit_spec.rb (+23/-25)
spec/ruby/command_line/dash_a_spec.rb (+2/-2)
spec/ruby/command_line/dash_l_spec.rb (+4/-4)
spec/ruby/command_line/dash_n_spec.rb (+4/-4)
spec/ruby/command_line/dash_p_spec.rb (+2/-2)
spec/ruby/command_line/dash_upper_f_spec.rb (+1/-1)
spec/ruby/command_line/dash_upper_u_spec.rb (+7/-0)
spec/ruby/command_line/dash_upper_w_spec.rb (+17/-25)
spec/ruby/command_line/dash_v_spec.rb (+2/-1)
spec/ruby/command_line/dash_w_spec.rb (+4/-0)
spec/ruby/command_line/feature_spec.rb (+3/-1)
spec/ruby/command_line/fixtures/backtrace.rb (+1/-1)
spec/ruby/command_line/fixtures/bin/embedded_ruby.txt (+1/-1)
spec/ruby/command_line/fixtures/freeze_flag_two_literals.rb (+1/-1)
spec/ruby/command_line/rubyopt_spec.rb (+21/-23)
spec/ruby/core/argf/readpartial_spec.rb (+1/-1)
spec/ruby/core/array/all_spec.rb (+13/-0)
spec/ruby/core/array/any_spec.rb (+12/-0)
spec/ruby/core/array/assoc_spec.rb (+1/-1)
spec/ruby/core/array/bsearch_index_spec.rb (+0/-4)
spec/ruby/core/array/clear_spec.rb (+0/-20)
spec/ruby/core/array/compact_spec.rb (+0/-30)
spec/ruby/core/array/concat_spec.rb (+0/-58)
spec/ruby/core/array/count_spec.rb (+11/-0)
spec/ruby/core/array/deconstruct_spec.rb (+4/-6)
spec/ruby/core/array/delete_at_spec.rb (+0/-22)
spec/ruby/core/array/delete_if_spec.rb (+25/-11)
spec/ruby/core/array/delete_spec.rb (+0/-22)
spec/ruby/core/array/drop_spec.rb (+2/-10)
spec/ruby/core/array/drop_while_spec.rb (+6/-10)
spec/ruby/core/array/each_index_spec.rb (+17/-1)
spec/ruby/core/array/each_spec.rb (+37/-3)
spec/ruby/core/array/element_set_spec.rb (+37/-39)
spec/ruby/core/array/fill_spec.rb (+69/-27)
spec/ruby/core/array/fixtures/classes.rb (+72/-0)
spec/ruby/core/array/flatten_spec.rb (+6/-28)
spec/ruby/core/array/initialize_spec.rb (+3/-1)
spec/ruby/core/array/intersect_spec.rb (+51/-2)
spec/ruby/core/array/intersection_spec.rb (+7/-9)
spec/ruby/core/array/keep_if_spec.rb (+1/-0)
spec/ruby/core/array/multiply_spec.rb (+4/-54)
spec/ruby/core/array/new_spec.rb (+3/-1)
spec/ruby/core/array/none_spec.rb (+13/-0)
spec/ruby/core/array/one_spec.rb (+13/-0)
spec/ruby/core/array/pack/a_spec.rb (+11/-0)
spec/ruby/core/array/pack/b_spec.rb (+6/-1)
spec/ruby/core/array/pack/c_spec.rb (+14/-2)
spec/ruby/core/array/pack/h_spec.rb (+5/-0)
spec/ruby/core/array/pack/m_spec.rb (+9/-1)
spec/ruby/core/array/pack/p_spec.rb (+0/-24)
spec/ruby/core/array/pack/shared/basic.rb (+40/-12)
spec/ruby/core/array/pack/shared/float.rb (+74/-8)
spec/ruby/core/array/pack/shared/integer.rb (+90/-18)
spec/ruby/core/array/pack/shared/numeric_basic.rb (+8/-2)
spec/ruby/core/array/pack/shared/taint.rb (+0/-33)
spec/ruby/core/array/pack/shared/unicode.rb (+14/-2)
spec/ruby/core/array/pack/u_spec.rb (+10/-0)
spec/ruby/core/array/pack/w_spec.rb (+14/-2)
spec/ruby/core/array/pack/x_spec.rb (+1/-0)
spec/ruby/core/array/pack/z_spec.rb (+10/-0)
spec/ruby/core/array/plus_spec.rb (+17/-20)
spec/ruby/core/array/pop_spec.rb (+0/-52)
spec/ruby/core/array/product_spec.rb (+5/-0)
spec/ruby/core/array/reject_spec.rb (+15/-0)
spec/ruby/core/array/reverse_each_spec.rb (+15/-1)
spec/ruby/core/array/rindex_spec.rb (+16/-1)
spec/ruby/core/array/sample_spec.rb (+20/-10)
spec/ruby/core/array/shared/clone.rb (+0/-24)
spec/ruby/core/array/shared/collect.rb (+32/-31)
spec/ruby/core/array/shared/index.rb (+4/-0)
spec/ruby/core/array/shared/inspect.rb (+0/-26)
spec/ruby/core/array/shared/intersection.rb (+2/-1)
spec/ruby/core/array/shared/iterable_and_tolerating_size_increasing.rb (+25/-0)
spec/ruby/core/array/shared/join.rb (+8/-77)
spec/ruby/core/array/shared/keep_if.rb (+35/-0)
spec/ruby/core/array/shared/select.rb (+3/-0)
spec/ruby/core/array/shared/slice.rb (+303/-215)
spec/ruby/core/array/shared/unshift.rb (+18/-0)
spec/ruby/core/array/shift_spec.rb (+0/-16)
spec/ruby/core/array/shuffle_spec.rb (+14/-0)
spec/ruby/core/array/slice_spec.rb (+24/-54)
spec/ruby/core/array/sort_by_spec.rb (+33/-0)
spec/ruby/core/array/sum_spec.rb (+20/-1)
spec/ruby/core/array/take_spec.rb (+2/-10)
spec/ruby/core/array/take_while_spec.rb (+7/-9)
spec/ruby/core/array/to_h_spec.rb (+6/-0)
spec/ruby/core/array/try_convert_spec.rb (+1/-1)
spec/ruby/core/array/uniq_spec.rb (+52/-70)
spec/ruby/core/array/values_at_spec.rb (+4/-5)
spec/ruby/core/array/zip_spec.rb (+6/-0)
spec/ruby/core/basicobject/fixtures/classes.rb (+225/-3)
spec/ruby/core/basicobject/instance_eval_spec.rb (+172/-20)
spec/ruby/core/basicobject/method_missing_spec.rb (+1/-0)
spec/ruby/core/binding/eval_spec.rb (+31/-68)
spec/ruby/core/binding/source_location_spec.rb (+5/-0)
spec/ruby/core/builtin_constants/builtin_constants_spec.rb (+2/-16)
spec/ruby/core/class/attached_object_spec.rb (+31/-0)
spec/ruby/core/class/dup_spec.rb (+3/-0)
spec/ruby/core/class/subclasses_spec.rb (+60/-0)
spec/ruby/core/comparable/clamp_spec.rb (+34/-44)
spec/ruby/core/complex/comparison_spec.rb (+17/-19)
spec/ruby/core/complex/inspect_spec.rb (+19/-0)
spec/ruby/core/complex/polar_spec.rb (+16/-0)
spec/ruby/core/complex/to_s_spec.rb (+10/-0)
spec/ruby/core/data/constants_spec.rb (+10/-12)
spec/ruby/core/data/define_spec.rb (+36/-0)
spec/ruby/core/data/fixtures/classes.rb (+5/-0)
spec/ruby/core/data/initialize_spec.rb (+58/-0)
spec/ruby/core/dir/children_spec.rb (+0/-8)
spec/ruby/core/dir/each_child_spec.rb (+0/-7)
spec/ruby/core/dir/entries_spec.rb (+0/-7)
spec/ruby/core/dir/exist_spec.rb (+8/-0)
spec/ruby/core/dir/fchdir_spec.rb (+68/-0)
spec/ruby/core/dir/fixtures/common.rb (+20/-0)
spec/ruby/core/dir/foreach_spec.rb (+6/-6)
spec/ruby/core/dir/glob_spec.rb (+160/-5)
spec/ruby/core/dir/home_spec.rb (+49/-1)
spec/ruby/core/dir/mkdir_spec.rb (+17/-1)
spec/ruby/core/dir/read_spec.rb (+33/-0)
spec/ruby/core/dir/shared/chroot.rb (+8/-5)
spec/ruby/core/dir/shared/exist.rb (+4/-4)
spec/ruby/core/dir/shared/glob.rb (+33/-20)
spec/ruby/core/encoding/compatible_spec.rb (+1/-1)
spec/ruby/core/encoding/converter/primitive_convert_spec.rb (+4/-0)
spec/ruby/core/encoding/converter/putback_spec.rb (+11/-2)
spec/ruby/core/encoding/default_external_spec.rb (+3/-5)
spec/ruby/core/encoding/invalid_byte_sequence_error/destination_encoding_name_spec.rb (+1/-0)
spec/ruby/core/encoding/invalid_byte_sequence_error/destination_encoding_spec.rb (+1/-0)
spec/ruby/core/encoding/invalid_byte_sequence_error/error_bytes_spec.rb (+1/-0)
spec/ruby/core/encoding/invalid_byte_sequence_error/readagain_bytes_spec.rb (+1/-0)
spec/ruby/core/encoding/invalid_byte_sequence_error/source_encoding_name_spec.rb (+1/-0)
spec/ruby/core/encoding/invalid_byte_sequence_error/source_encoding_spec.rb (+1/-0)
spec/ruby/core/encoding/list_spec.rb (+2/-4)
spec/ruby/core/encoding/name_spec.rb (+1/-0)
spec/ruby/core/encoding/replicate_spec.rb (+65/-49)
spec/ruby/core/encoding/to_s_spec.rb (+1/-0)
spec/ruby/core/encoding/undefined_conversion_error/destination_encoding_name_spec.rb (+1/-0)
spec/ruby/core/encoding/undefined_conversion_error/destination_encoding_spec.rb (+1/-0)
spec/ruby/core/encoding/undefined_conversion_error/error_char_spec.rb (+1/-0)
spec/ruby/core/encoding/undefined_conversion_error/source_encoding_name_spec.rb (+1/-0)
spec/ruby/core/encoding/undefined_conversion_error/source_encoding_spec.rb (+1/-0)
spec/ruby/core/enumerable/all_spec.rb (+6/-1)
spec/ruby/core/enumerable/any_spec.rb (+6/-1)
spec/ruby/core/enumerable/chunk_spec.rb (+5/-0)
spec/ruby/core/enumerable/compact_spec.rb (+11/-0)
spec/ruby/core/enumerable/each_cons_spec.rb (+8/-2)
spec/ruby/core/enumerable/each_slice_spec.rb (+8/-2)
spec/ruby/core/enumerable/filter_map_spec.rb (+16/-18)
spec/ruby/core/enumerable/grep_spec.rb (+18/-15)
spec/ruby/core/enumerable/grep_v_spec.rb (+18/-15)
spec/ruby/core/enumerable/group_by_spec.rb (+0/-10)
spec/ruby/core/enumerable/none_spec.rb (+6/-1)
spec/ruby/core/enumerable/one_spec.rb (+6/-2)
spec/ruby/core/enumerable/shared/entries.rb (+0/-10)
spec/ruby/core/enumerable/shared/inject.rb (+45/-5)
spec/ruby/core/enumerable/sum_spec.rb (+1/-1)
spec/ruby/core/enumerable/tally_spec.rb (+36/-25)
spec/ruby/core/enumerable/uniq_spec.rb (+16/-60)
spec/ruby/core/enumerable/zip_spec.rb (+5/-0)
spec/ruby/core/enumerator/arithmetic_sequence/begin_spec.rb (+7/-0)
spec/ruby/core/enumerator/arithmetic_sequence/end_spec.rb (+7/-0)
spec/ruby/core/enumerator/chain/initialize_spec.rb (+2/-2)
spec/ruby/core/enumerator/chain/inspect_spec.rb (+4/-0)
spec/ruby/core/enumerator/each_spec.rb (+9/-9)
spec/ruby/core/enumerator/generator/initialize_spec.rb (+2/-2)
spec/ruby/core/enumerator/initialize_spec.rb (+2/-10)
spec/ruby/core/enumerator/inspect_spec.rb (+5/-0)
spec/ruby/core/enumerator/lazy/compact_spec.rb (+16/-0)
spec/ruby/core/enumerator/lazy/eager_spec.rb (+18/-20)
spec/ruby/core/enumerator/lazy/filter_map_spec.rb (+6/-8)
spec/ruby/core/enumerator/lazy/initialize_spec.rb (+2/-2)
spec/ruby/core/enumerator/lazy/lazy_spec.rb (+4/-0)
spec/ruby/core/enumerator/lazy/with_index_spec.rb (+25/-19)
spec/ruby/core/enumerator/new_spec.rb (+7/-52)
spec/ruby/core/enumerator/produce_spec.rb (+23/-25)
spec/ruby/core/enumerator/product/each_spec.rb (+73/-0)
spec/ruby/core/enumerator/product/initialize_copy_spec.rb (+54/-0)
spec/ruby/core/enumerator/product/initialize_spec.rb (+33/-0)
spec/ruby/core/enumerator/product/inspect_spec.rb (+22/-0)
spec/ruby/core/enumerator/product/rewind_spec.rb (+64/-0)
spec/ruby/core/enumerator/product/size_spec.rb (+64/-0)
spec/ruby/core/enumerator/product_spec.rb (+93/-0)
spec/ruby/core/enumerator/rewind_spec.rb (+2/-2)
spec/ruby/core/enumerator/yielder/to_proc_spec.rb (+9/-11)
spec/ruby/core/env/clone_spec.rb (+23/-0)
spec/ruby/core/env/delete_spec.rb (+11/-5)
spec/ruby/core/env/dup_spec.rb (+11/-0)
spec/ruby/core/env/except_spec.rb (+21/-23)
spec/ruby/core/env/key_spec.rb (+30/-2)
spec/ruby/core/env/merge_spec.rb (+2/-4)
spec/ruby/core/env/shared/include.rb (+7/-0)
spec/ruby/core/env/shared/update.rb (+22/-16)
spec/ruby/core/env/shared/value.rb (+7/-0)
spec/ruby/core/env/slice_spec.rb (+10/-0)
spec/ruby/core/env/to_a_spec.rb (+4/-1)
spec/ruby/core/exception/case_compare_spec.rb (+0/-2)
spec/ruby/core/exception/detailed_message_spec.rb (+43/-0)
spec/ruby/core/exception/equal_value_spec.rb (+7/-7)
spec/ruby/core/exception/errno_spec.rb (+9/-0)
spec/ruby/core/exception/fixtures/common.rb (+4/-0)
spec/ruby/core/exception/fixtures/thread_fiber_ensure.rb (+22/-0)
spec/ruby/core/exception/fixtures/thread_fiber_ensure_non_root_fiber.rb (+25/-0)
spec/ruby/core/exception/frozen_error_spec.rb (+12/-16)
spec/ruby/core/exception/full_message_spec.rb (+78/-11)
spec/ruby/core/exception/interrupt_spec.rb (+9/-0)
spec/ruby/core/exception/no_method_error_spec.rb (+50/-29)
spec/ruby/core/exception/signal_exception_spec.rb (+3/-3)
spec/ruby/core/exception/system_exit_spec.rb (+42/-0)
spec/ruby/core/exception/top_level_spec.rb (+12/-0)
spec/ruby/core/false/case_compare_spec.rb (+14/-0)
spec/ruby/core/false/singleton_method_spec.rb (+15/-0)
spec/ruby/core/false/to_s_spec.rb (+5/-7)
spec/ruby/core/fiber/blocking_spec.rb (+77/-0)
spec/ruby/core/fiber/inspect_spec.rb (+36/-0)
spec/ruby/core/fiber/kill_spec.rb (+90/-0)
spec/ruby/core/fiber/raise_spec.rb (+78/-94)
spec/ruby/core/fiber/resume_spec.rb (+3/-12)
spec/ruby/core/fiber/shared/blocking.rb (+41/-0)
spec/ruby/core/fiber/storage_spec.rb (+158/-0)
spec/ruby/core/file/absolute_path_spec.rb (+37/-39)
spec/ruby/core/file/atime_spec.rb (+2/-2)
spec/ruby/core/file/ctime_spec.rb (+1/-1)
spec/ruby/core/file/dirname_spec.rb (+27/-12)
spec/ruby/core/file/exist_spec.rb (+8/-0)
spec/ruby/core/file/extname_spec.rb (+2/-2)
spec/ruby/core/file/flock_spec.rb (+2/-2)
spec/ruby/core/file/mtime_spec.rb (+10/-8)
spec/ruby/core/file/new_spec.rb (+62/-1)
spec/ruby/core/file/open_spec.rb (+18/-1)
spec/ruby/core/file/realpath_spec.rb (+4/-0)
spec/ruby/core/file/shared/fnmatch.rb (+58/-5)
spec/ruby/core/file/shared/path.rb (+8/-6)
spec/ruby/core/file/utime_spec.rb (+9/-3)
spec/ruby/core/float/coerce_spec.rb (+2/-2)
spec/ruby/core/float/comparison_spec.rb (+20/-15)
spec/ruby/core/float/divide_spec.rb (+4/-0)
spec/ruby/core/float/divmod_spec.rb (+2/-2)
spec/ruby/core/float/gt_spec.rb (+21/-0)
spec/ruby/core/float/gte_spec.rb (+21/-0)
spec/ruby/core/float/lt_spec.rb (+21/-0)
spec/ruby/core/float/lte_spec.rb (+21/-0)
spec/ruby/core/float/magnitude_spec.rb (+1/-0)
spec/ruby/core/float/minus_spec.rb (+1/-1)
spec/ruby/core/float/multiply_spec.rb (+1/-1)
spec/ruby/core/float/plus_spec.rb (+1/-1)
spec/ruby/core/float/round_spec.rb (+64/-0)
spec/ruby/core/float/shared/equal.rb (+21/-0)
spec/ruby/core/float/shared/to_i.rb (+4/-0)
spec/ruby/core/gc/auto_compact_spec.rb (+24/-0)
spec/ruby/core/gc/measure_total_time_spec.rb (+19/-0)
spec/ruby/core/gc/stat_spec.rb (+18/-0)
spec/ruby/core/gc/total_time_spec.rb (+15/-0)
spec/ruby/core/hash/compact_spec.rb (+24/-0)
spec/ruby/core/hash/constructor_spec.rb (+25/-20)
spec/ruby/core/hash/deconstruct_keys_spec.rb (+15/-17)
spec/ruby/core/hash/except_spec.rb (+24/-26)
spec/ruby/core/hash/fetch_spec.rb (+1/-1)
spec/ruby/core/hash/fetch_values_spec.rb (+1/-1)
spec/ruby/core/hash/hash_spec.rb (+9/-0)
spec/ruby/core/hash/new_spec.rb (+13/-0)
spec/ruby/core/hash/reject_spec.rb (+0/-7)
spec/ruby/core/hash/ruby2_keywords_hash_spec.rb (+71/-35)
spec/ruby/core/hash/shared/each.rb (+9/-28)
spec/ruby/core/hash/shared/eql.rb (+19/-65)
spec/ruby/core/hash/shared/to_s.rb (+4/-13)
spec/ruby/core/hash/shift_spec.rb (+32/-10)
spec/ruby/core/hash/to_a_spec.rb (+0/-10)
spec/ruby/core/hash/to_proc_spec.rb (+4/-12)
spec/ruby/core/hash/transform_keys_spec.rb (+15/-22)
spec/ruby/core/hash/try_convert_spec.rb (+1/-1)
spec/ruby/core/integer/bit_and_spec.rb (+8/-8)
spec/ruby/core/integer/bit_or_spec.rb (+27/-6)
spec/ruby/core/integer/bit_xor_spec.rb (+28/-7)
spec/ruby/core/integer/ceildiv_spec.rb (+22/-0)
spec/ruby/core/integer/chr_spec.rb (+33/-32)
spec/ruby/core/integer/complement_spec.rb (+3/-3)
spec/ruby/core/integer/constants_spec.rb (+26/-10)
spec/ruby/core/integer/div_spec.rb (+5/-5)
spec/ruby/core/integer/divide_spec.rb (+6/-6)
spec/ruby/core/integer/divmod_spec.rb (+6/-6)
spec/ruby/core/integer/element_reference_spec.rb (+60/-62)
spec/ruby/core/integer/fdiv_spec.rb (+51/-0)
spec/ruby/core/integer/left_shift_spec.rb (+52/-7)
spec/ruby/core/integer/minus_spec.rb (+3/-3)
spec/ruby/core/integer/multiply_spec.rb (+3/-3)
spec/ruby/core/integer/plus_spec.rb (+19/-4)
spec/ruby/core/integer/remainder_spec.rb (+1/-1)
spec/ruby/core/integer/right_shift_spec.rb (+52/-11)
spec/ruby/core/integer/shared/abs.rb (+2/-2)
spec/ruby/core/integer/shared/arithmetic_coerce.rb (+0/-20)
spec/ruby/core/integer/shared/exponent.rb (+7/-4)
spec/ruby/core/integer/shared/modulo.rb (+5/-5)
spec/ruby/core/integer/to_f_spec.rb (+3/-3)
spec/ruby/core/integer/to_s_spec.rb (+3/-3)
spec/ruby/core/integer/try_convert_spec.rb (+11/-1)
spec/ruby/core/integer/uminus_spec.rb (+4/-4)
spec/ruby/core/integer/zero_spec.rb (+2/-10)
spec/ruby/core/io/advise_spec.rb (+2/-12)
spec/ruby/core/io/binread_spec.rb (+10/-0)
spec/ruby/core/io/close_spec.rb (+6/-0)
spec/ruby/core/io/copy_stream_spec.rb (+27/-6)
spec/ruby/core/io/eof_spec.rb (+1/-1)
spec/ruby/core/io/fixtures/classes.rb (+26/-0)
spec/ruby/core/io/flush_spec.rb (+5/-5)
spec/ruby/core/io/foreach_spec.rb (+17/-2)
spec/ruby/core/io/getbyte_spec.rb (+16/-0)
spec/ruby/core/io/gets_spec.rb (+71/-38)
spec/ruby/core/io/initialize_spec.rb (+11/-0)
spec/ruby/core/io/lineno_spec.rb (+7/-2)
spec/ruby/core/io/new_spec.rb (+8/-0)
spec/ruby/core/io/nonblock_spec.rb (+48/-0)
spec/ruby/core/io/open_spec.rb (+15/-2)
spec/ruby/core/io/path_spec.rb (+14/-0)
spec/ruby/core/io/pipe_spec.rb (+11/-0)
spec/ruby/core/io/pread_spec.rb (+78/-1)
spec/ruby/core/io/print_spec.rb (+19/-6)
spec/ruby/core/io/pwrite_spec.rb (+29/-3)
spec/ruby/core/io/read_nonblock_spec.rb (+49/-0)
spec/ruby/core/io/read_spec.rb (+113/-15)
spec/ruby/core/io/readchar_spec.rb (+66/-0)
spec/ruby/core/io/readline_spec.rb (+33/-0)
spec/ruby/core/io/readlines_spec.rb (+49/-2)
spec/ruby/core/io/readpartial_spec.rb (+16/-1)
spec/ruby/core/io/rewind_spec.rb (+15/-0)
spec/ruby/core/io/select_spec.rb (+13/-2)
spec/ruby/core/io/set_encoding_by_bom_spec.rb (+229/-44)
spec/ruby/core/io/set_encoding_spec.rb (+48/-1)
spec/ruby/core/io/shared/binwrite.rb (+13/-0)
spec/ruby/core/io/shared/each.rb (+82/-4)
spec/ruby/core/io/shared/new.rb (+19/-31)
spec/ruby/core/io/shared/pos.rb (+7/-1)
spec/ruby/core/io/shared/readlines.rb (+94/-44)
spec/ruby/core/io/shared/write.rb (+60/-15)
spec/ruby/core/io/sysread_spec.rb (+30/-1)
spec/ruby/core/io/sysseek_spec.rb (+1/-1)
spec/ruby/core/io/syswrite_spec.rb (+11/-0)
spec/ruby/core/io/try_convert_spec.rb (+1/-1)
spec/ruby/core/io/ungetbyte_spec.rb (+4/-14)
spec/ruby/core/io/ungetc_spec.rb (+3/-13)
spec/ruby/core/io/write_nonblock_spec.rb (+11/-0)
spec/ruby/core/io/write_spec.rb (+142/-15)
spec/ruby/core/kernel/Complex_spec.rb (+92/-1)
spec/ruby/core/kernel/Integer_spec.rb (+16/-9)
spec/ruby/core/kernel/__dir___spec.rb (+3/-13)
spec/ruby/core/kernel/at_exit_spec.rb (+5/-56)
spec/ruby/core/kernel/caller_locations_spec.rb (+4/-6)
spec/ruby/core/kernel/caller_spec.rb (+4/-6)
spec/ruby/core/kernel/clone_spec.rb (+42/-49)
spec/ruby/core/kernel/define_singleton_method_spec.rb (+9/-1)
spec/ruby/core/kernel/eval_spec.rb (+30/-18)
spec/ruby/core/kernel/exec_spec.rb (+2/-2)
spec/ruby/core/kernel/exit_spec.rb (+5/-5)
spec/ruby/core/kernel/fixtures/Complex.rb (+5/-0)
spec/ruby/core/kernel/fixtures/classes.rb (+6/-1)
spec/ruby/core/kernel/fixtures/warn_core_method.rb (+1/-1)
spec/ruby/core/kernel/initialize_clone_spec.rb (+26/-0)
spec/ruby/core/kernel/initialize_copy_spec.rb (+8/-1)
spec/ruby/core/kernel/initialize_dup_spec.rb (+20/-0)
spec/ruby/core/kernel/inspect_spec.rb (+0/-10)
spec/ruby/core/kernel/instance_variable_get_spec.rb (+6/-0)
spec/ruby/core/kernel/instance_variable_set_spec.rb (+12/-0)
spec/ruby/core/kernel/instance_variables_spec.rb (+11/-0)
spec/ruby/core/kernel/lambda_spec.rb (+49/-29)
spec/ruby/core/kernel/match_spec.rb (+21/-13)
spec/ruby/core/kernel/method_spec.rb (+44/-1)
spec/ruby/core/kernel/open_spec.rb (+57/-20)
spec/ruby/core/kernel/p_spec.rb (+2/-4)
spec/ruby/core/kernel/print_spec.rb (+12/-0)
spec/ruby/core/kernel/printf_spec.rb (+7/-0)
spec/ruby/core/kernel/proc_spec.rb (+4/-22)
spec/ruby/core/kernel/rand_spec.rb (+2/-2)
spec/ruby/core/kernel/remove_instance_variable_spec.rb (+13/-0)
spec/ruby/core/kernel/require_relative_spec.rb (+5/-5)
spec/ruby/core/kernel/require_spec.rb (+20/-0)
spec/ruby/core/kernel/shared/dup_clone.rb (+0/-24)
spec/ruby/core/kernel/shared/load.rb (+64/-19)
spec/ruby/core/kernel/shared/require.rb (+61/-23)
spec/ruby/core/kernel/shared/sprintf.rb (+74/-11)
spec/ruby/core/kernel/shared/sprintf_encoding.rb (+32/-1)
spec/ruby/core/kernel/singleton_class_spec.rb (+49/-2)
spec/ruby/core/kernel/sleep_spec.rb (+23/-5)
spec/ruby/core/kernel/sprintf_spec.rb (+16/-0)
spec/ruby/core/kernel/srand_spec.rb (+12/-4)
spec/ruby/core/kernel/taint_spec.rb (+12/-47)
spec/ruby/core/kernel/tainted_spec.rb (+14/-16)
spec/ruby/core/kernel/test_spec.rb (+2/-2)
spec/ruby/core/kernel/to_s_spec.rb (+0/-10)
spec/ruby/core/kernel/trust_spec.rb (+13/-28)
spec/ruby/core/kernel/untaint_spec.rb (+13/-28)
spec/ruby/core/kernel/untrust_spec.rb (+12/-27)
spec/ruby/core/kernel/untrusted_spec.rb (+13/-31)
spec/ruby/core/kernel/warn_spec.rb (+74/-27)
spec/ruby/core/main/fixtures/using.rb (+1/-0)
spec/ruby/core/main/fixtures/using_in_main.rb (+5/-0)
spec/ruby/core/main/fixtures/using_in_method.rb (+5/-0)
spec/ruby/core/main/private_spec.rb (+15/-9)
spec/ruby/core/main/public_spec.rb (+16/-9)
spec/ruby/core/main/ruby2_keywords_spec.rb (+4/-6)
spec/ruby/core/main/using_spec.rb (+20/-0)
spec/ruby/core/marshal/dump_spec.rb (+247/-44)
spec/ruby/core/marshal/fixtures/classes.rb (+4/-0)
spec/ruby/core/marshal/fixtures/marshal_data.rb (+96/-0)
spec/ruby/core/marshal/shared/load.rb (+289/-94)
spec/ruby/core/matchdata/allocate_spec.rb (+3/-5)
spec/ruby/core/matchdata/byteoffset_spec.rb (+95/-0)
spec/ruby/core/matchdata/captures_spec.rb (+2/-3)
spec/ruby/core/matchdata/deconstruct_keys_spec.rb (+65/-0)
spec/ruby/core/matchdata/deconstruct_spec.rb (+8/-0)
spec/ruby/core/matchdata/element_reference_spec.rb (+32/-0)
spec/ruby/core/matchdata/fixtures/classes.rb (+3/-0)
spec/ruby/core/matchdata/named_captures_spec.rb (+12/-0)
spec/ruby/core/matchdata/post_match_spec.rb (+6/-18)
spec/ruby/core/matchdata/pre_match_spec.rb (+6/-18)
spec/ruby/core/matchdata/shared/captures.rb (+13/-0)
spec/ruby/core/matchdata/to_a_spec.rb (+6/-0)
spec/ruby/core/matchdata/to_s_spec.rb (+6/-0)
spec/ruby/core/matchdata/values_at_spec.rb (+63/-8)
spec/ruby/core/math/cos_spec.rb (+17/-9)
spec/ruby/core/math/ldexp_spec.rb (+6/-0)
spec/ruby/core/math/log2_spec.rb (+1/-1)
spec/ruby/core/math/sqrt_spec.rb (+4/-0)
spec/ruby/core/method/compose_spec.rb (+1/-2)
spec/ruby/core/method/fixtures/classes.rb (+11/-3)
spec/ruby/core/method/owner_spec.rb (+6/-0)
spec/ruby/core/method/parameters_spec.rb (+28/-3)
spec/ruby/core/method/private_spec.rb (+28/-0)
spec/ruby/core/method/protected_spec.rb (+28/-0)
spec/ruby/core/method/public_spec.rb (+28/-0)
spec/ruby/core/method/shared/to_s.rb (+24/-32)
spec/ruby/core/method/source_location_spec.rb (+8/-1)
spec/ruby/core/method/super_method_spec.rb (+4/-10)
spec/ruby/core/method/unbind_spec.rb (+10/-2)
spec/ruby/core/module/alias_method_spec.rb (+9/-11)
spec/ruby/core/module/append_features_spec.rb (+0/-14)
spec/ruby/core/module/attr_accessor_spec.rb (+3/-13)
spec/ruby/core/module/attr_reader_spec.rb (+3/-13)
spec/ruby/core/module/attr_spec.rb (+5/-17)
spec/ruby/core/module/attr_writer_spec.rb (+3/-13)
spec/ruby/core/module/autoload_spec.rb (+38/-12)
spec/ruby/core/module/class_variables_spec.rb (+8/-0)
spec/ruby/core/module/const_added_spec.rb (+160/-0)
spec/ruby/core/module/const_defined_spec.rb (+17/-4)
spec/ruby/core/module/const_get_spec.rb (+14/-0)
spec/ruby/core/module/const_set_spec.rb (+4/-14)
spec/ruby/core/module/const_source_location_spec.rb (+179/-162)
spec/ruby/core/module/define_method_spec.rb (+82/-7)
spec/ruby/core/module/deprecate_constant_spec.rb (+17/-6)
spec/ruby/core/module/extend_object_spec.rb (+0/-14)
spec/ruby/core/module/fixtures/classes.rb (+32/-1)
spec/ruby/core/module/fixtures/module.rb (+4/-0)
spec/ruby/core/module/include_spec.rb (+23/-2)
spec/ruby/core/module/included_modules_spec.rb (+1/-1)
spec/ruby/core/module/instance_method_spec.rb (+34/-8)
spec/ruby/core/module/method_added_spec.rb (+68/-5)
spec/ruby/core/module/module_function_spec.rb (+143/-33)
spec/ruby/core/module/name_spec.rb (+43/-35)
spec/ruby/core/module/prepend_features_spec.rb (+0/-14)
spec/ruby/core/module/prepend_spec.rb (+23/-28)
spec/ruby/core/module/private_class_method_spec.rb (+10/-0)
spec/ruby/core/module/private_spec.rb (+19/-5)
spec/ruby/core/module/protected_spec.rb (+19/-5)
spec/ruby/core/module/public_class_method_spec.rb (+14/-0)
spec/ruby/core/module/public_spec.rb (+19/-6)
spec/ruby/core/module/refine_spec.rb (+263/-313)
spec/ruby/core/module/refinements_spec.rb (+45/-0)
spec/ruby/core/module/ruby2_keywords_spec.rb (+257/-71)
spec/ruby/core/module/set_temporary_name_spec.rb (+68/-0)
spec/ruby/core/module/shared/class_eval.rb (+21/-6)
spec/ruby/core/module/shared/set_visibility.rb (+13/-15)
spec/ruby/core/module/undefined_instance_methods_spec.rb (+26/-0)
spec/ruby/core/module/used_refinements_spec.rb (+87/-0)
spec/ruby/core/mutex/lock_spec.rb (+0/-4)
spec/ruby/core/mutex/owned_spec.rb (+8/-10)
spec/ruby/core/nil/match_spec.rb (+1/-1)
spec/ruby/core/nil/singleton_method_spec.rb (+15/-0)
spec/ruby/core/nil/to_s_spec.rb (+5/-7)
spec/ruby/core/numeric/clone_spec.rb (+6/-1)
spec/ruby/core/numeric/fdiv_spec.rb (+0/-1)
spec/ruby/core/numeric/magnitude_spec.rb (+1/-0)
spec/ruby/core/numeric/quo_spec.rb (+10/-2)
spec/ruby/core/numeric/remainder_spec.rb (+3/-0)
spec/ruby/core/numeric/shared/step.rb (+1/-8)
spec/ruby/core/numeric/step_spec.rb (+4/-83)
spec/ruby/core/objectspace/define_finalizer_spec.rb (+60/-40)
spec/ruby/core/objectspace/weakkeymap/delete_spec.rb (+40/-0)
spec/ruby/core/objectspace/weakkeymap/element_reference_spec.rb (+26/-0)
spec/ruby/core/objectspace/weakkeymap/element_set_spec.rb (+71/-0)
spec/ruby/core/objectspace/weakkeymap/getkey_spec.rb (+14/-0)
spec/ruby/core/objectspace/weakkeymap/inspect_spec.rb (+17/-0)
spec/ruby/core/objectspace/weakkeymap/key_spec.rb (+33/-0)
spec/ruby/core/objectspace/weakmap/delete_spec.rb (+30/-0)
spec/ruby/core/objectspace/weakmap/element_set_spec.rb (+15/-38)
spec/ruby/core/objectspace/weakmap/shared/include.rb (+6/-10)
spec/ruby/core/proc/block_pass_spec.rb (+0/-22)
spec/ruby/core/proc/compose_spec.rb (+14/-26)
spec/ruby/core/proc/eql_spec.rb (+1/-7)
spec/ruby/core/proc/equal_value_spec.rb (+1/-7)
spec/ruby/core/proc/lambda_spec.rb (+5/-3)
spec/ruby/core/proc/new_spec.rb (+6/-66)
spec/ruby/core/proc/parameters_spec.rb (+51/-2)
spec/ruby/core/proc/ruby2_keywords_spec.rb (+40/-48)
spec/ruby/core/proc/shared/compose.rb (+13/-38)
spec/ruby/core/proc/shared/dup.rb (+8/-0)
spec/ruby/core/proc/shared/equal.rb (+0/-17)
spec/ruby/core/proc/shared/to_s.rb (+4/-6)
spec/ruby/core/proc/source_location_spec.rb (+9/-4)
spec/ruby/core/process/_fork_spec.rb (+24/-0)
spec/ruby/core/process/argv0_spec.rb (+25/-0)
spec/ruby/core/process/clock_gettime_spec.rb (+58/-43)
spec/ruby/core/process/constants_spec.rb (+8/-1)
spec/ruby/core/process/detach_spec.rb (+35/-0)
spec/ruby/core/process/egid_spec.rb (+40/-1)
spec/ruby/core/process/euid_spec.rb (+11/-1)
spec/ruby/core/process/exec_spec.rb (+22/-22)
spec/ruby/core/process/exit_spec.rb (+1/-1)
spec/ruby/core/process/fixtures/argv0.rb (+6/-0)
spec/ruby/core/process/spawn_spec.rb (+30/-2)
spec/ruby/core/process/status/equal_value_spec.rb (+1/-1)
spec/ruby/core/process/status/exited_spec.rb (+1/-1)
spec/ruby/core/process/status/exitstatus_spec.rb (+1/-1)
spec/ruby/core/process/status/signaled_spec.rb (+1/-1)
spec/ruby/core/process/status/success_spec.rb (+1/-1)
spec/ruby/core/process/status/termsig_spec.rb (+2/-2)
spec/ruby/core/process/status/to_i_spec.rb (+1/-1)
spec/ruby/core/process/status/wait_spec.rb (+78/-80)
spec/ruby/core/process/times_spec.rb (+8/-24)
spec/ruby/core/process/wait2_spec.rb (+11/-2)
spec/ruby/core/process/wait_spec.rb (+1/-1)
spec/ruby/core/process/warmup_spec.rb (+11/-0)
spec/ruby/core/queue/deq_spec.rb (+7/-0)
spec/ruby/core/queue/initialize_spec.rb (+35/-11)
spec/ruby/core/queue/pop_spec.rb (+7/-0)
spec/ruby/core/queue/shift_spec.rb (+7/-0)
spec/ruby/core/random/bytes_spec.rb (+1/-2)
spec/ruby/core/random/default_spec.rb (+13/-16)
spec/ruby/core/random/new_spec.rb (+1/-0)
spec/ruby/core/random/rand_spec.rb (+5/-0)
spec/ruby/core/random/urandom_spec.rb (+8/-6)
spec/ruby/core/range/bsearch_spec.rb (+97/-99)
spec/ruby/core/range/case_compare_spec.rb (+7/-3)
spec/ruby/core/range/clone_spec.rb (+26/-0)
spec/ruby/core/range/count_spec.rb (+7/-9)
spec/ruby/core/range/cover_spec.rb (+4/-0)
spec/ruby/core/range/dup_spec.rb (+9/-1)
spec/ruby/core/range/each_spec.rb (+2/-4)
spec/ruby/core/range/equal_value_spec.rb (+2/-4)
spec/ruby/core/range/first_spec.rb (+2/-4)
spec/ruby/core/range/frozen_spec.rb (+25/-0)
spec/ruby/core/range/include_spec.rb (+4/-0)
spec/ruby/core/range/initialize_spec.rb (+3/-12)
spec/ruby/core/range/inspect_spec.rb (+6/-22)
spec/ruby/core/range/last_spec.rb (+6/-0)
spec/ruby/core/range/max_spec.rb (+10/-14)
spec/ruby/core/range/min_spec.rb (+2/-4)
spec/ruby/core/range/minmax_spec.rb (+53/-93)
spec/ruby/core/range/new_spec.rb (+15/-15)
spec/ruby/core/range/shared/cover.rb (+27/-29)
spec/ruby/core/range/shared/cover_and_include.rb (+3/-6)
spec/ruby/core/range/size_spec.rb (+20/-5)
spec/ruby/core/range/step_spec.rb (+38/-36)
spec/ruby/core/range/to_a_spec.rb (+2/-4)
spec/ruby/core/range/to_s_spec.rb (+3/-19)
spec/ruby/core/rational/abs_spec.rb (+1/-0)
spec/ruby/core/rational/ceil_spec.rb (+1/-0)
spec/ruby/core/rational/coerce_spec.rb (+1/-0)
spec/ruby/core/rational/comparison_spec.rb (+1/-0)
spec/ruby/core/rational/denominator_spec.rb (+1/-0)
spec/ruby/core/rational/div_spec.rb (+1/-0)
spec/ruby/core/rational/divide_spec.rb (+1/-0)
spec/ruby/core/rational/divmod_spec.rb (+1/-0)
spec/ruby/core/rational/equal_value_spec.rb (+1/-0)
spec/ruby/core/rational/exponent_spec.rb (+1/-0)
spec/ruby/core/rational/fdiv_spec.rb (+1/-0)
spec/ruby/core/rational/floor_spec.rb (+1/-0)
spec/ruby/core/rational/hash_spec.rb (+1/-0)
spec/ruby/core/rational/inspect_spec.rb (+1/-0)
spec/ruby/core/rational/integer_spec.rb (+1/-0)
spec/ruby/core/rational/magnitude_spec.rb (+1/-0)
spec/ruby/core/rational/minus_spec.rb (+46/-2)
spec/ruby/core/rational/modulo_spec.rb (+1/-0)
spec/ruby/core/rational/multiply_spec.rb (+1/-0)
spec/ruby/core/rational/numerator_spec.rb (+1/-0)
spec/ruby/core/rational/plus_spec.rb (+1/-0)
spec/ruby/core/rational/quo_spec.rb (+1/-0)
spec/ruby/core/rational/remainder_spec.rb (+1/-0)
spec/ruby/core/rational/to_f_spec.rb (+1/-0)
spec/ruby/core/rational/to_i_spec.rb (+1/-0)
spec/ruby/core/rational/to_r_spec.rb (+1/-0)
spec/ruby/core/rational/to_s_spec.rb (+1/-0)
spec/ruby/core/rational/truncate_spec.rb (+1/-0)
spec/ruby/core/rational/zero_spec.rb (+1/-0)
spec/ruby/core/refinement/append_features_spec.rb (+21/-0)
spec/ruby/core/refinement/extend_object_spec.rb (+23/-0)
spec/ruby/core/refinement/fixtures/classes.rb (+10/-0)
spec/ruby/core/refinement/import_methods_spec.rb (+269/-0)
spec/ruby/core/refinement/include_spec.rb (+27/-0)
spec/ruby/core/refinement/prepend_features_spec.rb (+21/-0)
spec/ruby/core/refinement/prepend_spec.rb (+27/-0)
spec/ruby/core/refinement/refined_class_spec.rb (+17/-0)
spec/ruby/core/regexp/compile_spec.rb (+4/-0)
spec/ruby/core/regexp/initialize_spec.rb (+3/-11)
spec/ruby/core/regexp/linear_time_spec.rb (+25/-0)
spec/ruby/core/regexp/new_spec.rb (+3/-11)
spec/ruby/core/regexp/shared/new.rb (+152/-44)
spec/ruby/core/regexp/shared/quote.rb (+10/-0)
spec/ruby/core/regexp/source_spec.rb (+20/-2)
spec/ruby/core/regexp/timeout_spec.rb (+35/-0)
spec/ruby/core/regexp/try_convert_spec.rb (+6/-0)
spec/ruby/core/regexp/union_spec.rb (+37/-14)
spec/ruby/core/signal/signame_spec.rb (+12/-0)
spec/ruby/core/signal/trap_spec.rb (+32/-3)
spec/ruby/core/sizedqueue/append_spec.rb (+7/-0)
spec/ruby/core/sizedqueue/deq_spec.rb (+7/-0)
spec/ruby/core/sizedqueue/enq_spec.rb (+7/-0)
spec/ruby/core/sizedqueue/pop_spec.rb (+7/-0)
spec/ruby/core/sizedqueue/push_spec.rb (+7/-0)
spec/ruby/core/sizedqueue/shift_spec.rb (+7/-0)
spec/ruby/core/string/allocate_spec.rb (+1/-1)
spec/ruby/core/string/append_spec.rb (+6/-0)
spec/ruby/core/string/b_spec.rb (+0/-9)
spec/ruby/core/string/byteindex_spec.rb (+304/-0)
spec/ruby/core/string/byterindex_spec.rb (+359/-0)
spec/ruby/core/string/bytesize_spec.rb (+1/-1)
spec/ruby/core/string/byteslice_spec.rb (+6/-0)
spec/ruby/core/string/bytesplice_spec.rb (+133/-0)
spec/ruby/core/string/capitalize_spec.rb (+10/-17)
spec/ruby/core/string/casecmp_spec.rb (+10/-0)
spec/ruby/core/string/center_spec.rb (+6/-37)
spec/ruby/core/string/chars_spec.rb (+7/-1)
spec/ruby/core/string/chomp_spec.rb (+5/-72)
spec/ruby/core/string/chop_spec.rb (+4/-20)
spec/ruby/core/string/clone_spec.rb (+4/-0)
spec/ruby/core/string/comparison_spec.rb (+4/-0)
spec/ruby/core/string/concat_spec.rb (+1/-0)
spec/ruby/core/string/crypt_spec.rb (+0/-30)
spec/ruby/core/string/dedup_spec.rb (+8/-0)
spec/ruby/core/string/delete_prefix_spec.rb (+7/-15)
spec/ruby/core/string/delete_spec.rb (+4/-17)
spec/ruby/core/string/delete_suffix_spec.rb (+7/-15)
spec/ruby/core/string/downcase_spec.rb (+10/-18)
spec/ruby/core/string/dump_spec.rb (+10/-24)
spec/ruby/core/string/dup_spec.rb (+13/-0)
spec/ruby/core/string/each_char_spec.rb (+1/-0)
spec/ruby/core/string/each_grapheme_cluster_spec.rb (+7/-0)
spec/ruby/core/string/element_set_spec.rb (+8/-26)
spec/ruby/core/string/encode_spec.rb (+50/-4)
spec/ruby/core/string/encoding_spec.rb (+1/-0)
spec/ruby/core/string/fixtures/iso-8859-9-encoding.rb (+1/-1)
spec/ruby/core/string/fixtures/to_c.rb (+5/-0)
spec/ruby/core/string/force_encoding_spec.rb (+1/-1)
spec/ruby/core/string/grapheme_clusters_spec.rb (+1/-0)
spec/ruby/core/string/gsub_spec.rb (+38/-156)
spec/ruby/core/string/include_spec.rb (+14/-0)
spec/ruby/core/string/index_spec.rb (+26/-0)
spec/ruby/core/string/insert_spec.rb (+9/-12)
spec/ruby/core/string/inspect_spec.rb (+20/-12)
spec/ruby/core/string/lines_spec.rb (+0/-1)
spec/ruby/core/string/ljust_spec.rb (+6/-37)
spec/ruby/core/string/lstrip_spec.rb (+31/-19)
spec/ruby/core/string/modulo_spec.rb (+10/-52)
spec/ruby/core/string/ord_spec.rb (+5/-0)
spec/ruby/core/string/partition_spec.rb (+22/-0)
spec/ruby/core/string/plus_spec.rb (+3/-15)
spec/ruby/core/string/prepend_spec.rb (+0/-10)
spec/ruby/core/string/reverse_spec.rb (+23/-19)
spec/ruby/core/string/rindex_spec.rb (+21/-2)
spec/ruby/core/string/rjust_spec.rb (+6/-37)
spec/ruby/core/string/rpartition_spec.rb (+22/-0)
spec/ruby/core/string/rstrip_spec.rb (+44/-8)
spec/ruby/core/string/scan_spec.rb (+12/-40)
spec/ruby/core/string/scrub_spec.rb (+28/-23)
spec/ruby/core/string/setbyte_spec.rb (+6/-0)
spec/ruby/core/string/shared/byte_index_common.rb (+63/-0)
spec/ruby/core/string/shared/chars.rb (+0/-14)
spec/ruby/core/string/shared/concat.rb (+20/-24)
spec/ruby/core/string/shared/dedup.rb (+55/-0)
spec/ruby/core/string/shared/each_line.rb (+10/-22)
spec/ruby/core/string/shared/eql.rb (+5/-1)
spec/ruby/core/string/shared/length.rb (+21/-5)
spec/ruby/core/string/shared/partition.rb (+20/-23)
spec/ruby/core/string/shared/replace.rb (+0/-30)
spec/ruby/core/string/shared/slice.rb (+55/-214)
spec/ruby/core/string/shared/strip.rb (+6/-12)
spec/ruby/core/string/shared/succ.rb (+6/-20)
spec/ruby/core/string/shared/to_s.rb (+0/-7)
spec/ruby/core/string/shared/to_sym.rb (+10/-1)
spec/ruby/core/string/slice_spec.rb (+21/-157)
spec/ruby/core/string/split_spec.rb (+118/-149)
spec/ruby/core/string/squeeze_spec.rb (+7/-20)
spec/ruby/core/string/start_with_spec.rb (+19/-0)
spec/ruby/core/string/strip_spec.rb (+12/-18)
spec/ruby/core/string/sub_spec.rb (+37/-120)
spec/ruby/core/string/swapcase_spec.rb (+9/-17)
spec/ruby/core/string/to_c_spec.rb (+34/-80)
spec/ruby/core/string/tr_s_spec.rb (+11/-23)
spec/ruby/core/string/tr_spec.rb (+11/-23)
spec/ruby/core/string/try_convert_spec.rb (+1/-1)
spec/ruby/core/string/uminus_spec.rb (+2/-45)
spec/ruby/core/string/undump_spec.rb (+1/-11)
spec/ruby/core/string/unpack/b_spec.rb (+33/-5)
spec/ruby/core/string/unpack/c_spec.rb (+14/-2)
spec/ruby/core/string/unpack/h_spec.rb (+28/-4)
spec/ruby/core/string/unpack/m_spec.rb (+5/-0)
spec/ruby/core/string/unpack/p_spec.rb (+0/-12)
spec/ruby/core/string/unpack/shared/basic.rb (+0/-8)
spec/ruby/core/string/unpack/shared/float.rb (+58/-10)
spec/ruby/core/string/unpack/shared/integer.rb (+86/-14)
spec/ruby/core/string/unpack/shared/taint.rb (+0/-81)
spec/ruby/core/string/unpack/shared/unicode.rb (+14/-2)
spec/ruby/core/string/unpack/w_spec.rb (+14/-2)
spec/ruby/core/string/unpack/z_spec.rb (+5/-0)
spec/ruby/core/string/unpack1_spec.rb (+26/-0)
spec/ruby/core/string/unpack_spec.rb (+34/-0)
spec/ruby/core/string/upcase_spec.rb (+10/-18)
spec/ruby/core/string/uplus_spec.rb (+3/-0)
spec/ruby/core/string/upto_spec.rb (+6/-0)
spec/ruby/core/string/valid_encoding/utf_8_spec.rb (+214/-0)
spec/ruby/core/string/valid_encoding_spec.rb (+8/-10)
spec/ruby/core/struct/constants_spec.rb (+15/-0)
spec/ruby/core/struct/deconstruct_keys_spec.rb (+72/-74)
spec/ruby/core/struct/deconstruct_spec.rb (+5/-7)
spec/ruby/core/struct/fixtures/classes.rb (+6/-0)
spec/ruby/core/struct/initialize_spec.rb (+18/-0)
spec/ruby/core/struct/inspect_spec.rb (+0/-5)
spec/ruby/core/struct/keyword_init_spec.rb (+40/-0)
spec/ruby/core/struct/new_spec.rb (+33/-2)
spec/ruby/core/struct/shared/inspect.rb (+35/-0)
spec/ruby/core/struct/values_at_spec.rb (+49/-6)
spec/ruby/core/symbol/casecmp_spec.rb (+8/-0)
spec/ruby/core/symbol/end_with_spec.rb (+2/-4)
spec/ruby/core/symbol/inspect_spec.rb (+2/-0)
spec/ruby/core/symbol/name_spec.rb (+11/-13)
spec/ruby/core/symbol/shared/id2name.rb (+7/-0)
spec/ruby/core/symbol/shared/slice.rb (+0/-20)
spec/ruby/core/symbol/start_with_spec.rb (+2/-4)
spec/ruby/core/symbol/to_proc_spec.rb (+36/-26)
spec/ruby/core/thread/backtrace/limit_spec.rb (+15/-0)
spec/ruby/core/thread/backtrace/location/absolute_path_spec.rb (+9/-0)
spec/ruby/core/thread/backtrace/location/fixtures/subdir/absolute_path_main_chdir.rb (+11/-0)
spec/ruby/core/thread/backtrace/location/fixtures/subdir/sibling.rb (+1/-0)
spec/ruby/core/thread/backtrace/location/path_spec.rb (+1/-1)
spec/ruby/core/thread/backtrace_locations_spec.rb (+4/-6)
spec/ruby/core/thread/each_caller_location_spec.rb (+49/-0)
spec/ruby/core/thread/ignore_deadlock_spec.rb (+19/-0)
spec/ruby/core/thread/kill_spec.rb (+0/-4)
spec/ruby/core/thread/native_thread_id_spec.rb (+37/-0)
spec/ruby/core/thread/raise_spec.rb (+24/-0)
spec/ruby/core/thread/report_on_exception_spec.rb (+49/-0)
spec/ruby/core/thread/shared/exit.rb (+40/-1)
spec/ruby/core/thread/shared/to_s.rb (+1/-3)
spec/ruby/core/time/at_spec.rb (+21/-0)
spec/ruby/core/time/ceil_spec.rb (+31/-33)
spec/ruby/core/time/deconstruct_keys_spec.rb (+44/-0)
spec/ruby/core/time/floor_spec.rb (+25/-27)
spec/ruby/core/time/inspect_spec.rb (+21/-23)
spec/ruby/core/time/localtime_spec.rb (+14/-2)
spec/ruby/core/time/new_spec.rb (+326/-15)
spec/ruby/core/time/now_spec.rb (+51/-0)
spec/ruby/core/time/shared/gmtime.rb (+2/-2)
spec/ruby/core/time/shared/local.rb (+4/-7)
spec/ruby/core/time/shared/time_params.rb (+8/-3)
spec/ruby/core/time/strftime_spec.rb (+41/-0)
spec/ruby/core/time/utc_spec.rb (+49/-2)
spec/ruby/core/time/zone_spec.rb (+28/-3)
spec/ruby/core/tracepoint/allow_reentry_spec.rb (+32/-0)
spec/ruby/core/tracepoint/enable_spec.rb (+41/-22)
spec/ruby/core/tracepoint/inspect_spec.rb (+12/-9)
spec/ruby/core/tracepoint/path_spec.rb (+23/-8)
spec/ruby/core/true/singleton_method_spec.rb (+15/-0)
spec/ruby/core/true/to_s_spec.rb (+5/-7)
spec/ruby/core/unboundmethod/bind_call_spec.rb (+44/-38)
spec/ruby/core/unboundmethod/bind_spec.rb (+8/-0)
spec/ruby/core/unboundmethod/equal_value_spec.rb (+66/-10)
spec/ruby/core/unboundmethod/fixtures/classes.rb (+20/-0)
spec/ruby/core/unboundmethod/hash_spec.rb (+7/-0)
spec/ruby/core/unboundmethod/owner_spec.rb (+7/-0)
spec/ruby/core/unboundmethod/private_spec.rb (+28/-0)
spec/ruby/core/unboundmethod/protected_spec.rb (+28/-0)
spec/ruby/core/unboundmethod/public_spec.rb (+28/-0)
spec/ruby/core/unboundmethod/shared/to_s.rb (+13/-3)
spec/ruby/core/unboundmethod/source_location_spec.rb (+8/-1)
spec/ruby/core/unboundmethod/super_method_spec.rb (+7/-6)
spec/ruby/core/warning/element_reference_spec.rb (+19/-8)
spec/ruby/core/warning/element_set_spec.rb (+31/-21)
spec/ruby/core/warning/warn_spec.rb (+73/-29)
spec/ruby/fixtures/class.rb (+4/-0)
spec/ruby/fixtures/code/c/load_fixture.rb (+1/-0)
spec/ruby/fixtures/code/concurrent_require_fixture.rb (+4/-0)
spec/ruby/fixtures/code/d/load_fixture.rb.rb (+1/-0)
spec/ruby/fixtures/code/load_wrap_fixture.rb (+3/-0)
spec/ruby/fixtures/constants.rb (+12/-1)
spec/ruby/language/END_spec.rb (+22/-4)
spec/ruby/language/alias_spec.rb (+32/-1)
spec/ruby/language/block_spec.rb (+166/-178)
spec/ruby/language/case_spec.rb (+72/-45)
spec/ruby/language/class_spec.rb (+17/-14)
spec/ruby/language/class_variable_spec.rb (+30/-0)
spec/ruby/language/comment_spec.rb (+7/-9)
spec/ruby/language/constants_spec.rb (+57/-29)
spec/ruby/language/def_spec.rb (+8/-25)
spec/ruby/language/defined_spec.rb (+40/-0)
spec/ruby/language/delegation_spec.rb (+47/-52)
spec/ruby/language/file_spec.rb (+11/-11)
spec/ruby/language/fixtures/defined.rb (+3/-0)
spec/ruby/language/fixtures/freeze_magic_comment_two_literals.rb (+1/-1)
spec/ruby/language/fixtures/super.rb (+14/-0)
spec/ruby/language/fixtures/variables.rb (+72/-0)
spec/ruby/language/hash_spec.rb (+40/-35)
spec/ruby/language/heredoc_spec.rb (+4/-14)
spec/ruby/language/if_spec.rb (+43/-0)
spec/ruby/language/keyword_arguments_spec.rb (+395/-0)
spec/ruby/language/lambda_spec.rb (+31/-101)
spec/ruby/language/method_spec.rb (+222/-773)
spec/ruby/language/module_spec.rb (+16/-17)
spec/ruby/language/numbered_parameters_spec.rb (+73/-88)
spec/ruby/language/numbers_spec.rb (+1/-1)
spec/ruby/language/optional_assignments_spec.rb (+38/-0)
spec/ruby/language/pattern_matching_spec.rb (+1146/-1033)
spec/ruby/language/precedence_spec.rb (+38/-40)
spec/ruby/language/predefined_spec.rb (+277/-239)
spec/ruby/language/proc_spec.rb (+19/-16)
spec/ruby/language/range_spec.rb (+11/-11)
spec/ruby/language/regexp/character_classes_spec.rb (+7/-4)
spec/ruby/language/regexp/encoding_spec.rb (+17/-0)
spec/ruby/language/regexp/escapes_spec.rb (+78/-6)
spec/ruby/language/regexp/repetition_spec.rb (+2/-6)
spec/ruby/language/regexp_spec.rb (+3/-26)
spec/ruby/language/rescue_spec.rb (+16/-6)
spec/ruby/language/return_spec.rb (+31/-30)
spec/ruby/language/safe_spec.rb (+6/-104)
spec/ruby/language/send_spec.rb (+13/-41)
spec/ruby/language/singleton_class_spec.rb (+17/-0)
spec/ruby/language/source_encoding_spec.rb (+1/-1)
spec/ruby/language/string_spec.rb (+6/-40)
spec/ruby/language/super_spec.rb (+23/-0)
spec/ruby/language/symbol_spec.rb (+2/-2)
spec/ruby/language/undef_spec.rb (+8/-1)
spec/ruby/language/variables_spec.rb (+125/-10)
spec/ruby/language/yield_spec.rb (+13/-20)
spec/ruby/library/bigdecimal/add_spec.rb (+2/-2)
spec/ruby/library/bigdecimal/exponent_spec.rb (+0/-11)
spec/ruby/library/bigdecimal/remainder_spec.rb (+15/-13)
spec/ruby/library/bigdecimal/round_spec.rb (+10/-2)
spec/ruby/library/bigdecimal/shared/to_int.rb (+1/-1)
spec/ruby/library/bigdecimal/to_r_spec.rb (+12/-0)
spec/ruby/library/bigdecimal/to_s_spec.rb (+15/-12)
spec/ruby/library/cgi/cookie/name_spec.rb (+6/-6)
spec/ruby/library/cgi/cookie/parse_spec.rb (+5/-5)
spec/ruby/library/cgi/escapeURIComponent_spec.rb (+57/-0)
spec/ruby/library/cgi/initialize_spec.rb (+1/-1)
spec/ruby/library/coverage/result_spec.rb (+63/-14)
spec/ruby/library/coverage/running_spec.rb (+20/-0)
spec/ruby/library/coverage/start_spec.rb (+7/-1)
spec/ruby/library/coverage/supported_spec.rb (+32/-0)
spec/ruby/library/date/civil_spec.rb (+1/-6)
spec/ruby/library/date/deconstruct_keys_spec.rb (+44/-0)
spec/ruby/library/date/iso8601_spec.rb (+0/-9)
spec/ruby/library/date/new_spec.rb (+0/-1)
spec/ruby/library/date/parse_spec.rb (+6/-6)
spec/ruby/library/date/shared/valid_jd.rb (+4/-16)
spec/ruby/library/date/strftime_spec.rb (+4/-2)
spec/ruby/library/datetime/deconstruct_keys_spec.rb (+46/-0)
spec/ruby/library/datetime/rfc2822_spec.rb (+4/-0)
spec/ruby/library/datetime/strftime_spec.rb (+3/-2)
spec/ruby/library/datetime/to_time_spec.rb (+16/-2)
spec/ruby/library/delegate/delegate_class/respond_to_missing_spec.rb (+1/-0)
spec/ruby/library/delegate/delegator/taint_spec.rb (+0/-17)
spec/ruby/library/delegate/delegator/trust_spec.rb (+0/-16)
spec/ruby/library/delegate/delegator/untaint_spec.rb (+0/-18)
spec/ruby/library/delegate/delegator/untrust_spec.rb (+0/-17)
spec/ruby/library/erb/new_spec.rb (+16/-0)
spec/ruby/library/etc/confstr_spec.rb (+1/-1)
spec/ruby/library/etc/passwd_spec.rb (+1/-1)
spec/ruby/library/etc/sysconf_spec.rb (+1/-1)
spec/ruby/library/etc/sysconfdir_spec.rb (+1/-1)
spec/ruby/library/etc/systmpdir_spec.rb (+1/-1)
spec/ruby/library/expect/expect_spec.rb (+2/-1)
spec/ruby/library/fiber/current_spec.rb (+8/-13)
spec/ruby/library/fiber/resume_spec.rb (+9/-14)
spec/ruby/library/fiber/transfer_spec.rb (+7/-49)
spec/ruby/library/fiddle/handle/initialize_spec.rb (+10/-0)
spec/ruby/library/io-wait/fixtures/classes.rb (+12/-0)
spec/ruby/library/io-wait/wait_readable_spec.rb (+27/-0)
spec/ruby/library/io-wait/wait_spec.rb (+144/-0)
spec/ruby/library/io-wait/wait_writable_spec.rb (+20/-0)
spec/ruby/library/ipaddr/new_spec.rb (+8/-2)
spec/ruby/library/logger/device/close_spec.rb (+3/-12)
spec/ruby/library/logger/device/write_spec.rb (+3/-12)
spec/ruby/library/matrix/multiply_spec.rb (+2/-2)
spec/ruby/library/matrix/unitary_spec.rb (+2/-4)
spec/ruby/library/monitor/exit_spec.rb (+10/-0)
spec/ruby/library/net/ftp/shared/getbinaryfile.rb (+2/-2)
spec/ruby/library/net/ftp/shared/gettextfile.rb (+1/-1)
spec/ruby/library/net/ftp/shared/putbinaryfile.rb (+2/-2)
spec/ruby/library/net/ftp/shared/puttextfile.rb (+1/-1)
spec/ruby/library/net/ftp/storbinary_spec.rb (+1/-1)
spec/ruby/library/net/ftp/storlines_spec.rb (+1/-1)
spec/ruby/library/net/http/http/get_spec.rb (+7/-9)
spec/ruby/library/objectspace/dump_all_spec.rb (+112/-0)
spec/ruby/library/objectspace/dump_spec.rb (+70/-0)
spec/ruby/library/objectspace/fixtures/trace.rb (+5/-0)
spec/ruby/library/objectspace/trace_object_allocations_spec.rb (+18/-0)
spec/ruby/library/objectspace/trace_spec.rb (+15/-0)
spec/ruby/library/openssl/digest/append_spec.rb (+6/-0)
spec/ruby/library/openssl/digest/block_length_spec.rb (+44/-0)
spec/ruby/library/openssl/digest/digest_length_spec.rb (+44/-0)
spec/ruby/library/openssl/digest/digest_spec.rb (+6/-7)
spec/ruby/library/openssl/digest/initialize_spec.rb (+141/-0)
spec/ruby/library/openssl/digest/name_spec.rb (+16/-0)
spec/ruby/library/openssl/digest/reset_spec.rb (+36/-0)
spec/ruby/library/openssl/digest/shared/update.rb (+123/-0)
spec/ruby/library/openssl/digest/update_spec.rb (+6/-0)
spec/ruby/library/openssl/kdf/pbkdf2_hmac_spec.rb (+184/-0)
spec/ruby/library/openssl/kdf/scrypt_spec.rb (+207/-0)
spec/ruby/library/openssl/random/shared/random_bytes.rb (+1/-1)
spec/ruby/library/openssl/x509/name/verify_spec.rb (+78/-0)
spec/ruby/library/openstruct/method_missing_spec.rb (+3/-5)
spec/ruby/library/pathname/birthtime_spec.rb (+16/-0)
spec/ruby/library/pathname/glob_spec.rb (+40/-13)
spec/ruby/library/pathname/new_spec.rb (+0/-7)
spec/ruby/library/pathname/pathname_spec.rb (+4/-15)
spec/ruby/library/pathname/relative_path_from_spec.rb (+4/-0)
spec/ruby/library/pp/pp_spec.rb (+7/-0)
spec/ruby/library/rbconfig/unicode_emoji_version_spec.rb (+10/-15)
spec/ruby/library/rbconfig/unicode_version_spec.rb (+10/-15)
spec/ruby/library/readline/history/delete_at_spec.rb (+0/-9)
spec/ruby/library/readline/history/each_spec.rb (+0/-8)
spec/ruby/library/readline/history/element_reference_spec.rb (+0/-7)
spec/ruby/library/readline/history/pop_spec.rb (+0/-9)
spec/ruby/library/readline/history/shift_spec.rb (+0/-9)
spec/ruby/library/readline/readline_spec.rb (+0/-7)
spec/ruby/library/rubygems/gem/load_path_insert_index_spec.rb (+1/-1)
spec/ruby/library/set/comparison_spec.rb (+27/-29)
spec/ruby/library/set/divide_spec.rb (+30/-5)
spec/ruby/library/set/each_spec.rb (+1/-0)
spec/ruby/library/set/enumerable/to_set_spec.rb (+0/-8)
spec/ruby/library/set/initialize_clone_spec.rb (+10/-12)
spec/ruby/library/set/join_spec.rb (+20/-22)
spec/ruby/library/set/shared/inspect.rb (+15/-5)
spec/ruby/library/set/sortedset/sortedset_spec.rb (+7/-17)
spec/ruby/library/set/to_s_spec.rb (+1/-0)
spec/ruby/library/socket/addrinfo/initialize_spec.rb (+1/-1)
spec/ruby/library/socket/addrinfo/shared/to_sockaddr.rb (+1/-3)
spec/ruby/library/socket/basicsocket/recv_spec.rb (+19/-0)
spec/ruby/library/socket/basicsocket/send_spec.rb (+2/-2)
spec/ruby/library/socket/basicsocket/shutdown_spec.rb (+10/-10)
spec/ruby/library/socket/fixtures/classes.rb (+4/-2)
spec/ruby/library/socket/ipsocket/getaddress_spec.rb (+1/-1)
spec/ruby/library/socket/shared/pack_sockaddr.rb (+7/-0)
spec/ruby/library/socket/shared/partially_closable_sockets.rb (+1/-1)
spec/ruby/library/socket/socket/bind_spec.rb (+4/-0)
spec/ruby/library/socket/tcpserver/new_spec.rb (+6/-0)
spec/ruby/library/socket/tcpsocket/initialize_spec.rb (+21/-0)
spec/ruby/library/socket/tcpsocket/open_spec.rb (+1/-0)
spec/ruby/library/socket/tcpsocket/partially_closable_spec.rb (+1/-1)
spec/ruby/library/socket/tcpsocket/shared/new.rb (+18/-6)
spec/ruby/library/socket/udpsocket/new_spec.rb (+6/-0)
spec/ruby/library/socket/unixserver/accept_nonblock_spec.rb (+2/-5)
spec/ruby/library/socket/unixserver/accept_spec.rb (+1/-1)
spec/ruby/library/socket/unixserver/for_fd_spec.rb (+1/-1)
spec/ruby/library/socket/unixserver/new_spec.rb (+10/-2)
spec/ruby/library/socket/unixserver/open_spec.rb (+3/-3)
spec/ruby/library/socket/unixserver/shared/new.rb (+12/-14)
spec/ruby/library/socket/unixsocket/addr_spec.rb (+2/-3)
spec/ruby/library/socket/unixsocket/inspect_spec.rb (+2/-2)
spec/ruby/library/socket/unixsocket/local_address_spec.rb (+0/-2)
spec/ruby/library/socket/unixsocket/new_spec.rb (+10/-2)
spec/ruby/library/socket/unixsocket/open_spec.rb (+5/-5)
spec/ruby/library/socket/unixsocket/pair_spec.rb (+3/-4)
spec/ruby/library/socket/unixsocket/partially_closable_spec.rb (+2/-4)
spec/ruby/library/socket/unixsocket/path_spec.rb (+2/-4)
spec/ruby/library/socket/unixsocket/peeraddr_spec.rb (+2/-4)
spec/ruby/library/socket/unixsocket/recv_io_spec.rb (+2/-5)
spec/ruby/library/socket/unixsocket/recvfrom_spec.rb (+2/-5)
spec/ruby/library/socket/unixsocket/send_io_spec.rb (+2/-5)
spec/ruby/library/socket/unixsocket/shared/new.rb (+13/-15)
spec/ruby/library/stringio/append_spec.rb (+0/-14)
spec/ruby/library/stringio/each_line_spec.rb (+4/-0)
spec/ruby/library/stringio/each_spec.rb (+8/-0)
spec/ruby/library/stringio/gets_spec.rb (+4/-0)
spec/ruby/library/stringio/initialize_spec.rb (+89/-9)
spec/ruby/library/stringio/new_spec.rb (+10/-0)
spec/ruby/library/stringio/open_spec.rb (+10/-2)
spec/ruby/library/stringio/printf_spec.rb (+24/-3)
spec/ruby/library/stringio/putc_spec.rb (+15/-0)
spec/ruby/library/stringio/puts_spec.rb (+14/-0)
spec/ruby/library/stringio/read_nonblock_spec.rb (+11/-0)
spec/ruby/library/stringio/readline_spec.rb (+20/-0)
spec/ruby/library/stringio/readlines_spec.rb (+18/-0)
spec/ruby/library/stringio/reopen_spec.rb (+0/-47)
spec/ruby/library/stringio/set_encoding_spec.rb (+8/-0)
spec/ruby/library/stringio/shared/each.rb (+53/-5)
spec/ruby/library/stringio/shared/read.rb (+6/-0)
spec/ruby/library/stringio/shared/sysread.rb (+1/-1)
spec/ruby/library/stringio/shared/write.rb (+56/-12)
spec/ruby/library/stringio/truncate_spec.rb (+2/-10)
spec/ruby/library/stringio/ungetbyte_spec.rb (+1/-1)
spec/ruby/library/stringio/write_nonblock_spec.rb (+6/-0)
spec/ruby/library/stringscanner/check_spec.rb (+6/-8)
spec/ruby/library/stringscanner/check_until_spec.rb (+6/-0)
spec/ruby/library/stringscanner/exist_spec.rb (+6/-0)
spec/ruby/library/stringscanner/matched_size_spec.rb (+19/-2)
spec/ruby/library/stringscanner/scan_spec.rb (+17/-27)
spec/ruby/library/stringscanner/scan_until_spec.rb (+6/-0)
spec/ruby/library/stringscanner/search_full_spec.rb (+6/-0)
spec/ruby/library/stringscanner/shared/extract_range.rb (+0/-13)
spec/ruby/library/stringscanner/shared/extract_range_matched.rb (+0/-11)
spec/ruby/library/stringscanner/shared/peek.rb (+0/-10)
spec/ruby/library/stringscanner/size_spec.rb (+17/-0)
spec/ruby/library/stringscanner/skip_until_spec.rb (+6/-0)
spec/ruby/library/time/to_datetime_spec.rb (+17/-2)
spec/ruby/library/uri/generic/host_spec.rb (+6/-1)
spec/ruby/library/uri/generic/to_s_spec.rb (+6/-1)
spec/ruby/library/win32ole/win32ole/_getproperty_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/_invoke_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/codepage_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/connect_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/const_load_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/constants_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/create_guid_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/invoke_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/locale_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/new_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/ole_func_methods_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/ole_get_methods_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/ole_method_help_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/ole_method_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/ole_methods_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/ole_obj_help_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/ole_put_methods_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole/setproperty_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_event/new_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_event/on_event_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/dispid_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/event_interface_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/event_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/helpcontext_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/helpfile_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/helpstring_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/invkind_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/invoke_kind_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/name_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/new_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/offset_vtbl_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/params_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/return_type_detail_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/return_type_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/return_vtype_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/size_opt_params_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/size_params_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/to_s_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_method/visible_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_param/default_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_param/input_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_param/name_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_param/ole_type_detail_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_param/ole_type_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_param/optional_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_param/retval_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_param/to_s_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/guid_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/helpcontext_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/helpfile_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/helpstring_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/major_version_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/minor_version_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/name_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/new_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/ole_classes_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/ole_methods_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/ole_type_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/progid_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/progids_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/src_type_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/to_s_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/typekind_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/typelibs_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/variables_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_type/visible_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_variable/name_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_variable/ole_type_detail_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_variable/ole_type_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_variable/to_s_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_variable/value_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_variable/variable_kind_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_variable/varkind_spec.rb (+1/-0)
spec/ruby/library/win32ole/win32ole_variable/visible_spec.rb (+1/-0)
spec/ruby/library/yaml/fixtures/common.rb (+1/-1)
spec/ruby/library/yaml/to_yaml_spec.rb (+2/-10)
spec/ruby/library/zlib/crc_table_spec.rb (+74/-69)
spec/ruby/library/zlib/deflate/deflate_spec.rb (+5/-0)
spec/ruby/library/zlib/gzipreader/each_line_spec.rb (+1/-0)
spec/ruby/library/zlib/gzipreader/each_spec.rb (+1/-0)
spec/ruby/library/zlib/gzipreader/mtime_spec.rb (+11/-0)
spec/ruby/library/zlib/inflate/finish_spec.rb (+1/-0)
spec/ruby/library/zlib/inflate/inflate_spec.rb (+7/-0)
spec/ruby/optional/capi/binding_spec.rb (+15/-6)
spec/ruby/optional/capi/class_spec.rb (+55/-13)
spec/ruby/optional/capi/encoding_spec.rb (+91/-12)
spec/ruby/optional/capi/exception_spec.rb (+34/-0)
spec/ruby/optional/capi/ext/class_spec.c (+15/-30)
spec/ruby/optional/capi/ext/debug_spec.c (+1/-1)
spec/ruby/optional/capi/ext/encoding_spec.c (+36/-20)
spec/ruby/optional/capi/ext/exception_spec.c (+18/-1)
spec/ruby/optional/capi/ext/gc_spec.c (+34/-3)
spec/ruby/optional/capi/ext/globals_spec.c (+34/-0)
spec/ruby/optional/capi/ext/hash_spec.c (+9/-0)
spec/ruby/optional/capi/ext/integer_spec.c (+2/-3)
spec/ruby/optional/capi/ext/io_spec.c (+113/-3)
spec/ruby/optional/capi/ext/kernel_spec.c (+40/-11)
spec/ruby/optional/capi/ext/module_spec.c (+23/-33)
spec/ruby/optional/capi/ext/object_spec.c (+47/-18)
spec/ruby/optional/capi/ext/proc_spec.c (+74/-0)
spec/ruby/optional/capi/ext/range_spec.c (+1/-1)
spec/ruby/optional/capi/ext/regexp_spec.c (+7/-0)
spec/ruby/optional/capi/ext/rubyspec.h (+9/-30)
spec/ruby/optional/capi/ext/string_spec.c (+34/-9)
spec/ruby/optional/capi/ext/struct_spec.c (+4/-9)
spec/ruby/optional/capi/ext/symbol_spec.c (+11/-0)
spec/ruby/optional/capi/ext/thread_spec.c (+42/-1)
spec/ruby/optional/capi/ext/tracepoint_spec.c (+1/-1)
spec/ruby/optional/capi/ext/util_spec.c (+12/-9)
spec/ruby/optional/capi/fixtures/class.rb (+13/-0)
spec/ruby/optional/capi/fixtures/kernel.rb (+19/-0)
spec/ruby/optional/capi/fixtures/object.rb (+29/-0)
spec/ruby/optional/capi/gc_spec.rb (+24/-6)
spec/ruby/optional/capi/globals_spec.rb (+52/-2)
spec/ruby/optional/capi/hash_spec.rb (+16/-0)
spec/ruby/optional/capi/io_spec.rb (+112/-1)
spec/ruby/optional/capi/kernel_spec.rb (+151/-16)
spec/ruby/optional/capi/module_spec.rb (+19/-11)
spec/ruby/optional/capi/object_spec.rb (+71/-78)
spec/ruby/optional/capi/proc_spec.rb (+80/-28)
spec/ruby/optional/capi/rbasic_spec.rb (+0/-1)
spec/ruby/optional/capi/regexp_spec.rb (+16/-0)
spec/ruby/optional/capi/shared/rbasic.rb (+1/-35)
spec/ruby/optional/capi/spec_helper.rb (+6/-2)
spec/ruby/optional/capi/string_spec.rb (+81/-63)
spec/ruby/optional/capi/symbol_spec.rb (+8/-0)
spec/ruby/optional/capi/thread_spec.rb (+23/-15)
spec/ruby/optional/capi/time_spec.rb (+5/-0)
spec/ruby/optional/capi/util_spec.rb (+37/-68)
spec/ruby/security/cve_2018_16396_spec.rb (+0/-14)
spec/ruby/security/cve_2019_8323_spec.rb (+26/-28)
spec/ruby/security/cve_2019_8325_spec.rb (+35/-27)
spec/ruby/security/cve_2020_10663_spec.rb (+11/-14)
spec/ruby/shared/file/executable.rb (+35/-0)
spec/ruby/shared/file/executable_real.rb (+35/-0)
spec/ruby/shared/file/exist.rb (+0/-5)
spec/ruby/shared/file/readable.rb (+16/-0)
spec/ruby/shared/file/readable_real.rb (+16/-0)
spec/ruby/shared/file/writable.rb (+16/-0)
spec/ruby/shared/file/writable_real.rb (+16/-0)
spec/ruby/shared/kernel/at_exit.rb (+67/-0)
spec/ruby/shared/kernel/complex.rb (+133/-0)
spec/ruby/shared/kernel/fixtures/END.rb (+3/-0)
spec/ruby/shared/kernel/fixtures/at_exit.rb (+3/-0)
spec/ruby/shared/kernel/raise.rb (+32/-2)
spec/ruby/shared/process/exit.rb (+12/-0)
spec/ruby/shared/queue/deque.rb (+85/-0)
spec/ruby/shared/rational/Rational.rb (+33/-24)
spec/ruby/shared/rational/divmod.rb (+3/-3)
spec/ruby/shared/rational/exponent.rb (+4/-4)
spec/ruby/shared/rational/to_f.rb (+6/-0)
spec/ruby/shared/rational/truncate.rb (+26/-0)
spec/ruby/shared/sizedqueue/enque.rb (+86/-1)
spec/ruby/shared/sizedqueue/new.rb (+7/-2)
spec/ruby/shared/string/end_with.rb (+8/-1)
spec/ruby/shared/string/start_with.rb (+12/-0)
spec/ruby/shared/string/times.rb (+4/-26)
spec/ruby/shared/types/rb_num2dbl_fails.rb (+17/-0)
spec/ruby/spec_helper.rb (+9/-3)
spec/tags/ruby/command_line/dash_upper_u_tags.txt (+0/-2)
spec/tags/ruby/core/argf/gets_tags.txt (+1/-0)
spec/tags/ruby/core/argf/read_tags.txt (+1/-0)
spec/tags/ruby/core/array/collect_tags.txt (+2/-0)
spec/tags/ruby/core/array/filter_tags.txt (+1/-0)
spec/tags/ruby/core/array/initialize_tags.txt (+1/-0)
spec/tags/ruby/core/array/keep_if_tags.txt (+1/-0)
spec/tags/ruby/core/array/map_tags.txt (+2/-0)
spec/tags/ruby/core/array/pack/p_tags.txt (+0/-6)
spec/tags/ruby/core/array/reject_tags.txt (+1/-0)
spec/tags/ruby/core/array/select_tags.txt (+1/-0)
spec/tags/ruby/core/array/sort_by_tags.txt (+1/-0)
spec/tags/ruby/core/array/to_h_tags.txt (+1/-0)
spec/tags/ruby/core/array/zip_tags.txt (+1/-0)
spec/tags/ruby/core/basicobject/instance_eval_tags.txt (+3/-0)
spec/tags/ruby/core/dir/element_reference_tags.txt (+1/-4)
spec/tags/ruby/core/dir/glob_tags.txt (+5/-4)
spec/tags/ruby/core/enumerable/inject_tags.txt (+1/-0)
spec/tags/ruby/core/enumerable/reduce_tags.txt (+1/-0)
spec/tags/ruby/core/enumerator/generator/initialize_tags.txt (+1/-0)
spec/tags/ruby/core/enumerator/inspect_tags.txt (+1/-0)
spec/tags/ruby/core/enumerator/lazy/with_index_tags.txt (+1/-0)
spec/tags/ruby/core/env/delete_tags.txt (+1/-0)
spec/tags/ruby/core/env/has_key_tags.txt (+1/-0)
spec/tags/ruby/core/env/include_tags.txt (+1/-0)
spec/tags/ruby/core/env/key_tags.txt (+2/-0)
spec/tags/ruby/core/env/member_tags.txt (+1/-0)
spec/tags/ruby/core/exception/full_message_tags.txt (+1/-0)
spec/tags/ruby/core/exception/interrupt_tags.txt (+1/-0)
spec/tags/ruby/core/exception/no_method_error_tags.txt (+1/-0)
spec/tags/ruby/core/exception/top_level_tags.txt (+1/-0)
spec/tags/ruby/core/fiber/inspect_tags.txt (+6/-0)
spec/tags/ruby/core/fiber/raise_tags.txt (+3/-0)
spec/tags/ruby/core/file/new_tags.txt (+1/-0)
spec/tags/ruby/core/file/open_tags.txt (+1/-0)
spec/tags/ruby/core/file/printf_tags.txt (+3/-0)
spec/tags/ruby/core/file/utime_tags.txt (+1/-0)
spec/tags/ruby/core/gc/measure_total_time_tags.txt (+1/-0)
spec/tags/ruby/core/gc/stat_tags.txt (+0/-1)
spec/tags/ruby/core/gc/total_time_tags.txt (+2/-0)
spec/tags/ruby/core/integer/fdiv_tags.txt (+1/-0)
spec/tags/ruby/core/integer/left_shift_tags.txt (+1/-3)
spec/tags/ruby/core/integer/right_shift_tags.txt (+1/-0)
spec/tags/ruby/core/io/binwrite_tags.txt (+1/-0)
spec/tags/ruby/core/io/each_line_tags.txt (+1/-0)
spec/tags/ruby/core/io/each_tags.txt (+1/-0)
spec/tags/ruby/core/io/for_fd_tags.txt (+1/-0)
spec/tags/ruby/core/io/foreach_tags.txt (+3/-0)
spec/tags/ruby/core/io/gets_tags.txt (+2/-0)
spec/tags/ruby/core/io/initialize_tags.txt (+1/-0)
spec/tags/ruby/core/io/new_tags.txt (+1/-0)
spec/tags/ruby/core/io/nonblock_tags.txt (+2/-0)
spec/tags/ruby/core/io/open_tags.txt (+1/-0)
spec/tags/ruby/core/io/pipe_tags.txt (+1/-0)
spec/tags/ruby/core/io/pread_tags.txt (+2/-0)
spec/tags/ruby/core/io/pwrite_tags.txt (+2/-0)
spec/tags/ruby/core/io/read_tags.txt (+1/-0)
spec/tags/ruby/core/io/readline_tags.txt (+2/-0)
spec/tags/ruby/core/io/readlines_tags.txt (+5/-0)
spec/tags/ruby/core/io/set_encoding_by_bom_tags.txt (+1/-0)
spec/tags/ruby/core/io/set_encoding_tags.txt (+1/-0)
spec/tags/ruby/core/io/sysread_tags.txt (+2/-0)
spec/tags/ruby/core/io/write_tags.txt (+2/-0)
spec/tags/ruby/core/kernel/__dir___tags.txt (+1/-0)
spec/tags/ruby/core/kernel/at_exit_tags.txt (+1/-0)
spec/tags/ruby/core/kernel/lambda_tags.txt (+1/-0)
spec/tags/ruby/core/kernel/open_tags.txt (+2/-0)
spec/tags/ruby/core/kernel/printf_tags.txt (+6/-0)
spec/tags/ruby/core/kernel/remove_instance_variable_tags.txt (+2/-0)
spec/tags/ruby/core/kernel/require_tags.txt (+3/-0)
spec/tags/ruby/core/kernel/singleton_class_tags.txt (+2/-0)
spec/tags/ruby/core/kernel/sprintf_tags.txt (+8/-0)
spec/tags/ruby/core/main/using_tags.txt (+2/-0)
spec/tags/ruby/core/marshal/dump_tags.txt (+12/-0)
spec/tags/ruby/core/marshal/load_tags.txt (+12/-11)
spec/tags/ruby/core/marshal/restore_tags.txt (+12/-12)
spec/tags/ruby/core/matchdata/values_at_tags.txt (+1/-0)
spec/tags/ruby/core/module/autoload_tags.txt (+2/-0)
spec/tags/ruby/core/module/class_variables_tags.txt (+1/-0)
spec/tags/ruby/core/module/define_method_tags.txt (+5/-0)
spec/tags/ruby/core/module/instance_method_tags.txt (+1/-0)
spec/tags/ruby/core/module/method_added_tags.txt (+1/-0)
spec/tags/ruby/core/module/prepend_tags.txt (+1/-0)
spec/tags/ruby/core/module/refine_tags.txt (+5/-0)
spec/tags/ruby/core/module/ruby2_keywords_tags.txt (+2/-0)
spec/tags/ruby/core/objectspace/define_finalizer_tags.txt (+1/-0)
spec/tags/ruby/core/process/argv0_tags.txt (+5/-0)
spec/tags/ruby/core/process/clock_gettime_tags.txt (+5/-0)
spec/tags/ruby/core/process/detach_tags.txt (+1/-0)
spec/tags/ruby/core/process/status/wait_tags.txt (+1/-0)
spec/tags/ruby/core/process/times_tags.txt (+1/-0)
spec/tags/ruby/core/queue/initialize_tags.txt (+1/-0)
spec/tags/ruby/core/refinement/import_methods_tags.txt (+5/-0)
spec/tags/ruby/core/refinement/include_tags.txt (+1/-0)
spec/tags/ruby/core/refinement/prepend_tags.txt (+1/-0)
spec/tags/ruby/core/signal/trap_tags.txt (+3/-8)
spec/tags/ruby/core/string/index_tags.txt (+1/-0)
spec/tags/ruby/core/string/intern_tags.txt (+2/-0)
spec/tags/ruby/core/string/modulo_tags.txt (+4/-0)
spec/tags/ruby/core/string/slice_tags.txt (+0/-3)
spec/tags/ruby/core/string/start_with_tags.txt (+2/-0)
spec/tags/ruby/core/string/to_c_tags.txt (+2/-0)
spec/tags/ruby/core/string/to_sym_tags.txt (+2/-0)
spec/tags/ruby/core/string/tr_s_tags.txt (+1/-0)
spec/tags/ruby/core/string/tr_tags.txt (+1/-0)
spec/tags/ruby/core/string/uminus_tags.txt (+1/-0)
spec/tags/ruby/core/string/unpack/b_tags.txt (+1/-0)
spec/tags/ruby/core/string/unpack/m_tags.txt (+1/-0)
spec/tags/ruby/core/string/unpack/p_tags.txt (+0/-2)
spec/tags/ruby/core/struct/keyword_init_tags.txt (+1/-0)
spec/tags/ruby/core/symbol/end_with_tags.txt (+1/-0)
spec/tags/ruby/core/symbol/start_with_tags.txt (+1/-0)
spec/tags/ruby/core/symbol/to_proc_tags.txt (+1/-0)
spec/tags/ruby/core/thread/backtrace/location/absolute_path_tags.txt (+1/-1)
spec/tags/ruby/core/thread/native_thread_id_tags.txt (+1/-0)
spec/tags/ruby/core/thread/report_on_exception_tags.txt (+2/-0)
spec/tags/ruby/core/thread/terminate_tags.txt (+1/-0)
spec/tags/ruby/core/thread/to_s_tags.txt (+0/-11)
spec/tags/ruby/core/time/at_tags.txt (+1/-0)
spec/tags/ruby/core/time/gm_tags.txt (+2/-0)
spec/tags/ruby/core/time/local_tags.txt (+2/-0)
spec/tags/ruby/core/time/localtime_tags.txt (+1/-0)
spec/tags/ruby/core/time/mktime_tags.txt (+2/-0)
spec/tags/ruby/core/time/new_tags.txt (+5/-0)
spec/tags/ruby/core/time/now_tags.txt (+1/-0)
spec/tags/ruby/core/time/strftime_tags.txt (+4/-0)
spec/tags/ruby/core/time/utc_tags.txt (+5/-0)
spec/tags/ruby/core/time/zone_tags.txt (+1/-0)
spec/tags/ruby/core/tracepoint/allow_reentry_tags.txt (+2/-0)
spec/tags/ruby/core/unboundmethod/equal_value_tags.txt (+3/-0)
spec/tags/ruby/core/warning/element_set_tags.txt (+1/-0)
spec/tags/ruby/core/warning/warn_tags.txt (+2/-0)
spec/tags/ruby/language/END_tags.txt (+1/-1)
spec/tags/ruby/language/block_tags.txt (+2/-0)
spec/tags/ruby/language/class_variable_spec.txt (+1/-0)
spec/tags/ruby/language/class_variable_tags.txt (+1/-0)
spec/tags/ruby/language/def_tags.txt (+0/-2)
spec/tags/ruby/language/defined_tags.txt (+1/-0)
spec/tags/ruby/language/hash_tags.txt (+1/-2)
spec/tags/ruby/language/heredoc_tags.txt (+1/-0)
spec/tags/ruby/language/if_tags.txt (+1/-0)
spec/tags/ruby/language/keyword_arguments_tags.txt (+2/-0)
spec/tags/ruby/language/magic_comment_tags.txt (+0/-1)
spec/tags/ruby/language/method_tags.txt (+1/-0)
spec/tags/ruby/language/predefined_tags.txt (+4/-0)
spec/tags/ruby/language/range_tags.txt (+1/-0)
spec/tags/ruby/language/return_tags.txt (+1/-0)
spec/tags/ruby/language/singleton_class_tags.txt (+1/-0)
spec/tags/ruby/language/variables_tags.txt (+2/-0)
spec/tags/ruby/language/yield_tags.txt (+1/-0)
spec/tags/ruby/library/bigdecimal/BigDecimal_tags.txt (+0/-1)
spec/tags/ruby/library/datetime/to_time_tags.txt (+1/-0)
spec/tags/ruby/library/etc/getlogin_tags.txt (+1/-1)
spec/tags/ruby/library/fiber/current_tags.txt (+2/-0)
spec/tags/ruby/library/fiber/resume_tags.txt (+1/-0)
spec/tags/ruby/library/fiber/transfer_tags.txt (+2/-0)
spec/tags/ruby/library/fiddle/handle/initialize_tags.txt (+1/-0)
spec/tags/ruby/library/io-wait/wait_readable_tags.txt (+3/-0)
spec/tags/ruby/library/io-wait/wait_tags.txt (+11/-0)
spec/tags/ruby/library/logger/logger/new_tags.txt (+1/-1)
spec/tags/ruby/library/objectspace/dump_all_tags.txt (+7/-0)
spec/tags/ruby/library/objectspace/dump_tags.txt (+8/-0)
spec/tags/ruby/library/objectspace/trace_object_allocations_tags.txt (+1/-0)
spec/tags/ruby/library/objectspace/trace_tags.txt (+1/-0)
spec/tags/ruby/library/openssl/digest/append_tags.txt (+8/-0)
spec/tags/ruby/library/openssl/digest/initialize_tags.txt (+13/-0)
spec/tags/ruby/library/openssl/digest/name_tags.txt (+1/-0)
spec/tags/ruby/library/openssl/digest/update_tags.txt (+8/-0)
spec/tags/ruby/library/openssl/kdf/pbkdf2_hmac_tags.txt (+9/-0)
spec/tags/ruby/library/openssl/kdf/scrypt_tags.txt (+29/-0)
spec/tags/ruby/library/readline/readline_tags.txt (+0/-1)
spec/tags/ruby/library/set/divide_tags.txt (+1/-0)
spec/tags/ruby/library/set/sortedset/sortedset_tags.txt (+1/-0)
spec/tags/ruby/library/socket/addrinfo/initialize_tags.txt (+1/-0)
spec/tags/ruby/library/socket/socket/getservbyname_tags.txt (+1/-0)
spec/tags/ruby/library/socket/socket/pack_sockaddr_in_tags.txt (+1/-0)
spec/tags/ruby/library/socket/socket/sockaddr_in_tags.txt (+1/-0)
spec/tags/ruby/library/socket/tcpserver/initialize_tags.txt (+1/-0)
spec/tags/ruby/library/socket/udpsocket/send_tags.txt (+1/-0)
spec/tags/ruby/library/socket/unixserver/accept_nonblock_tags.txt (+2/-2)
spec/tags/ruby/library/stringio/each_line_tags.txt (+2/-0)
spec/tags/ruby/library/stringio/each_tags.txt (+1/-0)
spec/tags/ruby/library/stringio/initialize_tags.txt (+4/-0)
spec/tags/ruby/library/stringio/printf_tags.txt (+3/-0)
spec/tags/ruby/library/stringscanner/scan_tags.txt (+1/-0)
spec/tags/ruby/library/syslog/log_tags.txt (+0/-4)
spec/tags/ruby/library/time/to_datetime_tags.txt (+1/-0)
spec/tags/ruby/library/zlib/deflate/deflate_tags.txt (+1/-0)
spec/tags/ruby/library/zlib/inflate/inflate_tags.txt (+1/-0)
test/check_versions.sh (+4/-4)
test/jruby/compiler/test_jrubyc.rb (+30/-0)
test/jruby/test_array.rb (+6/-27)
test/jruby/test_command_line_switches.rb (+12/-21)
test/jruby/test_comparable.rb (+2/-2)
test/jruby/test_date.rb (+8/-8)
test/jruby/test_dir.rb (+0/-5)
test/jruby/test_dup_clone_freeze.rb (+41/-0)
test/jruby/test_file.rb (+9/-12)
test/jruby/test_higher_javasupport.rb (+21/-27)
test/jruby/test_kernel.rb (+24/-0)
test/jruby/test_load.rb (+1/-13)
test/jruby/test_marshal_gemspec.rb (+1/-1)
test/jruby/test_method.rb (+1/-16)
test/jruby/test_method_cache.rb (+4/-4)
test/jruby/test_pack.rb (+0/-10)
test/jruby/test_pathname.rb (+0/-38)
test/jruby/test_set.rb (+1/-66)
test/jruby/test_socket.rb (+7/-0)
test/jruby/test_tempfile_cleanup.rb (+3/-2)
test/jruby/test_thread.rb (+14/-27)
test/jruby/test_time.rb (+2/-4)
test/mri.core.index (+47/-19)
test/mri.extra.index (+9/-3)
test/mri.stdlib.index (+80/-214)
test/mri/-ext-/array/test_resize.rb (+6/-0)
test/mri/-ext-/array/test_to_ary_concat.rb (+20/-0)
test/mri/-ext-/bignum/test_big2str.rb (+5/-5)
test/mri/-ext-/bignum/test_div.rb (+4/-4)
test/mri/-ext-/bignum/test_mul.rb (+26/-26)
test/mri/-ext-/bignum/test_pack.rb (+224/-224)
test/mri/-ext-/bignum/test_str2big.rb (+6/-6)
test/mri/-ext-/bug_reporter/test_bug_reporter.rb (+4/-1)
test/mri/-ext-/debug/test_debug.rb (+1/-1)
test/mri/-ext-/debug/test_profile_frames.rb (+11/-5)
test/mri/-ext-/float/test_nextafter.rb (+1/-1)
test/mri/-ext-/funcall/test_passing_block.rb (+39/-2)
test/mri/-ext-/gvl/test_last_thread.rb (+1/-1)
test/mri/-ext-/gvl/test_ubf_async_safe.rb (+20/-0)
test/mri/-ext-/integer/test_integer.rb (+5/-5)
test/mri/-ext-/iseq_load/test_iseq_load.rb (+4/-2)
test/mri/-ext-/iter/test_yield_block.rb (+1/-1)
test/mri/-ext-/marshal/test_internal_ivar.rb (+6/-2)
test/mri/-ext-/num2int/test_num2int.rb (+2/-2)
test/mri/-ext-/popen_deadlock/test_popen_deadlock.rb (+1/-1)
test/mri/-ext-/postponed_job/test_postponed_job.rb (+9/-2)
test/mri/-ext-/rational/test_rat.rb (+41/-3)
test/mri/-ext-/string/test_capacity.rb (+45/-7)
test/mri/-ext-/string/test_cstr.rb (+4/-4)
test/mri/-ext-/string/test_ellipsize.rb (+1/-1)
test/mri/-ext-/string/test_enc_str_buf_cat.rb (+9/-0)
test/mri/-ext-/string/test_fstring.rb (+20/-29)
test/mri/-ext-/string/test_interned_str.rb (+12/-0)
test/mri/-ext-/string/test_modify_expand.rb (+1/-2)
test/mri/-ext-/string/test_normalize.rb (+4/-4)
test/mri/-ext-/string/test_rb_str_dup.rb (+4/-2)
test/mri/-ext-/struct/test_duplicate.rb (+2/-2)
test/mri/-ext-/symbol/noninterned_name.rb (+2/-0)
test/mri/-ext-/symbol/test_inadvertent_creation.rb (+10/-11)
test/mri/-ext-/test_enumerator_kw.rb (+11/-0)
test/mri/-ext-/test_notimplement.rb (+7/-0)
test/mri/-ext-/test_printf.rb (+2/-11)
test/mri/-ext-/test_random.rb (+27/-0)
test/mri/-ext-/test_scan_args.rb (+50/-22)
test/mri/-ext-/thread_fd/test_thread_fd_close.rb (+25/-0)
test/mri/-ext-/tracepoint/test_tracepoint.rb (+16/-8)
test/mri/-ext-/wait/test_wait.rb (+36/-0)
test/mri/-ext-/win32/test_console_attr.rb (+7/-7)
test/mri/benchmark/test_benchmark.rb (+12/-7)
test/mri/bigdecimal/helper.rb (+39/-0)
test/mri/bigdecimal/test_bigdecimal.rb (+483/-66)
test/mri/bigdecimal/test_bigdecimal_util.rb (+56/-6)
test/mri/bigdecimal/test_bigmath.rb (+1/-1)
test/mri/bigdecimal/test_ractor.rb (+23/-0)
test/mri/cgi/test_cgi_core.rb (+4/-0)
test/mri/cgi/test_cgi_multipart.rb (+1/-2)
test/mri/cgi/test_cgi_util.rb (+72/-35)
test/mri/coverage/test_coverage.rb (+212/-0)
test/mri/csv/helper.rb (+25/-1)
test/mri/csv/interface/test_read.rb (+102/-8)
test/mri/csv/interface/test_read_write.rb (+75/-2)
test/mri/csv/interface/test_write.rb (+38/-4)
test/mri/csv/parse/test_convert.rb (+1/-1)
test/mri/csv/parse/test_general.rb (+18/-4)
test/mri/csv/parse/test_header.rb (+2/-2)
test/mri/csv/parse/test_invalid.rb (+16/-0)
test/mri/csv/parse/test_rewind.rb (+2/-2)
test/mri/csv/parse/test_skip_lines.rb (+13/-0)
test/mri/csv/parse/test_strip.rb (+64/-0)
test/mri/csv/test_encodings.rb (+35/-11)
test/mri/csv/test_features.rb (+18/-4)
test/mri/csv/test_row.rb (+3/-0)
test/mri/csv/test_table.rb (+2/-2)
test/mri/csv/write/test_converters.rb (+4/-4)
test/mri/csv/write/test_force_quotes.rb (+78/-0)
test/mri/csv/write/test_general.rb (+18/-0)
test/mri/date/test_date.rb (+25/-0)
test/mri/date/test_date_arith.rb (+4/-2)
test/mri/date/test_date_conv.rb (+18/-0)
test/mri/date/test_date_marshal.rb (+7/-0)
test/mri/date/test_date_new.rb (+66/-12)
test/mri/date/test_date_parse.rb (+115/-9)
test/mri/date/test_date_ractor.rb (+27/-0)
test/mri/date/test_date_strftime.rb (+13/-5)
test/mri/date/test_date_strptime.rb (+10/-9)
test/mri/date/test_switch_hitter.rb (+10/-31)
test/mri/dbm/test_dbm.rb (+0/-1)
test/mri/did_you_mean/core_ext/test_name_error_extension.rb (+49/-0)
test/mri/did_you_mean/edit_distance/test_jaro_winkler.rb (+36/-0)
test/mri/did_you_mean/fixtures/book.rb (+4/-0)
test/mri/did_you_mean/fixtures/mini_dir.yml (+15/-0)
test/mri/did_you_mean/fixtures/rspec_dir.yml (+112/-0)
test/mri/did_you_mean/helper.rb (+33/-0)
test/mri/did_you_mean/spell_checking/test_class_name_check.rb (+81/-0)
test/mri/did_you_mean/spell_checking/test_key_name_check.rb (+54/-0)
test/mri/did_you_mean/spell_checking/test_method_name_check.rb (+147/-0)
test/mri/did_you_mean/spell_checking/test_pattern_key_name_check.rb (+20/-0)
test/mri/did_you_mean/spell_checking/test_require_path_check.rb (+32/-0)
test/mri/did_you_mean/spell_checking/test_uncorrectable_name_check.rb (+15/-0)
test/mri/did_you_mean/spell_checking/test_variable_name_check.rb (+140/-0)
test/mri/did_you_mean/test_spell_checker.rb (+78/-0)
test/mri/did_you_mean/test_tree_spell_checker.rb (+170/-0)
test/mri/did_you_mean/test_verbose_formatter.rb (+23/-0)
test/mri/did_you_mean/tree_spell/change_word.rb (+61/-0)
test/mri/did_you_mean/tree_spell/human_typo.rb (+69/-0)
test/mri/did_you_mean/tree_spell/test_change_word.rb (+38/-0)
test/mri/did_you_mean/tree_spell/test_human_typo.rb (+24/-0)
test/mri/digest/test_digest.rb (+4/-4)
test/mri/digest/test_digest_extend.rb (+1/-1)
test/mri/digest/test_ractor.rb (+101/-0)
test/mri/drb/drbtest.rb (+24/-12)
test/mri/drb/test_drb.rb (+49/-9)
test/mri/drb/test_drbobject.rb (+69/-0)
test/mri/drb/test_drbssl.rb (+2/-3)
test/mri/drb/ut_drb.rb (+21/-0)
test/mri/dtrace/helper.rb (+15/-8)
test/mri/dtrace/test_function_entry.rb (+1/-1)
test/mri/dtrace/test_require.rb (+6/-0)
test/mri/dtrace/test_singleton_function.rb (+1/-1)
test/mri/erb/test_erb.rb (+21/-7)
test/mri/erb/test_erb_command.rb (+7/-7)
test/mri/error_highlight/test_error_highlight.rb (+1197/-0)
test/mri/etc/test_etc.rb (+26/-2)
test/mri/excludes/DRbTests/TestDRbMserver.rb (+1/-0)
test/mri/excludes/FTPTest.rb (+5/-0)
test/mri/excludes/HTTPResponseTest.rb (+2/-0)
test/mri/excludes/IMAPTest.rb (+17/-1)
test/mri/excludes/Net/TestSSLContext.rb (+9/-0)
test/mri/excludes/Net/TestStarttls.rb (+10/-0)
test/mri/excludes/OpenSSL/TestASN1.rb (+14/-0)
test/mri/excludes/OpenSSL/TestBN.rb (+12/-0)
test/mri/excludes/OpenSSL/TestCipher.rb (+4/-0)
test/mri/excludes/OpenSSL/TestConfig.rb (+4/-0)
test/mri/excludes/OpenSSL/TestDigest.rb (+2/-0)
test/mri/excludes/OpenSSL/TestEC.rb (+13/-0)
test/mri/excludes/OpenSSL/TestEOF1.rb (+1/-0)
test/mri/excludes/OpenSSL/TestEOF1LowlevelSocket.rb (+2/-1)
test/mri/excludes/OpenSSL/TestEOF2.rb (+1/-0)
test/mri/excludes/OpenSSL/TestEOF2LowlevelSocket.rb (+2/-1)
test/mri/excludes/OpenSSL/TestHMAC.rb (+2/-0)
test/mri/excludes/OpenSSL/TestNSSPI.rb (+2/-1)
test/mri/excludes/OpenSSL/TestOCSP.rb (+4/-1)
test/mri/excludes/OpenSSL/TestPKCS12.rb (+5/-1)
test/mri/excludes/OpenSSL/TestPKCS7.rb (+2/-0)
test/mri/excludes/OpenSSL/TestPKey.rb (+7/-0)
test/mri/excludes/OpenSSL/TestPKeyDH.rb (+5/-0)
test/mri/excludes/OpenSSL/TestPKeyDSA.rb (+2/-1)
test/mri/excludes/OpenSSL/TestPKeyRSA.rb (+12/-0)
test/mri/excludes/OpenSSL/TestPair.rb (+3/-0)
test/mri/excludes/OpenSSL/TestPairLowlevelSocket.rb (+5/-0)
test/mri/excludes/OpenSSL/TestSSL.rb (+34/-8)
test/mri/excludes/OpenSSL/TestSSLSession.rb (+3/-0)
test/mri/excludes/OpenSSL/TestX509Attribute.rb (+4/-0)
test/mri/excludes/OpenSSL/TestX509CRL.rb (+4/-0)
test/mri/excludes/OpenSSL/TestX509Certificate.rb (+9/-1)
test/mri/excludes/OpenSSL/TestX509Extension.rb (+1/-0)
test/mri/excludes/OpenSSL/TestX509Name.rb (+5/-0)
test/mri/excludes/OpenSSL/TestX509Request.rb (+4/-0)
test/mri/excludes/OpenSSL/TestX509Store.rb (+5/-0)
test/mri/excludes/Rational_Test.rb (+1/-7)
test/mri/excludes/Rinda/TestRingFinger.rb (+4/-0)
test/mri/excludes/Rinda/TestRingServer.rb (+6/-0)
test/mri/excludes/Rinda/TupleSpaceProxyTest.rb (+5/-0)
test/mri/excludes/TestArgf.rb (+4/-11)
test/mri/excludes/TestArithmeticSequence.rb (+1/-0)
test/mri/excludes/TestArray.rb (+1/-4)
test/mri/excludes/TestArraySubclass.rb (+11/-0)
test/mri/excludes/TestAutoload.rb (+2/-0)
test/mri/excludes/TestBigDecimal.rb (+3/-12)
test/mri/excludes/TestClass.rb (+1/-1)
test/mri/excludes/TestCoverage.rb (+16/-15)
test/mri/excludes/TestDefined.rb (+0/-4)
test/mri/excludes/TestEnumerable.rb (+0/-1)
test/mri/excludes/TestEnumerator.rb (+1/-0)
test/mri/excludes/TestException.rb (+0/-1)
test/mri/excludes/TestExtLibs.rb (+5/-0)
test/mri/excludes/TestFiber.rb (+2/-0)
test/mri/excludes/TestFiberMutex.rb (+1/-0)
test/mri/excludes/TestGc.rb (+6/-11)
test/mri/excludes/TestHash.rb (+9/-11)
test/mri/excludes/TestHash/TestSubHash.rb (+14/-9)
test/mri/excludes/TestIO.rb (+2/-0)
test/mri/excludes/TestIO_Console.rb (+5/-0)
test/mri/excludes/TestIO_M17N.rb (+4/-0)
test/mri/excludes/TestIRB/ExtendCommand.rb (+1/-0)
test/mri/excludes/TestIRB/TestColor.rb (+4/-0)
test/mri/excludes/TestIRB/TestColorPrinter.rb (+1/-0)
test/mri/excludes/TestIRB/TestCompletion.rb (+1/-0)
test/mri/excludes/TestIRB/TestContext.rb (+7/-0)
test/mri/excludes/TestIRB/TestRaiseNoBacktraceException.rb (+2/-0)
test/mri/excludes/TestIRB/TestRubyLex.rb (+4/-0)
test/mri/excludes/TestKeywordArguments.rb (+2/-0)
test/mri/excludes/TestLambdaParameters.rb (+2/-0)
test/mri/excludes/TestLazyEnumerator.rb (+1/-0)
test/mri/excludes/TestM17NComb.rb (+1/-0)
test/mri/excludes/TestMarshal.rb (+0/-2)
test/mri/excludes/TestMethod.rb (+1/-7)
test/mri/excludes/TestModule.rb (+2/-5)
test/mri/excludes/TestMonitor.rb (+1/-0)
test/mri/excludes/TestObjSpace.rb (+43/-0)
test/mri/excludes/TestOpenURISSL.rb (+2/-0)
test/mri/excludes/TestParse.rb (+6/-0)
test/mri/excludes/TestProc.rb (+1/-3)
test/mri/excludes/TestProcess.rb (+0/-1)
test/mri/excludes/TestRDocGeneratorJsonIndex.rb (+1/-0)
test/mri/excludes/TestRDocMarkupToHtml.rb (+1/-0)
test/mri/excludes/TestRDocOptions.rb (+3/-0)
test/mri/excludes/TestRDocParserRuby.rb (+1/-0)
test/mri/excludes/TestReadline.rb (+24/-5)
test/mri/excludes/TestRegexp.rb (+0/-1)
test/mri/excludes/TestRelineAsReadline.rb (+5/-0)
test/mri/excludes/TestResolvDNS.rb (+1/-0)
test/mri/excludes/TestRipper/Lexer.rb (+3/-0)
test/mri/excludes/TestRipper/ParserEvents.rb (+1/-0)
test/mri/excludes/TestRipper/Ripper.rb (+2/-0)
test/mri/excludes/TestRipper/Ripper/TestInput.rb (+2/-0)
test/mri/excludes/TestRipper/ScannerEvents.rb (+3/-3)
test/mri/excludes/TestRipper/Sexp.rb (+2/-0)
test/mri/excludes/TestSetTraceFunc.rb (+15/-0)
test/mri/excludes/TestSocketAddrinfo.rb (+1/-0)
test/mri/excludes/TestSocket_UNIXSocket.rb (+1/-0)
test/mri/excludes/TestSprintfComb.rb (+56/-2)
test/mri/excludes/TestString.rb (+2/-0)
test/mri/excludes/TestString2.rb (+2/-0)
test/mri/excludes/TestStringIO.rb (+1/-0)
test/mri/excludes/TestSubHash.rb (+2/-0)
test/mri/excludes/TestSuper.rb (+0/-1)
test/mri/excludes/TestSymbol.rb (+2/-0)
test/mri/excludes/TestSyntax.rb (+19/-1)
test/mri/excludes/TestThread.rb (+1/-0)
test/mri/excludes/TestTime.rb (+7/-1)
test/mri/excludes/TestTracer.rb (+4/-0)
test/mri/excludes/URI/TestCommon.rb (+1/-0)
test/mri/excludes_wip/CGIUtilTest.rb (+1/-0)
test/mri/excludes_wip/PPTestModule/PPSingleLineTest.rb (+1/-0)
test/mri/excludes_wip/Rational_Test.rb (+1/-0)
test/mri/excludes_wip/TC_Set.rb (+1/-0)
test/mri/excludes_wip/TC_SortedSet.rb (+1/-0)
test/mri/excludes_wip/TestArray.rb (+1/-0)
test/mri/excludes_wip/TestArraySubclass.rb (+1/-0)
test/mri/excludes_wip/TestAssignment.rb (+1/-0)
test/mri/excludes_wip/TestAutoload.rb (+3/-0)
test/mri/excludes_wip/TestBacktrace.rb (+7/-0)
test/mri/excludes_wip/TestClass.rb (+4/-0)
test/mri/excludes_wip/TestComparable.rb (+1/-0)
test/mri/excludes_wip/TestDateConv.rb (+1/-0)
test/mri/excludes_wip/TestDateNew.rb (+5/-0)
test/mri/excludes_wip/TestDateParse.rb (+3/-0)
test/mri/excludes_wip/TestDateStrptime.rb (+2/-0)
test/mri/excludes_wip/TestDefined.rb (+8/-0)
test/mri/excludes_wip/TestDelegateClass.rb (+1/-0)
test/mri/excludes_wip/TestDir.rb (+2/-0)
test/mri/excludes_wip/TestEncoding.rb (+1/-0)
test/mri/excludes_wip/TestEncodingConverter.rb (+1/-0)
test/mri/excludes_wip/TestErbCommand.rb (+3/-0)
test/mri/excludes_wip/TestException.rb (+8/-0)
test/mri/excludes_wip/TestFiber.rb (+5/-0)
test/mri/excludes_wip/TestFileExhaustive.rb (+3/-0)
test/mri/excludes_wip/TestFrozenError.rb (+3/-0)
test/mri/excludes_wip/TestGc.rb (+2/-0)
test/mri/excludes_wip/TestIO.rb (+8/-0)
test/mri/excludes_wip/TestIO_Console.rb (+11/-0)
test/mri/excludes_wip/TestIO_M17N.rb (+2/-0)
test/mri/excludes_wip/TestKeywordArguments.rb (+4/-0)
test/mri/excludes_wip/TestKeywordArgumentsSymProcRefinements.rb (+1/-0)
test/mri/excludes_wip/TestLazyEnumerator.rb (+1/-0)
test/mri/excludes_wip/TestM17N.rb (+1/-0)
test/mri/excludes_wip/TestMarshal.rb (+8/-0)
test/mri/excludes_wip/TestMarshal/TestMarshalFreeze.rb (+4/-0)
test/mri/excludes_wip/TestMarshal/TestMarshalFreezeProc.rb (+4/-0)
test/mri/excludes_wip/TestMethod.rb (+11/-0)
test/mri/excludes_wip/TestModule.rb (+12/-0)
test/mri/excludes_wip/TestNameError.rb (+4/-0)
test/mri/excludes_wip/TestNetHTTPS.rb (+5/-0)
test/mri/excludes_wip/TestNetHTTP_v1_2.rb (+1/-0)
test/mri/excludes_wip/TestNumeric.rb (+1/-0)
test/mri/excludes_wip/TestObject.rb (+2/-0)
test/mri/excludes_wip/TestObjectSpace.rb (+3/-0)
test/mri/excludes_wip/TestPack.rb (+1/-0)
test/mri/excludes_wip/TestParse.rb (+22/-0)
test/mri/excludes_wip/TestPatternMatching.rb (+10/-0)
test/mri/excludes_wip/TestPipe/WithConversion.rb (+2/-0)
test/mri/excludes_wip/TestProc.rb (+4/-0)
test/mri/excludes_wip/TestProcess.rb (+4/-0)
test/mri/excludes_wip/TestRefinement.rb (+8/-0)
test/mri/excludes_wip/TestRegexp.rb (+3/-0)
test/mri/excludes_wip/TestRequire.rb (+3/-0)
test/mri/excludes_wip/TestRubyLiteral.rb (+1/-0)
test/mri/excludes_wip/TestRubyOptions.rb (+5/-0)
test/mri/excludes_wip/TestSecureRandom.rb (+1/-0)
test/mri/excludes_wip/TestSocketAddrinfo.rb (+1/-0)
test/mri/excludes_wip/TestSocket_TCPSocket.rb (+1/-0)
test/mri/excludes_wip/TestSocket_UDPSocket.rb (+3/-0)
test/mri/excludes_wip/TestSprintfComb.rb (+1/-0)
test/mri/excludes_wip/TestStack.rb (+3/-0)
test/mri/excludes_wip/TestString.rb (+2/-0)
test/mri/excludes_wip/TestString2.rb (+7/-0)
test/mri/excludes_wip/TestStringIO.rb (+11/-0)
test/mri/excludes_wip/TestStringScannerFixedAnchor.rb (+8/-0)
test/mri/excludes_wip/TestStruct/SubStruct.rb (+5/-0)
test/mri/excludes_wip/TestStruct/TopStruct.rb (+5/-0)
test/mri/excludes_wip/TestSuper.rb (+1/-0)
test/mri/excludes_wip/TestSymbol.rb (+1/-0)
test/mri/excludes_wip/TestSyslogLogger.rb (+15/-0)
test/mri/excludes_wip/TestTempfile.rb (+2/-0)
test/mri/excludes_wip/TestThread.rb (+1/-0)
test/mri/excludes_wip/TestThreadConditionVariable.rb (+3/-0)
test/mri/excludes_wip/TestTime.rb (+8/-0)
test/mri/excludes_wip/TestTmpdir.rb (+1/-0)
test/mri/excludes_wip/TestTranscode.rb (+2/-0)
test/mri/excludes_wip/TestVariable.rb (+5/-0)
test/mri/excludes_wip/TestWeakRef.rb (+1/-0)
test/mri/excludes_wip/TestZlib.rb (+3/-0)
test/mri/excludes_wip/TestZlibGzipFile.rb (+2/-0)
test/mri/excludes_wip/TestZlibInflate.rb (+7/-0)
test/mri/excludes_wip/YAMLStoreTest.rb (+1/-0)
test/mri/fiber/autoload.rb (+3/-0)
test/mri/fiber/http.rb (+54/-0)
test/mri/fiber/scheduler.rb (+467/-0)
test/mri/fiber/test_address_resolve.rb (+278/-0)
test/mri/fiber/test_backtrace.rb (+22/-0)
test/mri/fiber/test_enumerator.rb (+51/-0)
test/mri/fiber/test_io.rb (+175/-0)
test/mri/fiber/test_io_buffer.rb (+125/-0)
test/mri/fiber/test_mutex.rb (+220/-0)
test/mri/fiber/test_process.rb (+36/-0)
test/mri/fiber/test_ractor.rb (+23/-0)
test/mri/fiber/test_scheduler.rb (+185/-0)
test/mri/fiber/test_sleep.rb (+71/-0)
test/mri/fiber/test_thread.rb (+108/-0)
test/mri/fiber/test_timeout.rb (+51/-0)
test/mri/fiddle/helper.rb (+66/-11)
test/mri/fiddle/test_c_struct_builder.rb (+69/-0)
test/mri/fiddle/test_c_struct_entry.rb (+109/-21)
test/mri/fiddle/test_c_union_entity.rb (+8/-7)
test/mri/fiddle/test_closure.rb (+25/-0)
test/mri/fiddle/test_cparser.rb (+163/-6)
test/mri/fiddle/test_func.rb (+66/-22)
test/mri/fiddle/test_function.rb (+114/-4)
test/mri/fiddle/test_handle.rb (+34/-24)
test/mri/fiddle/test_import.rb (+348/-24)
test/mri/fiddle/test_memory_view.rb (+143/-0)
test/mri/fiddle/test_pinned.rb (+28/-0)
test/mri/fiddle/test_pointer.rb (+86/-31)
test/mri/fileutils/test_fileutils.rb (+131/-5)
test/mri/fixtures/fake_sorted_set_gem/sorted_set.rb (+9/-0)
test/mri/gdbm/test_gdbm.rb (+1/-1)
test/mri/io/console/test_io_console.rb (+9/-3)
test/mri/io/wait/test_io_wait.rb (+17/-5)
test/mri/io/wait/test_io_wait_uncommon.rb (+18/-18)
test/mri/io/wait/test_ractor.rb (+18/-0)
test/mri/irb/test_cmd.rb (+558/-0)
test/mri/irb/test_color.rb (+277/-0)
test/mri/irb/test_color_printer.rb (+68/-0)
test/mri/irb/test_completion.rb (+103/-3)
test/mri/irb/test_context.rb (+553/-3)
test/mri/irb/test_history.rb (+211/-0)
test/mri/irb/test_init.rb (+69/-0)
test/mri/irb/test_option.rb (+2/-1)
test/mri/irb/test_raise_no_backtrace_exception.rb (+41/-1)
test/mri/irb/test_ruby_lex.rb (+623/-0)
test/mri/irb/test_workspace.rb (+41/-7)
test/mri/irb/yamatanooroti/test_rendering.rb (+228/-0)
test/mri/lib/jit_support.rb (+28/-8)
test/mri/lib/with_different_ofs.rb (+4/-0)
test/mri/logger/helper.rb (+13/-0)
test/mri/matrix/test_matrix.rb (+42/-0)
test/mri/mkmf/base.rb (+4/-2)
test/mri/mkmf/test_egrep_cpp.rb (+15/-0)
test/mri/mkmf/test_flags.rb (+1/-1)
test/mri/mkmf/test_install.rb (+30/-0)
test/mri/mkmf/test_libs.rb (+8/-1)
test/mri/mkmf/test_mkmf.rb (+15/-0)
test/mri/monitor/test_monitor.rb (+81/-20)
test/mri/net/ftp/test_ftp.rb (+170/-5)
test/mri/net/http/test_http.rb (+210/-48)
test/mri/net/http/test_http_request.rb (+4/-3)
test/mri/net/http/test_httpheader.rb (+34/-1)
test/mri/net/http/test_httpresponse.rb (+252/-0)
test/mri/net/http/test_https.rb (+138/-45)
test/mri/net/http/test_https_proxy.rb (+1/-1)
test/mri/net/http/utils.rb (+24/-1)
test/mri/net/imap/test_imap.rb (+81/-17)
test/mri/net/imap/test_imap_response_parser.rb (+19/-32)
test/mri/net/protocol/test_protocol.rb (+6/-8)
test/mri/net/smtp/test_smtp.rb (+97/-7)
test/mri/net/smtp/test_ssl_socket.rb (+3/-1)
test/mri/net/smtp/test_sslcontext.rb (+129/-0)
test/mri/net/smtp/test_starttls.rb (+122/-0)
test/mri/objspace/test_objspace.rb (+157/-26)
test/mri/open-uri/test_open-uri.rb (+179/-173)
test/mri/open-uri/test_ssl.rb (+6/-6)
test/mri/openssl/fixtures/pkey/empty.der (+0/-0)
test/mri/openssl/fixtures/pkey/empty.pem (+0/-0)
test/mri/openssl/fixtures/pkey/fullchain.pem (+56/-0)
test/mri/openssl/fixtures/pkey/garbage.txt (+1/-0)
test/mri/openssl/test_asn1.rb (+39/-14)
test/mri/openssl/test_bn.rb (+103/-21)
test/mri/openssl/test_buffering.rb (+9/-2)
test/mri/openssl/test_cipher.rb (+69/-15)
test/mri/openssl/test_config.rb (+91/-103)
test/mri/openssl/test_digest.rb (+46/-18)
test/mri/openssl/test_engine.rb (+2/-2)
test/mri/openssl/test_fips.rb (+1/-1)
test/mri/openssl/test_hmac.rb (+25/-1)
test/mri/openssl/test_kdf.rb (+1/-1)
test/mri/openssl/test_ns_spki.rb (+3/-3)
test/mri/openssl/test_ocsp.rb (+19/-25)
test/mri/openssl/test_ossl.rb (+65/-0)
test/mri/openssl/test_pair.rb (+7/-24)
test/mri/openssl/test_pkcs12.rb (+150/-149)
test/mri/openssl/test_pkcs7.rb (+41/-1)
test/mri/openssl/test_pkey.rb (+172/-0)
test/mri/openssl/test_pkey_dh.rb (+85/-22)
test/mri/openssl/test_pkey_dsa.rb (+59/-27)
test/mri/openssl/test_pkey_ec.rb (+145/-50)
test/mri/openssl/test_pkey_rsa.rb (+303/-71)
test/mri/openssl/test_random.rb (+1/-1)
test/mri/openssl/test_ssl.rb (+418/-254)
test/mri/openssl/test_ssl_session.rb (+2/-9)
test/mri/openssl/test_ts.rb (+680/-0)
test/mri/openssl/test_x509attr.rb (+11/-1)
test/mri/openssl/test_x509cert.rb (+135/-4)
test/mri/openssl/test_x509crl.rb (+34/-11)
test/mri/openssl/test_x509ext.rb (+14/-1)
test/mri/openssl/test_x509name.rb (+23/-10)
test/mri/openssl/test_x509req.rb (+20/-13)
test/mri/openssl/test_x509store.rb (+273/-141)
test/mri/openssl/ut_eof.rb (+9/-5)
test/mri/openssl/utils.rb (+92/-49)
test/mri/optparse/test_acceptable.rb (+0/-1)
test/mri/optparse/test_autoconf.rb (+7/-0)
test/mri/optparse/test_did_you_mean.rb (+40/-0)
test/mri/optparse/test_optparse.rb (+30/-0)
test/mri/optparse/test_zsh_completion.rb (+1/-1)
test/mri/pathname/test_pathname.rb (+160/-85)
test/mri/pathname/test_ractor.rb (+22/-0)
test/mri/psych/helper.rb (+3/-3)
test/mri/psych/test_array.rb (+16/-0)
test/mri/psych/test_coder.rb (+21/-15)
test/mri/psych/test_date_time.rb (+20/-0)
test/mri/psych/test_encoding.rb (+9/-2)
test/mri/psych/test_exception.rb (+0/-18)
test/mri/psych/test_hash.rb (+52/-12)
test/mri/psych/test_merge_keys.rb (+1/-1)
test/mri/psych/test_numeric.rb (+12/-0)
test/mri/psych/test_object.rb (+11/-2)
test/mri/psych/test_parser.rb (+10/-2)
test/mri/psych/test_psych.rb (+62/-6)
test/mri/psych/test_ractor.rb (+50/-0)
test/mri/psych/test_safe_load.rb (+22/-53)
test/mri/psych/test_scalar_scanner.rb (+72/-2)
test/mri/psych/test_string.rb (+13/-0)
test/mri/psych/test_yaml.rb (+17/-17)
test/mri/racc/assets/cadenza.y (+170/-0)
test/mri/racc/assets/cast.y (+926/-0)
test/mri/racc/assets/chk.y (+126/-0)
test/mri/racc/assets/conf.y (+16/-0)
test/mri/racc/assets/csspool.y (+729/-0)
test/mri/racc/assets/digraph.y (+29/-0)
test/mri/racc/assets/echk.y (+118/-0)
test/mri/racc/assets/edtf.y (+583/-0)
test/mri/racc/assets/err.y (+60/-0)
test/mri/racc/assets/error_recovery.y (+35/-0)
test/mri/racc/assets/expect.y (+7/-0)
test/mri/racc/assets/firstline.y (+4/-0)
test/mri/racc/assets/huia.y (+318/-0)
test/mri/racc/assets/ichk.y (+102/-0)
test/mri/racc/assets/ifelse.y (+14/-0)
test/mri/racc/assets/intp.y (+546/-0)
test/mri/racc/assets/journey.y (+47/-0)
test/mri/racc/assets/liquor.y (+313/-0)
test/mri/racc/assets/machete.y (+423/-0)
test/mri/racc/assets/macruby.y (+2197/-0)
test/mri/racc/assets/mailp.y (+437/-0)
test/mri/racc/assets/mediacloth.y (+599/-0)
test/mri/racc/assets/mof.y (+649/-0)
test/mri/racc/assets/namae.y (+302/-0)
test/mri/racc/assets/nasl.y (+626/-0)
test/mri/racc/assets/newsyn.y (+25/-0)
test/mri/racc/assets/noend.y (+4/-0)
test/mri/racc/assets/nokogiri-css.y (+255/-0)
test/mri/racc/assets/nonass.y (+41/-0)
test/mri/racc/assets/normal.y (+27/-0)
test/mri/racc/assets/norule.y (+4/-0)
test/mri/racc/assets/nullbug1.y (+25/-0)
test/mri/racc/assets/nullbug2.y (+15/-0)
test/mri/racc/assets/opal.y (+1807/-0)
test/mri/racc/assets/opt.y (+123/-0)
test/mri/racc/assets/percent.y (+35/-0)
test/mri/racc/assets/php_serialization.y (+98/-0)
test/mri/racc/assets/recv.y (+97/-0)
test/mri/racc/assets/riml.y (+665/-0)
test/mri/racc/assets/rrconf.y (+14/-0)
test/mri/racc/assets/ruby18.y (+1943/-0)
test/mri/racc/assets/ruby19.y (+2174/-0)
test/mri/racc/assets/ruby20.y (+2350/-0)
test/mri/racc/assets/ruby21.y (+2359/-0)
test/mri/racc/assets/ruby22.y (+2381/-0)
test/mri/racc/assets/scan.y (+72/-0)
test/mri/racc/assets/syntax.y (+50/-0)
test/mri/racc/assets/tp_plus.y (+622/-0)
test/mri/racc/assets/twowaysql.y (+278/-0)
test/mri/racc/assets/unterm.y (+5/-0)
test/mri/racc/assets/useless.y (+12/-0)
test/mri/racc/assets/yyerr.y (+46/-0)
test/mri/racc/bench.y (+36/-0)
test/mri/racc/case.rb (+112/-0)
test/mri/racc/helper.rb (+115/-0)
test/mri/racc/infini.y (+8/-0)
test/mri/racc/regress/README.txt (+7/-0)
test/mri/racc/regress/cadenza (+796/-0)
test/mri/racc/regress/cast (+3945/-0)
test/mri/racc/regress/csspool (+2314/-0)
test/mri/racc/regress/edtf (+1794/-0)
test/mri/racc/regress/huia (+1681/-0)
test/mri/racc/regress/journey (+222/-0)
test/mri/racc/regress/liquor (+885/-0)
test/mri/racc/regress/machete (+833/-0)
test/mri/racc/regress/mediacloth (+1463/-0)
test/mri/racc/regress/mof (+1368/-0)
test/mri/racc/regress/namae (+634/-0)
test/mri/racc/regress/nasl (+2548/-0)
test/mri/racc/regress/nokogiri-css (+836/-0)
test/mri/racc/regress/opal (+10107/-0)
test/mri/racc/regress/php_serialization (+336/-0)
test/mri/racc/regress/riml (+4037/-0)
test/mri/racc/regress/ruby18 (+9945/-0)
test/mri/racc/regress/ruby22 (+11180/-0)
test/mri/racc/regress/tp_plus (+1933/-0)
test/mri/racc/regress/twowaysql (+556/-0)
test/mri/racc/scandata/brace (+7/-0)
test/mri/racc/scandata/gvar (+1/-0)
test/mri/racc/scandata/normal (+4/-0)
test/mri/racc/scandata/percent (+18/-0)
test/mri/racc/scandata/slash (+10/-0)
test/mri/racc/src.intp (+34/-0)
test/mri/racc/start.y (+20/-0)
test/mri/racc/test_chk_y.rb (+52/-0)
test/mri/racc/test_grammar_file_parser.rb (+15/-0)
test/mri/racc/test_racc_command.rb (+339/-0)
test/mri/racc/test_scan_y.rb (+52/-0)
test/mri/racc/testscanner.rb (+51/-0)
test/mri/rdoc/MarkdownTest_1.0.3/Markdown Documentation - Basics.text (+2/-2)
test/mri/rdoc/helper.rb (+5/-0)
test/mri/rdoc/support/formatter_test_case.rb (+764/-0)
test/mri/rdoc/support/test_case.rb (+215/-0)
test/mri/rdoc/support/text_formatter_test_case.rb (+115/-0)
test/mri/rdoc/test_rdoc_any_method.rb (+50/-2)
test/mri/rdoc/test_rdoc_attr.rb (+1/-1)
test/mri/rdoc/test_rdoc_class_module.rb (+28/-23)
test/mri/rdoc/test_rdoc_comment.rb (+3/-2)
test/mri/rdoc/test_rdoc_context.rb (+3/-3)
test/mri/rdoc/test_rdoc_context_section.rb (+2/-10)
test/mri/rdoc/test_rdoc_cross_reference.rb (+10/-1)
test/mri/rdoc/test_rdoc_encoding.rb (+4/-4)
test/mri/rdoc/test_rdoc_extend.rb (+4/-4)
test/mri/rdoc/test_rdoc_generator_darkfish.rb (+16/-10)
test/mri/rdoc/test_rdoc_generator_json_index.rb (+4/-4)
test/mri/rdoc/test_rdoc_generator_markup.rb (+1/-1)
test/mri/rdoc/test_rdoc_generator_pot.rb (+1/-1)
test/mri/rdoc/test_rdoc_generator_pot_po.rb (+1/-1)
test/mri/rdoc/test_rdoc_generator_pot_po_entry.rb (+1/-1)
test/mri/rdoc/test_rdoc_generator_ri.rb (+1/-1)
test/mri/rdoc/test_rdoc_i18n_locale.rb (+5/-5)
test/mri/rdoc/test_rdoc_i18n_text.rb (+1/-1)
test/mri/rdoc/test_rdoc_include.rb (+6/-5)
test/mri/rdoc/test_rdoc_markdown.rb (+59/-6)
test/mri/rdoc/test_rdoc_markdown_test.rb (+3/-3)
test/mri/rdoc/test_rdoc_markup.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_attribute_manager.rb (+27/-6)
test/mri/rdoc/test_rdoc_markup_attributes.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_document.rb (+2/-2)
test/mri/rdoc/test_rdoc_markup_formatter.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_hard_break.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_heading.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_include.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_indented_paragraph.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_paragraph.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_parser.rb (+3/-22)
test/mri/rdoc/test_rdoc_markup_pre_process.rb (+2/-2)
test/mri/rdoc/test_rdoc_markup_raw.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_to_ansi.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_to_bs.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_to_html.rb (+51/-1)
test/mri/rdoc/test_rdoc_markup_to_html_crossref.rb (+30/-4)
test/mri/rdoc/test_rdoc_markup_to_html_snippet.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_to_joined_paragraph.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_to_label.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_to_markdown.rb (+3/-3)
test/mri/rdoc/test_rdoc_markup_to_rdoc.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_to_table_of_contents.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_to_tt_only.rb (+1/-1)
test/mri/rdoc/test_rdoc_markup_verbatim.rb (+1/-1)
test/mri/rdoc/test_rdoc_normal_class.rb (+2/-2)
test/mri/rdoc/test_rdoc_options.rb (+140/-47)
test/mri/rdoc/test_rdoc_parser.rb (+3/-3)
test/mri/rdoc/test_rdoc_parser_c.rb (+76/-38)
test/mri/rdoc/test_rdoc_parser_changelog.rb (+170/-1)
test/mri/rdoc/test_rdoc_parser_markdown.rb (+1/-1)
test/mri/rdoc/test_rdoc_parser_rd.rb (+1/-1)
test/mri/rdoc/test_rdoc_parser_ruby.rb (+107/-31)
test/mri/rdoc/test_rdoc_parser_simple.rb (+1/-1)
test/mri/rdoc/test_rdoc_rd.rb (+1/-1)
test/mri/rdoc/test_rdoc_rd_block_parser.rb (+1/-1)
test/mri/rdoc/test_rdoc_rd_inline.rb (+1/-1)
test/mri/rdoc/test_rdoc_rd_inline_parser.rb (+1/-1)
test/mri/rdoc/test_rdoc_rdoc.rb (+37/-58)
test/mri/rdoc/test_rdoc_ri_driver.rb (+79/-56)
test/mri/rdoc/test_rdoc_ri_paths.rb (+8/-6)
test/mri/rdoc/test_rdoc_rubygems_hook.rb (+64/-27)
test/mri/rdoc/test_rdoc_servlet.rb (+29/-11)
test/mri/rdoc/test_rdoc_single_class.rb (+1/-1)
test/mri/rdoc/test_rdoc_stats.rb (+1/-1)
test/mri/rdoc/test_rdoc_store.rb (+19/-4)
test/mri/rdoc/test_rdoc_task.rb (+8/-8)
test/mri/rdoc/test_rdoc_text.rb (+21/-2)
test/mri/rdoc/test_rdoc_token_stream.rb (+1/-1)
test/mri/rdoc/test_rdoc_tom_doc.rb (+1/-1)
test/mri/rdoc/test_rdoc_top_level.rb (+5/-2)
test/mri/rdoc/xref_data.rb (+17/-0)
test/mri/rdoc/xref_test_case.rb (+14/-1)
test/mri/readline/helper.rb (+29/-0)
test/mri/readline/test_readline.rb (+443/-180)
test/mri/readline/test_readline_history.rb (+98/-99)
test/mri/reline/helper.rb (+125/-0)
test/mri/reline/test_config.rb (+389/-0)
test/mri/reline/test_history.rb (+308/-0)
test/mri/reline/test_key_actor_emacs.rb (+2332/-0)
test/mri/reline/test_key_actor_vi.rb (+1457/-0)
test/mri/reline/test_key_stroke.rb (+79/-0)
test/mri/reline/test_kill_ring.rb (+268/-0)
test/mri/reline/test_macro.rb (+41/-0)
test/mri/reline/test_reline.rb (+392/-0)
test/mri/reline/test_reline_key.rb (+53/-0)
test/mri/reline/test_string_processing.rb (+81/-0)
test/mri/reline/test_terminfo.rb (+32/-0)
test/mri/reline/test_unicode.rb (+25/-0)
test/mri/reline/test_within_pipe.rb (+78/-0)
test/mri/reline/windows/test_key_event_record.rb (+41/-0)
test/mri/reline/yamatanooroti/multiline_repl (+211/-0)
test/mri/reline/yamatanooroti/termination_checker.rb (+30/-0)
test/mri/reline/yamatanooroti/test_rendering.rb (+1265/-0)
test/mri/resolv/test_addr.rb (+26/-0)
test/mri/resolv/test_dns.rb (+85/-6)
test/mri/rinda/test_rinda.rb (+19/-7)
test/mri/ripper/assert_parse_files.rb (+32/-0)
test/mri/ripper/dummyparser.rb (+5/-1)
test/mri/ripper/test_files_ext.rb (+8/-0)
test/mri/ripper/test_files_lib.rb (+14/-0)
test/mri/ripper/test_files_sample.rb (+8/-0)
test/mri/ripper/test_files_test.rb (+8/-0)
test/mri/ripper/test_files_test_1.rb (+9/-0)
test/mri/ripper/test_files_test_2.rb (+9/-0)
test/mri/ripper/test_lexer.rb (+134/-1)
test/mri/ripper/test_parser_events.rb (+167/-16)
test/mri/ripper/test_ripper.rb (+19/-0)
test/mri/ripper/test_scanner_events.rb (+71/-17)
test/mri/ripper/test_sexp.rb (+394/-0)
test/mri/ruby/enc/test_case_mapping.rb (+10/-0)
test/mri/ruby/enc/test_cesu8.rb (+109/-0)
test/mri/ruby/enc/test_emoji_breaks.rb (+48/-16)
test/mri/ruby/enc/test_grapheme_breaks.rb (+5/-2)
test/mri/ruby/enc/test_regex_casefold.rb (+1/-1)
test/mri/ruby/marshaltestlib.rb (+1/-1)
test/mri/ruby/sentence.rb (+1/-1)
test/mri/ruby/test_alias.rb (+24/-4)
test/mri/ruby/test_argf.rb (+89/-34)
test/mri/ruby/test_arithmetic_sequence.rb (+36/-9)
test/mri/ruby/test_array.rb (+441/-152)
test/mri/ruby/test_assignment.rb (+72/-9)
test/mri/ruby/test_ast.rb (+267/-10)
test/mri/ruby/test_autoload.rb (+142/-13)
test/mri/ruby/test_backtrace.rb (+70/-0)
test/mri/ruby/test_basicinstructions.rb (+4/-1)
test/mri/ruby/test_bignum.rb (+58/-41)
test/mri/ruby/test_call.rb (+9/-0)
test/mri/ruby/test_case.rb (+12/-0)
test/mri/ruby/test_class.rb (+126/-19)
test/mri/ruby/test_comparable.rb (+31/-1)
test/mri/ruby/test_complex.rb (+32/-9)
test/mri/ruby/test_complexrational.rb (+4/-4)
test/mri/ruby/test_const.rb (+30/-9)
test/mri/ruby/test_default_gems.rb (+1/-0)
test/mri/ruby/test_defined.rb (+115/-0)
test/mri/ruby/test_dir.rb (+190/-56)
test/mri/ruby/test_dir_m17n.rb (+27/-48)
test/mri/ruby/test_econv.rb (+21/-2)
test/mri/ruby/test_encoding.rb (+41/-7)
test/mri/ruby/test_enum.rb (+184/-5)
test/mri/ruby/test_enumerator.rb (+122/-7)
test/mri/ruby/test_env.rb (+962/-30)
test/mri/ruby/test_eval.rb (+81/-3)
test/mri/ruby/test_exception.rb (+262/-260)
test/mri/ruby/test_fiber.rb (+141/-63)
test/mri/ruby/test_file.rb (+45/-52)
test/mri/ruby/test_file_exhaustive.rb (+104/-71)
test/mri/ruby/test_fixnum.rb (+0/-1)
test/mri/ruby/test_flip.rb (+4/-13)
test/mri/ruby/test_float.rb (+29/-2)
test/mri/ruby/test_frozen_error.rb (+57/-0)
test/mri/ruby/test_gc.rb (+83/-35)
test/mri/ruby/test_gc_compact.rb (+174/-0)
test/mri/ruby/test_hash.rb (+454/-67)
test/mri/ruby/test_inlinecache.rb (+110/-0)
test/mri/ruby/test_insns_leaf.rb (+46/-0)
test/mri/ruby/test_integer.rb (+90/-0)
test/mri/ruby/test_io.rb (+298/-124)
test/mri/ruby/test_io_buffer.rb (+520/-0)
test/mri/ruby/test_io_m17n.rb (+59/-18)
test/mri/ruby/test_iseq.rb (+231/-25)
test/mri/ruby/test_iterator.rb (+7/-13)
test/mri/ruby/test_jit.rb (+310/-84)
test/mri/ruby/test_jit_debug.rb (+17/-0)
test/mri/ruby/test_keyword.rb (+3650/-27)
test/mri/ruby/test_lambda.rb (+171/-0)
test/mri/ruby/test_lazy_enumerator.rb (+110/-2)
test/mri/ruby/test_literal.rb (+61/-7)
test/mri/ruby/test_m17n.rb (+26/-18)
test/mri/ruby/test_m17n_comb.rb (+36/-6)
test/mri/ruby/test_marshal.rb (+182/-78)
test/mri/ruby/test_math.rb (+37/-17)
test/mri/ruby/test_memory_view.rb (+341/-0)
test/mri/ruby/test_method.rb (+275/-26)
test/mri/ruby/test_method_cache.rb (+76/-0)
test/mri/ruby/test_module.rb (+863/-90)
test/mri/ruby/test_name_error.rb (+156/-0)
test/mri/ruby/test_nomethod_error.rb (+109/-0)
test/mri/ruby/test_numeric.rb (+91/-23)
test/mri/ruby/test_object.rb (+96/-49)
test/mri/ruby/test_objectspace.rb (+72/-1)
test/mri/ruby/test_optimization.rb (+131/-22)
test/mri/ruby/test_pack.rb (+32/-14)
test/mri/ruby/test_parse.rb (+408/-257)
test/mri/ruby/test_path.rb (+6/-2)
test/mri/ruby/test_pattern_matching.rb (+1697/-0)
test/mri/ruby/test_primitive.rb (+53/-25)
test/mri/ruby/test_proc.rb (+305/-65)
test/mri/ruby/test_process.rb (+232/-41)
test/mri/ruby/test_rand.rb (+95/-259)
test/mri/ruby/test_random_formatter.rb (+123/-0)
test/mri/ruby/test_range.rb (+111/-13)
test/mri/ruby/test_rational.rb (+33/-0)
test/mri/ruby/test_refinement.rb (+433/-16)
test/mri/ruby/test_regexp.rb (+170/-50)
test/mri/ruby/test_require.rb (+166/-104)
test/mri/ruby/test_require_lib.rb (+27/-0)
test/mri/ruby/test_rubyoptions.rb (+145/-80)
test/mri/ruby/test_rubyvm.rb (+55/-2)
test/mri/ruby/test_rubyvm_jit.rb (+91/-0)
test/mri/ruby/test_rubyvm_mjit.rb (+16/-0)
test/mri/ruby/test_settracefunc.rb (+541/-90)
test/mri/ruby/test_signal.rb (+1/-6)
test/mri/ruby/test_sprintf.rb (+0/-15)
test/mri/ruby/test_stack.rb (+82/-0)
test/mri/ruby/test_string.rb (+183/-152)
test/mri/ruby/test_struct.rb (+118/-3)
test/mri/ruby/test_super.rb (+137/-0)
test/mri/ruby/test_symbol.rb (+56/-14)
test/mri/ruby/test_syntax.rb (+596/-90)
test/mri/ruby/test_system.rb (+2/-2)
test/mri/ruby/test_thread.rb (+83/-46)
test/mri/ruby/test_thread_cv.rb (+35/-28)
test/mri/ruby/test_thread_queue.rb (+94/-53)
test/mri/ruby/test_time.rb (+158/-21)
test/mri/ruby/test_time_tz.rb (+152/-36)
test/mri/ruby/test_trace.rb (+0/-11)
test/mri/ruby/test_transcode.rb (+71/-1)
test/mri/ruby/test_undef.rb (+16/-0)
test/mri/ruby/test_variable.rb (+144/-5)
test/mri/ruby/test_vm_dump.rb (+1/-1)
test/mri/ruby/test_weakmap.rb (+36/-10)
test/mri/ruby/test_yjit.rb (+687/-0)
test/mri/rubygems/encrypted_private_key.pem (+26/-26)
test/mri/rubygems/helper.rb (+1458/-966)
test/mri/rubygems/installer_test_case.rb (+247/-0)
test/mri/rubygems/package/tar_test_case.rb (+139/-0)
test/mri/rubygems/private_ec_key.pem (+9/-0)
test/mri/rubygems/rubygems/commands/crash_command.rb (+0/-2)
test/mri/rubygems/rubygems_plugin.rb (+0/-2)
test/mri/rubygems/specifications/bar-0.0.2.gemspec (+0/-2)
test/mri/rubygems/specifications/rubyforge-0.0.1.gemspec (+12/-0)
test/mri/rubygems/test_bundled_ca.rb (+43/-49)
test/mri/rubygems/test_config.rb (+3/-5)
test/mri/rubygems/test_deprecate.rb (+89/-9)
test/mri/rubygems/test_exit.rb (+11/-0)
test/mri/rubygems/test_gem.rb (+674/-491)
test/mri/rubygems/test_gem_available_set.rb (+6/-7)
test/mri/rubygems/test_gem_bundler_version_finder.rb (+41/-42)
test/mri/rubygems/test_gem_command.rb (+158/-11)
test/mri/rubygems/test_gem_command_manager.rb (+73/-14)
test/mri/rubygems/test_gem_commands_build_command.rb (+393/-19)
test/mri/rubygems/test_gem_commands_cert_command.rb (+118/-47)
test/mri/rubygems/test_gem_commands_check_command.rb (+6/-8)
test/mri/rubygems/test_gem_commands_cleanup_command.rb (+60/-35)
test/mri/rubygems/test_gem_commands_contents_command.rb (+53/-22)
test/mri/rubygems/test_gem_commands_dependency_command.rb (+4/-6)
test/mri/rubygems/test_gem_commands_environment_command.rb (+23/-35)
test/mri/rubygems/test_gem_commands_fetch_command.rb (+46/-12)
test/mri/rubygems/test_gem_commands_generate_index_command.rb (+33/-3)
test/mri/rubygems/test_gem_commands_help_command.rb (+25/-10)
test/mri/rubygems/test_gem_commands_info_command.rb (+7/-8)
test/mri/rubygems/test_gem_commands_install_command.rb (+474/-82)
test/mri/rubygems/test_gem_commands_list_command.rb (+2/-4)
test/mri/rubygems/test_gem_commands_lock_command.rb (+2/-4)
test/mri/rubygems/test_gem_commands_mirror.rb (+2/-3)
test/mri/rubygems/test_gem_commands_open_command.rb (+13/-16)
test/mri/rubygems/test_gem_commands_outdated_command.rb (+19/-2)
test/mri/rubygems/test_gem_commands_owner_command.rb (+66/-13)
test/mri/rubygems/test_gem_commands_pristine_command.rb (+163/-31)
test/mri/rubygems/test_gem_commands_push_command.rb (+115/-32)
test/mri/rubygems/test_gem_commands_query_command.rb (+43/-18)
test/mri/rubygems/test_gem_commands_search_command.rb (+1/-3)
test/mri/rubygems/test_gem_commands_server_command.rb (+5/-45)
test/mri/rubygems/test_gem_commands_setup_command.rb (+282/-134)
test/mri/rubygems/test_gem_commands_signin_command.rb (+49/-17)
test/mri/rubygems/test_gem_commands_signout_command.rb (+1/-8)
test/mri/rubygems/test_gem_commands_sources_command.rb (+197/-13)
test/mri/rubygems/test_gem_commands_specification_command.rb (+53/-27)
test/mri/rubygems/test_gem_commands_stale_command.rb (+1/-3)
test/mri/rubygems/test_gem_commands_uninstall_command.rb (+191/-56)
test/mri/rubygems/test_gem_commands_unpack_command.rb (+3/-5)
test/mri/rubygems/test_gem_commands_update_command.rb (+236/-37)
test/mri/rubygems/test_gem_commands_which_command.rb (+7/-9)
test/mri/rubygems/test_gem_commands_yank_command.rb (+88/-7)
test/mri/rubygems/test_gem_config_file.rb (+35/-23)
test/mri/rubygems/test_gem_dependency.rb (+21/-15)
test/mri/rubygems/test_gem_dependency_installer.rb (+174/-257)
test/mri/rubygems/test_gem_dependency_list.rb (+32/-27)
test/mri/rubygems/test_gem_dependency_resolution_error.rb (+2/-4)
test/mri/rubygems/test_gem_doctor.rb (+57/-31)
test/mri/rubygems/test_gem_ext_builder.rb (+75/-65)
test/mri/rubygems/test_gem_ext_cmake_builder.rb (+20/-27)
test/mri/rubygems/test_gem_ext_configure_builder.rb (+11/-19)
test/mri/rubygems/test_gem_ext_ext_conf_builder.rb (+40/-43)
test/mri/rubygems/test_gem_ext_rake_builder.rb (+43/-24)
test/mri/rubygems/test_gem_gem_runner.rb (+48/-3)
test/mri/rubygems/test_gem_gemcutter_utilities.rb (+36/-27)
test/mri/rubygems/test_gem_impossible_dependencies_error.rb (+1/-3)
test/mri/rubygems/test_gem_indexer.rb (+49/-57)
test/mri/rubygems/test_gem_install_update_options.rb (+52/-28)
test/mri/rubygems/test_gem_installer.rb (+881/-476)
test/mri/rubygems/test_gem_local_remote_options.rb (+2/-4)
test/mri/rubygems/test_gem_name_tuple.rb (+1/-3)
test/mri/rubygems/test_gem_package.rb (+198/-103)
test/mri/rubygems/test_gem_package_old.rb (+57/-56)
test/mri/rubygems/test_gem_package_tar_header.rb (+65/-7)
test/mri/rubygems/test_gem_package_tar_reader.rb (+1/-3)
test/mri/rubygems/test_gem_package_tar_reader_entry.rb (+9/-10)
test/mri/rubygems/test_gem_package_tar_writer.rb (+38/-32)
test/mri/rubygems/test_gem_package_task.rb (+48/-15)
test/mri/rubygems/test_gem_path_support.rb (+21/-21)
test/mri/rubygems/test_gem_platform.rb (+76/-8)
test/mri/rubygems/test_gem_rdoc.rb (+11/-146)
test/mri/rubygems/test_gem_remote_fetcher.rb (+398/-227)
test/mri/rubygems/test_gem_request.rb (+80/-37)
test/mri/rubygems/test_gem_request_connection_pools.rb (+4/-4)
test/mri/rubygems/test_gem_request_set.rb (+119/-43)
test/mri/rubygems/test_gem_request_set_gem_dependency_api.rb (+101/-80)
test/mri/rubygems/test_gem_request_set_lockfile.rb (+8/-9)
test/mri/rubygems/test_gem_request_set_lockfile_parser.rb (+13/-14)
test/mri/rubygems/test_gem_request_set_lockfile_tokenizer.rb (+123/-123)
test/mri/rubygems/test_gem_requirement.rb (+98/-19)
test/mri/rubygems/test_gem_resolver.rb (+86/-44)
test/mri/rubygems/test_gem_resolver_activation_request.rb (+4/-35)
test/mri/rubygems/test_gem_resolver_api_set.rb (+61/-60)
test/mri/rubygems/test_gem_resolver_api_specification.rb (+4/-6)
test/mri/rubygems/test_gem_resolver_best_set.rb (+29/-8)
test/mri/rubygems/test_gem_resolver_composed_set.rb (+1/-3)
test/mri/rubygems/test_gem_resolver_conflict.rb (+2/-8)
test/mri/rubygems/test_gem_resolver_dependency_request.rb (+1/-3)
test/mri/rubygems/test_gem_resolver_git_set.rb (+2/-4)
test/mri/rubygems/test_gem_resolver_git_specification.rb (+4/-4)
test/mri/rubygems/test_gem_resolver_index_set.rb (+3/-5)
test/mri/rubygems/test_gem_resolver_index_specification.rb (+9/-6)
test/mri/rubygems/test_gem_resolver_installed_specification.rb (+1/-4)
test/mri/rubygems/test_gem_resolver_installer_set.rb (+33/-15)
test/mri/rubygems/test_gem_resolver_local_specification.rb (+2/-4)
test/mri/rubygems/test_gem_resolver_lock_set.rb (+4/-6)
test/mri/rubygems/test_gem_resolver_lock_specification.rb (+1/-3)
test/mri/rubygems/test_gem_resolver_requirement_list.rb (+1/-3)
test/mri/rubygems/test_gem_resolver_specification.rb (+2/-4)
test/mri/rubygems/test_gem_resolver_vendor_set.rb (+4/-6)
test/mri/rubygems/test_gem_resolver_vendor_specification.rb (+1/-3)
test/mri/rubygems/test_gem_security.rb (+66/-36)
test/mri/rubygems/test_gem_security_policy.rb (+35/-40)
test/mri/rubygems/test_gem_security_signer.rb (+18/-19)
test/mri/rubygems/test_gem_security_trust_dir.rb (+9/-11)
test/mri/rubygems/test_gem_server.rb (+15/-14)
test/mri/rubygems/test_gem_silent_ui.rb (+10/-11)
test/mri/rubygems/test_gem_source.rb (+35/-20)
test/mri/rubygems/test_gem_source_fetch_problem.rb (+12/-3)
test/mri/rubygems/test_gem_source_git.rb (+24/-30)
test/mri/rubygems/test_gem_source_installed.rb (+12/-14)
test/mri/rubygems/test_gem_source_list.rb (+2/-2)
test/mri/rubygems/test_gem_source_local.rb (+9/-10)
test/mri/rubygems/test_gem_source_lock.rb (+18/-20)
test/mri/rubygems/test_gem_source_specific_file.rb (+11/-12)
test/mri/rubygems/test_gem_source_subpath_problem.rb (+49/-0)
test/mri/rubygems/test_gem_source_vendor.rb (+8/-10)
test/mri/rubygems/test_gem_spec_fetcher.rb (+13/-6)
test/mri/rubygems/test_gem_specification.rb (+608/-676)
test/mri/rubygems/test_gem_stream_ui.rb (+7/-5)
test/mri/rubygems/test_gem_stub_specification.rb (+9/-10)
test/mri/rubygems/test_gem_text.rb (+8/-3)
test/mri/rubygems/test_gem_uninstaller.rb (+209/-40)
test/mri/rubygems/test_gem_unsatisfiable_dependency_error.rb (+1/-3)
test/mri/rubygems/test_gem_uri.rb (+39/-0)
test/mri/rubygems/test_gem_uri_formatter.rb (+1/-3)
test/mri/rubygems/test_gem_util.rb (+29/-17)
test/mri/rubygems/test_gem_validator.rb (+4/-7)
test/mri/rubygems/test_gem_version.rb (+28/-24)
test/mri/rubygems/test_gem_version_option.rb (+2/-4)
test/mri/rubygems/test_kernel.rb (+32/-26)
test/mri/rubygems/test_project_sanity.rb (+20/-0)
test/mri/rubygems/test_remote_fetch_error.rb (+2/-3)
test/mri/rubygems/test_require.rb (+380/-96)
test/mri/rubygems/test_rubygems.rb (+71/-0)
test/mri/rubygems/utilities.rb (+371/-0)
test/mri/runner.rb (+8/-32)
test/mri/socket/test_addrinfo.rb (+16/-4)
test/mri/socket/test_basicsocket.rb (+1/-3)
test/mri/socket/test_nonblock.rb (+2/-2)
test/mri/socket/test_socket.rb (+25/-3)
test/mri/socket/test_tcp.rb (+45/-0)
test/mri/socket/test_unix.rb (+15/-5)
test/mri/stringio/test_ractor.rb (+23/-0)
test/mri/stringio/test_stringio.rb (+114/-17)
test/mri/strscan/test_ractor.rb (+28/-0)
test/mri/strscan/test_stringscanner.rb (+177/-141)
test/mri/syslog/test_syslog_logger.rb (+15/-0)
test/mri/test_delegate.rb (+141/-0)
test/mri/test_extlibs.rb (+0/-2)
test/mri/test_forwardable.rb (+57/-2)
test/mri/test_getoptlong.rb (+163/-0)
test/mri/test_ipaddr.rb (+67/-4)
test/mri/test_mutex_m.rb (+32/-0)
test/mri/test_open3.rb (+23/-4)
test/mri/test_pp.rb (+31/-4)
test/mri/test_prime.rb (+21/-1)
test/mri/test_pstore.rb (+2/-2)
test/mri/test_securerandom.rb (+4/-112)
test/mri/test_set.rb (+42/-129)
test/mri/test_shellwords.rb (+5/-0)
test/mri/test_sorted_set.rb (+45/-0)
test/mri/test_syslog.rb (+2/-0)
test/mri/test_tempfile.rb (+29/-50)
test/mri/test_time.rb (+39/-0)
test/mri/test_timeout.rb (+19/-0)
test/mri/test_tmpdir.rb (+30/-28)
test/mri/test_tracer.rb (+178/-0)
test/mri/test_trick.rb (+191/-0)
test/mri/test_unicode_normalize.rb (+1/-1)
test/mri/uri/test_common.rb (+122/-0)
test/mri/uri/test_generic.rb (+46/-26)
test/mri/uri/test_http.rb (+24/-7)
test/mri/uri/test_ldap.rb (+3/-3)
test/mri/uri/test_parser.rb (+26/-0)
test/mri/uri/test_ws.rb (+71/-0)
test/mri/win32ole/test_win32ole.rb (+1/-50)
test/mri/win32ole/test_win32ole_event.rb (+14/-43)
test/mri/yaml/test_store.rb (+2/-2)
test/mri/zlib/test_zlib.rb (+236/-9)
test/pom.rb (+29/-7)
test/tool/asm_parse.rb (+53/-0)
test/tool/bisect.sh (+50/-0)
test/tool/build-transcode (+16/-0)
test/tool/bundler/rubocop_gems.rb (+11/-0)
test/tool/bundler/rubocop_gems.rb.lock (+59/-0)
test/tool/bundler/standard_gems.rb (+11/-0)
test/tool/bundler/standard_gems.rb.lock (+65/-0)
test/tool/bundler/test_gems.rb (+12/-0)
test/tool/bundler/test_gems.rb.lock (+43/-0)
test/tool/checksum.rb (+72/-0)
test/tool/colors (+3/-0)
test/tool/config.guess (+1/-0)
test/tool/config.sub (+1/-0)
test/tool/darwin-cc (+6/-0)
test/tool/downloader.rb (+397/-0)
test/tool/enc-emoji-citrus-gen.rb (+131/-0)
test/tool/enc-emoji4unicode.rb (+133/-0)
test/tool/enc-unicode.rb (+577/-0)
test/tool/eval.rb (+158/-0)
test/tool/expand-config.rb (+33/-0)
test/tool/extlibs.rb (+263/-0)
test/tool/fake.rb (+57/-0)
test/tool/fetch-bundled_gems.rb (+27/-0)
test/tool/file2lastrev.rb (+124/-0)
test/tool/format-release (+245/-0)
test/tool/gem-unpack.rb (+19/-0)
test/tool/gen-mailmap.rb (+47/-0)
test/tool/gen_dummy_probes.rb (+32/-0)
test/tool/gen_ruby_tapset.rb (+105/-0)
test/tool/generic_erb.rb (+61/-0)
test/tool/git-refresh (+46/-0)
test/tool/gperf.sed (+22/-0)
test/tool/id2token.rb (+26/-0)
test/tool/ifchange (+90/-0)
test/tool/insns2vm.rb (+15/-0)
test/tool/install-sh (+17/-0)
test/tool/leaked-globals (+40/-0)
test/tool/lib/-test-/file.rb (+1/-0)
test/tool/lib/-test-/integer.rb (+14/-0)
test/tool/lib/colorize.rb (+55/-0)
test/tool/lib/core_assertions.rb (+66/-78)
test/tool/lib/envutil.rb (+367/-0)
test/tool/lib/find_executable.rb (+22/-0)
test/tool/lib/gc_checker.rb (+36/-0)
test/tool/lib/iseq_loader_checker.rb (+81/-0)
test/tool/lib/jisx0208.rb (+86/-0)
test/tool/lib/leakchecker.rb (+314/-0)
test/tool/lib/memory_status.rb (+151/-0)
test/tool/lib/profile_test_all.rb (+91/-0)
test/tool/lib/test/unit.rb (+735/-162)
test/tool/lib/test/unit/assertions.rb (+650/-1251)
test/tool/lib/test/unit/parallel.rb (+212/-0)
test/tool/lib/test/unit/testcase.rb (+296/-0)
test/tool/lib/tracepointchecker.rb (+126/-0)
test/tool/lib/vcs.rb (+733/-0)
test/tool/lib/vpath.rb (+87/-0)
test/tool/lib/webrick.rb (+232/-0)
test/tool/lib/webrick/.document (+6/-0)
test/tool/lib/webrick/accesslog.rb (+157/-0)
test/tool/lib/webrick/cgi.rb (+313/-0)
test/tool/lib/webrick/compat.rb (+36/-0)
test/tool/lib/webrick/config.rb (+158/-0)
test/tool/lib/webrick/cookie.rb (+172/-0)
test/tool/lib/webrick/htmlutils.rb (+30/-0)
test/tool/lib/webrick/httpauth.rb (+96/-0)
test/tool/lib/webrick/httpauth/authenticator.rb (+117/-0)
test/tool/lib/webrick/httpauth/basicauth.rb (+116/-0)
test/tool/lib/webrick/httpauth/digestauth.rb (+395/-0)
test/tool/lib/webrick/httpauth/htdigest.rb (+132/-0)
test/tool/lib/webrick/httpauth/htgroup.rb (+97/-0)
test/tool/lib/webrick/httpauth/htpasswd.rb (+158/-0)
test/tool/lib/webrick/httpauth/userdb.rb (+53/-0)
test/tool/lib/webrick/httpproxy.rb (+354/-0)
test/tool/lib/webrick/httprequest.rb (+636/-0)
test/tool/lib/webrick/httpresponse.rb (+564/-0)
test/tool/lib/webrick/https.rb (+152/-0)
test/tool/lib/webrick/httpserver.rb (+294/-0)
test/tool/lib/webrick/httpservlet.rb (+23/-0)
test/tool/lib/webrick/httpservlet/abstract.rb (+152/-0)
test/tool/lib/webrick/httpservlet/cgi_runner.rb (+47/-0)
test/tool/lib/webrick/httpservlet/cgihandler.rb (+126/-0)
test/tool/lib/webrick/httpservlet/erbhandler.rb (+88/-0)
test/tool/lib/webrick/httpservlet/filehandler.rb (+552/-0)
test/tool/lib/webrick/httpservlet/prochandler.rb (+47/-0)
test/tool/lib/webrick/httpstatus.rb (+194/-0)
test/tool/lib/webrick/httputils.rb (+512/-0)
test/tool/lib/webrick/httpversion.rb (+76/-0)
test/tool/lib/webrick/log.rb (+156/-0)
test/tool/lib/webrick/server.rb (+381/-0)
test/tool/lib/webrick/ssl.rb (+215/-0)
test/tool/lib/webrick/utils.rb (+265/-0)
test/tool/lib/webrick/version.rb (+18/-0)
test/tool/lib/zombie_hunter.rb (+10/-0)
test/tool/m4/_colorize_result_prepare.m4 (+33/-0)
test/tool/m4/ac_msg_result.m4 (+5/-0)
test/tool/m4/colorize_result.m4 (+9/-0)
test/tool/m4/ruby_append_option.m4 (+5/-0)
test/tool/m4/ruby_append_options.m4 (+7/-0)
test/tool/m4/ruby_check_builtin_func.m4 (+10/-0)
test/tool/m4/ruby_check_builtin_setjmp.m4 (+27/-0)
test/tool/m4/ruby_check_printf_prefix.m4 (+29/-0)
test/tool/m4/ruby_check_setjmp.m4 (+17/-0)
test/tool/m4/ruby_check_signedness.m4 (+5/-0)
test/tool/m4/ruby_check_sizeof.m4 (+108/-0)
test/tool/m4/ruby_check_sysconf.m4 (+13/-0)
test/tool/m4/ruby_cppoutfile.m4 (+18/-0)
test/tool/m4/ruby_decl_attribute.m4 (+45/-0)
test/tool/m4/ruby_default_arch.m4 (+11/-0)
test/tool/m4/ruby_define_if.m4 (+12/-0)
test/tool/m4/ruby_defint.m4 (+40/-0)
test/tool/m4/ruby_dtrace_available.m4 (+20/-0)
test/tool/m4/ruby_dtrace_postprocess.m4 (+30/-0)
test/tool/m4/ruby_func_attribute.m4 (+7/-0)
test/tool/m4/ruby_mingw32.m4 (+24/-0)
test/tool/m4/ruby_prepend_option.m4 (+5/-0)
test/tool/m4/ruby_prog_gnu_ld.m4 (+10/-0)
test/tool/m4/ruby_replace_funcs.m4 (+13/-0)
test/tool/m4/ruby_replace_type.m4 (+58/-0)
test/tool/m4/ruby_rm_recursive.m4 (+18/-0)
test/tool/m4/ruby_setjmp_type.m4 (+52/-0)
test/tool/m4/ruby_stack_grow_direction.m4 (+30/-0)
test/tool/m4/ruby_try_cflags.m4 (+12/-0)
test/tool/m4/ruby_try_cxxflags.m4 (+17/-0)
test/tool/m4/ruby_try_ldflags.m4 (+15/-0)
test/tool/m4/ruby_type_attribute.m4 (+8/-0)
test/tool/m4/ruby_universal_arch.m4 (+90/-0)
test/tool/m4/ruby_werror_flag.m4 (+18/-0)
test/tool/make-snapshot (+656/-0)
test/tool/make_hgraph.rb (+95/-0)
test/tool/mdoc2man.rb (+505/-0)
test/tool/merger.rb (+371/-0)
test/tool/mjit_archflag.sh (+40/-0)
test/tool/mjit_tabs.rb (+65/-0)
test/tool/mk_builtin_loader.rb (+361/-0)
test/tool/mkconfig.rb (+380/-0)
test/tool/mkrunnable.rb (+139/-0)
test/tool/node_name.rb (+8/-0)
test/tool/parse.rb (+16/-0)
test/tool/prereq.status (+44/-0)
test/tool/probes_to_wiki.rb (+16/-0)
test/tool/pure_parser.rb (+24/-0)
test/tool/rbinstall.rb (+890/-2026)
test/tool/rbuninstall.rb (+73/-0)
test/tool/redmine-backporter.rb (+593/-0)
test/tool/release.sh (+19/-0)
test/tool/releng/gen-mail.rb (+50/-0)
test/tool/releng/gen-release-note.rb (+36/-0)
test/tool/releng/update-www-meta.rb (+213/-0)
test/tool/rmdirs (+14/-0)
test/tool/ruby_vm/controllers/application_controller.rb (+25/-0)
test/tool/ruby_vm/helpers/c_escape.rb (+128/-0)
test/tool/ruby_vm/helpers/dumper.rb (+113/-0)
test/tool/ruby_vm/helpers/scanner.rb (+53/-0)
test/tool/ruby_vm/loaders/insns_def.rb (+100/-0)
test/tool/ruby_vm/loaders/opt_insn_unif_def.rb (+34/-0)
test/tool/ruby_vm/loaders/opt_operand_def.rb (+56/-0)
test/tool/ruby_vm/loaders/vm_opts_h.rb (+37/-0)
test/tool/ruby_vm/models/attribute.rb (+59/-0)
test/tool/ruby_vm/models/bare_instructions.rb (+240/-0)
test/tool/ruby_vm/models/c_expr.rb (+41/-0)
test/tool/ruby_vm/models/instructions.rb (+22/-0)
test/tool/ruby_vm/models/instructions_unifications.rb (+43/-0)
test/tool/ruby_vm/models/operands_unifications.rb (+142/-0)
test/tool/ruby_vm/models/trace_instructions.rb (+71/-0)
test/tool/ruby_vm/models/typemap.rb (+62/-0)
test/tool/ruby_vm/scripts/converter.rb (+29/-0)
test/tool/ruby_vm/scripts/insns2vm.rb (+93/-0)
test/tool/ruby_vm/tests/.gitkeep (+0/-0)
test/tool/ruby_vm/views/_attributes.erb (+35/-0)
test/tool/ruby_vm/views/_c_expr.erb (+17/-0)
test/tool/ruby_vm/views/_comptime_insn_stack_increase.erb (+62/-0)
test/tool/ruby_vm/views/_copyright.erb (+31/-0)
test/tool/ruby_vm/views/_insn_entry.erb (+76/-0)
test/tool/ruby_vm/views/_insn_len_info.erb (+21/-0)
test/tool/ruby_vm/views/_insn_name_info.erb (+38/-0)
test/tool/ruby_vm/views/_insn_operand_info.erb (+46/-0)
test/tool/ruby_vm/views/_insn_sp_pc_dependency.erb (+27/-0)
test/tool/ruby_vm/views/_insn_type_chars.erb (+13/-0)
test/tool/ruby_vm/views/_leaf_helpers.erb (+55/-0)
test/tool/ruby_vm/views/_mjit_compile_getinlinecache.erb (+31/-0)
test/tool/ruby_vm/views/_mjit_compile_insn.erb (+92/-0)
test/tool/ruby_vm/views/_mjit_compile_insn_body.erb (+129/-0)
test/tool/ruby_vm/views/_mjit_compile_invokebuiltin.erb (+29/-0)
test/tool/ruby_vm/views/_mjit_compile_ivar.erb (+101/-0)
test/tool/ruby_vm/views/_mjit_compile_pc_and_sp.erb (+38/-0)
test/tool/ruby_vm/views/_mjit_compile_send.erb (+117/-0)
test/tool/ruby_vm/views/_notice.erb (+22/-0)
test/tool/ruby_vm/views/_sp_inc_helpers.erb (+37/-0)
test/tool/ruby_vm/views/_trace_instruction.erb (+16/-0)
test/tool/ruby_vm/views/insns.inc.erb (+26/-0)
test/tool/ruby_vm/views/insns_info.inc.erb (+22/-0)
test/tool/ruby_vm/views/mjit_compile.inc.erb (+110/-0)
test/tool/ruby_vm/views/opt_sc.inc.erb (+40/-0)
test/tool/ruby_vm/views/optinsn.inc.erb (+71/-0)
test/tool/ruby_vm/views/optunifs.inc.erb (+21/-0)
test/tool/ruby_vm/views/vm.inc.erb (+30/-0)
test/tool/ruby_vm/views/vmtc.inc.erb (+21/-0)
test/tool/run-gcov.rb (+54/-0)
test/tool/run-lcov.rb (+164/-0)
test/tool/runruby.rb (+176/-0)
test/tool/search-cgvars.rb (+55/-0)
test/tool/strip-rdoc.rb (+26/-0)
test/tool/sync_default_gems.rb (+538/-0)
test/tool/test-bundled-gems.rb (+55/-0)
test/tool/test-coverage.rb (+118/-0)
test/tool/test/minitest/metametameta.rb (+71/-0)
test/tool/test/minitest/test_minitest_benchmark.rb (+131/-0)
test/tool/test/minitest/test_minitest_mock.rb (+404/-0)
test/tool/test/minitest/test_minitest_unit.rb (+15/-3)
test/tool/test/runner.rb (+23/-0)
test/tool/test/test_jisx0208.rb (+40/-0)
test/tool/test/testunit/test4test_hideskip.rb (+10/-0)
test/tool/test/testunit/test4test_redefinition.rb (+14/-0)
test/tool/test/testunit/test4test_sorting.rb (+18/-0)
test/tool/test/testunit/test_assertion.rb (+29/-0)
test/tool/test/testunit/test_hideskip.rb (+21/-0)
test/tool/test/testunit/test_parallel.rb (+204/-0)
test/tool/test/testunit/test_redefinition.rb (+16/-0)
test/tool/test/testunit/test_sorting.rb (+18/-0)
test/tool/test/testunit/tests_for_parallel/ptest_first.rb (+8/-0)
test/tool/test/testunit/tests_for_parallel/ptest_forth.rb (+30/-0)
test/tool/test/testunit/tests_for_parallel/ptest_second.rb (+12/-0)
test/tool/test/testunit/tests_for_parallel/ptest_third.rb (+11/-0)
test/tool/test/testunit/tests_for_parallel/runner.rb (+14/-0)
test/tool/test/webrick/.htaccess (+1/-0)
test/tool/test/webrick/test_cgi.rb (+170/-0)
test/tool/test/webrick/test_config.rb (+17/-0)
test/tool/test/webrick/test_cookie.rb (+141/-0)
test/tool/test/webrick/test_do_not_reverse_lookup.rb (+71/-0)
test/tool/test/webrick/test_filehandler.rb (+402/-0)
test/tool/test/webrick/test_htgroup.rb (+19/-0)
test/tool/test/webrick/test_htmlutils.rb (+21/-0)
test/tool/test/webrick/test_httpauth.rb (+366/-0)
test/tool/test/webrick/test_httpproxy.rb (+466/-0)
test/tool/test/webrick/test_httprequest.rb (+488/-0)
test/tool/test/webrick/test_httpresponse.rb (+282/-0)
test/tool/test/webrick/test_https.rb (+112/-0)
test/tool/test/webrick/test_httpserver.rb (+543/-0)
test/tool/test/webrick/test_httpstatus.rb (+35/-0)
test/tool/test/webrick/test_httputils.rb (+101/-0)
test/tool/test/webrick/test_httpversion.rb (+41/-0)
test/tool/test/webrick/test_server.rb (+191/-0)
test/tool/test/webrick/test_ssl_server.rb (+67/-0)
test/tool/test/webrick/test_utils.rb (+110/-0)
test/tool/test/webrick/utils.rb (+82/-0)
test/tool/test/webrick/webrick.cgi (+38/-0)
test/tool/test/webrick/webrick.rhtml (+4/-0)
test/tool/test/webrick/webrick_long_filename.cgi (+36/-0)
test/tool/transcode-tblgen.rb (+1027/-867)
test/tool/transform_mjit_header.rb (+326/-0)
test/tool/travis_retry.sh (+13/-0)
test/tool/update-bundled_gems.rb (+14/-0)
test/tool/update-deps (+637/-0)
test/tool/vtlh.rb (+17/-0)
test/tool/ytab.sed (+80/-0)
tool/dsl_ripper.rb (+231/-0)
tool/generate_parser (+52/-13)
tool/maven-ci-script.sh (+2/-2)
tool/optimize_parser.rb (+35/-28)
tool/patch_parser.rb (+1/-1)
tool/preproc_ripper.rb (+112/-0)
tool/preprocess_parser.rb (+41/-0)
tool/release.sh (+56/-0)
tool/results_to_excludes.rb (+42/-0)
tool/sync_ruby_files.rb (+1/-46)
Conflict in debian/changelog
Conflict in debian/patches/series
Reviewer Review Type Date Requested Status
git-ubuntu import Pending
Review via email: mp+460986@code.launchpad.net

This proposal has been superseded by a proposal from 2024-02-22.

Description of the change

This is a sync merge proposal.

To post a comment you must log in.

Unmerged commits

306c15d... by Vladimir Petko

update maintainer

7933535... by Vladimir Petko

changelog

99ff39c... by Jerome Charaoui

9.4.5.0+ds-1 (patches unapplied)

Imported using git-ubuntu import.

3de720d... by Jerome Charaoui

9.4.5.0+ds-1~exp1 (patches unapplied)

Imported using git-ubuntu import.

75da7ff... by Jerome Charaoui

9.4.3.0+ds-1~exp2 (patches unapplied)

Imported using git-ubuntu import.

ae8b688... by Jerome Charaoui

9.4.3.0+ds-1~exp1 (patches unapplied)

Imported using git-ubuntu import.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
2index 117f022..d1f1d28 100644
3--- a/.github/workflows/ci.yml
4+++ b/.github/workflows/ci.yml
5@@ -10,72 +10,97 @@ permissions:
6
7 jobs:
8
9- mvn-test-m1:
10- runs-on: [self-hosted, macos, aarch64]
11+ rake-test:
12+ runs-on: ubuntu-latest
13
14 strategy:
15 matrix:
16- package-flags: ['-Ptest']
17- # dist, complete, and osgi do not pass on 17 yet
18- java-version: ['11']
19+ target: ['test:jruby:int', 'spec:ruby:fast', 'spec:ji', 'spec:ffi']
20+ java-version: ['8', '11', '17', '21']
21 fail-fast: false
22
23- name: mvn ${{ matrix.package-flags }} (Java ${{ matrix.java-version }} Apple aarch64)
24+ name: rake ${{ matrix.target }} (Java ${{ matrix.java-version }})
25
26 steps:
27- - name: checkout
28- uses: actions/checkout@v2
29- - name: cache dependencies
30- uses: actions/cache@v2
31- with:
32- path: ~/.m2
33- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
34- restore-keys: ${{ runner.os }}-m2
35+ - name: Bootstrap build
36+ uses: jruby/jruby-ci-build@v1
37 - name: set up java ${{ matrix.java-version }}
38- uses: actions/setup-java@v2
39+ uses: actions/setup-java@v3
40 with:
41 distribution: 'zulu'
42 java-version: ${{ matrix.java-version }}
43- architecture: arm
44- - name: bootstrap
45- run: mvn -Pbootstrap clean package
46- - name: mvn package ${{ matrix.package-flags }}
47- run: tool/maven-ci-script.sh
48- env:
49- PHASE: 'package ${{ matrix.package-flags }}'
50+ cache: 'maven'
51+ - name: rake ${{ matrix.target }}
52+ run: bin/jruby -S rake ${{ matrix.target }}
53+
54+ rake-test-8:
55+ runs-on: ubuntu-latest
56
57- spec-m1:
58- runs-on: [self-hosted, macos, aarch64]
59-
60 strategy:
61 matrix:
62- target: ['spec:ffi']
63- java-version: ['11']
64+ target: ['test:mri:core:jit', 'test:mri:extra', 'spec:ruby:fast:jit', 'test:mri:stdlib', 'spec:ruby:slow', 'spec:ruby:debug', 'test:jruby:aot', 'test:slow_suites', 'spec:compiler', 'spec:regression', 'spec:jruby', 'spec:jrubyc', 'spec:profiler']
65 fail-fast: false
66
67- name: rake ${{ matrix.target }} (Java ${{ matrix.java-version }} Apple aarch64)
68+ name: rake ${{ matrix.target }} (Java 8)
69
70 steps:
71- - name: checkout
72- uses: actions/checkout@v2
73- - name: cache dependencies
74- uses: actions/cache@v2
75+ - name: Bootstrap build
76+ uses: jruby/jruby-ci-build@v1
77+ - name: set up java 8
78+ uses: actions/setup-java@v3
79+ with:
80+ distribution: 'zulu'
81+ java-version: '8'
82+ cache: 'maven'
83+ - name: rake ${{ matrix.target }}
84+ run: bin/jruby -S rake ${{ matrix.target }}
85+
86+ jruby-tests-dev:
87+ runs-on: ubuntu-latest
88+
89+ strategy:
90+ fail-fast: false
91+
92+ env:
93+ JRUBY_OPTS: '--dev'
94+
95+ steps:
96+ - name: Bootstrap build
97+ uses: jruby/jruby-ci-build@v1
98+ - name: set up java 8
99+ uses: actions/setup-java@v3
100 with:
101- path: ~/.m2
102- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
103- restore-keys: ${{ runner.os }}-m2
104+ distribution: 'temurin'
105+ java-version: 8
106+ cache: 'maven'
107+ - name: rake test:jruby
108+ run: bin/jruby --dev -S rake test:jruby
109+
110+ rake-test-17-indy:
111+ runs-on: ubuntu-latest
112+
113+ strategy:
114+ matrix:
115+ target: ['test:mri:core:jit', 'test:jruby:jit', 'spec:compiler', 'spec:ruby:fast:jit', 'spec:ji']
116+ java-version: ['17', '21']
117+ fail-fast: false
118+
119+ name: rake ${{ matrix.target }} (Java ${{ matrix.java-version }} +indy)
120+
121+ env:
122+ JRUBY_OPTS: '-Xcompile.invokedynamic -X+C -Xjit.threshold=0'
123+
124+ steps:
125+ - name: Bootstrap build
126+ uses: jruby/jruby-ci-build@v1
127 - name: set up java ${{ matrix.java-version }}
128- uses: actions/setup-java@v2
129+ uses: actions/setup-java@v3
130 with:
131 distribution: 'zulu'
132 java-version: ${{ matrix.java-version }}
133- architecture: arm
134- - name: bootstrap
135- run: mvn -Pbootstrap clean package
136- - name: bundle install
137- run: bin/jruby --dev -S bundle install
138+ cache: 'maven'
139 - name: rake ${{ matrix.target }}
140- run: bin/jruby --dev -S rake ${{ matrix.target }}
141+ run: bin/jruby -S rake ${{ matrix.target }}
142
143 mvn-test:
144 runs-on: ubuntu-latest
145@@ -83,65 +108,72 @@ jobs:
146 strategy:
147 matrix:
148 package-flags: ['-Pmain', '-Pdist', '-Pcomplete', '-Posgi', '-Ptest', '-Pmain,test -Dinvoker.test=extended']
149- # dist, complete, and osgi do not pass on 17 yet
150- java-version: ['8', '11']
151+ java-version: [8, 11, 21]
152 fail-fast: false
153
154 name: mvn ${{ matrix.package-flags }} (Java ${{ matrix.java-version }})
155
156 steps:
157- - name: checkout
158- uses: actions/checkout@v2
159- - name: cache dependencies
160- uses: actions/cache@v2
161- with:
162- path: ~/.m2
163- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
164- restore-keys: ${{ runner.os }}-m2
165+ - name: Bootstrap build
166+ uses: jruby/jruby-ci-build@v1
167 - name: set up java ${{ matrix.java-version }}
168- uses: actions/setup-java@v2
169+ uses: actions/setup-java@v3
170 with:
171 distribution: 'zulu'
172 java-version: ${{ matrix.java-version }}
173- - name: bootstrap
174- run: mvn -Pbootstrap clean package
175+ cache: 'maven'
176 - name: mvn package ${{ matrix.package-flags }}
177 run: tool/maven-ci-script.sh
178 env:
179 PHASE: 'package ${{ matrix.package-flags }}'
180
181- mvn-test-8:
182+ mvn-test-extended:
183 runs-on: ubuntu-latest
184
185 strategy:
186 matrix:
187- # jruby-jars phase only passes on 8
188 package-flags: ['-Pjruby-jars', '-Pjruby-jars,test -Dinvoker.test=extended', '-Pjruby_complete_jar_extended -Dinvoker.skip=true']
189+ java-version: [11, 17]
190 fail-fast: false
191
192- name: mvn ${{ matrix.package-flags }} (Java 8)
193+
194+ name: mvn ${{ matrix.package-flags }} (Java ${{ matrix.java-version }})
195
196 steps:
197- - name: checkout
198- uses: actions/checkout@v2
199- - name: cache dependencies
200- uses: actions/cache@v2
201- with:
202- path: ~/.m2
203- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
204- restore-keys: ${{ runner.os }}-m2
205- - name: set up java 8
206- uses: actions/setup-java@v2
207+ - name: Bootstrap build
208+ uses: jruby/jruby-ci-build@v1
209+ - name: set up java ${{ matrix.java-version }}
210+ uses: actions/setup-java@v3
211 with:
212- distribution: 'zulu'
213- java-version: '8'
214- - name: bootstrap
215- run: mvn -Pbootstrap clean package
216+ distribution: temurin
217+ java-version: ${{ matrix.java-version }}
218+ cache: 'maven'
219 - name: mvn package ${{ matrix.package-flags }}
220 run: tool/maven-ci-script.sh
221 env:
222 PHASE: 'package ${{ matrix.package-flags }}'
223
224+ regression-specs-jit:
225+ runs-on: ubuntu-latest
226+
227+ strategy:
228+ fail-fast: false
229+
230+ env:
231+ JRUBY_OPTS: '-Xjit.threshold=0'
232+
233+ steps:
234+ - name: Bootstrap build
235+ uses: jruby/jruby-ci-build@v1
236+ - name: set up java 8
237+ uses: actions/setup-java@v3
238+ with:
239+ distribution: 'zulu'
240+ java-version: 8
241+ cache: 'maven'
242+ - name: rake spec:regression
243+ run: bin/jruby -S rake spec:regression
244+
245 mvn-test-windows:
246 runs-on: windows-latest
247
248@@ -155,27 +187,16 @@ jobs:
249 JDK_JAVA_OPTS: "-Djdk.io.File.enableADS=true"
250
251 steps:
252- - name: checkout
253- uses: actions/checkout@v2
254+ - name: Bootstrap build
255+ uses: jruby/jruby-ci-build@v1
256 - name: set up java 11
257 uses: actions/setup-java@v3
258 with:
259 distribution: 'zulu'
260 java-version: 11
261- - name: cache dependencies
262- uses: actions/cache@v2
263- with:
264- path: ~/.m2
265- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
266- restore-keys: ${{ runner.os }}-m2
267- - name: bootstrap
268- run: mvn -Pbootstrap clean package
269- - name: install bundler
270- run: bin/jruby --dev -S gem install bundler
271- - name: bundle install
272- run: bin/jruby --dev -S bundle install
273+ cache: 'maven'
274 - name: rake test:jruby
275- run: bin/jruby --dev -S rake test:jruby TESTOPTS="--no-show-detail-immediately"
276+ run: bin/jruby -S rake test:jruby TESTOPTS="--no-show-detail-immediately"
277 env:
278 JRUBY_OPTS: ''
279 - name: mvn -P test
280@@ -188,121 +209,18 @@ jobs:
281
282 steps:
283 - name: checkout
284- uses: actions/checkout@v2
285- - name: cache dependencies
286- uses: actions/cache@v2
287- with:
288- path: ~/.m2
289- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
290- restore-keys: ${{ runner.os }}-m2
291+ uses: actions/checkout@v3
292 - name: set up java 8
293- uses: actions/setup-java@v2
294+ uses: actions/setup-java@v3
295 with:
296 distribution: 'zulu'
297 java-version: '8'
298+ cache: 'maven'
299 - name: dependency convergence
300 run: tool/maven-ci-script.sh
301 env:
302 PHASE: 'install -Pmain -Dinvoker.test=GH-6081*'
303
304- rake-test:
305- runs-on: ubuntu-latest
306-
307- strategy:
308- matrix:
309- target: ['test:mri:core:jit', 'spec:ruby:fast', 'spec:ruby:fast:jit', 'spec:ji', 'spec:ffi']
310- java-version: ['8', '11', '17']
311- fail-fast: false
312-
313- name: rake ${{ matrix.target }} (Java ${{ matrix.java-version }})
314-
315- steps:
316- - name: checkout
317- uses: actions/checkout@v2
318- - name: cache dependencies
319- uses: actions/cache@v2
320- with:
321- path: ~/.m2
322- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
323- restore-keys: ${{ runner.os }}-m2
324- - name: set up java ${{ matrix.java-version }}
325- uses: actions/setup-java@v2
326- with:
327- distribution: 'zulu'
328- java-version: ${{ matrix.java-version }}
329- - name: bootstrap
330- run: mvn -Pbootstrap clean package
331- - name: bundle install
332- run: bin/jruby --dev -S bundle install
333- - name: rake ${{ matrix.target }}
334- run: bin/jruby --dev -S rake ${{ matrix.target }}
335-
336- rake-test-indy:
337- runs-on: ubuntu-latest
338-
339- strategy:
340- matrix:
341- target: ['test:jruby', 'spec:compiler']
342- java-version: ['8', '11', '17']
343- fail-fast: false
344-
345- name: rake ${{ matrix.target }} (Java ${{ matrix.java-version }} +indy)
346-
347- env:
348- JRUBY_OPTS: '-Xcompile.invokedynamic'
349-
350- steps:
351- - name: checkout
352- uses: actions/checkout@v2
353- - name: cache dependencies
354- uses: actions/cache@v2
355- with:
356- path: ~/.m2
357- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
358- restore-keys: ${{ runner.os }}-m2
359- - name: set up java ${{ matrix.java-version }}
360- uses: actions/setup-java@v2
361- with:
362- distribution: 'zulu'
363- java-version: ${{ matrix.java-version }}
364- - name: bootstrap
365- run: mvn -Pbootstrap clean package
366- - name: bundle install
367- run: bin/jruby --dev -S bundle install
368- - name: rake ${{ matrix.target }}
369- run: bin/jruby --dev -S rake ${{ matrix.target }}
370-
371- rake-test-8:
372- runs-on: ubuntu-latest
373-
374- strategy:
375- matrix:
376- target: ['test:mri:core:int', 'test:mri:extra', 'test:jruby:int', 'test:mri:stdlib', 'spec:ruby:slow', 'spec:ruby:debug', 'test:jruby:aot', 'test:slow_suites', 'spec:compiler', 'spec:regression', 'spec:jruby', 'spec:jrubyc', 'spec:profiler']
377- fail-fast: false
378-
379- name: rake ${{ matrix.target }} (Java 8)
380-
381- steps:
382- - name: checkout
383- uses: actions/checkout@v2
384- - name: cache dependencies
385- uses: actions/cache@v2
386- with:
387- path: ~/.m2
388- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
389- restore-keys: ${{ runner.os }}-m2
390- - name: set up java 8
391- uses: actions/setup-java@v2
392- with:
393- distribution: 'zulu'
394- java-version: '8'
395- - name: bootstrap
396- run: mvn -Pbootstrap clean package
397- - name: bundle install
398- run: bin/jruby --dev -S bundle install
399- - name: rake ${{ matrix.target }}
400- run: bin/jruby --dev -S rake ${{ matrix.target }}
401-
402 test-versions:
403 runs-on: ubuntu-latest
404
405@@ -312,18 +230,13 @@ jobs:
406 name: Verify build artifacts
407 steps:
408 - name: checkout
409- uses: actions/checkout@v2
410- - name: cache dependencies
411- uses: actions/cache@v2
412- with:
413- path: ~/.m2
414- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
415- restore-keys: ${{ runner.os }}-m2
416+ uses: actions/checkout@v3
417 - name: set up java 8
418- uses: actions/setup-java@v2
419+ uses: actions/setup-java@v3
420 with:
421 distribution: 'zulu'
422 java-version: 8
423+ cache: 'maven'
424 - name: maven-ci-script.sh
425 run: tool/maven-ci-script.sh
426 env:
427@@ -337,33 +250,28 @@ jobs:
428
429 services:
430 postgres:
431- image: postgres:11.5
432- ports: ["5432:5432"]
433+ image: postgres:latest
434+ ports: [ "5432:5432" ]
435 options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
436+ env:
437+ POSTGRES_PASSWORD: postgres
438 mysql:
439- image: mysql:5.7
440+ image: mysql:latest
441 env:
442 MYSQL_ROOT_PASSWORD: root
443 MYSQL_DATABASE: sequel_test
444- ports: ["3306:3306"]
445+ ports: [ "3306:3306" ]
446 options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
447
448 steps:
449- - name: checkout
450- uses: actions/checkout@v2
451- - name: cache dependencies
452- uses: actions/cache@v2
453- with:
454- path: ~/.m2
455- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
456- restore-keys: ${{ runner.os }}-m2
457- - name: set up java 8
458- uses: actions/setup-java@v2
459+ - name: Bootstrap build
460+ uses: jruby/jruby-ci-build@v1
461+ - name: set up java
462+ uses: actions/setup-java@v3
463 with:
464- distribution: 'zulu'
465- java-version: 8
466- - name: bootstrap
467- run: mvn -Pbootstrap clean package
468+ distribution: 'temurin'
469+ java-version: 11
470+ cache: 'maven'
471 - name: sequel
472 run: tool/sequel-github-actions.sh
473
474@@ -374,143 +282,118 @@ jobs:
475 fail-fast: false
476
477 steps:
478- - name: checkout
479- uses: actions/checkout@v2
480- - name: cache dependencies
481- uses: actions/cache@v2
482- with:
483- path: ~/.m2
484- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
485- restore-keys: ${{ runner.os }}-m2
486+ - name: Bootstrap build
487+ uses: jruby/jruby-ci-build@v1
488 - name: set up java 8
489- uses: actions/setup-java@v2
490+ uses: actions/setup-java@v3
491 with:
492- distribution: 'zulu'
493+ distribution: 'temurin'
494 java-version: 8
495- - name: bootstrap
496- run: mvn -Pbootstrap clean package
497+ cache: 'maven'
498 - name: concurrent-ruby
499 run: tool/concurrent-ruby-github-actions.sh
500
501- jruby-tests-dev:
502- runs-on: ubuntu-latest
503-
504- strategy:
505- fail-fast: false
506+# mvn-test-m1:
507+# runs-on: [self-hosted, macos, aarch64]
508+#
509+# strategy:
510+# matrix:
511+# package-flags: ['-Ptest']
512+# # dist, complete, and osgi do not pass on 17 yet
513+# java-version: ['11']
514+# fail-fast: false
515+#
516+# name: mvn ${{ matrix.package-flags }} (Java ${{ matrix.java-version }} Apple aarch64)
517+#
518+# steps:
519+# - name: checkout
520+# uses: actions/checkout@v3
521+# - name: set up java ${{ matrix.java-version }}
522+# uses: actions/setup-java@v3
523+# with:
524+# distribution: 'zulu'
525+# java-version: ${{ matrix.java-version }}
526+# architecture: arm
527+# - name: bootstrap
528+# run: ./mvnw -Pbootstrap clean package
529+# - name: mvn package ${{ matrix.package-flags }}
530+# run: tool/maven-ci-script.sh
531+# env:
532+# PHASE: 'package ${{ matrix.package-flags }}'
533+#
534+# spec-m1:
535+# runs-on: [self-hosted, macos, aarch64]
536+#
537+# strategy:
538+# matrix:
539+# target: ['spec:ffi']
540+# java-version: ['11']
541+# fail-fast: false
542+#
543+# name: rake ${{ matrix.target }} (Java ${{ matrix.java-version }} Apple aarch64)
544+#
545+# steps:
546+# - name: Bootstrap build
547+# uses: jruby/jruby-ci-build@v1
548+# - name: set up java ${{ matrix.java-version }}
549+# uses: actions/setup-java@v3
550+# with:
551+# distribution: 'zulu'
552+# java-version: ${{ matrix.java-version }}
553+# architecture: arm
554+# cache: 'maven'
555+# - name: rake ${{ matrix.target }}
556+## run: "bin/jruby -S rake ${{ matrix.target }}"
557+# run: "true"
558
559- env:
560- JRUBY_OPTS: '--dev'
561-
562- steps:
563- - name: checkout
564- uses: actions/checkout@v2
565- - name: cache dependencies
566- uses: actions/cache@v2
567- with:
568- path: ~/.m2
569- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
570- restore-keys: ${{ runner.os }}-m2
571- - name: set up java 8
572- uses: actions/setup-java@v2
573- with:
574- distribution: 'zulu'
575- java-version: 8
576- - name: bootstrap
577- run: mvn -Pbootstrap clean package
578- - name: bundle install
579- run: bin/jruby --dev -S bundle install
580- - name: rake test:jruby
581- run: bin/jruby --dev -S rake test:jruby
582-
583- ji-specs-indy:
584+ maven-test-openj9-8:
585 runs-on: ubuntu-latest
586
587- strategy:
588- fail-fast: false
589-
590- env:
591- JRUBY_OPTS: '-Xcompile.invokedynamic'
592+ name: mvn -Ptest (OpenJ9 Java 17)
593
594 steps:
595- - name: checkout
596- uses: actions/checkout@v2
597- - name: cache dependencies
598- uses: actions/cache@v2
599- with:
600- path: ~/.m2
601- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
602- restore-keys: ${{ runner.os }}-m2
603- - name: set up java 8
604- uses: actions/setup-java@v2
605+ - name: Bootstrap build
606+ uses: jruby/jruby-ci-build@v1
607+ - name: set up java ${{ matrix.java-version }}
608+ uses: actions/setup-java@v3
609 with:
610- distribution: 'zulu'
611- java-version: 8
612- - name: bootstrap
613- run: mvn -Pbootstrap clean package
614- - name: bundle install
615- run: bin/jruby --dev -S bundle install
616- - name: rake spec:ji
617- run: bin/jruby --dev -S rake spec:ji
618+ distribution: 'adopt-openj9'
619+ java-version: '17'
620+ cache: 'maven'
621+ - name: test profile
622+ run: "tool/maven-ci-script.sh"
623+ env:
624+ PHASE: 'package -Ptest'
625
626- regression-specs-jit:
627+ rake-test-wip-8:
628 runs-on: ubuntu-latest
629
630 strategy:
631+ matrix:
632+ target: ['test:mri:core_wip', 'test:mri:stdlib_wip']
633 fail-fast: false
634
635- env:
636- JRUBY_OPTS: '-Xjit.threshold=0'
637+ name: rake ${{ matrix.target }} (Java 8)
638
639 steps:
640- - name: checkout
641- uses: actions/checkout@v2
642- - name: cache dependencies
643- uses: actions/cache@v2
644- with:
645- path: ~/.m2
646- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
647- restore-keys: ${{ runner.os }}-m2
648+ - name: Bootstrap build
649+ uses: jruby/jruby-ci-build@v1
650 - name: set up java 8
651- uses: actions/setup-java@v2
652+ uses: actions/setup-java@v3
653 with:
654 distribution: 'zulu'
655- java-version: 8
656- - name: bootstrap
657- run: mvn -Pbootstrap clean package
658- - name: bundle install
659- run: bin/jruby --dev -S bundle install
660- - name: rake spec:regression
661- run: bin/jruby --dev -S rake spec:regression
662-
663- maven-test-openj9-8:
664- runs-on: ubuntu-latest
665-
666- name: mvn -Ptest (OpenJ9 Java 8)
667-
668- steps:
669- - name: checkout
670- uses: actions/checkout@v2
671- - name: cache dependencies
672- uses: actions/cache@v2
673- with:
674- path: ~/.m2
675- key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.rb') }}
676- restore-keys: ${{ runner.os }}-m2
677- - name: set up java ${{ matrix.java-version }}
678- uses: actions/setup-java@v2
679- with:
680- distribution: 'adopt-openj9'
681 java-version: '8'
682- - name: test profile
683- run: tool/maven-ci-script.sh
684- env:
685- PHASE: 'package -Ptest'
686+ cache: 'maven'
687+ - name: rake ${{ matrix.target }}
688+ continue-on-error: true
689+ run: "bin/jruby -S rake ${{ matrix.target }}"
690+ - run: true
691
692 publish-snapshot:
693 permissions:
694 contents: none
695 if: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/jruby-9.3' }}
696- needs: [mvn-test, mvn-test-8, mvn-test-windows, dependency-check, rake-test, rake-test-indy, rake-test-8, test-versions, sequel, concurrent-ruby, jruby-tests-dev, ji-specs-indy, regression-specs-jit, maven-test-openj9-8]
697+ needs: [mvn-test, mvn-test-extended, mvn-test-windows, dependency-check, rake-test, rake-test-17-indy, rake-test-8, test-versions, sequel, concurrent-ruby, jruby-tests-dev, regression-specs-jit]
698 uses: jruby/jruby/.github/workflows/snapshot-publish.yml@6cd0d4d96d9406635183d81cf91acc82cd78245f
699 secrets:
700 SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
701diff --git a/.github/workflows/nightly-snapshot-publish.yml b/.github/workflows/nightly-snapshot-publish.yml
702new file mode 100644
703index 0000000..eee8db9
704--- /dev/null
705+++ b/.github/workflows/nightly-snapshot-publish.yml
706@@ -0,0 +1,21 @@
707+name: Nightly Master Snapshot
708+
709+on:
710+ schedule:
711+ - cron: '30 6 * * *'
712+
713+env:
714+ JAVA_OPTS: '-XX:+TieredCompilation -XX:TieredStopAtLevel=1 -Xms60M -Xmx1G -XX:InitialCodeCacheSize=40M -XX:ReservedCodeCacheSize=120M'
715+
716+permissions:
717+ contents: read
718+
719+jobs:
720+ publish-snapshot:
721+ permissions:
722+ contents: none
723+ if: ${{ github.ref == 'refs/heads/master' }}
724+ uses: jruby/jruby/.github/workflows/snapshot-publish.yml@6cd0d4d96d9406635183d81cf91acc82cd78245f
725+ secrets:
726+ SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
727+ SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
728diff --git a/.github/workflows/snapshot-publish.yml b/.github/workflows/snapshot-publish.yml
729index 9278687..8c8049c 100644
730--- a/.github/workflows/snapshot-publish.yml
731+++ b/.github/workflows/snapshot-publish.yml
732@@ -17,7 +17,7 @@ jobs:
733
734 steps:
735 - name: checkout
736- uses: actions/checkout@v2
737+ uses: actions/checkout@v3
738 - name: set up Java
739 uses: actions/setup-java@v2
740 with:
741@@ -26,6 +26,11 @@ jobs:
742 server-id: sonatype-nexus-snapshots
743 server-username: MAVEN_USERNAME
744 server-password: MAVEN_PASSWORD
745+ - name: Setup Maven Action
746+ uses: s4u/setup-maven-action@v1.6.0
747+ with:
748+ java-version: '8'
749+ maven-version: '3.8.7'
750 - name: Publish package
751 run: ./mvnw -B clean deploy -Prelease
752 env:
753diff --git a/.gitignore b/.gitignore
754index c202f56..7b38a79 100644
755--- a/.gitignore
756+++ b/.gitignore
757@@ -56,18 +56,31 @@ lib/ruby/gems
758 # Ruby stdlib files installed from external sources
759 lib/ruby/stdlib/**/maven-metadata-local.xml
760 lib/ruby/stdlib/*.jar
761+lib/ruby/stdlib/abbrev*
762 lib/ruby/stdlib/ant*
763+lib/ruby/stdlib/base64*
764+lib/ruby/stdlib/benchmark*
765+lib/ruby/stdlib/bigdecimal*
766 lib/ruby/stdlib/bundler*
767-lib/ruby/stdlib/cmath.rb
768+lib/ruby/stdlib/cgi*
769 lib/ruby/stdlib/csv*
770+lib/ruby/stdlib/debug*
771+lib/ruby/stdlib/delegate*
772 lib/ruby/stdlib/did_you_mean*
773-lib/ruby/stdlib/e2mmap*
774+lib/ruby/stdlib/digest*
775+lib/ruby/stdlib/drb*
776+lib/ruby/stdlib/English*
777+lib/ruby/stdlib/erb*
778+lib/ruby/stdlib/error_highlight*
779 lib/ruby/stdlib/ffi*
780-lib/ruby/stdlib/fileutils.rb
781+lib/ruby/stdlib/fileutils*
782+lib/ruby/stdlib/find*
783 lib/ruby/stdlib/forwardable*
784 lib/ruby/stdlib/gauntlet_rdoc.rb
785+lib/ruby/stdlib/getoptlong*
786 lib/ruby/stdlib/hoe*
787 lib/ruby/stdlib/io/console*
788+lib/ruby/stdlib/io/wait*
789 lib/ruby/stdlib/ipaddr*
790 lib/ruby/stdlib/irb*
791 lib/ruby/stdlib/jar*
792@@ -75,34 +88,53 @@ lib/ruby/stdlib/jline
793 lib/ruby/stdlib/jopenssl*
794 lib/ruby/stdlib/json*
795 lib/ruby/stdlib/krypt*
796+lib/ruby/stdlib/libfixposix*
797 lib/ruby/stdlib/logger*
798 lib/ruby/stdlib/matrix*
799 lib/ruby/stdlib/minitest*
800 lib/ruby/stdlib/mutex_m.rb
801-lib/ruby/stdlib/net-telnet.rb
802-lib/ruby/stdlib/net/telnet*
803+lib/ruby/stdlib/net/protocol*
804+lib/ruby/stdlib/net/http*
805+lib/ruby/stdlib/observer*
806+lib/ruby/stdlib/open3*
807+lib/ruby/stdlib/open-uri*
808+lib/ruby/stdlib/optparse*
809+lib/ruby/stdlib/optionparser*
810 lib/ruby/stdlib/openssl*
811 lib/ruby/stdlib/org/
812-lib/ruby/stdlib/ostruct.rb
813+lib/ruby/stdlib/ostruct*
814+lib/ruby/stdlib/pp*
815+lib/ruby/stdlib/prettyprint*
816 lib/ruby/stdlib/power_assert*
817 lib/ruby/stdlib/prime*
818+lib/ruby/stdlib/pstore*
819 lib/ruby/stdlib/psych*
820+lib/ruby/stdlib/random*
821 lib/ruby/stdlib/racc*
822 lib/ruby/stdlib/rake*
823 lib/ruby/stdlib/rdoc*
824 lib/ruby/stdlib/readline*
825-lib/ruby/stdlib/rexml*
826+lib/ruby/stdlib/reline*
827+lib/ruby/stdlib/resolv-replace*
828+lib/ruby/stdlib/rinda*
829 lib/ruby/stdlib/ripper.jar
830-lib/ruby/stdlib/rss*
831+lib/ruby/stdlib/ruby2_keywords*
832 lib/ruby/stdlib/rubygems*
833 lib/ruby/stdlib/rubygems/defaults/jruby_native.rb
834-lib/ruby/stdlib/scanf.rb
835-lib/ruby/stdlib/shell*
836-lib/ruby/stdlib/sync.rb
837-lib/ruby/stdlib/test*
838-lib/ruby/stdlib/thwait*
839+lib/ruby/stdlib/securerandom*
840+lib/ruby/stdlib/shellwords*
841+lib/ruby/stdlib/singleton*
842+lib/ruby/stdlib/stringio*
843+lib/ruby/stdlib/strscan*
844+lib/ruby/stdlib/subspawn*
845+lib/ruby/stdlib/time.rb
846+lib/ruby/stdlib/timeout*
847 lib/ruby/stdlib/tracer*
848-lib/ruby/stdlib/webrick*
849+lib/ruby/stdlib/tsort*
850+lib/ruby/stdlib/un*
851+lib/ruby/stdlib/uri*
852+lib/ruby/stdlib/yaml*
853+lib/ruby/stdlib/weakref*
854
855 release.properties
856 share
857diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml
858index 443f848..38ba828 100644
859--- a/.mvn/extensions.xml
860+++ b/.mvn/extensions.xml
861@@ -3,6 +3,6 @@
862 <extension>
863 <groupId>io.takari.polyglot</groupId>
864 <artifactId>polyglot-ruby</artifactId>
865- <version>0.4.7</version>
866+ <version>0.4.11</version>
867 </extension>
868 </extensions>
869diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar
870index 5fd4d50..cb28b0e 100644
871Binary files a/.mvn/wrapper/maven-wrapper.jar and b/.mvn/wrapper/maven-wrapper.jar differ
872diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
873index c6046c0..70f4f50 100644
874--- a/.mvn/wrapper/maven-wrapper.properties
875+++ b/.mvn/wrapper/maven-wrapper.properties
876@@ -1 +1,18 @@
877-distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.8.1/apache-maven-3.8.1-bin.zip
878+# Licensed to the Apache Software Foundation (ASF) under one
879+# or more contributor license agreements. See the NOTICE file
880+# distributed with this work for additional information
881+# regarding copyright ownership. The ASF licenses this file
882+# to you under the Apache License, Version 2.0 (the
883+# "License"); you may not use this file except in compliance
884+# with the License. You may obtain a copy of the License at
885+#
886+# http://www.apache.org/licenses/LICENSE-2.0
887+#
888+# Unless required by applicable law or agreed to in writing,
889+# software distributed under the License is distributed on an
890+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
891+# KIND, either express or implied. See the License for the
892+# specific language governing permissions and limitations
893+# under the License.
894+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.8/apache-maven-3.8.8-bin.zip
895+wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
896diff --git a/BUILDING.md b/BUILDING.md
897index a87c0d3..ec41470 100644
898--- a/BUILDING.md
899+++ b/BUILDING.md
900@@ -44,7 +44,7 @@ rvm use system
901
902 After building lib/jruby.jar, JRuby can be run with the `bin/jruby` executable. If the `jruby-launcher` gem installed successfully, this will be a native
903 executable for your platform; otherwise, it will be a copy of the
904-`bin/jruby.bash` bash script.
905+`bin/jruby.sh` shell script.
906
907 RubyGems is installed by default, and available in `bin/gem`. It will
908 attempt to locate the `jruby` executable using `/usr/bin/env`, so you
909diff --git a/Gemfile b/Gemfile
910index b22e68c..eedf471 100644
911--- a/Gemfile
912+++ b/Gemfile
913@@ -1,3 +1,3 @@
914 source 'https://rubygems.org'
915
916-gem 'rspec', '3.10.0'
917+gem 'rspec', '3.12.0'
918diff --git a/README.md b/README.md
919index 882dab5..2e480b1 100644
920--- a/README.md
921+++ b/README.md
922@@ -1,7 +1,7 @@
923 # JRuby - an implementation of the Ruby language on the JVM
924
925-Master: ![Linux](https://github.com/jruby/jruby/actions/workflows/ci.yml/badge.svg), ![Windows](https://github.com/jruby/jruby/actions/workflows/ci-windows.yml/badge.svg)
926-9.3 branch: ![Linux](https://github.com/jruby/jruby/actions/workflows/ci.yml/badge.svg?branch=jruby-9.3), ![Windows](https://github.com/jruby/jruby/actions/workflows/ci-windows.yml/badge.svg?branch=jruby-9.3)
927+Master: [![JRuby CI](https://github.com/jruby/jruby/actions/workflows/ci.yml/badge.svg)](https://github.com/jruby/jruby/actions/workflows/ci.yml), [![JRuby CI (Windows)](https://github.com/jruby/jruby/actions/workflows/ci-windows.yml/badge.svg)](https://github.com/jruby/jruby/actions/workflows/ci-windows.yml)
928+9.3 branch: [![JRuby CI](https://github.com/jruby/jruby/actions/workflows/ci.yml/badge.svg?branch=jruby-9.3)](https://github.com/jruby/jruby/actions/workflows/ci.yml), [![JRuby CI (Windows)](https://github.com/jruby/jruby/actions/workflows/ci-windows.yml/badge.svg?branch=jruby-9.3)](https://github.com/jruby/jruby/actions/workflows/ci-windows.yml)
929
930 ## About
931
932@@ -36,7 +36,7 @@ version is very old.
933 An alternative is to use one of the [Ruby version managers](https://www.ruby-lang.org/en/documentation/installation/#managers).
934
935 For [`rbenv`](https://github.com/sstephenson/rbenv) you will need the
936-[`ruby-build`](https://githubcom/sstephenson/ruby-build) plugin. You may find that your system
937+[`ruby-build`](https://github.com/sstephenson/ruby-build) plugin. You may find that your system
938 package manager can provide these. To see which versions of JRuby are available you should run:
939
940 ```
941diff --git a/VERSION b/VERSION
942index 8e16f67..5511636 100644
943--- a/VERSION
944+++ b/VERSION
945@@ -1 +1 @@
946-9.3.9.0
947+9.4.5.0
948diff --git a/bin/jirb_swing b/bin/jirb_swing
949index e221c8c..3a96eb5 100755
950--- a/bin/jirb_swing
951+++ b/bin/jirb_swing
952@@ -5,6 +5,7 @@
953 # Damian Steer (pldms@mac.com)
954
955 require 'jruby'
956+require 'readline'
957 require 'irb'
958 require 'irb/completion'
959
960diff --git a/bin/jruby.bash b/bin/jruby.bash
961deleted file mode 100755
962index 1cbea4f..0000000
963--- a/bin/jruby.bash
964+++ /dev/null
965@@ -1,527 +0,0 @@
966-#!/usr/bin/env bash
967-# -----------------------------------------------------------------------------
968-# jruby.bash - Start Script for the JRuby interpreter
969-# -----------------------------------------------------------------------------
970-
971-# ----- Set variable defaults --------------
972-
973-cygwin=false
974-use_exec=true
975-java_opts_from_files=""
976-JRUBY_SHELL=/bin/sh
977-
978-if [ -z "$JRUBY_OPTS" ] ; then
979- JRUBY_OPTS=""
980-fi
981-
982-if [ -z "$JAVA_STACK" ] ; then
983- JAVA_STACK=-Xss2048k
984-fi
985-
986-declare -a java_args
987-declare -a ruby_args
988-
989-JAVA_CLASS_JRUBY_MAIN=org.jruby.Main
990-java_class="$JAVA_CLASS_JRUBY_MAIN"
991-
992-# Force OpenJDK-based JVMs to use /dev/urandom for random number generation
993-# See https://github.com/jruby/jruby/issues/4685 among others.
994-# OpenJDK tries really hard to prevent you from using urandom.
995-# See https://bugs.openjdk.java.net/browse/JDK-6202721
996-# Non-file URL causes fallback to slow threaded SeedGenerator.
997-# See https://bz.apache.org/bugzilla/show_bug.cgi?id=56139
998-if [ -r "/dev/urandom" ]; then
999- JAVA_SECURITY_EGD="file:/dev/urandom"
1000-fi
1001-
1002-# Gather environment information as we go
1003-environment_log=$'JRuby Environment\n================='
1004-add_log() {
1005- environment_log+=$'\n'"$1"
1006-}
1007-
1008-# Logic to process "arguments files" on both Java 8 and Java 9+
1009-unset java_opts_from_files
1010-process_java_opts() {
1011- java_opts_file="$1"
1012- if [ -r "$java_opts_file" ]; then
1013- add_log
1014- add_log "Adding Java options from: $java_opts_file"
1015-
1016- while read -r line; do
1017- if [ "$line" ]; then
1018- add_log " $line"
1019- fi
1020- done < "$java_opts_file"
1021-
1022- # On Java 9+, add an @argument for the given file.
1023- # On earlier versions the file contents will be read and expanded on the Java command line.
1024- if [ "$use_modules" ]; then
1025- java_opts_from_files="$java_opts_from_files @$java_opts_file"
1026- else
1027- java_opts_from_files="$java_opts_from_files $(cat "$java_opts_file")"
1028- fi
1029- fi
1030-}
1031-
1032-# Pure shell dirname/basename
1033-dir_name() {
1034- local filename="$1" trail
1035- case $filename in
1036- */*[!/]*)
1037- trail=${filename##*[!/]}
1038- filename=${filename%%"$trail"}
1039- result=${filename%/*}
1040- ;;
1041- *[!/]*)
1042- trail=${filename##*[!/]}
1043- result="."
1044- ;;
1045- *)
1046- result="/"
1047- ;;
1048- esac
1049-}
1050-
1051-base_name() {
1052- local filename="$1" trail
1053- case $filename in
1054- */*[!/]*)
1055- trail=${filename##*[!/]}
1056- filename=${filename%%"$trail"}
1057- result=${filename##*/}
1058- ;;
1059- *[!/]*)
1060- trail=${filename##*[!/]}
1061- result=${filename%%"$trail"}
1062- ;;
1063- *)
1064- result="/"
1065- ;;
1066- esac
1067-}
1068-
1069-# Resolve all symlinks in a chain
1070-resolve_symlinks() {
1071- cur_path="$1"
1072- while [ -h "$cur_path" ]; do
1073- # 1) cd to directory of the symlink
1074- # 2) cd to the directory of where the symlink points
1075- # 3) get the physical pwd
1076- # 4) append the basename
1077- sym="$(readlink "$cur_path")"
1078-
1079- dir_name "$cur_path"
1080- dirname="$result"
1081-
1082- sym_base="$(cd -P -- "$dirname" >/dev/null && pwd -P)"
1083-
1084- dir_name "$sym"
1085- dirname="$result"
1086-
1087- base_name "$sym"
1088- basename="$result"
1089-
1090- cur_path="$(cd "$sym_base" && cd "$dirname" && pwd -P)/$basename"
1091- done
1092- result="$cur_path"
1093-}
1094-
1095-# ----- Determine JRUBY_HOME based on this executable's path ------------------
1096-
1097-# get the absolute path of the executable
1098-dir_name "$BASH_SOURCE"
1099-BASE_DIR="$(cd -P -- "$result" >/dev/null && pwd -P)"
1100-base_name "$BASH_SOURCE"
1101-resolve_symlinks "$BASE_DIR/$result"
1102-SELF_PATH="$result"
1103-
1104-JRUBY_HOME="${SELF_PATH%/*/*}"
1105-
1106-# ----- File paths for various options and files we'll process later ----------
1107-
1108-# Module options to open up packages we need to reflect
1109-jruby_module_opts_file="$JRUBY_HOME/bin/.jruby.module_opts"
1110-
1111-# Cascading .java_opts files for localized JVM flags
1112-installed_jruby_java_opts_file="$JRUBY_HOME/bin/.jruby.java_opts"
1113-home_jruby_java_opts_file="$HOME/.jruby.java_opts"
1114-pwd_jruby_java_opts_file="$PWD/.jruby.java_opts"
1115-
1116-# Options from .dev_mode.java_opts for "--dev" mode, to reduce JRuby startup time
1117-dev_mode_opts_file="$JRUBY_HOME/bin/.dev_mode.java_opts"
1118-
1119-# Default JVM Class Data Sharing Archive (jsa) file for JVMs that support it
1120-jruby_jsa_file="$JRUBY_HOME/lib/jruby.jsa"
1121-
1122-# ----- Initialize environment log -------------------------
1123-
1124-add_log
1125-add_log "JRuby executable:"
1126-add_log " $BASH_SOURCE"
1127-add_log "JRuby command line options:"
1128-add_log " $*"
1129-add_log "Current directory:"
1130-add_log " $(pwd)"
1131-
1132-add_log
1133-add_log "Environment:"
1134-add_log " JRUBY_HOME: $JRUBY_HOME"
1135-add_log " JRUBY_OPTS: $JRUBY_OPTS"
1136-add_log " JAVA_OPTS: $JAVA_OPTS"
1137-
1138-# ----- Discover JVM and prep environment to run it ---------------------------
1139-
1140-# Detect cygwin and mingw environments
1141-case "$(uname)" in
1142- CYGWIN*) cygwin=true;;
1143- MINGW*) jruby.exe "$@"; exit $?;;
1144-esac
1145-
1146-# Determine where the java command is and ensure we have a good JAVA_HOME
1147-if [ -z "$JAVACMD" ] ; then
1148- if [ -z "$JAVA_HOME" ] ; then
1149- java_home_command="/usr/libexec/java_home"
1150- if [ -r "$java_home_command" ] && [ -x "$java_home_command" ] && [ ! -d "$java_home_command" ] ; then
1151- # use java_home command when none is set (on MacOS)
1152- JAVA_HOME="$("$java_home_command")"
1153- JAVACMD="$JAVA_HOME"/bin/java
1154- else
1155- # Linux and others have a chain of symlinks
1156- resolve_symlinks "$(command -v java)"
1157- JAVACMD="$result"
1158-
1159- # export separately from command execution
1160- dir_name "$JAVACMD"
1161- dir_name "$result"
1162- JAVA_HOME="$result"
1163- fi
1164- else
1165- if $cygwin; then
1166- JAVACMD="$(cygpath -u "$JAVA_HOME")/bin/java"
1167- else
1168- JAVACMD="$JAVA_HOME/bin/java"
1169- fi
1170- fi
1171-else
1172- resolve_symlinks "$(command -v "$JAVACMD")"
1173- expanded_javacmd="$result"
1174- if [ -z "$JAVA_HOME" ] && [ -x "$expanded_javacmd" ] ; then
1175- dir_name "$expanded_javacmd"
1176- dir_name "$result"
1177- JAVA_HOME="$result"
1178- fi
1179-fi
1180-
1181-# Detect modularized Java if modules file is present or a MODULES line appears in release
1182-if [ -f "$JAVA_HOME"/lib/modules ] || { [ -f "$JAVA_HOME"/release ] && grep -q ^MODULES "$JAVA_HOME"/release; } ; then
1183- use_modules=1
1184-fi
1185-
1186-add_log " JAVACMD: $JAVACMD"
1187-add_log " JAVA_HOME: $JAVA_HOME"
1188-
1189-if [ "$use_modules" ]; then
1190- add_log
1191- add_log "Detected Java modules at $JAVA_HOME"
1192-fi
1193-
1194-# ----- Process .java_opts files ----------------------------------------------
1195-
1196-# We include options on the java command line in the following order:
1197-#
1198-# * JRuby installed bin/.jruby.java_opts (empty by default)
1199-# * user directory .jruby.java_opts
1200-# * current directory .jruby.java_opts
1201-# * dev mode options from bin/.dev_mode.java_opts, if --dev is specified
1202-# * module options from bin/.jruby.module_opts if modules are detected
1203-# * JAVA_OPTS environment variable
1204-# * command line flags
1205-
1206-# Add local and global .jruby.java_opts
1207-process_java_opts "$installed_jruby_java_opts_file"
1208-process_java_opts "$home_jruby_java_opts_file"
1209-process_java_opts "$pwd_jruby_java_opts_file"
1210-
1211-# Capture some Java options to be passed separately
1212-unset JAVA_OPTS_TEMP
1213-JAVA_OPTS_TEMP=""
1214-for opt in $JAVA_OPTS; do
1215- case $opt in
1216- -Xmx*)
1217- JAVA_MEM="$opt";;
1218- -Xss*)
1219- JAVA_STACK="$opt";;
1220- *)
1221- JAVA_OPTS_TEMP="$JAVA_OPTS_TEMP $opt";;
1222- esac
1223-done
1224-
1225-JAVA_OPTS="$JAVA_OPTS_TEMP"
1226-
1227-# ----- Set up the JRuby class/module path ------------------------------------
1228-
1229-CP_DELIMITER=":"
1230-
1231-# add main jruby jar to the classpath
1232-for j in "$JRUBY_HOME"/lib/jruby.jar "$JRUBY_HOME"/lib/jruby-complete.jar; do
1233- if [ ! -e "$j" ]; then
1234- continue
1235- fi
1236- if [ "$JRUBY_CP" ]; then
1237- JRUBY_CP="$JRUBY_CP$CP_DELIMITER$j"
1238- else
1239- JRUBY_CP="$j"
1240- fi
1241- if [ "$JRUBY_ALREADY_ADDED" ]; then
1242- echo "WARNING: more than one JRuby JAR found in lib directory" 1>&2
1243- fi
1244- JRUBY_ALREADY_ADDED=true
1245-done
1246-
1247-if $cygwin; then
1248- JRUBY_CP="$(cygpath -p -w "$JRUBY_CP")"
1249-fi
1250-
1251-# ----- Add additional jars from lib to classpath -----------------------------
1252-
1253-if [ "$JRUBY_PARENT_CLASSPATH" ]; then
1254- # Use same classpath propagated from parent jruby
1255- CP="$JRUBY_PARENT_CLASSPATH"
1256-else
1257- # add other jars in lib to CP for command-line execution
1258- for j in "$JRUBY_HOME"/lib/*.jar; do
1259- if [ "$j" = "$JRUBY_HOME"/lib/jruby.jar ]; then
1260- continue
1261- fi
1262- if [ "$j" = "$JRUBY_HOME"/lib/jruby-complete.jar ]; then
1263- continue
1264- fi
1265- if [ "$CP" ]; then
1266- CP="$CP$CP_DELIMITER$j"
1267- else
1268- CP="$j"
1269- fi
1270- done
1271-
1272- if [ "$CP" ] && $cygwin; then
1273- CP="$(cygpath -p -w "$CP")"
1274- fi
1275-fi
1276-
1277-if $cygwin; then
1278- # switch delimiter only after building Unix style classpaths
1279- CP_DELIMITER=";"
1280-fi
1281-
1282-# ----- Continue processing JRuby options into JVM options --------------------
1283-
1284-# Split out any -J argument for passing to the JVM.
1285-# Scanning for args is aborted by '--'.
1286-set -- $JRUBY_OPTS "$@"
1287-while [ $# -gt 0 ]
1288-do
1289- case $1 in
1290- # Stuff after '-J' in this argument goes to JVM
1291- -J-Xmx*)
1292- JAVA_MEM="${1#-J}" ;;
1293- -J-Xss*)
1294- JAVA_STACK="${1#-J}" ;;
1295- -J)
1296- "$JAVACMD" -help
1297- echo "(Prepend -J in front of these options when using 'jruby' command)" 1>&2
1298- exit ;;
1299- -J-X)
1300- "$JAVACMD" -X
1301- echo "(Prepend -J in front of these options when using 'jruby' command)" 1>&2
1302- exit ;;
1303- -J-classpath)
1304- CP="$CP$CP_DELIMITER$2"
1305- CLASSPATH=""
1306- shift ;;
1307- -J-cp)
1308- CP="$CP$CP_DELIMITER$2"
1309- CLASSPATH=""
1310- shift ;;
1311- -J-ea*)
1312- VERIFY_JRUBY="yes"
1313- java_args+=("${1#-J}") ;;
1314- -J-Djava.security.egd=*)
1315- JAVA_SECURITY_EGD=${1#-J-Djava.security.egd=} ;;
1316- # This must be the last check for -J
1317- -J*)
1318- java_args+=("${1#-J}") ;;
1319- # Pass -X... and -X? search options through
1320- -X*...|-X*\?)
1321- ruby_args+=("$1") ;;
1322- # Match -Xa.b.c=d to translate to -Da.b.c=d as a java option
1323- -X*.*)
1324- java_args+=("-Djruby.${1#-X}") ;;
1325- # Match switches that take an argument
1326- -C|-e|-I|-S)
1327- ruby_args+=("$1" "$2")
1328- shift ;;
1329- # Run with JMX management enabled
1330- --manage)
1331- java_args+=("-Dcom.sun.management.jmxremote")
1332- java_args+=("-Djruby.management.enabled=true") ;;
1333- # Don't launch a GUI window, no matter what
1334- --headless)
1335- java_args+=("-Djava.awt.headless=true") ;;
1336- # Run under JDB
1337- --jdb)
1338- if [ -z "$JAVA_HOME" ] ; then
1339- JAVACMD='jdb'
1340- else
1341- if $cygwin; then
1342- JAVACMD="$(cygpath -u "$JAVA_HOME")/bin/jdb"
1343- else
1344- JAVACMD="$JAVA_HOME/bin/jdb"
1345- fi
1346- fi
1347- JDB_SOURCEPATH="${JRUBY_HOME}/core/src/main/java:${JRUBY_HOME}/lib/ruby/stdlib:."
1348- java_args+=("-sourcepath" "$JDB_SOURCEPATH")
1349- JRUBY_OPTS+=("-X+C") ;;
1350- --client|--server|--noclient)
1351- echo "Warning: the $1 flag is deprecated and has no effect most JVMs" 1>&2 ;;
1352- --dev)
1353- process_java_opts "$dev_mode_opts_file"
1354- # For OpenJ9 use environment variable to enable quickstart and shareclasses
1355- export OPENJ9_JAVA_OPTIONS="-Xquickstart -Xshareclasses" ;;
1356- --sample)
1357- java_args+=("-Xprof") ;;
1358- --record)
1359- java_args+=("-XX:+FlightRecorder" "-XX:StartFlightRecording=dumponexit=true") ;;
1360- --no-bootclasspath)
1361- NO_BOOTCLASSPATH=true ;;
1362- --ng*)
1363- echo "Error: Nailgun is no longer supported" 1>&2
1364- exit 1 ;;
1365- --environment)
1366- print_environment_log=1 ;;
1367- # warn but ignore
1368- --1.8|--1.9|--2.0)
1369- echo "warning: $1 ignored" 1>&2 ;;
1370- # Abort processing on the double dash
1371- --)
1372- break ;;
1373- # Other opts go to ruby
1374- -*)
1375- ruby_args+=("$1") ;;
1376- # Abort processing on first non-opt arg
1377- *)
1378- break ;;
1379- esac
1380- shift
1381-done
1382-
1383-# Force JDK to use specified java.security.egd rand source
1384-if [ -n "$JAVA_SECURITY_EGD" ]; then
1385- java_args+=("-Djava.security.egd=$JAVA_SECURITY_EGD")
1386-fi
1387-
1388-# Append the rest of the arguments
1389-ruby_args+=("$@")
1390-
1391-# Put the ruby_args back into the position arguments $1, $2 etc
1392-set -- "${ruby_args[@]}"
1393-
1394-JAVA_OPTS="$JAVA_OPTS $JAVA_MEM $JAVA_STACK"
1395-
1396-JFFI_OPTS="-Djffi.boot.library.path=$JRUBY_HOME/lib/jni"
1397-
1398-# ----- Tweak console environment for cygwin ------------------------------------------
1399-
1400-if $cygwin; then
1401- use_exec=false
1402- JRUBY_HOME="$(cygpath --mixed "$JRUBY_HOME")"
1403- JRUBY_SHELL="$(cygpath --mixed "$JRUBY_SHELL")"
1404-
1405- if [ "${1:0:1}" = "/" ] && [ -f "$1" ] || [ -d "$1" ]; then
1406- win_arg="$(cygpath -w "$1")"
1407- shift
1408- win_args=("$win_arg" "$@")
1409- set -- "${win_args[@]}"
1410- fi
1411-
1412- # fix JLine to use UnixTerminal
1413- if stty -icanon min 1 -echo > /dev/null 2>&1; then
1414- JAVA_OPTS="$JAVA_OPTS -Djline.terminal=jline.UnixTerminal"
1415- fi
1416-
1417-fi
1418-
1419-# ----- Module and Class Data Sharing flags for Java 9+ -----------------------
1420-
1421-if [ "$use_modules" ]; then
1422- # Use module path instead of classpath for the jruby libs
1423- classpath_args=(--module-path "$JRUBY_CP" -classpath "$CP$CP_DELIMITER$CLASSPATH")
1424-
1425- # Switch to non-boot path since we can't use bootclasspath on 9+
1426- NO_BOOTCLASSPATH=1
1427-
1428- # Add base opens we need for Ruby compatibility
1429- process_java_opts "$jruby_module_opts_file"
1430-
1431- # Allow overriding default JSA file location
1432- if [ -z "$JRUBY_JSA" ]; then
1433- JRUBY_JSA="$jruby_jsa_file"
1434- fi
1435-
1436- # If we have a jruby.jsa file, enable AppCDS
1437- if [ -f "$JRUBY_JSA" ]; then
1438- add_log
1439- add_log "Detected Class Data Sharing archive:"
1440- add_log " $JRUBY_JSA"
1441-
1442- JAVA_OPTS="$JAVA_OPTS -XX:+UnlockDiagnosticVMOptions -XX:SharedArchiveFile=$JRUBY_JSA"
1443- fi
1444-else
1445- classpath_args=(-classpath "$JRUBY_CP$CP_DELIMITER$CP$CP_DELIMITER$CLASSPATH")
1446-fi
1447-
1448-# ----- Final prepration of the Java command line -----------------------------
1449-
1450-# Include all options from files at the beginning of the Java command line
1451-JAVA_OPTS="$java_opts_from_files $JAVA_OPTS"
1452-
1453-# Don't quote JAVA_OPTS; we want it to expand
1454-jvm_command=("$JAVACMD" $JAVA_OPTS "$JFFI_OPTS" "${java_args[@]}")
1455-
1456-if [ "$NO_BOOTCLASSPATH" ] || [ "$VERIFY_JRUBY" ]; then
1457- jvm_command+=("${classpath_args[@]}")
1458-else
1459- jvm_command+=(-Xbootclasspath/a:"$JRUBY_CP" \
1460- -classpath "$CP$CP_DELIMITER$CLASSPATH" "-Djruby.home=$JRUBY_HOME")
1461-fi
1462-
1463-jvm_command+=("-Djruby.home=$JRUBY_HOME" \
1464- "-Djruby.lib=$JRUBY_HOME/lib" "-Djruby.script=jruby" \
1465- "-Djruby.shell=$JRUBY_SHELL" \
1466- "$java_class" "$@")
1467-
1468-add_log
1469-add_log "Java command line:"
1470-add_log " ${jvm_command[*]}"
1471-
1472-if [ "$print_environment_log" ]; then
1473- echo "$environment_log"
1474- exit 0
1475-fi
1476-
1477-# ----- Run JRuby! ------------------------------------------------------------
1478-
1479-if $use_exec; then
1480- exec "${jvm_command[@]}"
1481-else
1482- "${jvm_command[@]}"
1483-
1484- # Record the exit status immediately, or it will be overridden.
1485- JRUBY_STATUS=$?
1486-
1487- if $cygwin; then
1488- stty icanon echo > /dev/null 2>&1
1489- fi
1490-
1491- exit $JRUBY_STATUS
1492-fi
1493diff --git a/bin/jruby.sh b/bin/jruby.sh
1494index b6409c0..7fdd80d 100755
1495--- a/bin/jruby.sh
1496+++ b/bin/jruby.sh
1497@@ -1,285 +1,733 @@
1498-#! /bin/sh
1499+#!/bin/sh
1500+# shellcheck disable=1007
1501 # -----------------------------------------------------------------------------
1502-# jruby.sh - Start Script for the JRuby interpreter
1503+# jruby.bash - Start Script for the JRuby interpreter
1504+# -----------------------------------------------------------------------------
1505+
1506+# ----- Guarantee local variables are available -------------------------------
1507+if command -v local >/dev/null; then
1508+ :
1509+elif command -v typeset >/dev/null; then
1510+ # ksh93 and older have typeset but not local, and expand aliases at parse
1511+ # time so require re-sourcing the script
1512+ alias local=typeset
1513+ if [ -z "$KSH_VERSION" ] || (eval : '"${.sh.version}"' >/dev/null 2>&1); then
1514+ # shellcheck source=/dev/null
1515+ . "$0"
1516+ exit
1517+ fi
1518+else
1519+ echo >&2 "Error: Your shell does not support local variables. Re-run this script with one that does (e.g. bash, ksh)"
1520+ exit 1
1521+fi
1522+
1523+# ----- Helper functions ------------------------------------------------------
1524+
1525+# esceval [ARGUMENT...]
1526 #
1527-# Environment Variable Prequisites
1528+# Escape ARGUMENT for safe use with eval
1529+# Returns escaped arguments via $REPLY
1530+# Thanks to @mentalisttraceur for original implementation:
1531+# https://github.com/mentalisttraceur/esceval
1532+esceval()
1533+{
1534+ local escaped= unescaped= output=
1535+ REPLY=
1536+
1537+ [ $# -gt 0 ] || return 0
1538+ while true; do
1539+ escaped=\'
1540+ unescaped=$1
1541+ while true; do
1542+ case $unescaped in
1543+ (*\'*)
1544+ escaped="$escaped${unescaped%%\'*}'\''"
1545+ unescaped=${unescaped#*\'}
1546+ ;;
1547+ (*) break ;;
1548+ esac
1549+ done
1550+ escaped=$escaped$unescaped\'
1551+ shift
1552+ [ $# -gt 0 ] || break
1553+ output="$output $escaped"
1554+ done
1555+ REPLY="$output $escaped"
1556+}
1557+
1558+# assign LISTNAME ELEMENT [ELEMENT...]
1559 #
1560-# JRUBY_OPTS (Optional) Default JRuby command line args
1561-# JRUBY_SHELL Where/What is system shell
1562+# Assign ELEMENT to the list named by LISTNAME.
1563+assign() {
1564+ local listname="$1"
1565+ local REPLY=
1566+ shift
1567+
1568+ esceval "$@"
1569+ eval "$listname=\"\${REPLY}\""
1570+}
1571+
1572+# append LISTNAME ELEMENT [ELEMENT...]
1573 #
1574-# JAVA_HOME Must point at your Java Development Kit installation.
1575+# Append ELEMENT to the list named by LISTNAME.
1576+append() {
1577+ local listname="$1"
1578+ local REPLY=
1579+ shift
1580+
1581+ esceval "$@"
1582+ eval "$listname=\"\${$listname} \${REPLY}\""
1583+}
1584+
1585+# prepend LISTNAME ELEMENT [ELEMENT...]
1586 #
1587-# -----------------------------------------------------------------------------
1588+# Prepend ELEMENT to the list named by LISTNAME, preserving order.
1589+prepend() {
1590+ local listname="$1"
1591+ local REPLY=
1592+ shift
1593
1594-# ********************************** NOTE *************************************
1595-# This script is provided as a convenience for users on systems that do not
1596-# have the "bash" shell available. It does not support all the flags the bash
1597-# and native executables do, but should be complete enough for most users.
1598-# Improvements are welcome.
1599-# *****************************************************************************
1600-
1601-# ----- Verify and Set Required Environment Variables -------------------------
1602-
1603-## resolve links - $0 may be a link to home
1604-PRG=$0
1605-progname=`basename "$0"`
1606-
1607-while [ -h "$PRG" ] ; do
1608- ls=`ls -ld "$PRG"`
1609- link=`expr -- "$ls" : '.*-> \(.*\)$'`
1610- if expr -- "$link" : '.*/.*' > /dev/null; then
1611- if expr -- "$link" : '/' > /dev/null; then
1612- PRG="$link"
1613- else
1614- PRG="`dirname ${PRG}`/${link}"
1615+ esceval "$@"
1616+ eval "$listname=\"\${REPLY} \${$listname}\""
1617+}
1618+
1619+# extend LISTNAME1 LISTNAME2
1620+#
1621+# Append the elements stored in the list named by LISTNAME2
1622+# to the list named by LISTNAME1.
1623+extend() {
1624+ eval "$1=\"\${$1} \${$2}\""
1625+}
1626+
1627+# preextend LISTNAME1 LISTNAME2
1628+#
1629+# Prepend the elements stored in the list named by LISTNAME2
1630+# to the named by LISTNAME1, preserving order.
1631+preextend() {
1632+ eval "$1=\"\${$2} \${$1}\""
1633+}
1634+
1635+# echo [STRING...]
1636+#
1637+# Dumb echo, i.e. print arguments joined by spaces with no further processing
1638+echo() {
1639+ printf "%s\n" "$*"
1640+}
1641+
1642+# ----- Set variable defaults -------------------------------------------------
1643+
1644+readonly java_class=org.jruby.Main
1645+JRUBY_SHELL=/bin/sh
1646+
1647+# Detect cygwin and mingw environments
1648+cygwin=false
1649+case "$(uname)" in
1650+ CYGWIN*) cygwin=true ;;
1651+ MINGW*)
1652+ release_id=$(awk -F= '$1=="ID" { print $2; }' /etc/os-release 2> /dev/null)
1653+ case $release_id in
1654+ "msys2") ;;
1655+ *)
1656+ jruby.exe "$@"
1657+ exit $?
1658+ ;;
1659+ esac
1660+ ;;
1661+esac
1662+readonly cygwin
1663+
1664+use_exec=true
1665+java_opts_from_files=""
1666+
1667+NO_BOOTCLASSPATH=false
1668+VERIFY_JRUBY=false
1669+print_environment_log=false
1670+
1671+if [ -z "$JRUBY_OPTS" ]; then
1672+ JRUBY_OPTS=""
1673+fi
1674+
1675+if [ -z "$JAVA_STACK" ]; then
1676+ JAVA_STACK=-Xss2048k
1677+fi
1678+
1679+java_args=""
1680+ruby_args=""
1681+
1682+# Force OpenJDK-based JVMs to use /dev/urandom for random number generation
1683+# See https://github.com/jruby/jruby/issues/4685 among others.
1684+# OpenJDK tries really hard to prevent you from using urandom.
1685+# See https://bugs.openjdk.java.net/browse/JDK-6202721
1686+# Non-file URL causes fallback to slow threaded SeedGenerator.
1687+# See https://bz.apache.org/bugzilla/show_bug.cgi?id=56139
1688+if [ -r "/dev/urandom" ]; then
1689+ JAVA_SECURITY_EGD="file:/dev/urandom"
1690+fi
1691+
1692+# Gather environment information as we go
1693+readonly cr='
1694+'
1695+environment_log="JRuby Environment$cr================="
1696+add_log() {
1697+ environment_log="${environment_log}${cr}${*}"
1698+}
1699+
1700+# Logic to process "arguments files" on both Java 8 and Java 9+
1701+process_java_opts() {
1702+ local java_opts_file="$1" java_opts=
1703+ if [ -r "$java_opts_file" ]; then
1704+ add_log
1705+ add_log "Adding Java options from: $java_opts_file"
1706+
1707+ while read -r line; do
1708+ if [ "$line" ]; then
1709+ java_opts="${java_opts} ${line}"
1710+ add_log " $line"
1711+ fi
1712+ done < "$java_opts_file"
1713+
1714+ # On Java 9+, add an @argument for the given file.
1715+ # On earlier versions the file contents will be read and expanded on the Java command line.
1716+ if $use_modules; then
1717+ java_opts_from_files="$java_opts_from_files @$java_opts_file"
1718+ else
1719+ java_opts_from_files="$java_opts_from_files $java_opts"
1720+ fi
1721+ fi
1722+}
1723+
1724+# Pure shell dirname/basename
1725+dir_name() {
1726+ local filename="$1" trail=
1727+ case $filename in
1728+ */*[!/]*)
1729+ trail=${filename##*[!/]}
1730+ filename=${filename%%"$trail"}
1731+ REPLY=${filename%/*}
1732+ ;;
1733+ *[!/]*)
1734+ trail=${filename##*[!/]}
1735+ REPLY="."
1736+ ;;
1737+ *)
1738+ REPLY="/"
1739+ ;;
1740+ esac
1741+}
1742+
1743+base_name() {
1744+ local filename="$1" trail=
1745+ case $filename in
1746+ */*[!/]*)
1747+ trail=${filename##*[!/]}
1748+ filename=${filename%%"$trail"}
1749+ REPLY=${filename##*/}
1750+ ;;
1751+ *[!/]*)
1752+ trail=${filename##*[!/]}
1753+ REPLY=${filename%%"$trail"}
1754+ ;;
1755+ *)
1756+ REPLY="/"
1757+ ;;
1758+ esac
1759+}
1760+
1761+# Determine whether path is absolute and contains no relative segments or symlinks
1762+path_is_canonical() {
1763+ local path=
1764+ for path; do
1765+ case $path in
1766+ ([!/]*) return 1 ;;
1767+ (./*|../*) return 1 ;;
1768+ (*/.|*/..) return 1 ;;
1769+ (*/./*|*/../*) return 1 ;;
1770+ esac
1771+ while [ "$path" ]; do
1772+ [ -h "$path" ] && return 1
1773+ path="${path%/*}"
1774+ done
1775+ done
1776+ return 0
1777+}
1778+
1779+# Resolve directory to its canonical value
1780+resolve_dir() {
1781+ # Some shells (dash, ksh) resolve relative paths by default before cd'ing, i.e.
1782+ # cd /foo/bar/../baz = cd /foo/baz
1783+ # This is fine unless bar is a symlink, in which case the second form is
1784+ # invalid. Passing -P to cd fixes this behaviour.
1785+ REPLY="$(cd -P -- "$1" && pwd)"
1786+}
1787+
1788+# Resolve symlink until it's not a symlink
1789+resolve_file() {
1790+ local current="$1" target=
1791+
1792+ while [ -h "$current" ]; do
1793+ target="$(readlink "$current")" || return
1794+ case $target in
1795+ (/*) current="$target" ;;
1796+ # handle relative symlinks
1797+ (*) dir_name "$current"; current="$REPLY/$target" ;;
1798+ esac
1799+ done
1800+ REPLY="$current"
1801+}
1802+
1803+# Resolve path to its canonical value
1804+resolve() {
1805+ local target="$1" base=
1806+ REPLY=
1807+
1808+ # Verify target actually exists (and isn't too deep in symlinks)
1809+ if ! [ -e "$target" ]; then
1810+ echo >&2 "Error: No such file or directory: $target"
1811+ return 1
1812 fi
1813- else
1814- PRG="`dirname $PRG`/$link"
1815- fi
1816-done
1817
1818-JRUBY_HOME_1=`dirname "$PRG"` # the ./bin dir
1819-if [ "$JRUBY_HOME_1" = '.' ] ; then
1820- cwd=`pwd`
1821- JRUBY_HOME=`dirname $cwd` # JRUBY-2699
1822+ # Realpath is way faster than repeatedly calling readlink, so use it if possible
1823+ if command -v realpath >/dev/null; then
1824+ REPLY="$(realpath "$target")" && return
1825+ fi
1826+
1827+ # Take shortcut for directories
1828+ if [ -d "$target" ]; then
1829+ resolve_dir "$target" && return
1830+ fi
1831+
1832+ # Ensure $target is not a symlink
1833+ resolve_file "$target" || return
1834+ target="$REPLY"
1835+
1836+ # Resolve parent directory if it's not absolute
1837+ if ! path_is_canonical "$target"; then
1838+ dir_name "$target"
1839+ resolve_dir "$REPLY" || return
1840+ base="$REPLY"
1841+
1842+ base_name "$target"
1843+ target="$base/$REPLY"
1844+ fi
1845+ REPLY="$target"
1846+}
1847+
1848+# ----- Determine JRUBY_HOME based on this executable's path ------------------
1849+
1850+# get the absolute path of the executable
1851+if [ "$BASH" ]; then
1852+ # shellcheck disable=2128,3028
1853+ script_src="$BASH_SOURCE"
1854+else
1855+ script_src="$0"
1856+fi
1857+dir_name "$script_src"
1858+BASE_DIR="$(cd -P -- "$REPLY" >/dev/null && pwd -P)"
1859+base_name "$script_src"
1860+resolve "$BASE_DIR/$REPLY"
1861+SELF_PATH="$REPLY"
1862+
1863+JRUBY_HOME="${SELF_PATH%/*/*}"
1864+
1865+# ----- File paths for various options and files we'll process later ----------
1866+
1867+# Module options to open up packages we need to reflect
1868+readonly jruby_module_opts_file="$JRUBY_HOME/bin/.jruby.module_opts"
1869+
1870+# Cascading .java_opts files for localized JVM flags
1871+readonly installed_jruby_java_opts_file="$JRUBY_HOME/bin/.jruby.java_opts"
1872+readonly home_jruby_java_opts_file="$HOME/.jruby.java_opts"
1873+readonly pwd_jruby_java_opts_file="$PWD/.jruby.java_opts"
1874+
1875+# Options from .dev_mode.java_opts for "--dev" mode, to reduce JRuby startup time
1876+readonly dev_mode_opts_file="$JRUBY_HOME/bin/.dev_mode.java_opts"
1877+
1878+# Default JVM Class Data Sharing Archive (jsa) file for JVMs that support it
1879+readonly jruby_jsa_file="$JRUBY_HOME/lib/jruby.jsa"
1880+
1881+# ----- Initialize environment log --------------------------------------------
1882+
1883+add_log
1884+add_log "JRuby executable:"
1885+add_log " $script_src"
1886+add_log "JRuby command line options:"
1887+add_log " $*"
1888+add_log "Current directory:"
1889+add_log " $PWD"
1890+
1891+add_log
1892+add_log "Environment:"
1893+add_log " JRUBY_HOME: $JRUBY_HOME"
1894+add_log " JRUBY_OPTS: $JRUBY_OPTS"
1895+add_log " JAVA_OPTS: $JAVA_OPTS"
1896+
1897+# ----- Discover JVM and prep environment to run it ---------------------------
1898+
1899+# Determine where the java command is and ensure we have a good JAVA_HOME
1900+if [ -z "$JAVACMD" ]; then
1901+ if [ -z "$JAVA_HOME" ]; then
1902+ readonly java_home_command="/usr/libexec/java_home"
1903+ if [ -r "$java_home_command" ] \
1904+ && [ -x "$java_home_command" ] \
1905+ && [ ! -d "$java_home_command" ]
1906+ then
1907+ # use java_home command when none is set (on MacOS)
1908+ JAVA_HOME="$("$java_home_command")"
1909+ JAVACMD="$JAVA_HOME"/bin/java
1910+ else
1911+ # Linux and others have a chain of symlinks
1912+ resolve "$(command -v java)"
1913+ JAVACMD="$REPLY"
1914+
1915+ # export separately from command execution
1916+ dir_name "$JAVACMD"
1917+ dir_name "$REPLY"
1918+ JAVA_HOME="$REPLY"
1919+ fi
1920+ elif $cygwin; then
1921+ JAVACMD="$(cygpath -u "$JAVA_HOME")/bin/java"
1922+ else
1923+ JAVACMD="$JAVA_HOME/bin/java"
1924+ fi
1925 else
1926- JRUBY_HOME=`dirname "$JRUBY_HOME_1"` # the . dir
1927+ resolve "$(command -v "$JAVACMD")"
1928+ expanded_javacmd="$REPLY"
1929+ if [ -z "$JAVA_HOME" ] && [ -x "$expanded_javacmd" ]; then
1930+ dir_name "$expanded_javacmd"
1931+ dir_name "$REPLY"
1932+ JAVA_HOME="$REPLY"
1933+ fi
1934 fi
1935
1936-if [ -z "$JRUBY_OPTS" ] ; then
1937- JRUBY_OPTS=""
1938+# Detect modularized Java
1939+java_is_modular() {
1940+ # check that modules file is present
1941+ if [ -f "$JAVA_HOME"/lib/modules ]; then
1942+ return 0
1943+ fi
1944+
1945+ # check if a MODULES line appears in release
1946+ if [ -f "$JAVA_HOME"/release ] && grep -q ^MODULES "$JAVA_HOME"/release; then
1947+ return 0
1948+ fi
1949+
1950+ return 1
1951+}
1952+
1953+if java_is_modular; then
1954+ use_modules=true
1955+else
1956+ use_modules=false
1957 fi
1958+readonly use_modules
1959
1960-if [ -z "$JAVACMD" ] ; then
1961- if [ -z "$JAVA_HOME" ] ; then
1962- JAVACMD='java'
1963- else
1964- JAVACMD="$JAVA_HOME/bin/java"
1965- fi
1966+add_log " JAVACMD: $JAVACMD"
1967+add_log " JAVA_HOME: $JAVA_HOME"
1968+
1969+if $use_modules; then
1970+ add_log
1971+ add_log "Detected Java modules at $JAVA_HOME"
1972 fi
1973
1974-# If you're seeing odd exceptions, you may have a bad JVM install.
1975-# Uncomment this and report the version to the JRuby team along with error.
1976-#$JAVACMD -version
1977+# ----- Process .java_opts files ----------------------------------------------
1978
1979-JRUBY_SHELL=/bin/sh
1980+# We include options on the java command line in the following order:
1981+#
1982+# * JRuby installed bin/.jruby.java_opts (empty by default)
1983+# * user directory .jruby.java_opts
1984+# * current directory .jruby.java_opts
1985+# * dev mode options from bin/.dev_mode.java_opts, if --dev is specified
1986+# * module options from bin/.jruby.module_opts if modules are detected
1987+# * JAVA_OPTS environment variable
1988+# * command line flags
1989+
1990+# Add local and global .jruby.java_opts
1991+process_java_opts "$installed_jruby_java_opts_file"
1992+process_java_opts "$home_jruby_java_opts_file"
1993+process_java_opts "$pwd_jruby_java_opts_file"
1994+
1995+# Capture some Java options to be passed separately
1996+JAVA_OPTS_TEMP=""
1997+for opt in $JAVA_OPTS; do
1998+ case $opt in
1999+ -Xmx*) JAVA_MEM="$opt" ;;
2000+ -Xss*) JAVA_STACK="$opt" ;;
2001+ *) JAVA_OPTS_TEMP="$JAVA_OPTS_TEMP $opt" ;;
2002+ esac
2003+done
2004+
2005+JAVA_OPTS="$JAVA_OPTS_TEMP"
2006
2007-# ----- Set Up The Boot Classpath -------------------------------------------
2008+# ----- Set up the JRuby class/module path ------------------------------------
2009
2010 CP_DELIMITER=":"
2011
2012-# add main jruby jar to the bootclasspath
2013+# add main jruby jar to the classpath
2014+JRUBY_ALREADY_ADDED=false
2015 for j in "$JRUBY_HOME"/lib/jruby.jar "$JRUBY_HOME"/lib/jruby-complete.jar; do
2016 if [ ! -e "$j" ]; then
2017- continue
2018+ continue
2019 fi
2020 if [ "$JRUBY_CP" ]; then
2021 JRUBY_CP="$JRUBY_CP$CP_DELIMITER$j"
2022- else
2023+ else
2024 JRUBY_CP="$j"
2025 fi
2026- if [ $JRUBY_ALREADY_ADDED ]; then
2027- echo "WARNING: more than one JRuby JAR found in lib directory"
2028+ if $JRUBY_ALREADY_ADDED; then
2029+ echo "WARNING: more than one JRuby JAR found in lib directory" 1>&2
2030 fi
2031 JRUBY_ALREADY_ADDED=true
2032 done
2033
2034-# ----- Set Up The System Classpath -------------------------------------------
2035+if $cygwin; then
2036+ JRUBY_CP="$(cygpath -p -w "$JRUBY_CP")"
2037+fi
2038+
2039+# ----- Add additional jars from lib to classpath -----------------------------
2040
2041-if [ "$JRUBY_PARENT_CLASSPATH" != "" ]; then
2042+if [ "$JRUBY_PARENT_CLASSPATH" ]; then
2043 # Use same classpath propagated from parent jruby
2044- CP=$JRUBY_PARENT_CLASSPATH
2045+ CP="$JRUBY_PARENT_CLASSPATH"
2046 else
2047 # add other jars in lib to CP for command-line execution
2048 for j in "$JRUBY_HOME"/lib/*.jar; do
2049- if [ "$j" == "$JRUBY_HOME"/lib/jruby.jar ]; then
2050- continue
2051- fi
2052- if [ "$j" == "$JRUBY_HOME"/lib/jruby-complete.jar ]; then
2053- continue
2054- fi
2055+ case "${j#"$JRUBY_HOME/lib/"}" in
2056+ jruby.jar|jruby-complete.jar) continue
2057+ esac
2058 if [ "$CP" ]; then
2059 CP="$CP$CP_DELIMITER$j"
2060- else
2061+ else
2062 CP="$j"
2063 fi
2064 done
2065
2066+ if [ "$CP" ] && $cygwin; then
2067+ CP="$(cygpath -p -w "$CP")"
2068+ fi
2069 fi
2070
2071-
2072-# ----- Execute The Requested Command -----------------------------------------
2073-
2074-if [ -z "$JAVA_MEM" ] ; then
2075- JAVA_MEM=-Xmx500m
2076-fi
2077-
2078-if [ -z "$JAVA_STACK" ] ; then
2079- JAVA_STACK=-Xss2048k
2080-fi
2081-
2082-if [ -z "$JAVA_VM" ]; then
2083- JAVA_VM=-client
2084+if $cygwin; then
2085+ # switch delimiter only after building Unix style classpaths
2086+ CP_DELIMITER=";"
2087 fi
2088-JAVA_ENCODING=""
2089
2090-#declare -a java_args
2091-#declare -a ruby_args
2092+readonly CP_DELIMITER
2093
2094-JAVA_CLASS_JRUBY_MAIN=org.jruby.Main
2095-java_class=$JAVA_CLASS_JRUBY_MAIN
2096+# ----- Continue processing JRuby options into JVM options --------------------
2097
2098 # Split out any -J argument for passing to the JVM.
2099 # Scanning for args is aborted by '--'.
2100+# shellcheck disable=2086
2101+set -- $JRUBY_OPTS "$@"
2102+# increment pointer, permute arguments
2103 while [ $# -gt 0 ]
2104 do
2105- case "$1" in
2106- # Stuff after '-J' in this argument goes to JVM
2107- -J*)
2108- val=${1:2}
2109- if [ "${val:0:4}" = "-Xmx" ]; then
2110- JAVA_MEM=$val
2111- elif [ "${val:0:4}" = "-Xss" ]; then
2112- JAVA_STACK=$val
2113- elif [ "${val}" = "" ]; then
2114- $JAVACMD -help
2115- echo "(Prepend -J in front of these options when using 'jruby' command)"
2116+ case $1 in
2117+ # Stuff after '-J' in this argument goes to JVM
2118+ -J-Xmx*) JAVA_MEM="${1#-J}" ;;
2119+ -J-Xss*) JAVA_STACK="${1#-J}" ;;
2120+ -J)
2121+ "$JAVACMD" -help
2122+ echo "(Prepend -J in front of these options when using 'jruby' command)" 1>&2
2123 exit
2124- elif [ "${val}" = "-X" ]; then
2125- $JAVACMD -X
2126- echo "(Prepend -J in front of these options when using 'jruby' command)"
2127+ ;;
2128+ -J-X)
2129+ "$JAVACMD" -X
2130+ echo "(Prepend -J in front of these options when using 'jruby' command)" 1>&2
2131 exit
2132- elif [ "${val}" = "-classpath" ]; then
2133+ ;;
2134+ -J-classpath|-J-cp)
2135 CP="$CP$CP_DELIMITER$2"
2136 CLASSPATH=""
2137 shift
2138- elif [ "${val}" = "-cp" ]; then
2139- CP="$CP$CP_DELIMITER$2"
2140- CLASSPATH=""
2141+ ;;
2142+ -J-ea*)
2143+ VERIFY_JRUBY=true
2144+ append java_args "${1#-J}"
2145+ ;;
2146+ -J-Djava.security.egd=*) JAVA_SECURITY_EGD=${1#-J-Djava.security.egd=} ;;
2147+ # This must be the last check for -J
2148+ -J*) append java_args "${1#-J}" ;;
2149+ # Pass -X... and -X? search options through
2150+ -X*...|-X*\?) append ruby_args "$1" ;;
2151+ # Match -Xa.b.c=d to translate to -Da.b.c=d as a java option
2152+ -X*.*) append java_args -Djruby."${1#-X}" ;;
2153+ # Match switches that take an argument
2154+ -[CeIS])
2155+ append ruby_args "$1" "$2"
2156 shift
2157- else
2158- if [ "${val:0:3}" = "-ea" ]; then
2159- VERIFY_JRUBY="yes"
2160- elif [ "${val:0:16}" = "-Dfile.encoding=" ]; then
2161- JAVA_ENCODING=$val
2162+ ;;
2163+ # Run with JMX management enabled
2164+ --manage)
2165+ append java_args -Dcom.sun.management.jmxremote
2166+ append java_args -Djruby.management.enabled=true
2167+ ;;
2168+ # Don't launch a GUI window, no matter what
2169+ --headless) append java_args -Djava.awt.headless=true ;;
2170+ # Run under JDB
2171+ --jdb)
2172+ if [ -z "$JAVA_HOME" ]; then
2173+ JAVACMD='jdb'
2174+ else
2175+ if $cygwin; then
2176+ JAVACMD="$(cygpath -u "$JAVA_HOME")/bin/jdb"
2177+ else
2178+ JAVACMD="$JAVA_HOME/bin/jdb"
2179+ fi
2180 fi
2181- java_args="${java_args} ${1:2}"
2182- fi
2183- ;;
2184- # Pass -X... and -X? search options through
2185- -X*\.\.\.|-X*\?)
2186- ruby_args="${ruby_args} $1" ;;
2187- -X+T)
2188- echo "error: -X+T isn't supported in the shell launcher"
2189- exit 1
2190- ;;
2191- -Xclassic)
2192- ;;
2193- # Match -Xa.b.c=d to translate to -Da.b.c=d as a java option
2194- -X*)
2195- val=${1:2}
2196- if expr -- "$val" : '.*[.]' > /dev/null; then
2197- java_args="${java_args} -Djruby.${val}"
2198- else
2199- ruby_args="${ruby_args} -X${val}"
2200- fi
2201- ;;
2202- # Match switches that take an argument
2203- -C|-e|-I|-S) ruby_args="${ruby_args} $1 $2"; shift ;;
2204- # Match same switches with argument stuck together
2205- -e*|-I*|-S*) ruby_args="${ruby_args} $1" ;;
2206- # Run with JMX management enabled
2207- --manage)
2208- java_args="${java_args} -Dcom.sun.management.jmxremote"
2209- java_args="${java_args} -Djruby.management.enabled=true" ;;
2210- # Don't launch a GUI window, no matter what
2211- --headless)
2212- java_args="${java_args} -Djava.awt.headless=true" ;;
2213- # Run under JDB
2214- --jdb)
2215- if [ -z "$JAVA_HOME" ] ; then
2216- JAVACMD='jdb'
2217- else
2218- JAVACMD="$JAVA_HOME/bin/jdb"
2219- fi
2220- JDB_SOURCEPATH="${JRUBY_HOME}/core/src/main/java:${JRUBY_HOME}/lib/ruby/stdlib:."
2221- java_args="${java_args} -sourcepath ${JDB_SOURCEPATH}"
2222- JRUBY_OPTS="${JRUBY_OPTS} -X+C" ;;
2223- --client)
2224- JAVA_VM=-client ;;
2225- --server)
2226- JAVA_VM=-server ;;
2227- --noclient) # JRUBY-4296
2228- unset JAVA_VM ;; # For IBM JVM, neither '-client' nor '-server' is applicable
2229- --sample)
2230- java_args="${java_args} -Xprof" ;;
2231- --ng*)
2232- echo "Error: Nailgun is no longer supported" 1>&2
2233- exit 1 ;;
2234- --no-bootclasspath)
2235- NO_BOOTCLASSPATH=true ;;
2236- # Abort processing on the double dash
2237- --) break ;;
2238- # Other opts go to ruby
2239- -*) ruby_args="${ruby_args} $1" ;;
2240- # Abort processing on first non-opt arg
2241- *) break ;;
2242+ JDB_SOURCEPATH="${JRUBY_HOME}/core/src/main/java:${JRUBY_HOME}/lib/ruby/stdlib:."
2243+ append java_args -sourcepath "$JDB_SOURCEPATH"
2244+ append ruby_args -X+C
2245+ ;;
2246+ --client|--server|--noclient)
2247+ echo "Warning: the $1 flag is deprecated and has no effect most JVMs" 1>&2
2248+ ;;
2249+ --dev)
2250+ process_java_opts "$dev_mode_opts_file"
2251+ # For OpenJ9 use environment variable to enable quickstart and shareclasses
2252+ export OPENJ9_JAVA_OPTIONS="-Xquickstart -Xshareclasses"
2253+ ;;
2254+ --sample) append java_args -Xprof ;;
2255+ --record)
2256+ append java_args -XX:+FlightRecorder -XX:StartFlightRecording=dumponexit=true
2257+ ;;
2258+ --no-bootclasspath) NO_BOOTCLASSPATH=true ;;
2259+ --ng*)
2260+ echo "Error: Nailgun is no longer supported" 1>&2
2261+ exit 1
2262+ ;;
2263+ --environment) print_environment_log=true ;;
2264+ # warn but ignore
2265+ --1.8|--1.9|--2.0) echo "warning: $1 ignored" 1>&2 ;;
2266+ # Abort processing on the double dash
2267+ --) break ;;
2268+ # Other opts go to ruby
2269+ -*) append ruby_args "$1" ;;
2270+ # Abort processing on first non-opt arg
2271+ *) break ;;
2272 esac
2273 shift
2274 done
2275
2276-# Force file.encoding to UTF-8 when on Mac, since Apple JDK defaults to MacRoman (JRUBY-3576)
2277-if [[ -z "$JAVA_ENCODING" ]]; then
2278- java_args="${java_args} -Dfile.encoding=UTF-8"
2279+# Force JDK to use specified java.security.egd rand source
2280+if [ -n "$JAVA_SECURITY_EGD" ]; then
2281+ append java_args "-Djava.security.egd=$JAVA_SECURITY_EGD"
2282 fi
2283
2284-# Append the rest of the arguments
2285-ruby_args="${ruby_args} $@"
2286+# The rest of the arguments are for ruby
2287+append ruby_args "$@"
2288
2289-# Put the ruby_args back into the position arguments $1, $2 etc
2290-set -- "${ruby_args}"
2291-
2292-JAVA_OPTS="$JAVA_OPTS $JAVA_VM $JAVA_MEM $JAVA_STACK"
2293+JAVA_OPTS="$JAVA_OPTS $JAVA_MEM $JAVA_STACK"
2294
2295 JFFI_OPTS="-Djffi.boot.library.path=$JRUBY_HOME/lib/jni"
2296
2297+CLASSPATH="${CP}${CP_DELIMITER}${CLASSPATH}"
2298+
2299+# ----- Tweak console environment for cygwin ----------------------------------
2300+
2301+if $cygwin; then
2302+ use_exec=false
2303+ JRUBY_HOME="$(cygpath --mixed "$JRUBY_HOME")"
2304+ JRUBY_SHELL="$(cygpath --mixed "$JRUBY_SHELL")"
2305+
2306+ eval set -- "$ruby_args"
2307+
2308+ case $1 in
2309+ /*)
2310+ if [ -f "$1" ] || [ -d "$1" ]; then
2311+ # replace first element of ruby_args with cygwin form
2312+ win_arg="$(cygpath -w "$1")"
2313+ shift
2314+ set -- "$win_arg" "$@"
2315+ assign ruby_args "$@"
2316+ fi
2317+ ;;
2318+ esac
2319+
2320+ # fix JLine to use UnixTerminal
2321+ if stty -icanon min 1 -echo > /dev/null 2>&1; then
2322+ JAVA_OPTS="$JAVA_OPTS -Djline.terminal=jline.UnixTerminal"
2323+ fi
2324+
2325+fi
2326
2327-if [[ "$NO_BOOTCLASSPATH" != "" || ( "$VERIFY_JRUBY" != "" ) ]]; then
2328- if [ "$PROFILE_ARGS" != "" ]; then
2329- echo "Running with instrumented profiler"
2330- fi
2331+# ----- Module and Class Data Sharing flags for Java 9+ -----------------------
2332
2333- if [ $java_class = $JAVA_CLASS_NGSERVER -a -n "${JRUBY_OPTS}" ]; then
2334- echo "warning: starting a nailgun server; discarding JRUBY_OPTS: ${JRUBY_OPTS}"
2335- JRUBY_OPTS=''
2336- fi
2337+if $use_modules; then
2338+ # Switch to non-boot path since we can't use bootclasspath on 9+
2339+ NO_BOOTCLASSPATH=true
2340
2341+ # Add base opens we need for Ruby compatibility
2342+ process_java_opts "$jruby_module_opts_file"
2343
2344- "$JAVACMD" $PROFILE_ARGS $JAVA_OPTS "$JFFI_OPTS" ${java_args} -classpath "$JRUBY_CP$CP_DELIMITER$CP$CP_DELIMITER$CLASSPATH" \
2345- "-Djruby.home=$JRUBY_HOME" \
2346- "-Djruby.lib=$JRUBY_HOME/lib" -Djruby.script=jruby \
2347- "-Djruby.shell=$JRUBY_SHELL" \
2348- $java_class $JRUBY_OPTS $@
2349+ # Allow overriding default JSA file location
2350+ if [ -z "$JRUBY_JSA" ]; then
2351+ JRUBY_JSA="$jruby_jsa_file"
2352+ fi
2353
2354- # Record the exit status immediately, or it will be overridden.
2355- JRUBY_STATUS=$?
2356+ # If we have a jruby.jsa file, enable AppCDS
2357+ if [ -f "$JRUBY_JSA" ]; then
2358+ add_log
2359+ add_log "Detected Class Data Sharing archive:"
2360+ add_log " $JRUBY_JSA"
2361
2362- if [ "$PROFILE_ARGS" != "" ]; then
2363- echo "Profiling results:"
2364- cat profile.txt
2365- rm profile.txt
2366- fi
2367+ JAVA_OPTS="$JAVA_OPTS -XX:+UnlockDiagnosticVMOptions -XX:SharedArchiveFile=$JRUBY_JSA"
2368+ fi
2369+fi
2370
2371+# ----- Final prepration of the Java command line -----------------------------
2372
2373- exit $JRUBY_STATUS
2374+# Include all options from files at the beginning of the Java command line
2375+JAVA_OPTS="$java_opts_from_files $JAVA_OPTS"
2376+
2377+# Don't quote JAVA_OPTS; we want it to expand
2378+# shellcheck disable=2086
2379+prepend java_args "$JAVACMD" $JAVA_OPTS "$JFFI_OPTS"
2380+
2381+if $NO_BOOTCLASSPATH || $VERIFY_JRUBY; then
2382+ if $use_modules; then
2383+ # Use module path instead of classpath for the jruby libs
2384+ append java_args --module-path "$JRUBY_CP" -classpath "$CLASSPATH"
2385+ else
2386+ append java_args -classpath "$JRUBY_CP$CP_DELIMITER$CLASSPATH"
2387+ fi
2388 else
2389- exec $JAVACMD $JAVA_OPTS $JFFI_OPTS ${java_args} -Xbootclasspath/a:$JRUBY_CP -classpath $CP$CP_DELIMITER$CLASSPATH \
2390- -Djruby.home=$JRUBY_HOME \
2391- -Djruby.lib=$JRUBY_HOME/lib -Djruby.script=jruby \
2392- -Djruby.shell=$JRUBY_SHELL \
2393- $java_class $JRUBY_OPTS $@
2394+ append java_args -Xbootclasspath/a:"$JRUBY_CP"
2395+ append java_args -classpath "$CLASSPATH"
2396+ append java_args -Djruby.home="$JRUBY_HOME"
2397 fi
2398+
2399+append java_args -Djruby.home="$JRUBY_HOME" \
2400+ -Djruby.lib="$JRUBY_HOME/lib" \
2401+ -Djruby.script=jruby \
2402+ -Djruby.shell="$JRUBY_SHELL" \
2403+ "$java_class"
2404+extend java_args ruby_args
2405+
2406+eval set -- "$java_args"
2407+
2408+add_log
2409+add_log "Java command line:"
2410+add_log " $*"
2411+
2412+if $print_environment_log; then
2413+ echo "$environment_log"
2414+ exit 0
2415 fi
2416
2417-# Be careful adding code down here, you might override the exit
2418-# status of the jruby invocation.
2419+# ----- Run JRuby! ------------------------------------------------------------
2420+
2421+if $use_exec; then
2422+ exec "$@"
2423+else
2424+ "$@"
2425+
2426+ # Record the exit status immediately, or it will be overridden.
2427+ JRUBY_STATUS=$?
2428+
2429+ if $cygwin; then
2430+ stty icanon echo > /dev/null 2>&1
2431+ fi
2432+
2433+ exit $JRUBY_STATUS
2434+fi
2435diff --git a/core/pom.rb b/core/pom.rb
2436index b443fa6..a82417f 100644
2437--- a/core/pom.rb
2438+++ b/core/pom.rb
2439@@ -43,29 +43,29 @@ project 'JRuby Base' do
2440
2441 # exclude jnr-ffi to avoid problems with shading and relocation of the asm packages
2442 jar 'com.github.jnr:jnr-netdb:1.2.0', :exclusions => ['com.github.jnr:jnr-ffi']
2443- jar 'com.github.jnr:jnr-enxio:0.32.13', :exclusions => ['com.github.jnr:jnr-ffi']
2444- jar 'com.github.jnr:jnr-unixsocket:0.38.17', :exclusions => ['com.github.jnr:jnr-ffi']
2445- jar 'com.github.jnr:jnr-posix:3.1.15', :exclusions => ['com.github.jnr:jnr-ffi']
2446- jar 'com.github.jnr:jnr-constants:0.10.3', :exclusions => ['com.github.jnr:jnr-ffi']
2447- jar 'com.github.jnr:jnr-ffi:2.2.11'
2448+ jar 'com.github.jnr:jnr-enxio:0.32.16', :exclusions => ['com.github.jnr:jnr-ffi']
2449+ jar 'com.github.jnr:jnr-unixsocket:0.38.21', :exclusions => ['com.github.jnr:jnr-ffi']
2450+ jar 'com.github.jnr:jnr-posix:3.1.18', :exclusions => ['com.github.jnr:jnr-ffi']
2451+ jar 'com.github.jnr:jnr-constants:0.10.4', :exclusions => ['com.github.jnr:jnr-ffi']
2452+ jar 'com.github.jnr:jnr-ffi:2.2.15'
2453 jar 'com.github.jnr:jffi:${jffi.version}'
2454 jar 'com.github.jnr:jffi:${jffi.version}:native'
2455
2456- jar 'org.jruby.joni:joni:2.1.43'
2457- jar 'org.jruby.jcodings:jcodings:1.0.57'
2458+ jar 'org.jruby.joni:joni:2.2.1'
2459+ jar 'org.jruby.jcodings:jcodings:1.0.58'
2460 jar 'org.jruby:dirgra:0.3'
2461
2462- jar 'com.headius:invokebinder:1.12'
2463+ jar 'com.headius:invokebinder:1.13'
2464 jar 'com.headius:options:1.6'
2465
2466- jar 'com.jcraft:jzlib:1.1.3'
2467+ jar 'org.jruby:jzlib:1.1.5'
2468 jar 'junit:junit', :scope => 'test'
2469 jar 'org.awaitility:awaitility', :scope => 'test'
2470 jar 'org.apache.ant:ant:${ant.version}', :scope => 'provided'
2471 jar 'org.osgi:org.osgi.core:5.0.0', :scope => 'provided'
2472
2473 # joda timezone must be before joda-time to be packed correctly
2474- jar 'org.jruby:joda-timezones:${tzdata.version}', :scope => '${tzdata.scope}'
2475+ # jar 'org.jruby:joda-timezones:${tzdata.version}', :scope => '${tzdata.scope}'
2476 jar 'joda-time:joda-time:${joda.time.version}'
2477
2478 # SLF4J only used within SLF4JLogger (JRuby logger impl) class
2479@@ -74,7 +74,7 @@ project 'JRuby Base' do
2480
2481 jar 'me.qmx.jitescript:jitescript:0.4.1', :exclusions => ['org.ow2.asm:asm-all']
2482
2483- jar 'com.headius:backport9:1.12'
2484+ jar 'com.headius:backport9:1.13'
2485
2486 jar 'jakarta.annotation:jakarta.annotation-api:2.0.0', scope: 'provided'
2487
2488@@ -133,7 +133,6 @@ project 'JRuby Base' do
2489 execute_goals( 'create',
2490 :id => 'jruby-revision',
2491 :phase => 'generate-sources',
2492- 'shortRevisionLength' => '10',
2493 'buildNumberPropertyName' => 'jruby.revision' )
2494 end
2495
2496@@ -168,12 +167,21 @@ project 'JRuby Base' do
2497 end
2498 end
2499
2500+ fork_compiler_args = [ '-XDignore.symbol.file=true',
2501+ '-J-Duser.language=en',
2502+ '-J-Dfile.encoding=UTF-8',
2503+ '-J-Xmx${jruby.compile.memory}' ]
2504+
2505+ default_compile_configuration = {
2506+ 'fork' => 'true',
2507+ 'annotationProcessors' => [ 'org.jruby.anno.AnnotationBinder' ],
2508+ 'generatedSourcesDirectory' => 'target/generated-sources',
2509+ 'compilerArgs' => fork_compiler_args
2510+ }
2511+
2512 plugin( :compiler,
2513 'encoding' => 'utf-8',
2514- 'debug' => 'true',
2515 'verbose' => 'false',
2516- 'fork' => 'true',
2517- 'compilerArgs' => { 'arg' => '-J-Xmx1G' },
2518 'showWarnings' => 'true',
2519 'showDeprecation' => 'true',
2520 'source' => [ '${base.java.version}', '1.8' ],
2521@@ -191,24 +199,19 @@ project 'JRuby Base' do
2522 'org/jruby/util/CodegenUtils.java',
2523 'org/jruby/util/SafePropertyAccessor.java' ] )
2524 execute_goals( 'compile',
2525- :id => 'default-compile',
2526- :phase => 'compile',
2527- 'debug' => 'true',
2528- 'annotationProcessors' => [ 'org.jruby.anno.AnnotationBinder' ],
2529- 'generatedSourcesDirectory' => 'target/generated-sources',
2530- 'compilerArgs' => [ '-XDignore.symbol.file=true',
2531- '-J-Duser.language=en',
2532- '-J-Dfile.encoding=UTF-8',
2533- '-J-Xmx${jruby.compile.memory}' ] )
2534+ default_compile_configuration.merge(
2535+ :id => 'default-compile',
2536+ :phase => 'compile'
2537+ ))
2538+
2539 execute_goals( 'compile',
2540 :id => 'populators',
2541 :phase => 'process-classes',
2542- 'debug' => 'true',
2543- 'compilerArgs' => [ '-XDignore.symbol.file=true',
2544- '-J-Duser.language=en',
2545- '-J-Dfile.encoding=UTF-8',
2546- '-J-Xmx${jruby.compile.memory}' ],
2547+ 'debug' => 'false',
2548+ 'fork' => 'true',
2549+ 'compilerArgs' => fork_compiler_args,
2550 'includes' => [ 'org/jruby/gen/**/*.java' ] )
2551+
2552 execute_goals( 'compile',
2553 :id => 'eclipse-hack',
2554 :phase => 'process-classes',
2555@@ -237,7 +240,7 @@ project 'JRuby Base' do
2556 },
2557 'argLine' => '-Xmx${jruby.test.memory} -Dfile.encoding=UTF-8 -Djava.awt.headless=true',
2558 'environmentVariables' => {
2559- 'JDK_JAVA_OPTIONS' => '--add-modules java.scripting'
2560+ 'JDK_JAVA_OPTIONS' => '--add-modules java.scripting --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED'
2561 },
2562 includes: [
2563 'org/jruby/test/**/*Test*.java',
2564@@ -283,7 +286,7 @@ project 'JRuby Base' do
2565 ])
2566 end
2567
2568- copy_goal = [:exec, :executable => '/bin/sh', :arguments => ['-c', 'cp ${jruby.basedir}/bin/jruby.bash ${jruby.basedir}/bin/jruby']]
2569+ copy_goal = [:exec, :executable => '/bin/sh', :arguments => ['-c', 'cp ${jruby.basedir}/bin/jruby.sh ${jruby.basedir}/bin/jruby']]
2570
2571 profile :clean do
2572 activation do
2573@@ -300,7 +303,41 @@ project 'JRuby Base' do
2574 end
2575 end
2576
2577- profile 'jruby.bash' do
2578+ profile 'error-prone' do
2579+ activation do
2580+ jdk('11') # even an older (2.10.0) version of error-prone would need an adjusted setup on Java 8
2581+ property(name: 'env.CI') # for keeping fast development cycle, by default only run on CI
2582+ end
2583+
2584+ plugin :compiler do
2585+ execute_goals( 'compile',
2586+ :id => 'default-compile',
2587+ :phase => 'none' ) # do not execute default-compile, we have a replacement bellow
2588+
2589+ execute_goals( 'compile',
2590+ default_compile_configuration.merge(
2591+ :id => 'default-compile_with_error_prone',
2592+ :phase => 'compile',
2593+ 'fork' => 'true',
2594+ 'compilerArgs' => default_compile_configuration['compilerArgs'] + [
2595+ '-XDcompilePolicy=simple', '-Xplugin:ErrorProne'
2596+ ],
2597+ 'annotationProcessorPaths' => { 'path' => [ {
2598+ 'groupId' => 'com.google.errorprone',
2599+ 'artifactId' => 'error_prone_core',
2600+ 'version' => '2.18.0'
2601+ },
2602+ {
2603+ 'groupId' => 'org.jruby',
2604+ 'artifactId' => 'jruby-base',
2605+ 'version' => version
2606+ } ]
2607+ }
2608+ ) )
2609+ end
2610+ end
2611+
2612+ profile 'jruby.sh' do
2613
2614 activation do
2615 file( :missing => '../bin/jruby' )
2616diff --git a/core/pom.xml b/core/pom.xml
2617index b1d33fc..b471010 100644
2618--- a/core/pom.xml
2619+++ b/core/pom.xml
2620@@ -12,7 +12,7 @@ DO NOT MODIFY - GENERATED CODE
2621 <parent>
2622 <groupId>org.jruby</groupId>
2623 <artifactId>jruby-parent</artifactId>
2624- <version>9.3.9.0</version>
2625+ <version>9.4.5.0</version>
2626 </parent>
2627 <artifactId>jruby-base</artifactId>
2628 <name>JRuby Base</name>
2629@@ -55,10 +55,9 @@ DO NOT MODIFY - GENERATED CODE
2630 <test.results.dir>${build.dir}/test-results</test.results.dir>
2631 <tzdata.scope>provided</tzdata.scope>
2632 <tzdata.version>2019c</tzdata.version>
2633- <version.ruby>2.6.8</version.ruby>
2634- <version.ruby.major>2.6</version.ruby.major>
2635- <version.ruby.minor>0</version.ruby.minor>
2636- <version.ruby.revision>67951</version.ruby.revision>
2637+ <version.ruby>3.1.4</version.ruby>
2638+ <version.ruby.major>3.1</version.ruby.major>
2639+ <version.ruby.minor>4</version.ruby.minor>
2640 </properties>
2641 <dependencies>
2642 <dependency>
2643@@ -82,59 +81,59 @@ DO NOT MODIFY - GENERATED CODE
2644 <version>1.2.0</version>
2645 <exclusions>
2646 <exclusion>
2647- <artifactId>jnr-ffi</artifactId>
2648 <groupId>com.github.jnr</groupId>
2649+ <artifactId>jnr-ffi</artifactId>
2650 </exclusion>
2651 </exclusions>
2652 </dependency>
2653 <dependency>
2654 <groupId>com.github.jnr</groupId>
2655 <artifactId>jnr-enxio</artifactId>
2656- <version>0.32.13</version>
2657+ <version>0.32.16</version>
2658 <exclusions>
2659 <exclusion>
2660- <artifactId>jnr-ffi</artifactId>
2661 <groupId>com.github.jnr</groupId>
2662+ <artifactId>jnr-ffi</artifactId>
2663 </exclusion>
2664 </exclusions>
2665 </dependency>
2666 <dependency>
2667 <groupId>com.github.jnr</groupId>
2668 <artifactId>jnr-unixsocket</artifactId>
2669- <version>0.38.17</version>
2670+ <version>0.38.21</version>
2671 <exclusions>
2672 <exclusion>
2673- <artifactId>jnr-ffi</artifactId>
2674 <groupId>com.github.jnr</groupId>
2675+ <artifactId>jnr-ffi</artifactId>
2676 </exclusion>
2677 </exclusions>
2678 </dependency>
2679 <dependency>
2680 <groupId>com.github.jnr</groupId>
2681 <artifactId>jnr-posix</artifactId>
2682- <version>3.1.15</version>
2683+ <version>3.1.18</version>
2684 <exclusions>
2685 <exclusion>
2686- <artifactId>jnr-ffi</artifactId>
2687 <groupId>com.github.jnr</groupId>
2688+ <artifactId>jnr-ffi</artifactId>
2689 </exclusion>
2690 </exclusions>
2691 </dependency>
2692 <dependency>
2693 <groupId>com.github.jnr</groupId>
2694 <artifactId>jnr-constants</artifactId>
2695- <version>0.10.3</version>
2696+ <version>0.10.4</version>
2697 <exclusions>
2698 <exclusion>
2699- <artifactId>jnr-ffi</artifactId>
2700 <groupId>com.github.jnr</groupId>
2701+ <artifactId>jnr-ffi</artifactId>
2702 </exclusion>
2703 </exclusions>
2704 </dependency>
2705 <dependency>
2706 <groupId>com.github.jnr</groupId>
2707 <artifactId>jnr-ffi</artifactId>
2708- <version>2.2.11</version>
2709+ <version>2.2.15</version>
2710 </dependency>
2711 <dependency>
2712 <groupId>com.github.jnr</groupId>
2713@@ -150,12 +149,12 @@ DO NOT MODIFY - GENERATED CODE
2714 <dependency>
2715 <groupId>org.jruby.joni</groupId>
2716 <artifactId>joni</artifactId>
2717- <version>2.1.43</version>
2718+ <version>2.2.1</version>
2719 </dependency>
2720 <dependency>
2721 <groupId>org.jruby.jcodings</groupId>
2722 <artifactId>jcodings</artifactId>
2723- <version>1.0.57</version>
2724+ <version>1.0.58</version>
2725 </dependency>
2726 <dependency>
2727 <groupId>org.jruby</groupId>
2728@@ -165,7 +164,7 @@ DO NOT MODIFY - GENERATED CODE
2729 <dependency>
2730 <groupId>com.headius</groupId>
2731 <artifactId>invokebinder</artifactId>
2732- <version>1.12</version>
2733+ <version>1.13</version>
2734 </dependency>
2735 <dependency>
2736 <groupId>com.headius</groupId>
2737@@ -173,9 +172,9 @@ DO NOT MODIFY - GENERATED CODE
2738 <version>1.6</version>
2739 </dependency>
2740 <dependency>
2741- <groupId>com.jcraft</groupId>
2742+ <groupId>org.jruby</groupId>
2743 <artifactId>jzlib</artifactId>
2744- <version>1.1.3</version>
2745+ <version>1.1.5</version>
2746 </dependency>
2747 <dependency>
2748 <groupId>junit</groupId>
2749@@ -200,12 +199,6 @@ DO NOT MODIFY - GENERATED CODE
2750 <scope>provided</scope>
2751 </dependency>
2752 <dependency>
2753- <groupId>org.jruby</groupId>
2754- <artifactId>joda-timezones</artifactId>
2755- <version>${tzdata.version}</version>
2756- <scope>${tzdata.scope}</scope>
2757- </dependency>
2758- <dependency>
2759 <groupId>joda-time</groupId>
2760 <artifactId>joda-time</artifactId>
2761 <version>${joda.time.version}</version>
2762@@ -229,15 +222,15 @@ DO NOT MODIFY - GENERATED CODE
2763 <version>0.4.1</version>
2764 <exclusions>
2765 <exclusion>
2766- <artifactId>asm-all</artifactId>
2767 <groupId>org.ow2.asm</groupId>
2768+ <artifactId>asm-all</artifactId>
2769 </exclusion>
2770 </exclusions>
2771 </dependency>
2772 <dependency>
2773 <groupId>com.headius</groupId>
2774 <artifactId>backport9</artifactId>
2775- <version>1.12</version>
2776+ <version>1.13</version>
2777 </dependency>
2778 <dependency>
2779 <groupId>jakarta.annotation</groupId>
2780@@ -355,7 +348,6 @@ DO NOT MODIFY - GENERATED CODE
2781 <goal>create</goal>
2782 </goals>
2783 <configuration>
2784- <shortRevisionLength>10</shortRevisionLength>
2785 <buildNumberPropertyName>jruby.revision</buildNumberPropertyName>
2786 </configuration>
2787 </execution>
2788@@ -451,7 +443,7 @@ DO NOT MODIFY - GENERATED CODE
2789 <goal>compile</goal>
2790 </goals>
2791 <configuration>
2792- <debug>true</debug>
2793+ <fork>true</fork>
2794 <annotationProcessors>
2795 <annotationProcessor>org.jruby.anno.AnnotationBinder</annotationProcessor>
2796 </annotationProcessors>
2797@@ -471,7 +463,8 @@ DO NOT MODIFY - GENERATED CODE
2798 <goal>compile</goal>
2799 </goals>
2800 <configuration>
2801- <debug>true</debug>
2802+ <debug>false</debug>
2803+ <fork>true</fork>
2804 <compilerArgs>
2805 <compilerArg>-XDignore.symbol.file=true</compilerArg>
2806 <compilerArg>-J-Duser.language=en</compilerArg>
2807@@ -499,12 +492,7 @@ DO NOT MODIFY - GENERATED CODE
2808 </executions>
2809 <configuration>
2810 <encoding>utf-8</encoding>
2811- <debug>true</debug>
2812 <verbose>false</verbose>
2813- <fork>true</fork>
2814- <compilerArgs>
2815- <arg>-J-Xmx1G</arg>
2816- </compilerArgs>
2817 <showWarnings>true</showWarnings>
2818 <showDeprecation>true</showDeprecation>
2819 <source>${base.java.version}</source>
2820@@ -559,7 +547,7 @@ DO NOT MODIFY - GENERATED CODE
2821 </systemProperties>
2822 <argLine>-Xmx${jruby.test.memory} -Dfile.encoding=UTF-8 -Djava.awt.headless=true</argLine>
2823 <environmentVariables>
2824- <JDK_JAVA_OPTIONS>--add-modules java.scripting</JDK_JAVA_OPTIONS>
2825+ <JDK_JAVA_OPTIONS>--add-modules java.scripting --add-opens java.base/sun.nio.ch=ALL-UNNAMED --add-opens java.base/java.io=ALL-UNNAMED</JDK_JAVA_OPTIONS>
2826 </environmentVariables>
2827 <includes>
2828 <include>org/jruby/test/**/*Test*.java</include>
2829@@ -665,7 +653,7 @@ DO NOT MODIFY - GENERATED CODE
2830 <executable>/bin/sh</executable>
2831 <arguments>
2832 <argument>-c</argument>
2833- <argument>cp ${jruby.basedir}/bin/jruby.bash ${jruby.basedir}/bin/jruby</argument>
2834+ <argument>cp ${jruby.basedir}/bin/jruby.sh ${jruby.basedir}/bin/jruby</argument>
2835 </arguments>
2836 </configuration>
2837 </execution>
2838@@ -675,7 +663,66 @@ DO NOT MODIFY - GENERATED CODE
2839 </build>
2840 </profile>
2841 <profile>
2842- <id>jruby.bash</id>
2843+ <id>error-prone</id>
2844+ <activation>
2845+ <jdk>11</jdk>
2846+ <property>
2847+ <name>env.CI</name>
2848+ </property>
2849+ </activation>
2850+ <build>
2851+ <plugins>
2852+ <plugin>
2853+ <artifactId>maven-compiler-plugin</artifactId>
2854+ <executions>
2855+ <execution>
2856+ <id>default-compile</id>
2857+ <phase>none</phase>
2858+ <goals>
2859+ <goal>compile</goal>
2860+ </goals>
2861+ </execution>
2862+ <execution>
2863+ <id>default-compile_with_error_prone</id>
2864+ <phase>compile</phase>
2865+ <goals>
2866+ <goal>compile</goal>
2867+ </goals>
2868+ <configuration>
2869+ <fork>true</fork>
2870+ <annotationProcessors>
2871+ <annotationProcessor>org.jruby.anno.AnnotationBinder</annotationProcessor>
2872+ </annotationProcessors>
2873+ <generatedSourcesDirectory>target/generated-sources</generatedSourcesDirectory>
2874+ <compilerArgs>
2875+ <compilerArg>-XDignore.symbol.file=true</compilerArg>
2876+ <compilerArg>-J-Duser.language=en</compilerArg>
2877+ <compilerArg>-J-Dfile.encoding=UTF-8</compilerArg>
2878+ <compilerArg>-J-Xmx${jruby.compile.memory}</compilerArg>
2879+ <compilerArg>-XDcompilePolicy=simple</compilerArg>
2880+ <compilerArg>-Xplugin:ErrorProne</compilerArg>
2881+ </compilerArgs>
2882+ <annotationProcessorPaths>
2883+ <path>
2884+ <groupId>com.google.errorprone</groupId>
2885+ <artifactId>error_prone_core</artifactId>
2886+ <version>2.18.0</version>
2887+ </path>
2888+ <path>
2889+ <groupId>org.jruby</groupId>
2890+ <artifactId>jruby-base</artifactId>
2891+ <version>9.4.5.0</version>
2892+ </path>
2893+ </annotationProcessorPaths>
2894+ </configuration>
2895+ </execution>
2896+ </executions>
2897+ </plugin>
2898+ </plugins>
2899+ </build>
2900+ </profile>
2901+ <profile>
2902+ <id>jruby.sh</id>
2903 <activation>
2904 <os>
2905 <family>unix</family>
2906@@ -696,7 +743,7 @@ DO NOT MODIFY - GENERATED CODE
2907 <executable>/bin/sh</executable>
2908 <arguments>
2909 <argument>-c</argument>
2910- <argument>cp ${jruby.basedir}/bin/jruby.bash ${jruby.basedir}/bin/jruby</argument>
2911+ <argument>cp ${jruby.basedir}/bin/jruby.sh ${jruby.basedir}/bin/jruby</argument>
2912 </arguments>
2913 </configuration>
2914 </execution>
2915diff --git a/core/src/main/java/org/jruby/AbstractRubyMethod.java b/core/src/main/java/org/jruby/AbstractRubyMethod.java
2916index 49e1f69..b3ccb01 100644
2917--- a/core/src/main/java/org/jruby/AbstractRubyMethod.java
2918+++ b/core/src/main/java/org/jruby/AbstractRubyMethod.java
2919@@ -119,6 +119,21 @@ public abstract class AbstractRubyMethod extends RubyObject implements DataType
2920 return context.nil;
2921 }
2922
2923+ @JRubyMethod(name = "public?")
2924+ public RubyBoolean public_p(ThreadContext context) {
2925+ return context.runtime.newBoolean(method.getVisibility().isPublic());
2926+ }
2927+
2928+ @JRubyMethod(name = "protected?")
2929+ public RubyBoolean protected_p(ThreadContext context) {
2930+ return context.runtime.newBoolean(method.getVisibility().isProtected());
2931+ }
2932+
2933+ @JRubyMethod(name = "private?")
2934+ public RubyBoolean private_p(ThreadContext context) {
2935+ return context.runtime.newBoolean(method.getVisibility().isPrivate());
2936+ }
2937+
2938 public String getFilename() {
2939 DynamicMethod realMethod = method.getRealMethod(); // Follow Aliases
2940 if (realMethod instanceof PositionAware) {
2941@@ -153,9 +168,9 @@ public abstract class AbstractRubyMethod extends RubyObject implements DataType
2942 }
2943
2944 if (receiver == null) {
2945- return RubyUnboundMethod.newUnboundMethod(superClass, methodName, superClass, originName, entry);
2946+ return RubyUnboundMethod.newUnboundMethod(entry.sourceModule, methodName, superClass, originName, entry);
2947 } else {
2948- return RubyMethod.newMethod(superClass, methodName, superClass, originName, entry, receiver);
2949+ return RubyMethod.newMethod(entry.sourceModule, methodName, superClass, originName, entry, receiver);
2950 }
2951 }
2952
2953diff --git a/core/src/main/java/org/jruby/BasicObjectStub.java b/core/src/main/java/org/jruby/BasicObjectStub.java
2954index 8d3ad83..d7d706a 100644
2955--- a/core/src/main/java/org/jruby/BasicObjectStub.java
2956+++ b/core/src/main/java/org/jruby/BasicObjectStub.java
2957@@ -158,7 +158,6 @@ public final class BasicObjectStub {
2958 IRubyObject str = Helpers.invoke(getRuntime(self).getCurrentContext(), self, "to_s");
2959
2960 if (!(str instanceof RubyString)) return (RubyString) anyToString(self);
2961- if (isTaint(self)) str.setTaint(true);
2962 return (RubyString) str;
2963 }
2964
2965@@ -196,9 +195,7 @@ public final class BasicObjectStub {
2966 final RubyClass metaClass = getMetaClass(self);
2967 String cname = metaClass.getRealClass().getName();
2968 /* 6:tags 16:addr 1:eos */
2969- RubyString str = metaClass.runtime.newString("#<" + cname + ":0x" + Integer.toHexString(System.identityHashCode(self)) + '>');
2970- str.setTaint(isTaint(self));
2971- return str;
2972+ return metaClass.runtime.newString("#<" + cname + ":0x" + Integer.toHexString(System.identityHashCode(self)) + '>');
2973 }
2974
2975 public static IRubyObject checkStringType(IRubyObject self) {
2976diff --git a/core/src/main/java/org/jruby/DelegatedModule.java b/core/src/main/java/org/jruby/DelegatedModule.java
2977new file mode 100644
2978index 0000000..83deee3
2979--- /dev/null
2980+++ b/core/src/main/java/org/jruby/DelegatedModule.java
2981@@ -0,0 +1,5 @@
2982+package org.jruby;
2983+
2984+public interface DelegatedModule {
2985+ public RubyModule getDelegate();
2986+}
2987diff --git a/core/src/main/java/org/jruby/EvalType.java b/core/src/main/java/org/jruby/EvalType.java
2988index b2d8e72..bdc41cd 100644
2989--- a/core/src/main/java/org/jruby/EvalType.java
2990+++ b/core/src/main/java/org/jruby/EvalType.java
2991@@ -1,5 +1,8 @@
2992 package org.jruby;
2993
2994+/**
2995+ * Code evaluation type
2996+ */
2997 public enum EvalType {
2998 NONE, BINDING_EVAL, INSTANCE_EVAL, MODULE_EVAL
2999-};
3000+}
3001diff --git a/core/src/main/java/org/jruby/FiberScheduler.java b/core/src/main/java/org/jruby/FiberScheduler.java
3002new file mode 100644
3003index 0000000..0a4af4b
3004--- /dev/null
3005+++ b/core/src/main/java/org/jruby/FiberScheduler.java
3006@@ -0,0 +1,210 @@
3007+package org.jruby;
3008+
3009+import jnr.constants.platform.Errno;
3010+import org.jruby.runtime.Helpers;
3011+import org.jruby.runtime.ThreadContext;
3012+import org.jruby.runtime.builtin.IRubyObject;
3013+import org.jruby.util.io.OpenFile;
3014+
3015+import java.nio.ByteBuffer;
3016+
3017+public class FiberScheduler {
3018+ // MRI: rb_fiber_scheduler_kernel_sleep
3019+ public static IRubyObject kernelSleep(ThreadContext context, IRubyObject scheduler, IRubyObject timeout) {
3020+ return scheduler.callMethod(context, "kernel_sleep", timeout);
3021+ }
3022+
3023+ // MRI: rb_fiber_scheduler_kernel_sleepv
3024+ public static IRubyObject kernelSleep(ThreadContext context, IRubyObject scheduler, IRubyObject[] args) {
3025+ return scheduler.callMethod(context, "kernel_sleep", args);
3026+ }
3027+
3028+ // MRI: rb_fiber_scheduler_process_wait
3029+ public static IRubyObject processWait(ThreadContext context, IRubyObject scheduler, long pid, int flags) {
3030+ return Helpers.invokeChecked(context, scheduler, "process_wait", context.runtime.newFixnum(pid), context.runtime.newFixnum(flags));
3031+ }
3032+
3033+ // MRI: rb_fiber_scheduler_block
3034+ public static IRubyObject block(ThreadContext context, IRubyObject scheduler, IRubyObject blocker, IRubyObject timeout) {
3035+ return Helpers.invoke(context, scheduler, "block", blocker, timeout);
3036+ }
3037+
3038+ // MRI: rb_fiber_scheduler_unblock
3039+ public static IRubyObject unblock(ThreadContext context, IRubyObject scheduler, IRubyObject blocker, IRubyObject fiber) {
3040+ return Helpers.invoke(context, scheduler, "unblock", blocker, fiber);
3041+ }
3042+
3043+ // MRI: rb_fiber_scheduler_io_wait
3044+ public static IRubyObject ioWait(ThreadContext context, IRubyObject scheduler, IRubyObject io, IRubyObject events, IRubyObject timeout) {
3045+ return Helpers.invoke(context, scheduler, "io_wait", io, events, timeout);
3046+ }
3047+
3048+ // MRI: rb_fiber_scheduler_io_wait_readable
3049+ public static IRubyObject ioWaitReadable(ThreadContext context, IRubyObject scheduler, IRubyObject io) {
3050+ return ioWait(context, scheduler, io, context.runtime.newFixnum(OpenFile.READABLE), context.nil);
3051+ }
3052+
3053+ // MRI: rb_fiber_scheduler_io_wait_writable
3054+ public static IRubyObject ioWaitWritable(ThreadContext context, IRubyObject scheduler, IRubyObject io) {
3055+ return ioWait(context, scheduler, io, context.runtime.newFixnum(OpenFile.WRITABLE), context.nil);
3056+ }
3057+
3058+ // MRI: rb_fiber_scheduler_io_select
3059+ public static IRubyObject ioSelect(ThreadContext context, IRubyObject scheduler, IRubyObject readables, IRubyObject writables, IRubyObject exceptables, IRubyObject timeout) {
3060+ return ioSelectv(context, scheduler, readables, writables, exceptables, timeout);
3061+ }
3062+
3063+ // MRI: rb_fiber_scheduler_io_selectv
3064+ public static IRubyObject ioSelectv(ThreadContext context, IRubyObject scheduler, IRubyObject... args) {
3065+ return Helpers.invokeChecked(context, scheduler, "io_select", args);
3066+ }
3067+
3068+ // MRI: rb_fiber_scheduler_io_read
3069+ public static IRubyObject ioRead(ThreadContext context, IRubyObject scheduler, IRubyObject io, IRubyObject buffer, int length, int offset) {
3070+ Ruby runtime = context.runtime;
3071+ return Helpers.invokeChecked(context, scheduler, "io_read", io, buffer, runtime.newFixnum(length), runtime.newFixnum(offset));
3072+ }
3073+
3074+ public static IRubyObject ioRead(ThreadContext context, IRubyObject scheduler, IRubyObject io, IRubyObject buffer, RubyInteger length, RubyInteger offset) {
3075+ return Helpers.invokeChecked(context, scheduler, "io_read", io, buffer, length, offset);
3076+ }
3077+
3078+ // MRI: rb_fiber_scheduler_io_pread
3079+ public static IRubyObject ioPRead(ThreadContext context, IRubyObject scheduler, IRubyObject io, IRubyObject buffer, int from, int length, int offset) {
3080+ return Helpers.invokeChecked(context, scheduler, "io_pread", io, buffer, context.runtime.newFixnum(from), context.runtime.newFixnum(length), context.runtime.newFixnum(offset));
3081+ }
3082+
3083+ public static IRubyObject ioPRead(ThreadContext context, IRubyObject scheduler, IRubyObject io, IRubyObject buffer, RubyInteger from, RubyInteger length, RubyInteger offset) {
3084+ return Helpers.invokeChecked(context, scheduler, "io_pread", io, buffer, from, length, offset);
3085+ }
3086+
3087+ // MRI: rb_fiber_scheduler_io_write
3088+ public static IRubyObject ioWrite(ThreadContext context, IRubyObject scheduler, IRubyObject io, IRubyObject buffer, int length, int offset) {
3089+ Ruby runtime = context.runtime;
3090+ return Helpers.invokeChecked(context, scheduler, "io_write", io, buffer, runtime.newFixnum(length), runtime.newFixnum(offset));
3091+ }
3092+
3093+ public static IRubyObject ioWrite(ThreadContext context, IRubyObject scheduler, IRubyObject io, IRubyObject buffer, RubyInteger length, RubyInteger offset) {
3094+ return Helpers.invokeChecked(context, scheduler, "io_write", io, buffer, length, offset);
3095+ }
3096+
3097+ // MRI: rb_fiber_scheduler_io_pwrite
3098+ public static IRubyObject ioPWrite(ThreadContext context, IRubyObject scheduler, IRubyObject io, IRubyObject buffer, int from, int length, int offset) {
3099+ return Helpers.invokeChecked(context, scheduler, "io_pwrite", io, buffer, context.runtime.newFixnum(from), context.runtime.newFixnum(length), context.runtime.newFixnum(offset));
3100+ }
3101+
3102+ public static IRubyObject ioPWrite(ThreadContext context, IRubyObject scheduler, IRubyObject io, IRubyObject buffer, RubyInteger from, RubyInteger length, RubyInteger offset) {
3103+ return Helpers.invokeChecked(context, scheduler, "io_pwrite", io, buffer, from, length, offset);
3104+ }
3105+
3106+ // MRI: rb_fiber_scheduler_io_read_memory
3107+ public static IRubyObject ioReadMemory(ThreadContext context, IRubyObject scheduler, IRubyObject io, ByteBuffer base, int size, int length) {
3108+ RubyIOBuffer buffer = RubyIOBuffer.newBuffer(context.runtime, base, size, RubyIOBuffer.LOCKED);
3109+
3110+ IRubyObject result = ioRead(context, scheduler, io, buffer, length, 0);
3111+
3112+ buffer.unlock(context);
3113+ buffer.free(context);
3114+
3115+ return result;
3116+ }
3117+
3118+ // MRI: rb_fiber_scheduler_io_pread_memory
3119+ public static IRubyObject ioPReadMemory(ThreadContext context, IRubyObject scheduler, IRubyObject io, ByteBuffer base, int from, int size, int length) {
3120+ RubyIOBuffer buffer = RubyIOBuffer.newBuffer(context.runtime, base, size, RubyIOBuffer.LOCKED);
3121+
3122+ IRubyObject result = ioPRead(context, scheduler, io, buffer, from, length, 0);
3123+
3124+ buffer.unlock(context);
3125+ buffer.free(context);
3126+
3127+ return result;
3128+ }
3129+
3130+ // MRI: rb_fiber_scheduler_io_write_memory
3131+ public static IRubyObject ioWriteMemory(ThreadContext context, IRubyObject scheduler, IRubyObject io, ByteBuffer base, int size, int length) {
3132+ RubyIOBuffer buffer = RubyIOBuffer.newBuffer(context.runtime, base, size, RubyIOBuffer.LOCKED | RubyIOBuffer.READONLY);
3133+
3134+ IRubyObject result = ioWrite(context, scheduler, io, buffer, length, 0);
3135+
3136+ buffer.unlock(context);
3137+ buffer.free(context);
3138+
3139+ return result;
3140+ }
3141+
3142+ // MRI: p
3143+ public static IRubyObject ioPWriteMemory(ThreadContext context, IRubyObject scheduler, IRubyObject io, ByteBuffer base, int from, int size, int length) {
3144+ RubyIOBuffer buffer = RubyIOBuffer.newBuffer(context.runtime, base, size, RubyIOBuffer.LOCKED | RubyIOBuffer.READONLY);
3145+
3146+ IRubyObject result = ioPWrite(context, scheduler, io, buffer, from, length, 0);
3147+
3148+ buffer.unlock(context);
3149+ buffer.free(context);
3150+
3151+ return result;
3152+ }
3153+
3154+ // MRI: rb_fiber_scheduler_io_close
3155+ public static IRubyObject ioClose(ThreadContext context, IRubyObject scheduler, IRubyObject io) {
3156+ return Helpers.invokeChecked(context, scheduler, "io_close", io);
3157+ }
3158+
3159+ // MRI: rb_fiber_scheduler_address_resolve
3160+ public static IRubyObject addressResolve(ThreadContext context, IRubyObject scheduler, IRubyObject hostname) {
3161+ return Helpers.invokeChecked(context, scheduler, "address_resolve", hostname);
3162+ }
3163+
3164+ // MRI: verify_scheduler
3165+ static void verifyInterface(IRubyObject scheduler) {
3166+ if (!scheduler.respondsTo("block")) {
3167+ throw scheduler.getRuntime().newArgumentError("Scheduler must implement #block");
3168+ }
3169+
3170+ if (!scheduler.respondsTo("unblock")) {
3171+ throw scheduler.getRuntime().newArgumentError("Scheduler must implement #unblock");
3172+ }
3173+
3174+ if (!scheduler.respondsTo("kernel_sleep")) {
3175+ throw scheduler.getRuntime().newArgumentError("Scheduler must implement #kernel_sleep");
3176+ }
3177+
3178+ if (!scheduler.respondsTo("io_wait")) {
3179+ throw scheduler.getRuntime().newArgumentError("Scheduler must implement #io_wait");
3180+ }
3181+ }
3182+
3183+ // MRI: rb_fiber_scheduler_close
3184+ public static IRubyObject close(ThreadContext context, IRubyObject scheduler) {
3185+// VM_ASSERT(ruby_thread_has_gvl_p());
3186+
3187+ IRubyObject result;
3188+
3189+ result = Helpers.invokeChecked(context, scheduler, "scheduler_close");
3190+ if (result != null) return result;
3191+
3192+ result = Helpers.invokeChecked(context, scheduler, "close");
3193+ if (result != null) return result;
3194+
3195+ return context.nil;
3196+ }
3197+
3198+ // MRI: rb_fiber_scheduler_io_result_apply
3199+ public static int resultApply(ThreadContext context, IRubyObject result) {
3200+ int resultInt;
3201+ if (result instanceof RubyFixnum && (resultInt = RubyNumeric.num2int(result)) < 0) {
3202+ context.runtime.getPosix().errno(-resultInt);
3203+ return -1;
3204+ } else {
3205+ return RubyNumeric.num2int(result);
3206+ }
3207+ }
3208+
3209+ public static IRubyObject result(Ruby runtime, int result, Errno error) {
3210+ if (result == -1) {
3211+ return RubyFixnum.newFixnum(runtime, error.value());
3212+ } else {
3213+ return RubyFixnum.newFixnum(runtime, result);
3214+ }
3215+ }
3216+}
3217diff --git a/core/src/main/java/org/jruby/IncludedModule.java b/core/src/main/java/org/jruby/IncludedModule.java
3218index 0c1d075..f562b2d 100644
3219--- a/core/src/main/java/org/jruby/IncludedModule.java
3220+++ b/core/src/main/java/org/jruby/IncludedModule.java
3221@@ -4,7 +4,7 @@ import java.util.Map;
3222
3223 import org.jruby.runtime.builtin.IRubyObject;
3224
3225-public class IncludedModule extends RubyClass {
3226+public class IncludedModule extends RubyClass implements DelegatedModule {
3227 public IncludedModule(Ruby runtime, RubyClass superClass, RubyModule origin) {
3228 super(runtime, superClass, false);
3229 this.origin = origin;
3230diff --git a/core/src/main/java/org/jruby/Main.java b/core/src/main/java/org/jruby/Main.java
3231index 3cdabba..d502136 100644
3232--- a/core/src/main/java/org/jruby/Main.java
3233+++ b/core/src/main/java/org/jruby/Main.java
3234@@ -41,7 +41,6 @@ package org.jruby;
3235 import org.jruby.exceptions.MainExitException;
3236 import org.jruby.exceptions.JumpException;
3237 import org.jruby.exceptions.RaiseException;
3238-import org.jruby.exceptions.SignalException;
3239 import org.jruby.exceptions.ThreadKill;
3240 import org.jruby.main.DripMain;
3241 import org.jruby.platform.Platform;
3242@@ -53,25 +52,16 @@ import org.jruby.util.cli.OutputStrings;
3243 import org.jruby.util.log.Logger;
3244 import org.jruby.util.log.LoggerFactory;
3245
3246-import java.io.File;
3247-import java.io.FileDescriptor;
3248-import java.io.FileInputStream;
3249-import java.io.FileNotFoundException;
3250-import java.io.IOException;
3251-import java.io.InputStream;
3252-import java.io.PrintStream;
3253+import java.io.*;
3254 import java.lang.management.ManagementFactory;
3255 import java.lang.management.RuntimeMXBean;
3256-import java.lang.reflect.InvocationHandler;
3257-import java.lang.reflect.Method;
3258-import java.lang.reflect.Proxy;
3259+import java.nio.charset.StandardCharsets;
3260 import java.util.ArrayList;
3261 import java.util.List;
3262 import java.util.Map;
3263 import java.util.Set;
3264 import java.util.HashSet;
3265 import java.util.Properties;
3266-import java.util.concurrent.atomic.AtomicBoolean;
3267
3268 /**
3269 * Class used to launch the interpreter.
3270@@ -471,11 +461,47 @@ public class Main {
3271
3272 private void doPrintUsage(boolean force) {
3273 if (config.getShouldPrintUsage() || force) {
3274- config.getOutput().print(OutputStrings.getBasicUsageHelp());
3275- config.getOutput().print(OutputStrings.getFeaturesHelp());
3276+ String rubyPager = getRubyPagerEnv();
3277+
3278+ // Do not want to boot native subsystem here, so we do best guess based on System.console. It will be
3279+ // non-null only if both STDIN and STDOUT are tty.
3280+ boolean tty = System.console() != null;
3281+
3282+ if (rubyPager == null) {
3283+ config.getOutput().print(OutputStrings.getBasicUsageHelp(tty));
3284+ config.getOutput().print(OutputStrings.getFeaturesHelp(tty));
3285+ } else {
3286+ try {
3287+ ProcessBuilder builder = new ProcessBuilder(rubyPager);
3288+ builder.environment().put("LESS", "-R");
3289+
3290+ builder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
3291+ builder.redirectError(ProcessBuilder.Redirect.INHERIT);
3292+
3293+ Process process = builder.start();
3294+ OutputStream in = process.getOutputStream();
3295+
3296+ String fullHelp = OutputStrings.getBasicUsageHelp(tty) + OutputStrings.getFeaturesHelp(tty);
3297+ in.write(fullHelp.getBytes(StandardCharsets.UTF_8));
3298+
3299+ in.flush();
3300+ in.close();
3301+ process.waitFor();
3302+ } catch (InterruptedException | IOException e) {
3303+ e.printStackTrace();
3304+ }
3305+ }
3306 }
3307 }
3308
3309+ private String getRubyPagerEnv() {
3310+ String rubyPager = System.getenv("RUBY_PAGER");
3311+ if (rubyPager == null)
3312+ rubyPager = System.getenv("PAGER");
3313+
3314+ return rubyPager;
3315+ }
3316+
3317 private void doShowCopyright() {
3318 if (config.isShowCopyright()) {
3319 config.getOutput().println(OutputStrings.getCopyrightString());
3320diff --git a/core/src/main/java/org/jruby/ObjectFlags.java b/core/src/main/java/org/jruby/ObjectFlags.java
3321index 3d1d727..e3cf10b 100644
3322--- a/core/src/main/java/org/jruby/ObjectFlags.java
3323+++ b/core/src/main/java/org/jruby/ObjectFlags.java
3324@@ -1,7 +1,5 @@
3325 package org.jruby;
3326
3327-import org.jruby.ext.stringio.StringIO;
3328-
3329 /**
3330 * Flags used by RubyBasicObject descendants.
3331 */
3332@@ -13,6 +11,9 @@ public interface ObjectFlags {
3333 int FALSE_F = registry.newFlag(RubyBasicObject.class);
3334 int NIL_F = registry.newFlag(RubyBasicObject.class);
3335 int FROZEN_F = registry.newFlag(RubyBasicObject.class);
3336+
3337+ // Deprecated and unused but don't move due to checks elsewhere for the following flags
3338+ @Deprecated
3339 int TAINTED_F = registry.newFlag(RubyBasicObject.class);
3340
3341 int CACHEPROXY_F = registry.newFlag(RubyModule.class);
3342@@ -25,12 +26,11 @@ public interface ObjectFlags {
3343 int CR_7BIT_F = registry.newFlag(RubyString.class);
3344 int CR_VALID_F = registry.newFlag(RubyString.class);
3345
3346- int STRIO_READABLE = registry.newFlag(StringIO.class);
3347- int STRIO_WRITABLE = registry.newFlag(StringIO.class);
3348-
3349 int MATCH_BUSY = registry.newFlag(RubyMatchData.class);
3350
3351 int COMPARE_BY_IDENTITY_F = registry.newFlag(RubyHash.class);
3352 int KEYWORD_REST_ARGUMENTS_F = registry.newFlag(RubyHash.class);
3353 int PROCDEFAULT_HASH_F = registry.newFlag(RubyHash.class);
3354+ int KEYWORD_ARGUMENTS_F = registry.newFlag(RubyHash.class);
3355+ int RUBY2_KEYWORD_F = registry.newFlag(RubyHash.class);
3356 }
3357diff --git a/core/src/main/java/org/jruby/PrependedModule.java b/core/src/main/java/org/jruby/PrependedModule.java
3358index aa69f6f..db1d388 100644
3359--- a/core/src/main/java/org/jruby/PrependedModule.java
3360+++ b/core/src/main/java/org/jruby/PrependedModule.java
3361@@ -48,7 +48,7 @@ import org.jruby.runtime.builtin.IRubyObject;
3362 * @see org.jruby.IncludedModuleWrapper
3363 * @see org.jruby.RubyModule
3364 */
3365-public class PrependedModule extends RubyClass {
3366+public class PrependedModule extends RubyClass implements DelegatedModule {
3367 private RubyModule origin;
3368
3369 public PrependedModule(Ruby runtime, RubyClass superClass, RubyModule prependedClass) {
3370diff --git a/core/src/main/java/org/jruby/Ruby.java b/core/src/main/java/org/jruby/Ruby.java
3371index dcf2ac0..4736f50 100644
3372--- a/core/src/main/java/org/jruby/Ruby.java
3373+++ b/core/src/main/java/org/jruby/Ruby.java
3374@@ -49,7 +49,6 @@ import org.jruby.ast.CallNode;
3375 import org.jruby.ast.FCallNode;
3376 import org.jruby.ast.GlobalAsgnNode;
3377 import org.jruby.ast.GlobalVarNode;
3378-import org.jruby.ast.StrNode;
3379 import org.jruby.ast.VCallNode;
3380 import org.jruby.ast.WhileNode;
3381 import org.jruby.compiler.Constantizable;
3382@@ -64,8 +63,8 @@ import org.jruby.ext.thread.SizedQueue;
3383 import org.jruby.ir.IRScope;
3384 import org.jruby.ir.IRScriptBody;
3385 import org.jruby.ir.runtime.IRReturnJump;
3386+import org.jruby.java.util.ClassUtils;
3387 import org.jruby.javasupport.Java;
3388-import org.jruby.javasupport.JavaClass;
3389 import org.jruby.javasupport.JavaPackage;
3390 import org.jruby.javasupport.JavaSupport;
3391 import org.jruby.javasupport.JavaSupportImpl;
3392@@ -74,6 +73,7 @@ import org.jruby.management.InlineStats;
3393 import org.jruby.parser.StaticScope;
3394 import org.jruby.runtime.JavaSites;
3395 import org.jruby.runtime.MethodIndex;
3396+import org.jruby.runtime.TraceEventManager;
3397 import org.jruby.runtime.invokedynamic.InvokeDynamicSupport;
3398 import org.jruby.util.CommonByteLists;
3399 import org.jruby.util.JavaNameMangler;
3400@@ -187,9 +187,9 @@ import java.lang.invoke.MethodHandle;
3401 import java.lang.ref.WeakReference;
3402 import java.net.BindException;
3403 import java.nio.charset.Charset;
3404+import java.nio.charset.UnsupportedCharsetException;
3405 import java.security.SecureRandom;
3406 import java.util.ArrayList;
3407-import java.util.Arrays;
3408 import java.util.Collections;
3409 import java.util.EnumMap;
3410 import java.util.EnumSet;
3411@@ -201,6 +201,7 @@ import java.util.LinkedList;
3412 import java.util.List;
3413 import java.util.Map;
3414 import java.util.Random;
3415+import java.util.Set;
3416 import java.util.WeakHashMap;
3417 import java.util.concurrent.Callable;
3418 import java.util.concurrent.ConcurrentHashMap;
3419@@ -213,11 +214,12 @@ import java.util.concurrent.atomic.AtomicLong;
3420 import java.util.function.Consumer;
3421 import java.util.function.ToIntFunction;
3422 import java.util.regex.Pattern;
3423-import java.util.stream.Collectors;
3424
3425 import static java.lang.invoke.MethodHandles.explicitCastArguments;
3426 import static java.lang.invoke.MethodHandles.insertArguments;
3427 import static java.lang.invoke.MethodType.methodType;
3428+import static org.jruby.RubyBoolean.FALSE_BYTES;
3429+import static org.jruby.RubyBoolean.TRUE_BYTES;
3430 import static org.jruby.internal.runtime.GlobalVariable.Scope.GLOBAL;
3431 import static org.jruby.util.RubyStringBuilder.str;
3432 import static org.jruby.util.RubyStringBuilder.ids;
3433@@ -322,22 +324,26 @@ public final class Ruby implements Constantizable {
3434 objectClass = RubyClass.createBootstrapClass(this, "Object", basicObjectClass, RubyObject.OBJECT_ALLOCATOR);
3435 moduleClass = RubyClass.createBootstrapClass(this, "Module", objectClass, RubyModule.MODULE_ALLOCATOR);
3436 classClass = RubyClass.createBootstrapClass(this, "Class", moduleClass, RubyClass.CLASS_ALLOCATOR);
3437+ refinementClass = RubyClass.createBootstrapClass(this, "Refinement", moduleClass, RubyModule.MODULE_ALLOCATOR);
3438
3439 basicObjectClass.setMetaClass(classClass);
3440 objectClass.setMetaClass(basicObjectClass);
3441 moduleClass.setMetaClass(classClass);
3442 classClass.setMetaClass(classClass);
3443+ refinementClass.setMetaClass(classClass);
3444
3445 RubyClass metaClass;
3446 metaClass = basicObjectClass.makeMetaClass(classClass);
3447 metaClass = objectClass.makeMetaClass(metaClass);
3448 metaClass = moduleClass.makeMetaClass(metaClass);
3449 classClass.makeMetaClass(metaClass);
3450+ refinementClass.makeMetaClass(metaClass);
3451
3452 RubyBasicObject.createBasicObjectClass(this, basicObjectClass);
3453 RubyObject.createObjectClass(this, objectClass);
3454 RubyModule.createModuleClass(this, moduleClass);
3455 RubyClass.createClassClass(this, classClass);
3456+ RubyModule.createRefinementClass(this, refinementClass);
3457
3458 // set constants now that they're initialized
3459 basicObjectClass.setConstant("BasicObject", basicObjectClass);
3460@@ -345,6 +351,7 @@ public final class Ruby implements Constantizable {
3461 objectClass.setConstant("Object", objectClass);
3462 objectClass.setConstant("Class", classClass);
3463 objectClass.setConstant("Module", moduleClass);
3464+ objectClass.setConstant("Refinement", refinementClass);
3465
3466 // Initialize Kernel and include into Object
3467 RubyModule kernel = kernelModule = RubyKernel.createKernelModule(this);
3468@@ -381,12 +388,17 @@ public final class Ruby implements Constantizable {
3469 context.prepareTopLevel(objectClass, topSelf);
3470
3471 // Initialize all the core classes
3472- dataClass = initDataClass();
3473-
3474 comparableModule = RubyComparable.createComparable(this);
3475 enumerableModule = RubyEnumerable.createEnumerableModule(this);
3476 stringClass = RubyString.createStringClass(this);
3477
3478+ falseString = newString(FALSE_BYTES);
3479+ falseString.setFrozen(true);
3480+ nilString = RubyString.newEmptyString(this);
3481+ nilString.setFrozen(true);
3482+ trueString = newString(TRUE_BYTES);
3483+ trueString.setFrozen(true);
3484+
3485 encodingService = new EncodingService(this);
3486
3487 symbolClass = RubySymbol.createSymbolClass(this);
3488@@ -429,9 +441,13 @@ public final class Ruby implements Constantizable {
3489 } else {
3490 bignumClass = null;
3491 randomClass = null;
3492- defaultRand = null;
3493 }
3494 ioClass = RubyIO.createIOClass(this);
3495+ if (Options.FIBER_SCHEDULER.load()) {
3496+ ioBufferClass = RubyIOBuffer.createIOBufferClass(this);
3497+ } else {
3498+ ioBufferClass = null;
3499+ }
3500
3501 structClass = profile.allowClass("Struct") ? RubyStruct.createStructClass(this) : null;
3502 bindingClass = profile.allowClass("Binding") ? RubyBinding.createBindingClass(this) : null;
3503@@ -462,18 +478,21 @@ public final class Ruby implements Constantizable {
3504 yielderClass = RubyYielder.createYielderClass(this);
3505 chainClass = RubyChain.createChainClass(this, enumeratorClass);
3506 aseqClass = RubyArithmeticSequence.createArithmeticSequenceClass(this, enumeratorClass);
3507+ producerClass = RubyProducer.createProducerClass(this, enumeratorClass);
3508 } else {
3509 enumeratorClass = null;
3510 generatorClass = null;
3511 yielderClass = null;
3512 chainClass = null;
3513 aseqClass = null;
3514+ producerClass = null;
3515 }
3516
3517 continuationClass = initContinuation();
3518
3519 TracePoint.createTracePointClass(this);
3520
3521+ warningCategories = config.getWarningCategories();
3522 warningModule = RubyWarnings.createWarningModule(this);
3523
3524 // Initialize exceptions
3525@@ -537,6 +556,13 @@ public final class Ruby implements Constantizable {
3526
3527 // Done booting JRuby runtime
3528 runtimeIsBooted = true;
3529+ if ("true".equals(System.getenv("USE_SUBSPAWN"))) {
3530+ if (Platform.IS_WINDOWS) {
3531+ LOG.warn("env USE_SUBSPAWN=true is unsupported on Windows at this time");
3532+ } else {
3533+ getLoadService().require("subspawn/replace-builtin");
3534+ }
3535+ }
3536 }
3537
3538 private void initProfiling() {
3539@@ -569,6 +595,8 @@ public final class Ruby implements Constantizable {
3540 loadService.provide("rational.rb");
3541 loadService.provide("complex.rb");
3542 loadService.provide("thread.rb");
3543+ loadService.provide("fiber.rb");
3544+ loadService.provide("ruby2_keywords.rb");
3545
3546 // Load preludes
3547 initRubyPreludes();
3548@@ -649,15 +677,6 @@ public final class Ruby implements Constantizable {
3549 }
3550 }
3551
3552- private RubyClass initDataClass() {
3553- RubyClass dataClass = null;
3554- if (profile.allowClass("Data")) {
3555- dataClass = defineClass("Data", objectClass, ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
3556- getObject().deprecateConstant(this, "Data");
3557- }
3558- return dataClass;
3559- }
3560-
3561 private Random initRandom() {
3562 Random myRandom;
3563 try {
3564@@ -791,7 +810,7 @@ public final class Ruby implements Constantizable {
3565
3566 /**
3567 * Convenience method for java integrators who may need to switch the notion
3568- * of "global" runtime. Use <tt>JRuby.runtime.use_as_global_runtime</tt>
3569+ * of "global" runtime. Use <code>JRuby.runtime.use_as_global_runtime</code>
3570 * from Ruby code to activate the current runtime as the global one.
3571 */
3572 public void useAsGlobalRuntime() {
3573@@ -836,7 +855,7 @@ public final class Ruby implements Constantizable {
3574 * and runtime preparation typical to normal script runs.
3575 *
3576 * @param script The scriptlet to run
3577- * @returns The result of the eval
3578+ * @return The result of the eval
3579 */
3580 public IRubyObject evalScriptlet(String script) {
3581 ThreadContext context = getCurrentContext();
3582@@ -858,7 +877,7 @@ public final class Ruby implements Constantizable {
3583 * @param script The scriptlet to run
3584 * @param scope The scope to execute against (ManyVarsDynamicScope is
3585 * recommended, so it can grow as needed)
3586- * @returns The result of the eval
3587+ * @return The result of the eval
3588 */
3589 public IRubyObject evalScriptlet(String script, DynamicScope scope) {
3590 ThreadContext context = getCurrentContext();
3591@@ -867,7 +886,7 @@ public final class Ruby implements Constantizable {
3592 context.preEvalScriptlet(scope);
3593
3594 try {
3595- return interpreter.execute(this, rootNode, context.getFrameSelf());
3596+ return interpreter.execute(this, rootNode, getTopSelf());
3597 } finally {
3598 context.postEvalScriptlet();
3599 }
3600@@ -923,6 +942,9 @@ public final class Ruby implements Constantizable {
3601 getGlobalVariables().define("$PROGRAM_NAME", d, GLOBAL);
3602 getGlobalVariables().define("$0", d, GLOBAL);
3603
3604+ // set main script and canonical path for require_relative use
3605+ loadService.setMainScript(filename, getCurrentDirectory());
3606+
3607 for (Map.Entry<String, String> entry : config.getOptionGlobals().entrySet()) {
3608 final IRubyObject varvalue;
3609 if (entry.getValue() != null) {
3610@@ -1021,7 +1043,7 @@ public final class Ruby implements Constantizable {
3611 *
3612 * @param inputStream The input stream from which to read the script
3613 * @param filename The filename to use for parsing
3614- * @returns The root node of the parsed script
3615+ * @return The root node of the parsed script
3616 */
3617 public Node parseFromMain(InputStream inputStream, String filename) {
3618 if (config.isInlineScript()) {
3619@@ -1085,6 +1107,8 @@ public final class Ruby implements Constantizable {
3620 if (Options.JIT_LOGGING.load()) {
3621 LOG.info("successfully compiled: {}", scriptNode.getFile());
3622 }
3623+ } catch (RaiseException e) {
3624+ throw e;
3625 } catch (Throwable e) {
3626 if (Options.JIT_LOGGING.load()) {
3627 if (Options.JIT_LOGGING_VERBOSE.load()) {
3628@@ -1123,10 +1147,11 @@ public final class Ruby implements Constantizable {
3629 private RootNode addGetsLoop(RootNode oldRoot, boolean printing, boolean processLineEndings, boolean split) {
3630 int line = oldRoot.getLine();
3631 BlockNode newBody = new BlockNode(line);
3632- RubySymbol dollarSlash = newSymbol(CommonByteLists.DOLLAR_SLASH);
3633- newBody.add(new GlobalAsgnNode(line, dollarSlash, new StrNode(line, ((RubyString) globalVariables.get("$/")).getByteList())));
3634
3635- if (processLineEndings) newBody.add(new GlobalAsgnNode(line, newSymbol(CommonByteLists.DOLLAR_BACKSLASH), new GlobalVarNode(line, dollarSlash)));
3636+ if (processLineEndings) {
3637+ RubySymbol dollarSlash = newSymbol(CommonByteLists.DOLLAR_SLASH);
3638+ newBody.add(new GlobalAsgnNode(line, newSymbol(CommonByteLists.DOLLAR_BACKSLASH), new GlobalVarNode(line, dollarSlash)));
3639+ }
3640
3641 GlobalVarNode dollarUnderscore = new GlobalVarNode(line, newSymbol("$_"));
3642
3643@@ -1142,7 +1167,7 @@ public final class Ruby implements Constantizable {
3644 whileBody.add(oldRoot.getBodyNode());
3645 }
3646
3647- if (printing) whileBody.add(new FCallNode(line, newSymbol("puts"), new ArrayNode(line, dollarUnderscore), null));
3648+ if (printing) whileBody.add(new FCallNode(line, newSymbol("print"), new ArrayNode(line, dollarUnderscore), null));
3649
3650 return new RootNode(line, oldRoot.getScope(), newBody, oldRoot.getFile());
3651 }
3652@@ -1206,6 +1231,8 @@ public final class Ruby implements Constantizable {
3653 if (scriptAndCode != null && Options.JIT_LOGGING.load()) {
3654 LOG.info("done compiling target script: {}", scriptNode.getFile());
3655 }
3656+ } catch (RaiseException e) {
3657+ throw e;
3658 } catch (Exception e) {
3659 if (Options.JIT_LOGGING.load()) {
3660 if (Options.JIT_LOGGING_VERBOSE.load()) {
3661@@ -1505,7 +1532,7 @@ public final class Ruby implements Constantizable {
3662 * rb_define_module in MRI.
3663 *
3664 * @param name The name of the new module
3665- * @returns The new module
3666+ * @return The new module
3667 */
3668 @Extension
3669 public RubyModule defineModule(String name) {
3670@@ -1519,7 +1546,7 @@ public final class Ruby implements Constantizable {
3671 * @param name The name of the new module
3672 * @param parent The class or module namespace under which to define the
3673 * module
3674- * @returns The new module
3675+ * @return The new module
3676 */
3677 @Extension
3678 public RubyModule defineModuleUnder(String name, RubyModule parent) {
3679@@ -1544,7 +1571,7 @@ public final class Ruby implements Constantizable {
3680 * new module is created.
3681 *
3682 * @param id The name of the module
3683- * @returns The existing or new module
3684+ * @return The existing or new module
3685 */
3686 public RubyModule getOrCreateModule(String id) {
3687 IRubyObject module = objectClass.getConstantAt(id);
3688@@ -1599,6 +1626,7 @@ public final class Ruby implements Constantizable {
3689 loadService.loadFromClassLoader(getClassLoader(), "jruby/bundler/startup.rb", false);
3690 }
3691
3692+ @SuppressWarnings("ReturnValueIgnored")
3693 private boolean doesReflectionWork() {
3694 try {
3695 ClassLoader.class.getDeclaredMethod("getResourceAsStream", String.class);
3696@@ -1661,6 +1689,7 @@ public final class Ruby implements Constantizable {
3697 ifAllowed("Fatal", (ruby) -> fatal = RubyFatal.define(ruby, exceptionClass));
3698 ifAllowed("Interrupt", (ruby) -> interrupt = RubyInterrupt.define(ruby, signalException));
3699 ifAllowed("TypeError", (ruby) -> typeError = RubyTypeError.define(ruby, standardError));
3700+ ifAllowed("NoMatchingPatternError", (ruby) -> noMatchingPatternError = RubyNoMatchingPatternError.define(ruby, standardError));
3701 ifAllowed("ArgumentError", (ruby) -> argumentError = RubyArgumentError.define(ruby, standardError));
3702 ifAllowed("UncaughtThrowError", (ruby) -> uncaughtThrowError = RubyUncaughtThrowError.define(ruby, argumentError));
3703 ifAllowed("IndexError", (ruby) -> indexError = RubyIndexError.define(ruby, standardError));
3704@@ -1691,6 +1720,17 @@ public final class Ruby implements Constantizable {
3705 ifAllowed("KeyError", (ruby) -> keyError = RubyKeyError.define(ruby, indexError));
3706 ifAllowed("DomainError", (ruby) -> mathDomainError = RubyDomainError.define(ruby, argumentError, mathModule));
3707
3708+ RubyClass runtimeError = this.runtimeError;
3709+ ObjectAllocator runtimeErrorAllocator = runtimeError.getAllocator();
3710+
3711+ if (Options.FIBER_SCHEDULER.load()) {
3712+ bufferLockedError = ioBufferClass.defineClassUnder("LockedError", runtimeError, runtimeErrorAllocator);
3713+ bufferAllocationError = ioBufferClass.defineClassUnder("AllocationError", runtimeError, runtimeErrorAllocator);
3714+ bufferAccessError = ioBufferClass.defineClassUnder("AccessError", runtimeError, runtimeErrorAllocator);
3715+ bufferInvalidatedError = ioBufferClass.defineClassUnder("InvalidatedError", runtimeError, runtimeErrorAllocator);
3716+ bufferMaskError = ioBufferClass.defineClassUnder("MaskError", runtimeError, runtimeErrorAllocator);
3717+ }
3718+
3719 initErrno();
3720
3721 initNativeException();
3722@@ -1853,6 +1893,10 @@ public final class Ruby implements Constantizable {
3723 return moduleClass;
3724 }
3725
3726+ public RubyClass getRefinement() {
3727+ return refinementClass;
3728+ }
3729+
3730 public RubyClass getClassClass() {
3731 return classClass;
3732 }
3733@@ -1992,6 +2036,10 @@ public final class Ruby implements Constantizable {
3734 return aseqClass;
3735 }
3736
3737+ public RubyClass getProducer() {
3738+ return producerClass;
3739+ }
3740+
3741 public RubyClass getFiber() {
3742 return fiberClass;
3743 }
3744@@ -2031,6 +2079,15 @@ public final class Ruby implements Constantizable {
3745 return trueObject;
3746 }
3747
3748+ public RubyString getTrueString() {
3749+ return trueString;
3750+ }
3751+
3752+ public RubyString getNilString() {
3753+ return nilString;
3754+ }
3755+
3756+
3757 /** Returns the "false" instance from the instance pool.
3758 * @return The "false" instance.
3759 */
3760@@ -2038,6 +2095,10 @@ public final class Ruby implements Constantizable {
3761 return falseObject;
3762 }
3763
3764+ public RubyString getFalseString() {
3765+ return falseString;
3766+ }
3767+
3768 /** Returns the "nil" singleton instance.
3769 * @return "nil"
3770 */
3771@@ -2101,6 +2162,15 @@ public final class Ruby implements Constantizable {
3772 return bignumClass;
3773 }
3774
3775+
3776+ public RubyClass getDateError() {
3777+ return this.dateErrorClass;
3778+ }
3779+
3780+ public void setDateError(RubyClass dateError) {
3781+ this.dateErrorClass = dateError;
3782+ }
3783+
3784 public RubyClass getDir() {
3785 return dirClass;
3786 }
3787@@ -2121,6 +2191,10 @@ public final class Ruby implements Constantizable {
3788 return ioClass;
3789 }
3790
3791+ public RubyClass getIOBuffer() {
3792+ return ioBufferClass;
3793+ }
3794+
3795 public RubyClass getThread() {
3796 return threadClass;
3797 }
3798@@ -2316,6 +2390,10 @@ public final class Ruby implements Constantizable {
3799 return typeError;
3800 }
3801
3802+ public RubyClass getNoMatchingPatternError() {
3803+ return noMatchingPatternError;
3804+ }
3805+
3806 public RubyClass getArgumentError() {
3807 return argumentError;
3808 }
3809@@ -2428,17 +2506,52 @@ public final class Ruby implements Constantizable {
3810 return invalidByteSequenceError;
3811 }
3812
3813+ public RubyClass getBufferLockedError() {
3814+ return bufferLockedError;
3815+ }
3816+
3817+ public RubyClass getBufferAllocationError() {
3818+ return bufferAllocationError;
3819+ }
3820+
3821+ public RubyClass getBufferAccessError() {
3822+ return bufferAccessError;
3823+ }
3824+
3825+ public RubyClass getBufferInvalidatedError() {
3826+ return bufferInvalidatedError;
3827+ }
3828+
3829+ public RubyClass getBufferMaskError() {
3830+ return bufferMaskError;
3831+ }
3832+
3833+ @Deprecated
3834 RubyRandom.RandomType defaultRand;
3835
3836+ /** The default Ruby Random object for this runtime */
3837+ private RubyRandom defaultRandom;
3838+
3839+ public RubyRandom getDefaultRandom() {
3840+ return defaultRandom;
3841+ }
3842+
3843+ public void setDefaultRandom(RubyRandom random) {
3844+ this.defaultRandom = random;
3845+ this.defaultRand = random.getRandomType();
3846+ }
3847+
3848 /**
3849 * @deprecated internal API, to be hidden
3850 */
3851 public RubyRandom.RandomType getDefaultRand() {
3852- return defaultRand;
3853+ return getDefaultRandom().getRandomType();
3854 }
3855
3856+ /**
3857+ * @deprecated the modified field is now unused and deprecated and the set is ignored
3858+ */
3859 public void setDefaultRand(RubyRandom.RandomType defaultRand) {
3860- this.defaultRand = defaultRand;
3861 }
3862
3863 private RubyHash charsetMap;
3864@@ -2448,46 +2561,97 @@ public final class Ruby implements Constantizable {
3865 return charsetMap;
3866 }
3867
3868- /** Getter for property isVerbose.
3869- * @return Value of property isVerbose.
3870+ /**
3871+ * @return $VERBOSE value
3872 */
3873 public IRubyObject getVerbose() {
3874 return verboseValue;
3875 }
3876
3877+ /**
3878+ * @return $VERBOSE value as a Java primitive
3879+ */
3880 public boolean isVerbose() {
3881 return verbose;
3882 }
3883
3884+ /**
3885+ * If the user explicitly disabled warnings using: {@link #setWarningsEnabled(boolean)} return false.
3886+ *
3887+ * Otherwise fallback to a $VERBOSE value check (which is the default behavior).
3888+ *
3889+ * @return whether warnings are enabled
3890+ */
3891 public boolean warningsEnabled() {
3892- return warningsEnabled;
3893+ return warningsEnabled && verboseWarnings;
3894 }
3895
3896- /** Setter for property isVerbose.
3897- * @param verbose New value of property isVerbose.
3898+ /**
3899+ * Setter that enables/disabled warnings (without changing verbose mode).
3900+ * @param warningsEnabled
3901+ * @see #setVerbose(IRubyObject)
3902+ */
3903+ public void setWarningsEnabled(final boolean warningsEnabled) {
3904+ this.warningsEnabled = warningsEnabled;
3905+ }
3906+
3907+ /**
3908+ * Sets the runtime verbosity ($VERBOSE global which usually gets set to nil/false or true).
3909+ * <p>Note: warnings get enabled whenever the verbose level is set to a value that is not nil.</p>
3910+ * @param verbose the verbose ruby value
3911 */
3912- public void setVerbose(IRubyObject verbose) {
3913+ public void setVerbose(final IRubyObject verbose) {
3914 this.verbose = verbose.isTrue();
3915 this.verboseValue = verbose;
3916- warningsEnabled = !verbose.isNil();
3917+ verboseWarnings = !verbose.isNil();
3918 }
3919
3920- /** Getter for property isDebug.
3921- * @return Value of property isDebug.
3922+ /**
3923+ * Sets the $VERBOSE level
3924+ * @param verbose null, true and false are all valid
3925+ * @see #setVerbose(IRubyObject)
3926+ */
3927+ public void setVerbose(final Boolean verbose) {
3928+ setVerbose(verbose == null ? nilObject : (verbose ? trueObject : falseObject));
3929+ }
3930+
3931+ /**
3932+ * @return $DEBUG value
3933 */
3934 public IRubyObject getDebug() {
3935 return debug ? trueObject : falseObject;
3936 }
3937
3938+ /**
3939+ * @return $DEBUG value as a boolean
3940+ */
3941 public boolean isDebug() {
3942 return debug;
3943 }
3944
3945- /** Setter for property isDebug.
3946- * @param debug New value of property isDebug.
3947+ /**
3948+ * Setter for property isDebug.
3949+ * @param debug the $DEBUG value
3950 */
3951 public void setDebug(IRubyObject debug) {
3952- this.debug = debug.isTrue();
3953+ setDebug(debug.isTrue());
3954+ }
3955+
3956+ /**
3957+ * Sets the $DEBUG flag
3958+ * @param debug
3959+ */
3960+ public void setDebug(final boolean debug) {
3961+ this.debug = debug;
3962+ }
3963+
3964+ /**
3965+ * Get the current enabled warning categories.
3966+ *
3967+ * @return a set of the currently-enabled warning categories
3968+ */
3969+ public Set<RubyWarnings.Category> getWarningCategories() {
3970+ return warningCategories;
3971 }
3972
3973 public JavaSupport getJavaSupport() {
3974@@ -2627,9 +2791,7 @@ public final class Ruby implements Constantizable {
3975 private byte[] encodeToBytes(String string) {
3976 Charset charset = getDefaultCharset();
3977
3978- byte[] bytes = charset == null ? string.getBytes() : string.getBytes(charset);
3979-
3980- return bytes;
3981+ return charset == null ? string.getBytes() : string.getBytes(charset);
3982 }
3983
3984 @Deprecated
3985@@ -2703,11 +2865,11 @@ public final class Ruby implements Constantizable {
3986 * Get the default java.nio.charset.Charset for the current default internal encoding.
3987 */
3988 public Charset getDefaultCharset() {
3989- Encoding enc = getDefaultEncoding();
3990-
3991- Charset charset = EncodingUtils.charsetForEncoding(enc);
3992-
3993- return charset;
3994+ try {
3995+ return EncodingUtils.charsetForEncoding(getDefaultEncoding());
3996+ } catch (UnsupportedCharsetException e) {
3997+ return null;
3998+ }
3999 }
4000
4001 /**
4002@@ -2771,7 +2933,6 @@ public final class Ruby implements Constantizable {
4003 throw newRaiseException(getTypeError(), str(this, "can't retrieve anonymous class ", ids(this, path)));
4004 }
4005
4006- ThreadContext context = getCurrentContext();
4007 RubyModule c = getObject();
4008 int pbeg = 0, p = 0;
4009 for (int l = path.length(); p < l; ) {
4010@@ -2787,8 +2948,7 @@ public final class Ruby implements Constantizable {
4011 }
4012
4013 // FIXME: JI depends on const_missing getting called from Marshal.load (ruby objests do not). We should marshal JI objects differently so we do not differentiate here.
4014- boolean isJava = c instanceof JavaPackage || JavaClass.isProxyType(context, c);
4015- IRubyObject cc = flexibleSearch || isJava ? c.getConstant(str) : c.getConstantAt(str);
4016+ IRubyObject cc = flexibleSearch || isJavaPackageOrJavaClassProxyType(c) ? c.getConstant(str) : c.getConstantAt(str);
4017
4018 if (!flexibleSearch && cc == null) return null;
4019
4020@@ -2801,6 +2961,10 @@ public final class Ruby implements Constantizable {
4021 return c;
4022 }
4023
4024+ private static boolean isJavaPackageOrJavaClassProxyType(final RubyModule type) {
4025+ return type instanceof JavaPackage || ClassUtils.isJavaClassProxyType(type);
4026+ }
4027+
4028 /** Prints an error with backtrace to the error stream.
4029 *
4030 * MRI: eval.c - error_print()
4031@@ -2906,8 +3070,13 @@ public final class Ruby implements Constantizable {
4032 }
4033
4034 public StaticScope setupWrappedToplevel(IRubyObject self, StaticScope top) {
4035+ RubyModule wrapper = loadService.getWrapperSelf();
4036+
4037+ if (wrapper == null || wrapper.isNil()) {
4038+ wrapper = RubyModule.newModule(this);
4039+ }
4040+
4041 // toss an anonymous module into the search path
4042- RubyModule wrapper = RubyModule.newModule(this);
4043 ((RubyBasicObject) self).extend(new IRubyObject[] {wrapper});
4044 StaticScope newTop = staticScopeFactory.newLocalScope(null);
4045 top.setPreviousCRefScope(newTop);
4046@@ -2952,12 +3121,12 @@ public final class Ruby implements Constantizable {
4047 }
4048
4049 public void addBoundMethod(String className, String methodName, String rubyName) {
4050- Map<String, String> javaToRuby = boundMethods.computeIfAbsent(className, s -> new HashMap<>());
4051+ Map<String, String> javaToRuby = boundMethods.computeIfAbsent(className, s -> new ConcurrentHashMap<>(2, 0.9f, 2));
4052 javaToRuby.putIfAbsent(methodName, rubyName);
4053 }
4054
4055 public void addBoundMethods(String className, String... tuples) {
4056- Map<String, String> javaToRuby = boundMethods.computeIfAbsent(className, s -> new HashMap<>());
4057+ Map<String, String> javaToRuby = boundMethods.computeIfAbsent(className, s -> new ConcurrentHashMap<>(2, 0.9f, 2));
4058 for (int i = 0; i < tuples.length; i += 2) {
4059 javaToRuby.putIfAbsent(tuples[i], tuples[i+1]);
4060 }
4061@@ -2972,10 +3141,9 @@ public final class Ruby implements Constantizable {
4062
4063 for (int i = 0; i < tuplesIndex; i++) {
4064 String className = classNamesAndTuples[i];
4065- if (boundMethods.containsKey(className)) {
4066- boundMethods.get(className).putAll(javaToRuby);
4067- } else {
4068- boundMethods.put(className, new HashMap<>(javaToRuby));
4069+ Map<String, String> javaToRubyForClass = boundMethods.computeIfAbsent(className, s -> new ConcurrentHashMap<>((int)(javaToRuby.size() / 0.9f) + 1, 0.9f, 2));
4070+ for (Map.Entry<String, String> entry : javaToRuby.entrySet()) {
4071+ javaToRubyForClass.putIfAbsent(entry.getKey(), entry.getValue());
4072 }
4073 }
4074 }
4075@@ -3000,180 +3168,10 @@ public final class Ruby implements Constantizable {
4076 return boundMethods;
4077 }
4078
4079- private static final EnumSet<RubyEvent> interest =
4080- EnumSet.of(
4081- RubyEvent.C_CALL,
4082- RubyEvent.C_RETURN,
4083- RubyEvent.CALL,
4084- RubyEvent.CLASS,
4085- RubyEvent.END,
4086- RubyEvent.LINE,
4087- RubyEvent.RAISE,
4088- RubyEvent.RETURN
4089- );
4090-
4091- public static class CallTraceFuncHook extends EventHook {
4092- private RubyProc traceFunc;
4093- private final ThreadContext thread; // if non-null only call traceFunc if it is from this thread.
4094-
4095- public CallTraceFuncHook(ThreadContext context) {
4096- this.thread = context;
4097- }
4098-
4099- public void setTraceFunc(RubyProc traceFunc) {
4100- this.traceFunc = traceFunc;
4101- }
4102-
4103- public void eventHandler(ThreadContext context, String eventName, String file, int line, String name, IRubyObject type) {
4104- if (context.isWithinTrace()) return;
4105- if (thread != null && thread != context) return;
4106-
4107- if (file == null) file = "(ruby)";
4108- if (type == null) type = context.nil;
4109-
4110- Ruby runtime = context.runtime;
4111- RubyBinding binding = RubyBinding.newBinding(runtime, context.currentBinding());
4112-
4113- // FIXME: Ultimately we should be getting proper string for this event type
4114- switch(eventName) {
4115- case "c_return":
4116- eventName = "c-return";
4117- break;
4118- case "c_call":
4119- eventName = "c-call";
4120- break;
4121- };
4122-
4123- context.preTrace();
4124- try {
4125- traceFunc.call(context, new IRubyObject[]{
4126- runtime.newString(eventName), // event name
4127- runtime.newString(file), // filename
4128- runtime.newFixnum(line), // line numbers should be 1-based
4129- name != null ? runtime.newSymbol(name) : runtime.getNil(),
4130- binding,
4131- type
4132- });
4133- } finally {
4134- context.postTrace();
4135- }
4136- }
4137-
4138- @Override
4139- public boolean equals(Object other) {
4140- if (!(other instanceof CallTraceFuncHook)) return false;
4141-
4142- return super.equals(other) && thread == ((CallTraceFuncHook) other).thread;
4143- }
4144-
4145- @Override
4146- public boolean isInterestedInEvent(RubyEvent event) {
4147- return interest.contains(event);
4148- }
4149-
4150- public ThreadContext getThread() {
4151- return thread;
4152- }
4153-
4154- @Override
4155- public EnumSet<RubyEvent> eventSet() {
4156- return interest;
4157- }
4158- };
4159-
4160- private final CallTraceFuncHook callTraceFuncHook = new CallTraceFuncHook(null);
4161-
4162- public synchronized void addEventHook(EventHook hook) {
4163- if (!RubyInstanceConfig.FULL_TRACE_ENABLED && hook.needsDebug()) {
4164- // without full tracing, many events will not fire
4165- getWarnings().warn("tracing (e.g. set_trace_func) will not capture all events without --debug flag");
4166- }
4167-
4168- EventHook[] hooks = eventHooks;
4169- EventHook[] newHooks = Arrays.copyOf(hooks, hooks.length + 1);
4170- newHooks[hooks.length] = hook;
4171- eventHooks = newHooks;
4172- hasEventHooks = true;
4173- }
4174-
4175- public synchronized void removeEventHook(EventHook hook) {
4176- EventHook[] hooks = eventHooks;
4177-
4178- if (hooks.length == 0) return;
4179-
4180- int pivot = -1;
4181- for (int i = 0; i < hooks.length; i++) {
4182- if (hooks[i].equals(hook)) {
4183- pivot = i;
4184- break;
4185- }
4186- }
4187-
4188- if (pivot == -1) return; // No such hook found.
4189-
4190- EventHook[] newHooks = new EventHook[hooks.length - 1];
4191- // copy before and after pivot into the new array but don't bother
4192- // to arraycopy if pivot is first/last element of the old list.
4193- if (pivot != 0) System.arraycopy(hooks, 0, newHooks, 0, pivot);
4194- if (pivot != hooks.length-1) System.arraycopy(hooks, pivot + 1, newHooks, pivot, hooks.length - (pivot + 1));
4195-
4196- eventHooks = newHooks;
4197- hasEventHooks = newHooks.length > 0;
4198- }
4199-
4200- public void setTraceFunction(RubyProc traceFunction) {
4201- setTraceFunction(callTraceFuncHook, traceFunction);
4202- }
4203-
4204- public void setTraceFunction(CallTraceFuncHook hook, RubyProc traceFunction) {
4205- removeEventHook(hook);
4206-
4207- if (traceFunction == null) return;
4208-
4209- hook.setTraceFunc(traceFunction);
4210- addEventHook(hook);
4211- }
4212-
4213- /**
4214- * Remove all event hooks which are associated with a particular thread.
4215- * @param context the context of the ruby thread we are interested in.
4216- */
4217- public void removeAllCallEventHooksFor(ThreadContext context) {
4218- if (eventHooks.length == 0) return;
4219-
4220- List<EventHook> hooks = new ArrayList<>(Arrays.asList(eventHooks));
4221-
4222- hooks = hooks.stream().filter(hook ->
4223- !(hook instanceof CallTraceFuncHook) || !((CallTraceFuncHook) hook).getThread().equals(context)
4224- ).collect(Collectors.toList());
4225-
4226- EventHook[] newHooks = new EventHook[hooks.size()];
4227- eventHooks = hooks.toArray(newHooks);
4228- hasEventHooks = hooks.size() > 0;
4229- }
4230-
4231- public void callEventHooks(ThreadContext context, RubyEvent event, String file, int line, String name, IRubyObject type) {
4232- if (context.isEventHooksEnabled()) {
4233- EventHook hooks[] = eventHooks;
4234-
4235- for (EventHook eventHook: hooks) {
4236- if (eventHook.isInterestedInEvent(event)) {
4237- IRubyObject klass = context.nil;
4238- if (type instanceof RubyModule) {
4239- if (((RubyModule) type).isIncluded()) {
4240- klass = ((RubyModule) type).getOrigin();
4241- } else if (((RubyModule) type).isSingleton()) {
4242- klass = ((MetaClass) type).getAttached();
4243- }
4244- }
4245- eventHook.event(context, event, file, line, name, klass);
4246- }
4247- }
4248- }
4249- }
4250+ private final TraceEventManager traceEvents = new TraceEventManager(this);
4251
4252- public boolean hasEventHooks() {
4253- return hasEventHooks;
4254+ public TraceEventManager getTraceEvents() {
4255+ return traceEvents;
4256 }
4257
4258 public GlobalVariables getGlobalVariables() {
4259@@ -3313,11 +3311,12 @@ public final class Ruby implements Constantizable {
4260 }
4261 }
4262
4263- private void systemTeardown(ThreadContext context) {
4264+ @SuppressWarnings("ReturnValueIgnored")
4265+ private void systemTeardown(final ThreadContext context) {
4266 // Run post-user exit hooks, such as for shutting down internal JRuby services
4267 while (!postExitBlocks.isEmpty()) {
4268 ExitFunction fun = postExitBlocks.remove(0);
4269- fun.applyAsInt(context);
4270+ fun.applyAsInt(context); // return value ignored
4271 }
4272
4273 synchronized (internalFinalizersMutex) {
4274@@ -3644,11 +3643,11 @@ public final class Ruby implements Constantizable {
4275
4276 public RaiseException newArgumentError(String name, int got, int min, int max) {
4277 if (min == max) {
4278- return newRaiseException(getArgumentError(), str(this, "wrong number of arguments calling `", ids(this, name), ("` (given " + got + ", expected " + min + ")")));
4279+ return newRaiseException(getArgumentError(), str(this, "`", ids(this, name), "': wrong number of arguments (given " + got + ", expected " + min + ")"));
4280 } else if (max == UNLIMITED_ARGUMENTS) {
4281- return newRaiseException(getArgumentError(), str(this, "wrong number of arguments calling `", ids(this, name), ("` (given " + got + ", expected " + min + "+)")));
4282+ return newRaiseException(getArgumentError(), str(this, "`", ids(this, name), "': wrong number of arguments (given " + got + ", expected " + min + "+)"));
4283 } else {
4284- return newRaiseException(getArgumentError(), str(this, "wrong number of arguments calling `", ids(this, name), ("` (given " + got + ", expected " + min + ".." + max + ")")));
4285+ return newRaiseException(getArgumentError(), str(this, "`", ids(this, name), "': wrong number of arguments (given " + got + ", expected " + min + ".." + max + ")"));
4286 }
4287 }
4288
4289@@ -3817,6 +3816,10 @@ public final class Ruby implements Constantizable {
4290 return newRaiseException(getErrno().getClass("EDOM"), "Domain error - " + message);
4291 }
4292
4293+ public RaiseException newErrnoEDOMError() {
4294+ return newRaiseException(getErrno().getClass("EDOM"), "Numerical argument out of domain");
4295+ }
4296+
4297 public RaiseException newErrnoECHILDError() {
4298 return newRaiseException(getErrno().getClass("ECHILD"), "No child processes");
4299 }
4300@@ -3873,6 +3876,10 @@ public final class Ruby implements Constantizable {
4301 return newRaiseException(getErrno().getClass("EAFNOSUPPORT"), message);
4302 }
4303
4304+ public RaiseException newErrnoETIMEDOUTError() {
4305+ return newRaiseException(getErrno().getClass("ETIMEDOUT"), "Broken pipe");
4306+ }
4307+
4308 public RaiseException newErrnoFromLastPOSIXErrno() {
4309 RubyClass errnoClass = getErrno(getPosix().errno());
4310 if (errnoClass == null) errnoClass = systemCallError;
4311@@ -4175,16 +4182,14 @@ public final class Ruby implements Constantizable {
4312 return loadError;
4313 }
4314
4315- public RaiseException newFrozenError(String objectType) {
4316- return newFrozenError(objectType, false);
4317+ public RaiseException newFrozenError(String objectType, IRubyObject receiver) {
4318+ return RubyFrozenError.newFrozenError(getCurrentContext(), newString("can't modify frozen " + objectType), receiver)
4319+ .toThrowable();
4320 }
4321
4322- public RaiseException newFrozenError(RubyModule type) {
4323- return newRaiseException(getFrozenError(), str(this, "can't modify frozen ", types(this, type)));
4324- }
4325-
4326- public RaiseException newFrozenError(String objectType, boolean runtimeError) {
4327- return newRaiseException(getFrozenError(), str(this, "can't modify frozen ", ids(this, objectType)));
4328+ public RaiseException newFrozenError(IRubyObject receiver) {
4329+ return RubyFrozenError.newFrozenError(getCurrentContext(), newString("can't modify frozen " + receiver.getType()), receiver)
4330+ .toThrowable();
4331 }
4332
4333 public RaiseException newSystemStackError(String message) {
4334@@ -4282,6 +4287,26 @@ public final class Ruby implements Constantizable {
4335 return newRaiseException(getInvalidByteSequenceError(), message);
4336 }
4337
4338+ public RaiseException newBufferLockedError(String message) {
4339+ return newRaiseException(getBufferLockedError(), message);
4340+ }
4341+
4342+ public RaiseException newBufferAllocationError(String message) {
4343+ return newRaiseException(getBufferAllocationError(), message);
4344+ }
4345+
4346+ public RaiseException newBufferAccessError(String message) {
4347+ return newRaiseException(getBufferAccessError(), message);
4348+ }
4349+
4350+ public RaiseException newBufferInvalidatedError(String message) {
4351+ return newRaiseException(getBufferInvalidatedError(), message);
4352+ }
4353+
4354+ public RaiseException newBufferMaskError(String message) {
4355+ return newRaiseException(getBufferMaskError(), message);
4356+ }
4357+
4358 /**
4359 * Construct a new RaiseException wrapping a new Ruby exception object appropriate to the given exception class.
4360 *
4361@@ -4976,6 +5001,17 @@ public final class Ruby implements Constantizable {
4362 return this.nullToNil = nullToNil;
4363 }
4364
4365+ public MethodHandle getNullToUndefinedHandle() {
4366+ MethodHandle filter = this.nullToUndefined;
4367+
4368+ if (filter != null) return filter;
4369+
4370+ filter = InvokeDynamicSupport.findStatic(Helpers.class, "nullToUndefined", methodType(IRubyObject.class, IRubyObject.class));
4371+ filter = explicitCastArguments(filter, methodType(IRubyObject.class, Object.class));
4372+
4373+ return this.nullToUndefined = filter;
4374+ }
4375+
4376 // Parser stats methods
4377 private void addLoadParseToStats() {
4378 if (parserStats != null) parserStats.addLoadParse();
4379@@ -4989,13 +5025,9 @@ public final class Ruby implements Constantizable {
4380 return filenoUtil;
4381 }
4382
4383- public RubyClass getData() {
4384- return dataClass;
4385- }
4386-
4387 /**
4388- * @return Class -> extension initializer map
4389- * @note Internal API, subject to change!
4390+ * @return Class$ -&gt; extension initializer map
4391+ * <p>Note: Internal API, subject to change!</p>
4392 */
4393 public Map<Class, Consumer<RubyModule>> getJavaExtensionDefinitions() { return javaExtensionDefinitions; }
4394
4395@@ -5288,6 +5320,11 @@ public final class Ruby implements Constantizable {
4396 void setException(RubyClass exceptionClass) {
4397 }
4398
4399+ @Deprecated
4400+ public RubyClass getData() {
4401+ return null;
4402+ }
4403+
4404 private final ConcurrentHashMap<String, Invalidator> constantNameInvalidators =
4405 new ConcurrentHashMap<String, Invalidator>(
4406 16 /* default initial capacity */,
4407@@ -5304,10 +5341,6 @@ public final class Ruby implements Constantizable {
4408
4409 private final RubySymbol.SymbolTable symbolTable = new RubySymbol.SymbolTable(this);
4410
4411- private static final EventHook[] EMPTY_HOOKS = new EventHook[0];
4412- private volatile EventHook[] eventHooks = EMPTY_HOOKS;
4413- private boolean hasEventHooks;
4414-
4415 private boolean abortOnException = false; // Thread.abort_on_exception
4416 private boolean reportOnException = true; // Thread.report_on_exception
4417 private boolean doNotReverseLookupEnabled = false;
4418@@ -5323,15 +5356,23 @@ public final class Ruby implements Constantizable {
4419 private final IRubyObject[] singleNilArray;
4420 private final RubyBoolean trueObject;
4421 private final RubyBoolean falseObject;
4422+ private final RubyString trueString;
4423+ private final RubyString falseString;
4424+ private final RubyString nilString;
4425 final RubyFixnum[] fixnumCache = new RubyFixnum[2 * RubyFixnum.CACHE_OFFSET];
4426 final Object[] fixnumConstants = new Object[fixnumCache.length];
4427
4428 @Deprecated
4429 private IRubyObject rootFiber;
4430
4431- private boolean verbose, warningsEnabled, debug;
4432+ private boolean warningsEnabled = true; // global flag to be able to disable warnings regardless of $VERBOSE
4433+ private boolean verboseWarnings; // whether warnings are enabled based on $VERBOSE
4434+ private boolean verbose, debug;
4435 private IRubyObject verboseValue;
4436
4437+ // Set of categories we care about (set defined when creating warnings).
4438+ private final Set<RubyWarnings.Category> warningCategories;
4439+
4440 private RubyThreadGroup defaultThreadGroup;
4441
4442 /**
4443@@ -5343,6 +5384,7 @@ public final class Ruby implements Constantizable {
4444 private final RubyClass basicObjectClass;
4445 private final RubyClass objectClass;
4446 private final RubyClass moduleClass;
4447+ private final RubyClass refinementClass;
4448 private final RubyClass classClass;
4449 private final RubyClass nilClass;
4450 private final RubyClass trueClass;
4451@@ -5359,6 +5401,7 @@ public final class Ruby implements Constantizable {
4452 private final RubyClass generatorClass;
4453 private final RubyClass chainClass;
4454 private final RubyClass aseqClass;
4455+ private final RubyClass producerClass;
4456 private final RubyClass arrayClass;
4457 private final RubyClass hashClass;
4458 private final RubyClass rangeClass;
4459@@ -5375,9 +5418,11 @@ public final class Ruby implements Constantizable {
4460 private final RubyClass timeClass;
4461 private final RubyClass bignumClass;
4462 private final RubyClass dirClass;
4463+ private RubyClass dateErrorClass;
4464 private final RubyClass fileClass;
4465 private final RubyClass fileStatClass;
4466 private final RubyClass ioClass;
4467+ private final RubyClass ioBufferClass;
4468 private final RubyClass threadClass;
4469 private final RubyClass threadGroupClass;
4470 private final RubyClass continuationClass;
4471@@ -5385,7 +5430,6 @@ public final class Ruby implements Constantizable {
4472 private final RubyClass exceptionClass;
4473 private final RubyClass dummyClass;
4474 private final RubyClass randomClass;
4475- private final RubyClass dataClass;
4476 private final RubyClass mutexClass;
4477 private final RubyClass conditionVariableClass;
4478 private final RubyClass queueClass;
4479@@ -5412,6 +5456,7 @@ public final class Ruby implements Constantizable {
4480 private RubyClass fatal;
4481 private RubyClass interrupt;
4482 private RubyClass typeError;
4483+ private RubyClass noMatchingPatternError;
4484 private RubyClass argumentError;
4485 private RubyClass uncaughtThrowError;
4486 private RubyClass indexError;
4487@@ -5439,6 +5484,11 @@ public final class Ruby implements Constantizable {
4488 private RubyClass keyError;
4489 private RubyClass locationClass;
4490 private RubyClass interruptedRegexpError;
4491+ private RubyClass bufferLockedError;
4492+ private RubyClass bufferAllocationError;
4493+ private RubyClass bufferAccessError;
4494+ private RubyClass bufferInvalidatedError;
4495+ private RubyClass bufferMaskError;
4496
4497 /**
4498 * All the core modules we keep direct references to, for quick access and
4499@@ -5597,7 +5647,7 @@ public final class Ruby implements Constantizable {
4500 private final AtomicInteger moduleGeneration = new AtomicInteger(1);
4501
4502 // A list of Java class+method names to include in backtraces
4503- private final Map<String, Map<String, String>> boundMethods = new HashMap();
4504+ private final Map<String, Map<String, String>> boundMethods = new ConcurrentHashMap<>();
4505
4506 // A soft pool of selectors for blocking IO operations
4507 private final SelectorPool selectorPool = new SelectorPool();
4508@@ -5695,7 +5745,7 @@ public final class Ruby implements Constantizable {
4509 }
4510
4511 public boolean matches(Object o) {
4512- return (o instanceof RubyProc) && ((RubyProc) o).getBlock() == proc.getBlock();
4513+ return (o instanceof RubyProc) && ((RubyProc) o).getBlock().getBody() == proc.getBlock().getBody();
4514 }
4515
4516 @Override
4517@@ -5774,6 +5824,7 @@ public final class Ruby implements Constantizable {
4518 * The nullToNil filter for this runtime.
4519 */
4520 private MethodHandle nullToNil;
4521+ private MethodHandle nullToUndefined;
4522
4523 public final ClassValue<TypePopulator> POPULATORS = new ClassValue<TypePopulator>() {
4524 @Override
4525@@ -5814,4 +5865,54 @@ public final class Ruby implements Constantizable {
4526 return newErrnoEADDRFromBindException(be, null);
4527 }
4528
4529+ @Deprecated
4530+ public RaiseException newFrozenError(String objectType) {
4531+ return newFrozenError(objectType, null);
4532+ }
4533+
4534+ @Deprecated
4535+ public RaiseException newFrozenError(RubyModule type) {
4536+ return newRaiseException(getFrozenError(), str(this, "can't modify frozen ", types(this, type)));
4537+ }
4538+
4539+ @Deprecated
4540+ public RaiseException newFrozenError(String objectType, boolean runtimeError) {
4541+ return newRaiseException(getFrozenError(), str(this, "can't modify frozen ", ids(this, objectType)));
4542+ }
4543+
4544+ @Deprecated
4545+ public synchronized void addEventHook(EventHook hook) {
4546+ traceEvents.addEventHook(hook);
4547+ }
4548+
4549+ @Deprecated
4550+ public synchronized void removeEventHook(EventHook hook) {
4551+ traceEvents.removeEventHook(hook);
4552+ }
4553+
4554+ @Deprecated
4555+ public void setTraceFunction(RubyProc traceFunction) {
4556+ traceEvents.setTraceFunction(traceFunction);
4557+ }
4558+
4559+ @Deprecated
4560+ public void setTraceFunction(TraceEventManager.CallTraceFuncHook hook, RubyProc traceFunction) {
4561+ traceEvents.setTraceFunction(hook, traceFunction);
4562+ }
4563+
4564+ @Deprecated
4565+ public void removeAllCallEventHooksFor(ThreadContext context) {
4566+ traceEvents.removeAllCallEventHooksFor(context);
4567+ }
4568+
4569+ @Deprecated
4570+ public void callEventHooks(ThreadContext context, RubyEvent event, String file, int line, String name, IRubyObject type) {
4571+ traceEvents.callEventHooks(context, event, file, line, name, type);
4572+ }
4573+
4574+ @Deprecated
4575+ public boolean hasEventHooks() {
4576+ return traceEvents.hasEventHooks();
4577+ }
4578+
4579 }
4580diff --git a/core/src/main/java/org/jruby/RubyArgsFile.java b/core/src/main/java/org/jruby/RubyArgsFile.java
4581index 261089a..5d3d670 100644
4582--- a/core/src/main/java/org/jruby/RubyArgsFile.java
4583+++ b/core/src/main/java/org/jruby/RubyArgsFile.java
4584@@ -39,14 +39,16 @@ import java.io.IOException;
4585 import jnr.posix.FileStat;
4586 import jnr.posix.util.Platform;
4587
4588+import static org.jruby.RubyArgsFile.Next.NextFile;
4589+import static org.jruby.RubyArgsFile.Next.Stream;
4590 import static org.jruby.RubyEnumerator.enumeratorize;
4591 import static org.jruby.anno.FrameField.LASTLINE;
4592 import static org.jruby.runtime.Visibility.PRIVATE;
4593
4594-import org.jruby.anno.FrameField;
4595 import org.jruby.anno.JRubyMethod;
4596 import org.jruby.exceptions.RaiseException;
4597 import org.jruby.internal.runtime.GlobalVariable;
4598+import org.jruby.runtime.Arity;
4599 import org.jruby.runtime.Block;
4600 import org.jruby.runtime.CallSite;
4601 import org.jruby.runtime.IAccessor;
4602@@ -54,7 +56,9 @@ import org.jruby.runtime.JavaSites;
4603 import org.jruby.runtime.ThreadContext;
4604 import org.jruby.runtime.builtin.IRubyObject;
4605 import org.jruby.util.ByteList;
4606+import org.jruby.util.StringSupport;
4607 import org.jruby.util.TypeConverter;
4608+import org.jruby.util.io.Getline;
4609
4610 public class RubyArgsFile extends RubyObject {
4611
4612@@ -115,18 +119,25 @@ public class RubyArgsFile extends RubyObject {
4613 return this;
4614 }
4615
4616+ public enum Next {
4617+ Stream, // We are only getting from $stdin
4618+ SameFile, // We are continuing to interact with the same file
4619+ NextFile // Time to advance to the next file.
4620+ };
4621+
4622 public static final class ArgsFileData {
4623
4624 private final Ruby runtime;
4625 private RubyArray argv;
4626 public IRubyObject currentFile;
4627 private boolean inited = false;
4628- public int next_p = 0;
4629+ public Next next_p = NextFile;
4630 public boolean binmode = false;
4631+ private IRubyObject inPlace; // false, nil, String
4632
4633 public ArgsFileData(Ruby runtime, RubyArray argv) {
4634 this.runtime = runtime;
4635- this.argv = argv;
4636+ setArgs(argv);
4637 this.currentFile = runtime.getNil();
4638 }
4639
4640@@ -135,29 +146,32 @@ public class RubyArgsFile extends RubyObject {
4641 runtime.setCurrentLine(linenumber);
4642 }
4643
4644+ // ARGF.class.new
4645 void setArgs(RubyArray argv) {
4646 inited = false;
4647 this.argv = argv;
4648+ this.inPlace = runtime.getFalse();
4649 }
4650
4651 public boolean next_argv(ThreadContext context) {
4652 if (!inited) {
4653- next_p = argv.getLength() > 0 ? 1 : -1;
4654+ next_p = argv.getLength() > 0 ? NextFile : Stream;
4655 inited = true;
4656 runtime.setCurrentLine(0);
4657 } else {
4658 if (argv.isNil()) {
4659- next_p = -1;
4660- } else if (next_p == -1 && argv.getLength() > 0) {
4661- next_p = 1;
4662+ next_p = Stream;
4663+ } else if (next_p == Stream && argv.getLength() > 0) {
4664+ next_p = NextFile;
4665 }
4666 }
4667
4668 IRubyObject $FILENAME = runtime.getGlobalVariables().get("$FILENAME");
4669
4670- if (next_p == 1) {
4671+ if (next_p == NextFile) {
4672 if (argv.getLength() > 0) {
4673- final RubyString filename = argv.shift(context).convertToString();
4674+ RubyString filename = TypeConverter.convertToType(argv.shift(context), context.runtime.getString(), "to_path").convertToString();
4675+ StringSupport.checkStringSafety(runtime, filename);
4676 if ( ! filename.op_equal(context, $FILENAME).isTrue() ) {
4677 runtime.defineReadonlyVariable("$FILENAME", filename, GlobalVariable.Scope.GLOBAL);
4678 }
4679@@ -166,7 +180,9 @@ public class RubyArgsFile extends RubyObject {
4680 currentFile = runtime.getGlobalVariables().get("$stdin");
4681 } else {
4682 currentFile = RubyFile.open(context, runtime.getFile(), new IRubyObject[]{ filename }, Block.NULL_BLOCK);
4683- String extension = runtime.getInstanceConfig().getInPlaceBackupExtension();
4684+ String extension = null;
4685+ if (inPlace.isTrue()) extension = inPlace.asJavaString();
4686+ if (extension == null) extension = runtime.getInstanceConfig().getInPlaceBackupExtension();
4687 if (extension != null) {
4688 if (Platform.IS_WINDOWS) {
4689 inplaceEditWindows(context, filename.asJavaString(), extension);
4690@@ -176,17 +192,18 @@ public class RubyArgsFile extends RubyObject {
4691 }
4692 if (binmode) ((RubyIO) currentFile).binmode();
4693 }
4694- next_p = 0;
4695+ next_p = Next.SameFile;
4696 } else {
4697- next_p = 1;
4698+ next_p = NextFile;
4699 return false;
4700 }
4701- } else if (next_p == -1) {
4702+ } else if (next_p == Stream) {
4703 currentFile = runtime.getGlobalVariables().get("$stdin");
4704 if (!filenameEqlDash((RubyString) $FILENAME)) {
4705 runtime.defineReadonlyVariable("$FILENAME", runtime.newString("-"), GlobalVariable.Scope.GLOBAL);
4706 }
4707 }
4708+
4709 return true;
4710 }
4711
4712@@ -262,6 +279,47 @@ public class RubyArgsFile extends RubyObject {
4713 recv.getRuntime().setCurrentLine(newLineNumber);
4714 }
4715
4716+ @JRubyMethod
4717+ public static IRubyObject inplace_mode(ThreadContext context, IRubyObject recv) {
4718+ ArgsFileData data = ArgsFileData.getArgsFileData(context.runtime);
4719+
4720+ if (data.inPlace == null) return context.nil;
4721+ if (data.inPlace.isNil()) return context.nil;
4722+
4723+ return data.inPlace.dup();
4724+ }
4725+
4726+ @JRubyMethod(name = "inplace_mode=")
4727+ public static IRubyObject inplace_mode_set(ThreadContext context, IRubyObject recv, IRubyObject test) {
4728+ return setInplaceMode(context, recv, test);
4729+ }
4730+
4731+ private static IRubyObject setInplaceMode(ThreadContext context, IRubyObject recv, IRubyObject test) {
4732+ ArgsFileData data = ArgsFileData.getArgsFileData(context.runtime);
4733+
4734+ if (test.isNil()) {
4735+ data.inPlace = context.nil;
4736+ } else if (!test.isTrue()) {
4737+ data.inPlace = context.fals;
4738+ } else {
4739+ test = TypeConverter.convertToType(test, context.runtime.getString(), "to_str", false);
4740+ if (test.isNil() || ((RubyString) test).length() == 0) {
4741+ data.inPlace = context.nil;
4742+ } else {
4743+ StringSupport.checkStringSafety(context.runtime, test);
4744+ test.setFrozen(true);
4745+ data.inPlace = test;
4746+ }
4747+ }
4748+
4749+ return recv;
4750+ }
4751+
4752+ @JRubyMethod(name = "inplace_mode=")
4753+ public IRubyObject inplace_mode_set(ThreadContext context, IRubyObject test) {
4754+ return setInplaceMode(context, this, test);
4755+ }
4756+
4757 @JRubyMethod(name = "argv")
4758 public static IRubyObject argv(ThreadContext context, IRubyObject recv) {
4759 return ArgsFileData.getArgsFileData(context.runtime).argv;
4760@@ -304,37 +362,60 @@ public class RubyArgsFile extends RubyObject {
4761
4762 // MRI: argf_getline
4763 private static IRubyObject argf_getline(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
4764- ArgsFileData data = ArgsFileData.getArgsFileData(context.runtime);
4765+ Ruby runtime = context.runtime;
4766+
4767+ IRubyObject line;
4768+
4769+ ArgsFileData data = ArgsFileData.getArgsFileData(runtime);
4770
4771 while (true) {
4772 if (!data.next_argv(context)) return context.nil;
4773
4774- IRubyObject line = data.currentFile.callMethod(context, "gets", args);
4775+ RubyIO currentFile = (RubyIO) data.currentFile;
4776+
4777+ if (isGenericInput(runtime, data)) {
4778+ line = data.currentFile.callMethod(context, "gets", args);
4779+ } else {
4780+ if (args.length == 0 && runtime.getRecordSeparatorVar().get() == runtime.getGlobalVariables().getDefaultSeparator()) {
4781+ line = (currentFile).gets(context);
4782+ } else {
4783+ line = Getline.getlineCall(context, GETLINE, currentFile, currentFile.getReadEncoding(), args);
4784+ }
4785
4786- if (line.isNil() && data.next_p != -1) {
4787- argf_close(context, data.currentFile);
4788- data.next_p = 1;
4789- continue;
4790+ if (line.isNil() && data.next_p != Stream) {
4791+ argf_close(context, data.currentFile);
4792+ data.next_p = NextFile;
4793+ continue;
4794+ }
4795 }
4796
4797 return line;
4798 }
4799 }
4800
4801+ private static boolean isGenericInput(Ruby runtime, ArgsFileData data) {
4802+ return data.currentFile == runtime.getGlobalVariables().get("$stdin") && !(data.currentFile instanceof RubyFile);
4803+ }
4804+
4805+ private static final Getline.Callback<RubyIO, IRubyObject> GETLINE =
4806+ (context, self, rs, limit, chomp, block) -> self.getlineImpl(context, rs, limit, chomp);
4807+
4808 // ARGF methods
4809
4810 /** Read a line.
4811 *
4812 */
4813- @JRubyMethod(name = "gets", optional = 1, writes = LASTLINE)
4814+ @JRubyMethod(name = "gets", optional = 1, checkArity = false, writes = LASTLINE)
4815 public static IRubyObject gets(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
4816+ Arity.checkArgumentCount(context, args, 0, 1);
4817+
4818 return context.setLastLine(argf_getline(context, recv, args));
4819 }
4820
4821 /** Read a line.
4822 *
4823 */
4824- @JRubyMethod(name = "readline", optional = 1, writes = LASTLINE)
4825+ @JRubyMethod(name = "readline", optional = 1, checkArity = false, writes = LASTLINE)
4826 public static IRubyObject readline(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
4827 IRubyObject line = gets(context, recv, args);
4828
4829@@ -343,8 +424,10 @@ public class RubyArgsFile extends RubyObject {
4830 return line;
4831 }
4832
4833- @JRubyMethod(optional = 1)
4834+ @JRubyMethod(optional = 1, checkArity = false)
4835 public static IRubyObject readlines(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
4836+ Arity.checkArgumentCount(context, args, 0, 1);
4837+
4838 Ruby runtime = context.runtime;
4839 ArgsFileData data = ArgsFileData.getArgsFileData(runtime);
4840
4841@@ -360,8 +443,10 @@ public class RubyArgsFile extends RubyObject {
4842 return ary;
4843 }
4844
4845- @JRubyMethod(optional = 1)
4846+ @JRubyMethod(optional = 1, checkArity = false)
4847 public static IRubyObject to_a(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
4848+ Arity.checkArgumentCount(context, args, 0, 1);
4849+
4850 Ruby runtime = context.runtime;
4851 ArgsFileData data = ArgsFileData.getArgsFileData(runtime);
4852
4853@@ -393,8 +478,9 @@ public class RubyArgsFile extends RubyObject {
4854 return block.isGiven() ? each_byte(context, recv, block) : enumeratorize(context.runtime, recv, "each_byte");
4855 }
4856
4857- @JRubyMethod(optional = 1)
4858+ @JRubyMethod(optional = 1, checkArity = false)
4859 public static IRubyObject bytes(final ThreadContext context, IRubyObject recv, IRubyObject[] args, final Block block) {
4860+ Arity.checkArgumentCount(context, args, 0, 1);
4861 return block.isGiven() ? each_byte(context, recv, block) : enumeratorize(context.runtime, recv, "bytes");
4862 }
4863
4864@@ -422,7 +508,6 @@ public class RubyArgsFile extends RubyObject {
4865 int n = runtime.getKCode().getEncoding().length(c);
4866 IRubyObject file = data.currentFile;
4867 RubyString str = runtime.newString();
4868- str.setTaint(true);
4869 str.cat(c);
4870
4871 while(--n > 0) {
4872@@ -446,12 +531,13 @@ public class RubyArgsFile extends RubyObject {
4873
4874 @JRubyMethod
4875 public static IRubyObject each_codepoint(ThreadContext context, IRubyObject recv, Block block) {
4876- if (!block.isGiven()) return RubyEnumerator.enumeratorize(context.runtime, recv, "each_line");
4877+ if (!block.isGiven()) return RubyEnumerator.enumeratorize(context.runtime, recv, "each_codepoint");
4878 ArgsFileData data = ArgsFileData.getArgsFileData(context.runtime);
4879
4880 CallSite each_codepoint = sites(context).each_codepoint;
4881 while (data.next_argv(context)) {
4882 each_codepoint.call(context, recv, data.currentFile, block);
4883+ data.next_p = NextFile;
4884 }
4885
4886 return context.nil;
4887@@ -469,10 +555,12 @@ public class RubyArgsFile extends RubyObject {
4888 /** Invoke a block for each line.
4889 *
4890 */
4891- @JRubyMethod(name = "each_line", optional = 1)
4892+ @JRubyMethod(name = "each_line", optional = 1, checkArity = false)
4893 public static IRubyObject each_line(ThreadContext context, IRubyObject recv, IRubyObject[] args, Block block) {
4894 if (!block.isGiven()) return enumeratorize(context.runtime, recv, "each_line", args);
4895
4896+ Arity.checkArgumentCount(context, args, 0, 1);
4897+
4898 ArgsFileData data = ArgsFileData.getArgsFileData(context.runtime);
4899
4900 if (!data.next_argv(context)) return context.nil;
4901@@ -481,7 +569,7 @@ public class RubyArgsFile extends RubyObject {
4902 if (!data.next_argv(context)) return recv;
4903
4904 data.currentFile.callMethod(context, "each", NULL_ARRAY, block);
4905- data.next_p = 1;
4906+ data.next_p = NextFile;
4907 }
4908
4909 IRubyObject str;
4910@@ -493,7 +581,7 @@ public class RubyArgsFile extends RubyObject {
4911 }
4912
4913 @Deprecated // TODO "warning: ARGF#lines is deprecated; use #each_line instead"
4914- @JRubyMethod(optional = 1)
4915+ @JRubyMethod(optional = 1, checkArity = false)
4916 public static IRubyObject lines(ThreadContext context, IRubyObject recv, IRubyObject[] args, Block block) {
4917 if (!block.isGiven()) return RubyEnumerator.enumeratorize(context.runtime, recv, "each_line");
4918 return each_line(context, recv, args, block);
4919@@ -504,7 +592,7 @@ public class RubyArgsFile extends RubyObject {
4920 return each_line(context, recv, args, block);
4921 }
4922
4923- @JRubyMethod(name = "each", optional = 1)
4924+ @JRubyMethod(name = "each", optional = 1, checkArity = false)
4925 public static IRubyObject each(final ThreadContext context, IRubyObject recv, IRubyObject[] args, final Block block) {
4926 return block.isGiven() ? each_line(context, recv, args, block) : enumeratorize(context.runtime, recv, "each", args);
4927 }
4928@@ -528,9 +616,9 @@ public class RubyArgsFile extends RubyObject {
4929 Ruby runtime = recv.getRuntime();
4930 ArgsFileData data = ArgsFileData.getArgsFileData(runtime);
4931
4932- if (data.inited && data.next_p == 0) {
4933+ if (data.inited && data.next_p == Next.SameFile) {
4934 argf_close(runtime.getCurrentContext(), data.currentFile);
4935- data.next_p = 1;
4936+ data.next_p = NextFile;
4937 }
4938
4939 return recv;
4940@@ -554,7 +642,7 @@ public class RubyArgsFile extends RubyObject {
4941
4942 argf_close(context, data.currentFile);
4943
4944- if (data.next_p != -1) data.next_p = 1;
4945+ if (data.next_p != Stream) data.next_p = NextFile;
4946
4947 context.runtime.setCurrentLine(0);
4948
4949@@ -649,8 +737,10 @@ public class RubyArgsFile extends RubyObject {
4950 return getCurrentDataFile(context, "no stream to set position").pos_set(context, offset);
4951 }
4952
4953- @JRubyMethod(name = "seek", required = 1, optional = 1)
4954+ @JRubyMethod(name = "seek", required = 1, optional = 1, checkArity = false)
4955 public static IRubyObject seek(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
4956+ Arity.checkArgumentCount(context, args, 1, 2);
4957+
4958 return getCurrentDataFile(context, "no stream to seek").seek(context, args);
4959 }
4960
4961@@ -680,17 +770,21 @@ public class RubyArgsFile extends RubyObject {
4962 if (bt != context.nil) return bt;
4963
4964 argf_close(context, data.currentFile);
4965- data.next_p = 1;
4966+ data.next_p = NextFile;
4967 }
4968 }
4969
4970- @JRubyMethod(required = 1, optional = 2)
4971+ @JRubyMethod(required = 1, optional = 2, checkArity = false)
4972 public static IRubyObject read_nonblock(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
4973+ Arity.checkArgumentCount(context, args, 1, 3);
4974+
4975 return getPartial(context, recv, args, true);
4976 }
4977
4978- @JRubyMethod(required = 1, optional = 1)
4979+ @JRubyMethod(required = 1, optional = 1, checkArity = false)
4980 public static IRubyObject readpartial(ThreadContext context, IRubyObject recv, IRubyObject[] args) {
4981+ Arity.checkArgumentCount(context, args, 1, 2);
4982+
4983 return getPartial(context, recv, args, false);
4984 }
4985
4986@@ -722,10 +816,10 @@ public class RubyArgsFile extends RubyObject {
4987
4988 IRubyObject res = ((RubyIO) data.currentFile).getPartial(context, args, nonBlocking, noException);
4989 if (res == context.nil) {
4990- if (data.next_p == -1) return RubyIO.nonblockEOF(runtime, noException);
4991+ if (data.next_p == Stream) return RubyIO.nonblockEOF(runtime, noException);
4992
4993 argf_close(context, data.currentFile);
4994- data.next_p = 1;
4995+ data.next_p = NextFile;
4996
4997 if (data.argv.isEmpty()) return RubyIO.nonblockEOF(runtime, noException);
4998
4999@@ -762,20 +856,22 @@ public class RubyArgsFile extends RubyObject {
5000 if (bt != context.nil) return bt;
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches