aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* bootstraptest/runner: run in parallel if in parallel buildNobuyoshi Nakada2022-09-291-5/+5
|
* [ruby/date] Narrow ALLOCV region for shrunk wordsNobuyoshi Nakada2022-09-292-8/+20
| | | | https://github.com/ruby/date/commit/f51b038074
* Update bundled gems list at 8c4e52fbe8a07da76c4038e4c5dc51 [ci skip]git2022-09-291-1/+3
|
* Update bundled_gemsHiroshi SHIBATA2022-09-291-3/+3
|
* Update NEWS.md with updated coverage interfaces.Samuel Williams2022-09-291-3/+7
|
* Add `Coverage.supported?` to detect what modes are supported.Samuel Williams2022-09-292-0/+37
|
* Add `eval: true/false` flag to `Coverage.setup`.Samuel Williams2022-09-294-17/+21
|
* [rubygems/rubygems] Put bundler gemspec stub at the right placeDavid Rodríguez2022-09-291-25/+28
| | | | | | | So that it's found when needed, rather than dynamically modifying loaded stubs and thus messing with RubyGems internals. https://github.com/rubygems/rubygems/commit/cd3e7cb9e5
* [rubygems/rubygems] Only activate bundler when neededDavid Rodríguez2022-09-292-213/+266
| | | | | | | | | | Loading Bundler beforehand was actually replacing ENV with a backup of the pre-Bundler environment through `Bundler::EnvironmentPreserver`. I think that was making a bug in `ENV.replace` not bite our tests, because Bundler includes proper patches to workaround that issue. So this commit also includes these patches in RubyGems tests. https://github.com/rubygems/rubygems/commit/8e079149b9
* [rubygems/rubygems] Test a pure RubyGems methodDavid Rodríguez2022-09-291-5/+5
| | | | | | `Gem::Specification#load_paths` is actually a Bundler thing. https://github.com/rubygems/rubygems/commit/d20b4d1950
* [rubygems/rubygems] Little refactor to keep things consistentDavid Rodríguez2022-09-292-4/+6
| | | | https://github.com/rubygems/rubygems/commit/3934deb4e4
* [rubygems/rubygems] Remove unnecessary `ensure`David Rodríguez2022-09-291-1/+0
| | | | https://github.com/rubygems/rubygems/commit/6c0c02c533
* [rubygems/rubygems] Require bundler consistentlyDavid Rodríguez2022-09-291-6/+1
| | | | | | | The `$LOAD_PATH` should be properly setup so that the local version is used. https://github.com/rubygems/rubygems/commit/03c0ab4082
* [rubygems/rubygems] Remove unnecessary constantDavid Rodríguez2022-09-291-2/+1
| | | | https://github.com/rubygems/rubygems/commit/4bd77488ad
* [rubygems/rubygems] Cleaup unnecessary codeDavid Rodríguez2022-09-292-20/+0
| | | | https://github.com/rubygems/rubygems/commit/2e05dadbc5
* [rubygems/rubygems] Unskip stuff that now works on JRubyDavid Rodríguez2022-09-291-9/+5
| | | | https://github.com/rubygems/rubygems/commit/d86a5ae2eb
* Update to ruby/spec@1d9d5c6Benoit Daloze2022-09-2851-259/+1142
|
* Update to ruby/mspec@b60306dBenoit Daloze2022-09-285-27/+11
|
* Shapes wrappers shouldn't mark the shapeAaron Patterson2022-09-281-7/+1
| | | | | We don't allocate shapes out of the GC anymore, so we shouldn't mark those pointers.
* * expand tabs. [ci skip]git2022-09-291-18/+18
| | | | | Tabs were expanded because the file did not have any tab indentation in unedited lines. Please update your editor config, and use misc/expand_tabs.rb in the pre-commit hook.
* This commit implements the Object Shapes technique in CRuby.Jemma Issroff2022-09-2841-906/+2315
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Object Shapes is used for accessing instance variables and representing the "frozenness" of objects. Object instances have a "shape" and the shape represents some attributes of the object (currently which instance variables are set and the "frozenness"). Shapes form a tree data structure, and when a new instance variable is set on an object, that object "transitions" to a new shape in the shape tree. Each shape has an ID that is used for caching. The shape structure is independent of class, so objects of different types can have the same shape. For example: ```ruby class Foo def initialize # Starts with shape id 0 @a = 1 # transitions to shape id 1 @b = 1 # transitions to shape id 2 end end class Bar def initialize # Starts with shape id 0 @a = 1 # transitions to shape id 1 @b = 1 # transitions to shape id 2 end end foo = Foo.new # `foo` has shape id 2 bar = Bar.new # `bar` has shape id 2 ``` Both `foo` and `bar` instances have the same shape because they both set instance variables of the same name in the same order. This technique can help to improve inline cache hits as well as generate more efficient machine code in JIT compilers. This commit also adds some methods for debugging shapes on objects. See `RubyVM::Shape` for more details. For more context on Object Shapes, see [Feature: #18776] Co-Authored-By: Aaron Patterson <tenderlove@ruby-lang.org> Co-Authored-By: Eileen M. Uchitelle <eileencodes@gmail.com> Co-Authored-By: John Hawthorn <john@hawthorn.email>
* Always use the longer version of `TRY_WITH_GC`Nobuyoshi Nakada2022-09-281-18/+12
|
* bootstraptest/runner: manage sub processes with the job serverNobuyoshi Nakada2022-09-282-11/+41
|
* bootstraptest/runner: fold dots by window sizeNobuyoshi Nakada2022-09-281-4/+27
|
* [rubygems/rubygems] Force "master" to be used regardless of ↵David Rodríguez2022-09-281-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `init.defaultBranch` config Otherwise, if you have `init.defaultBranch main` configured, like I do, a bunch of tests fail with things like: ``` ============================================================================================================================================================================================================ Error: test_checkout_submodules(TestGemSourceGit): Gem::Exception: unable to find reference master in /Users/deivid/Code/rubygems/rubygems/tmp/test_rubygems_20220928-13878-xog1je/git/a /Users/deivid/Code/rubygems/rubygems/lib/rubygems/source/git.rb:188:in `rev_parse' /Users/deivid/Code/rubygems/rubygems/lib/rubygems/source/git.rb:143:in `dir_shortref' /Users/deivid/Code/rubygems/rubygems/lib/rubygems/source/git.rb:158:in `install_dir' /Users/deivid/Code/rubygems/rubygems/lib/rubygems/source/git.rb:94:in `checkout' /Users/deivid/Code/rubygems/rubygems/test/rubygems/test_gem_source_git.rb:78:in `test_checkout_submodules' 75: system @git, "commit", "--quiet", "-m", "add submodule b" 76: end 77: => 78: source.checkout 79: 80: assert_path_exist File.join source.install_dir, "a.gemspec" 81: assert_path_exist File.join source.install_dir, "b/b.gemspec" ============================================================================================================================================================================================================ fatal: ambiguous argument 'master': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' fatal: ambiguous argument 'master': unknown revision or path not in the working tree. Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]' E ``` In the future, I'd like to change things to use `main`, but the straighforward fix now is to keep "master" and make the running environment's git configuration not get in the middle. https://github.com/rubygems/rubygems/commit/b09b1416f1
* Fix bug when slicing a string with broken encodingPeter Zhu2022-09-281-0/+1
| | | | | | | Commit aa2a428 introduced a bug where non-embedded string slices copied the encoding of the original string. If the original string had a broken encoding but the slice has valid encoding, then the slice would be incorrectly marked as broken encoding.
* Make string slices views rather than copiesPeter Zhu2022-09-281-7/+9
| | | | | Just like commit 1c16645 for arrays, this commit changes string slices to be a view rather than a copy even if it can be allocated through VWA.
* Install all file trees for lldb [ci skip]Nobuyoshi Nakada2022-09-281-1/+7
| | | | It is no longer single lldb_cruby.py only.
* [ruby/date] Check time zone offset elementsNobuyoshi Nakada2022-09-282-11/+40
| | | | | | | Too big parts of fractional hour time zone offset can cause assertion failures. https://github.com/ruby/date/commit/06bcfb2729
* [ruby/net-http] Remove ENVIRONMENT_VARIABLE_IS_MULTIUSER_SAFEJeremy Evans2022-09-282-23/+6
| | | | | | | | | | | | | | | | | | This list is out of date. At least OpenBSD since 2013 does not allow one user to read the environment variables of a process run by another user. While we could try to keep the list updated, I think it's a bad idea to not use the user/password from the environment, even if another user on the system could read it. If http_proxy exists in the environment, and other users can read it, it doesn't make it more secure for Ruby to ignore it. You could argue that it encourages poor security practices, but net/http should provide mechanism, not policy. Fixes [Bug #18908] https://github.com/ruby/net-http/commit/1e4585153d
* dbm and gdbm have been extracted gems.Hiroshi SHIBATA2022-09-281-2/+0
|
* [ruby/bigdecimal] Document precision=0 and ndigits=0 for converting from FloatMaciej Rzasa2022-09-282-1/+8
| | | | https://github.com/ruby/bigdecimal/commit/4f0894c6c0
* YJIT: add assertion wrt label names (#6459)Maxime Chevalier-Boisvert2022-09-271-0/+2
| | | Add assertion wrt label names
* YJIT: reverse configure.ac changes that disable `--yjit-stats` on Graviton1 ↵Maxime Chevalier-Boisvert2022-09-271-28/+7
| | | | | (#6457) Reverse configure.ac changes that disable YJIT stats on Graviton1
* Change IncrCounter lowering on AArch64 (#6455)Kevin Newton2022-09-275-11/+181
| | | | | | | | | | | * Change IncrCounter lowering on AArch64 Previously we were using LDADDAL which is not available on Graviton 1 chips. Instead, we're going to use an exclusive load/store group through the LDAXR/STLXR instructions. * Update yjit/src/backend/arm64/mod.rs Co-authored-by: Maxime Chevalier-Boisvert <maximechevalierb@gmail.com>
* [rubygems/rubygems] fix: Gem::Platform.match handles String argument properlyMike Dalessio2022-09-282-0/+8
| | | | | | | | | | | | | | Previously 9eead86 introduced non-commutativity of platforms, and later commit 1b9f7f50 changed the behavior of `Gem::Platform.match` to ensure the callee of `#=~` was the gem platform. However, when the platform argument is a String, then the callee and argument of `#=~` are flipped (see docs for `String#=~`), which works against the fix from 1b9f7f50. Closes #5938 https://github.com/rubygems/rubygems/commit/3b1fb562e8
* [DOC] More on IO streams (#6454)Burdette Lamar2022-09-271-28/+38
| | | | | | Adds remarks about .new and .open. Uses ..open where convenient (not convenient where output would be in a block). Fixed examples for #ungetc.
* Re-enable TZ test missed due to merge conflict.Vít Ondruch2022-09-271-2/+0
| | | | | | This was disabled by b7577b4d9e, while properly fixed upstream by: https://github.com/ruby/spec/pull/939
* [ruby/timeout] Explicit add the timeout thread to default ThreadGroupLars Kanis2022-09-282-0/+14
| | | | | | | | | | Otherwise the timeout thread would be added to the ThreadGroup of the thread that makes the first call to Timeout.timeout . Fixes bug 19020: https://bugs.ruby-lang.org/issues/19020 Add a test case to make sure the common thread doesn't leak to another ThreadGroup https://github.com/ruby/timeout/commit/c4f1385c9a
* [ruby/psych] Bump snakeyaml from 1.31 to 1.33Chad Wilson2022-09-281-1/+1
| | | | https://github.com/ruby/psych/commit/8a761cdfb7
* [DOC] More on IO streams (#6445)Burdette Lamar2022-09-271-46/+197
| | | | | | | | | | | | Text is reorganized so that most of the previous text is now in these newly-created sections: Basic IO Line IO New text is added to form new sections: Character IO Byte IO Codepoint IO This gives the page a functional orientation, so that a reader can quickly find pertinent sections. The page retains its original mission: to provide good link targets for the doc for related classes.
* syntax_suggest moved under the ruby organization from zombocomHiroshi SHIBATA2022-09-273-4/+4
|
* Revert this until we can figure out WB issues or remove shapes from GCAaron Patterson2022-09-2645-2530/+928
| | | | | | | | | | Revert "* expand tabs. [ci skip]" This reverts commit 830b5b5c351c5c6efa5ad461ae4ec5085e5f0275. Revert "This commit implements the Object Shapes technique in CRuby." This reverts commit 9ddfd2ca004d1952be79cf1b84c52c79a55978f4.
* Rename method name in keyword test from y to yoJeremy Evans2022-09-271-107/+107
| | | | | Kernel#y is defined by psych/yaml, which causes occasional nondeterministic problems with this test when doing parallel testing.
* Refactor str_substr and str_subseqPeter Zhu2022-09-261-37/+21
| | | | | | | | This commit extracts common code between str_substr and rb_str_subseq into a function called str_subseq. This commit also applies optimizations in commit 2e88bca to rb_str_subseq.
* * expand tabs. [ci skip]git2022-09-273-21/+21
| | | | | Tabs were expanded because the file did not have any tab indentation in unedited lines. Please update your editor config, and use misc/expand_tabs.rb in the pre-commit hook.
* This commit implements the Object Shapes technique in CRuby.Jemma Issroff2022-09-2645-946/+2548
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Object Shapes is used for accessing instance variables and representing the "frozenness" of objects. Object instances have a "shape" and the shape represents some attributes of the object (currently which instance variables are set and the "frozenness"). Shapes form a tree data structure, and when a new instance variable is set on an object, that object "transitions" to a new shape in the shape tree. Each shape has an ID that is used for caching. The shape structure is independent of class, so objects of different types can have the same shape. For example: ```ruby class Foo def initialize # Starts with shape id 0 @a = 1 # transitions to shape id 1 @b = 1 # transitions to shape id 2 end end class Bar def initialize # Starts with shape id 0 @a = 1 # transitions to shape id 1 @b = 1 # transitions to shape id 2 end end foo = Foo.new # `foo` has shape id 2 bar = Bar.new # `bar` has shape id 2 ``` Both `foo` and `bar` instances have the same shape because they both set instance variables of the same name in the same order. This technique can help to improve inline cache hits as well as generate more efficient machine code in JIT compilers. This commit also adds some methods for debugging shapes on objects. See `RubyVM::Shape` for more details. For more context on Object Shapes, see [Feature: #18776] Co-Authored-By: Aaron Patterson <tenderlove@ruby-lang.org> Co-Authored-By: Eileen M. Uchitelle <eileencodes@gmail.com> Co-Authored-By: John Hawthorn <john@hawthorn.email>
* string.c: don't create a frozen copy for str_new_sharedJean Boussier2022-09-261-4/+2
| | | | | | | | str_new_shared already has all the necessary logic to do this and is also smart enough to skip this step if the source string is already a shared string itself. This saves a useless String allocation on each call.
* Fix coderange calculation in String#bKazuki Yamaguchi2022-09-261-14/+16
| | | | | | | | | Leave the new coderange unknown if the original encoding is not ASCII-compatible. Non-ASCII-compatible encoding strings with valid or broken coderange can end up as ascii-only. Fixes 9a8f6e392fbd ("Cheaply derive code range for String#b return value", 2022-07-25).
* Fix `io/buffer.h` header guard.Samuel Williams2022-09-261-3/+3
|