aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* Check need_major_gc during GC stressPeter Zhu2023-12-071-10/+9
| | | | | | | | | | | | | | | | | | | need_major_gc is set when a major GC is required. However, if gc_stress_no_major is also set, then it will not actually run a major GC. For example, the following script will sometimes crash: ``` GC.stress = 1 50000.times.map { [] } ``` With the following message: ``` [BUG] cannot create a new page after major GC ```
* [PRISM] Don't pop arguments on a return nodeJemma Issroff2023-12-072-3/+11
| | | | Since ReturnNodes don't get popped, their arguments shouldn't either
* Fix GC.verify_compaction_references not moving every objectKJ Tsanaktsidis2023-12-072-16/+86
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The intention of GC.verify_compaction_references is, I believe, to force every single movable object to be moved, so that it's possible to debug native extensions which not correctly updating their references to objects they mark as movable. To do this, it doubles the number of allocated pages for each size pool, and sorts the heap pages so that the free ones are swept first; thus, every object in an old page should be moved into a free slot in one of the new pages. This worked fine until movement of objects _between_ size pools during compaction was implemented. That causes some problems for verify_compaction_references: * We were doubling the number of pages in each size pool, but actually if some objects need to move into a _different_ pool, there's no guarantee that they'll be enough room in that one. * It's possible for the sweep & compact cursors to meet in one size pool before all the objects that want to move into that size pool from another are processed by the compaction. You can see these problems by changing some of the movement tests in test_gc_compact.rb to try and move e.g. 50,000 objects instead of 500; the test is not able to actually move all of the objects in a single compaction run. To fix this, we do two things in verify_compaction_references: * Firstly, we add enough pages to every size pool to make them the same size. This ensures that their compact cursors will all have space to move during compaction (even if that means empty pages are pointlessly compacted) * Then, we examine every object and determine where it _wants_ to be compacted into. We use this information to add additional pages to each size pool to handle all objects which should live there. With these two changes, we can move arbitrary amounts of objects into the correct size pool in a single call to verify_compaction_references. My _motivation_ for performing this work was to try and fix some test stability issues in test_gc_compact.rb. I now no longer think that we actually see this particular bug in rubyci.org, but I also think verify_compaction_references should do what it says on the tin, so it's worth keeping. [Bug #20022]
* Add objspace_each_pages to gc.cKJ Tsanaktsidis2023-12-071-12/+38
| | | | | | | | This works like objspace_each_obj, except instead of being called with the start & end address of each page, it's called with the page structure itself. [Bug #20022]
* [ruby/prism] Remove warnings check from parse_success? methodKevin Newton2023-12-073-12/+8
| | | | https://github.com/ruby/prism/commit/e30a241fb3
* [PRISM] Ensure should set correct end_labelMatt Valentine-House2023-12-071-2/+13
|
* [PRISM] Rescue should set correct end_labelMatt Valentine-House2023-12-072-0/+10
| | | | In order for a break inside the rescue to have the correct jump target
* Lrama v0.5.12yui-knk2023-12-074-3/+187
|
* NEWS: Move "interruptible name resolution" to "Stdlib updates" sectionYusuke Endoh2023-12-071-1/+3
|
* [ruby/io-console] [DOC] Add documentation for IO#cursorMatheus Richard2023-12-071-0/+10
| | | | | | ruby/io-console#50 https://github.com/ruby/io-console/commit/ee752ce771
* Update bundled gems list at bc6a0ede4a05d19dc999d05c84b46a [ci skip]git2023-12-071-0/+1
|
* Bump up bundled net-ftp gem version to 0.3.0Hiroshi SHIBATA2023-12-071-1/+1
|
* Sort links [ci skip]Kazuhiro NISHIYAMA2023-12-071-2/+2
|
* always omit test_ai_addrconfig.Tanaka Akira2023-12-071-1/+1
|
* Set AI_ADDRCONFIG when making getaddrinfo(3) calls for outgoing conns (#7295)KJ Tsanaktsidis2023-12-074-3/+183
| | | | | | | | | | | | | | | | | | | When making an outgoing TCP or UDP connection, set AI_ADDRCONFIG in the hints we send to getaddrinfo(3) (if supported). This will prompt the resolver to _NOT_ issue A or AAAA queries if the system does not actually have an IPv4 or IPv6 address (respectively). This makes outgoing connections marginally more efficient on non-dual-stack systems, since we don't have to try connecting to an address which can't possibly work. More importantly, however, this works around a race condition present in some older versions of glibc on aarch64 where it could accidently send the two outgoing DNS queries with the same DNS txnid, and get confused when receiving the responses. This manifests as outgoing connections sometimes taking 5 seconds (the DNS timeout before retry) to be made. Fixes #19144
* Revert "Warn `it` only with -W:deprecated"Takashi Kokubun2023-12-071-3/+1
| | | | | | | | | | This reverts commit 5458252bb0edcd498e6bd4bea57fd7500bacd54c. Revert "Fallback rb_warn_deprecated for UNIVERSAL_PARSER" This reverts commit 680be886f4d807073f24beed36648ef76219e4f7. matz actually preferred always warning `it`.
* Fallback rb_warn_deprecated for UNIVERSAL_PARSERTakashi Kokubun2023-12-071-0/+2
|
* Warn `it` only with -W:deprecatedTakashi Kokubun2023-12-061-1/+1
|
* Update default gems list at a41d6c825c4b1ed5699fd7880edeb8 [ci skip]git2023-12-071-1/+1
|
* [ruby/open-uri] Bump up 0.4.1Hiroshi SHIBATA2023-12-071-1/+1
| | | | https://github.com/ruby/open-uri/commit/d72508a7f4
* Warn `it` (#9152)Takashi Kokubun2023-12-073-0/+21
| | | https://bugs.ruby-lang.org/issues/18980
* [ruby/open-uri] Set default for max_redirects and add exception classAndrew Kane2023-12-072-3/+6
| | | | https://github.com/ruby/open-uri/commit/dcdcb885cc
* [ruby/open-uri] Add :max_redirects optionAndrew Kane2023-12-072-0/+22
| | | | https://github.com/ruby/open-uri/commit/7fd5ea09a7
* [rubygems/rubygems] Make --build-root disable auto-user-install.Ellen Marie Dash2023-12-072-8/+30
| | | | https://github.com/rubygems/rubygems/commit/6a06b0763f
* [rubygems/rubygems] Better approach to falling back to user installation ↵David Rodríguez2023-12-076-128/+29
| | | | | | when GEM_HOME not writable https://github.com/rubygems/rubygems/commit/f67bced16b
* [rubygems/rubygems] Add some early assertions to make sure the test is ↵David Rodríguez2023-12-071-0/+3
| | | | | | | | | progressing fine If an error happens during the install command, it will fail in an strange way right now. https://github.com/rubygems/rubygems/commit/2b6e0c703a
* [rubygems/rubygems] Use globals variables for standard input/outputVít Ondruch2023-12-072-4/+23
| | | | | | | | | | | Replace use of `STDIN`, `STDOUT` and `STDERR` constants by their `$stdin`, `$stdout` and `$stderr` global variable equivalents. This enables easier testing via standard means, such as `assert_output` for minitest or `expect { print 'foo' }.to output.to_stdout` for RSpec test suites. https://github.com/rubygems/rubygems/commit/a0a6fc1b76
* Copy encoding flags when copying a regex [Bug #20039]Dustin Brown2023-12-062-0/+12
| | | | | | | | | | | | | * :bug: Fixes [Bug #20039](https://bugs.ruby-lang.org/issues/20039) When a Regexp is initialized with another Regexp, we simply copy the properties from the original. However, the flags on the original were not being copied correctly. This caused an issue when the original had multibyte characters and was being compared with an ASCII string. Without the forced encoding flag (`KCODE_FIXED`) transferred on to the new Regexp, the comparison would fail. See the included test for an example. Co-authored-by: Nobuyoshi Nakada <nobu@ruby-lang.org>
* Remove a note for `bundle exec ruby` not printing a warningYusuke Endoh2023-12-071-1/+0
| | | | The implementation limitation is fixed by https://github.com/rubygems/rubygems/pull/7224
* Move replace_require into bundled_gems.rbHiroshi SHIBATA2023-12-072-20/+20
|
* Fix SEGV caused by `GC::Profiler.raw_data` (#9122)Soutaro Matsumoto2023-12-072-1/+9
|
* Add NEWS for Range#overlap?hogelog2023-12-071-0/+2
|
* [ruby/prism] Emit error for constant assignments in defsHaldun Bayhantopcu2023-12-064-0/+12
| | | | https://github.com/ruby/prism/commit/864b06f90e
* YJIT: Add some object validity assertionsAlan Wu2023-12-062-2/+9
| | | | | | We've seen quite a few compaction bugs lately, and these assertions should give clearer symptoms. We only call class_of() on objects that the Ruby code can see.
* [ruby/prism] Simplify unterminated stringKevin Newton2023-12-062-4/+4
| | | | https://github.com/ruby/prism/commit/ef512ca914
* [PRISM] Correct depth offset for block local varsMatt Valentine-House2023-12-062-0/+27
| | | | | | | Blocks should always look at their own local table first, even when defined inside an ensure/rescue or something else that uses depth offset. We can ignore the depth offset if we're doing local lookups inside a block
* [ruby/prism] Move flag position consistently to frontKevin Newton2023-12-06660-25544/+25533
| | | | https://github.com/ruby/prism/commit/6e69a81737
* [ruby/prism] Fix closing loc for string literalsTSUYUSATO Kitsune2023-12-062-5/+17
| | | | | | Fix https://github.com/ruby/prism/pull/1974 https://github.com/ruby/prism/commit/453d403593
* [ruby/prism] Fix one potential memory leak and silence one false positive ↵Haldun Bayhantopcu2023-12-061-0/+3
| | | | | | report. https://github.com/ruby/prism/commit/9608aa386e
* YJIT: Avoid register allocation conflict with a higher stack_idx (#9143)Takashi Kokubun2023-12-062-5/+34
| | | | | YJIT: Avoid register allocation conflict with a higher stack_idx
* [rubygems/rubygems] Bundler::Fetcher uses Bundler::CIDetectorEric Mueller2023-12-062-20/+10
| | | | | | | | | | Additionally, the result is memoized, as it's used twice in a row. This change does result in a net behavioral diff, as the list of ENVs being checked has been updated (now includes buildkite, taskcluster, cirrus, dsari, and drops buildbox and snap) https://github.com/rubygems/rubygems/commit/3fb445a5a1
* [rubygems/rubygems] Duplicate Gem::CIDetector into bundlerEric Mueller2023-12-063-0/+97
| | | | | | | | | | | Because bundler needs to support older versions of rubygems, we can't actually rely on Gem::CIDetector (yet - in a year or so they might be able to consolidate, if they don't change futher). So we're copying it into the Bundler:: namespace, and enforcing that they stay completely in sync with a test. No other tests are needed, since Gem::CIDetector is already tested, and this is and will remain identical. https://github.com/rubygems/rubygems/commit/abc67f0da1
* [rubygems/rubygems] Gem::UpdateSuggestion uses Gem::CIDetectorEric Mueller2023-12-062-15/+2
| | | | https://github.com/rubygems/rubygems/commit/e5b0458342
* [rubygems/rubygems] Introduce the Gem::CIDetectorEric Mueller2023-12-063-0/+120
| | | | | | | | | | | | | | | | | | | | | | This is based on the list in Gem::UpdateSuggestion and Bundler::Fetcher; these have similar purposes (determining whether/what CI we're executing in), and can benefit from being combined and updated (they're both slightly out of date). Noteable changes: * We'll consider ourselves to be on a CI in more cases - if CI_NAME or TASKCLUSTER_ROOT_URL are set specifically, since those represent two cases that were either overlooked or are no longer covered by the existing implementation. (Or possibly TaskCluster still does provide RUN_ID, but failed to document it) * We will notice/track a few additional services in ci_strings (cirrus, dsari, taskcluster), stop tracking 'snap' (they went under in 2017), and update buildbox to buildkite (they've been called that for 8 years, and the BUILDBOX envs have been deprecated for 3). * We'll also sort/uniq/downcase the values (all of which only matter because of the special case of CI_NAME). https://github.com/rubygems/rubygems/commit/60652b942f
* [ruby/prism] Update documentation for encodingsKevin Newton2023-12-062-3/+3
| | | | https://github.com/ruby/prism/commit/18e6df0d4f
* [prism] Handle string and xstring encodingsKevin Newton2023-12-061-9/+32
|
* [ruby/prism] Provide flags for changing encodingsKevin Newton2023-12-0631-226/+455
| | | | https://github.com/ruby/prism/commit/e838eaff6f
* [PRISM] Extract a PM_NOP helperJemma Issroff2023-12-061-5/+8
|
* [PRISM] Fix ReturnNodesJemma Issroff2023-12-062-10/+58
| | | | | This code is almost exactly the same (fixed variable names) as what exists already in compile.c
* Re-embed when removing Object instance variablesPeter Zhu2023-12-066-6/+55
| | | | | | | | | | | Objects with the same shape must always have the same "embeddedness" (either embedded or heap allocated) because YJIT assumes so. However, using remove_instance_variable, it's possible that some objects are embedded and some are heap allocated because it does not re-embed heap allocated objects. This commit changes remove_instance_variable to re-embed Object instance variables when it becomes small enough.