summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-10-18Use assert_separately to avoid defining `foo`Aaron Patterson
When we eval the iseqs generated by prism, they can have side effects like defining methods. In this case, we were defining the method "foo", but other tests were expecting that the foo method would _not_ be defined.
2023-10-18Address PR commentsJemma Issroff
2023-10-18Put line change backJemma Issroff
2023-10-18Fixed mistypingJemma Issroff
2023-10-18Temporarily removed location code on scope nodesJemma Issroff
2023-10-18Remove pm_compile_context_t, move the context onto ScopeNodeJemma Issroff
We changed ScopeNodes to point to their parent (previous) ScopeNodes. Accordingly, we can remove pm_compile_context_t, and store all necessary context in ScopeNodes, allowing us to access locals from outer scopes.
2023-10-18Revert "Revert "[ruby/prism] Change ScopeNode to point to previous ScopeNode""Jemma Issroff
This reverts commit fd87372a7482cbf7672c44ef95bc1dc3b00bab7c.
2023-10-18YJIT: Add a live ISeq counter Alan Wu
It's an estimator for application size and could be used as a compilation heuristic later. Co-authored-by: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@shopify.com> Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
2023-10-18Add test for many ivarsKatherine Oelsner
Co-authored-by: John Hawthorn <john@hawthorn.email>
2023-10-18Revert "shape.h: Make attr_index_t uint8_t"Katherine Oelsner
This reverts commit e3afc212ec059525fe4e5387b2a3be920ffe0f0e.
2023-10-18[ruby/drb] Support :SSL{Min,Max}Version config optionsJeremy Evans
These are necessary to get the tests passing with LibreSSL 3.8.1+, which dropped support for TLSv1.0 and TLSv1.1 for security reasons. This updates the tests to use TLSv1.2 on OpenBSD. This is only strictly necessary on OpenBSD 7.4+, but it will work fine in previous versions as well. https://github.com/ruby/drb/commit/32707b2db5
2023-10-18YJIT: Add --yjit-perf (#8697)Takashi Kokubun
Co-authored-by: Alan Wu <alansi.xingwu@shopify.com>
2023-10-18Bump rustix from 0.38.2 to 0.38.19 in /yjit/bindgendependabot[bot]
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.38.2 to 0.38.19. - [Release notes](https://github.com/bytecodealliance/rustix/releases) - [Commits](https://github.com/bytecodealliance/rustix/compare/v0.38.2...v0.38.19) --- updated-dependencies: - dependency-name: rustix dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18Update default gems list at 6873f96abc2a924b264b6ed3818b2f [ci skip]git
2023-10-18[ruby/prism] Bump to version 0.15.1Kevin Newton
https://github.com/ruby/prism/commit/d906a8ceba
2023-10-18Update default gems list at 0f1e040068fac01856c5c4c0ba9530 [ci skip]git
2023-10-18[ruby/prism] Bump to version 0.15.0Kevin Newton
https://github.com/ruby/prism/commit/ee429f8d50
2023-10-18[ruby/prism] Fix lex compat when dedent should be 0Kevin Newton
https://github.com/ruby/prism/commit/41c0e0e06e
2023-10-18[ruby/prism] Modify less of the CRuby localsKevin Newton
https://github.com/ruby/prism/commit/aca24b3a17
2023-10-18[ruby/prism] Add * and & to methods with ...Kevin Newton
https://github.com/ruby/prism/commit/e8114a786a
2023-10-18[ruby/prism] Extract out constant pool bucket bits to constantsKevin Newton
https://github.com/ruby/prism/commit/1985a9ba51
2023-10-18[ruby/prism] Provide "constant" constants, embedded in the codeKevin Newton
https://github.com/ruby/prism/commit/d469a56e7e
2023-10-18Handle `Timeout::Error` reported from workersNobuyoshi Nakada
2023-10-18[ruby/prism] Use the unescaped regexp to scan for capture groupsKevin Newton
https://github.com/ruby/prism/commit/555551e8f2
2023-10-18[ruby/prism] Index{Operator,And,Or}WriteNodeKevin Newton
Right now, our Call{Operator,And,Or}WriteNode nodes represent two different concepts: ```ruby foo.bar += 1 foo[bar] += 1 ``` These two statements are different in what they can support. The former can never have arguments (or an opening_loc or closing_loc). The former can also never have a block. Also, the former is a variable method name. The latter is always going to be []/[]=, it can have any number of arguments including blocks (`foo[&bar] ||= 1`), and will always have an opening_loc and closing_loc. Furthermore, these statements end of having to take different paths through the various compilers because with the latter you have to consider the arguments and the block, whereas the former can perform some additional peephole optimizations since there are fewer values on the stack. For these reasons, I'm introducing Index{Operator,And,Or}WriteNode. These nodes never have a read_name or write_name on them because they are always []/[]=. They also support blocks, which the previous write nodes didn't. As a benefit of introducing these nodes, I've removed the opening_loc, closing_loc, and arguments from the older write nodes because they will always be null. For the serialized format, both of these nodes end up being smaller, and for in-memory we're storing fewer things in general, so we have savings all around. I don't love that we are introducing another node that is a call node since we generally want consumers to only have to handle a single call, but these nodes are so specific that they would have to be handled separately anyway since in fact call 2 methods. https://github.com/ruby/prism/commit/70155db9cd
2023-10-18[rubygems/rubygems] Allow uninstalling multiple versions of same gemKyle Stevens
Currently, you can install multiple versions of the same gem just fine: ``` $ gem install simplecov:0.19.0 simplecov:0.22.0 Fetching simplecov-0.19.0.gem Successfully installed simplecov-0.19.0 Parsing documentation for simplecov-0.19.0 Installing ri documentation for simplecov-0.19.0 Done installing documentation for simplecov after 0 seconds Fetching simplecov-0.22.0.gem Successfully installed simplecov-0.22.0 Parsing documentation for simplecov-0.22.0 Installing ri documentation for simplecov-0.22.0 Done installing documentation for simplecov after 0 seconds 2 gems installed ``` But to uninstall both of them, you need to run the equivalent uninstall command twice: ``` ~$ gem uninstall simplecov:0.19.0 simplecov:0.22.0 Successfully uninstalled simplecov-0.22.0 ~$ gem uninstall simplecov:0.19.0 simplecov:0.22.0 Gem 'simplecov' is not installed Successfully uninstalled simplecov-0.19.0 ``` This resolves that problem by using the gem's full name (which includes the version) when tracking which ones have already been uninstalled so when it gets to the second version listed it doesn't think it was already uninstalled. https://github.com/rubygems/rubygems/commit/d96101b753
2023-10-18Remove unnecessary and misleading castsNobuyoshi Nakada
2023-10-18Show backtraces when failedKoichi Sasada
If `assert_equal(backtrace_locations.size, profile_frames.size)` in `TestProfileFrames#test_matches_backtrace_locations_main_thread` failed, we do not have enough information about it like that: ``` 1) Failure: TestProfileFrames#test_matches_backtrace_locations_main_thread [/home/runner/work/ruby/ruby/src/test/-ext-/debug/test_profile_frames.rb:148]: <31> expected but was <30>. ``` This patch shows both `backtrace_locations` and `profile_frames` if failed.
2023-10-18Loosen assertion for flaky weak references testPeter Zhu
2023-10-18Tweak the grammarHiroshi SHIBATA
2023-10-18normalize gem name without .so or .bundleHiroshi SHIBATA
2023-10-18reject bundled gems if they are declared in GemfileHiroshi SHIBATA
2023-10-17Bump actions/checkout from 4.1.0 to 4.1.1dependabot[bot]
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.0 to 4.1.1. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/8ade135a41bc03ea155e62e844d188df1ea18608...b4ffde65f46336ab88eb53be808477a3936bae11) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com>
2023-10-18Fix total count when filters givenNobuyoshi Nakada
2023-10-18Escape method names containing control charactersNobuyoshi Nakada
2023-10-17Prefer RbConfig.ruby over the 3.times fallback (#8691)Takashi Kokubun
It seems saner to use RbConfig.ruby than using ruby in a random ancestor directory.
2023-10-18YJIT: Use RbConfig.ruby instead of EnvUtil.rubybin (#8689)Takashi Kokubun
Some people encounter an issue that test_yjit uses the installed Ruby instead of the currently-running Ruby. It's fixed when they remove the installed Ruby. However, test_yjit should run the currently-running Ruby for testing YJIT in subprocesses. EnvUtil is unfortunately used outside tests as well, so for compatibility reasons, this commit only changes the argument given to EnvUtil.invoke_ruby to always use RbConfig.ruby. Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
2023-10-17YJIT: Fix clippy::redundant_localsAlan Wu
> note: `#[deny(clippy::redundant_locals)]` on by default On Rust 1.73.0.
2023-10-17YJIT: Remove call to compile() on empty AssemblerAlan Wu
2023-10-18Manage parallel test workers after timeoutNobuyoshi Nakada
2023-10-18Add `jobs` optional keyword argumentNobuyoshi Nakada
2023-10-17[ruby/prism] Ensure last encoding flag winseileencodes
You can't encoding a string with more than one encoding so ensure that the last one wins. https://github.com/ruby/prism/commit/4182c988c9
2023-10-17YJIT: Add a few missing counters for send fallback (#8681)Takashi Kokubun
2023-10-17YJIT: Lookup IDs on boot instead of binding to themAlan Wu
Previously, the version-controlled `cruby_bindings.inc.rs` file contained the build-time artifact `id.h`, which nobu mentioned hinders the goal of having fewer magic numbers in the repository. Lookup the IDs YJIT needs on boot. It costs cycles, but it's fine since YJIT only uses a handful of IDs at the moment. No perceptible degradation to boot time found in my testing.
2023-10-17YJIT: Add a cargo job for Arm64 and remove .cirrus.yml (#8679)Takashi Kokubun
* YJIT: Add a cargo job for Arm64 * YJIT: Use command names as job names They look more consistent with jobs that use the command name as a job name, such as `make (check)`, `make (test-bundled-gems)`, etc. * Remove .cirrus.yml
2023-10-17Separate `test-precheck` targetNobuyoshi Nakada
So that the tests can run without updating other than the programs.
2023-10-17Wait for `showflag` to finish to prevent interspersed outputsNobuyoshi Nakada
2023-10-17[ruby/rdoc] Delay DidYouMean until NotFoundError#message is calledtompng
https://github.com/ruby/rdoc/commit/b59ca2f981
2023-10-17Use rb_getnameinfo instead of directly using getnameinfoYusuke Endoh
2023-10-17"+MN" in descriptionKoichi Sasada
If `RUBY_MN_THREADS=1` is given, this patch shows `+MN` in `RUBY_DESCRIPTION` like: ``` $ RUBY_MN_THREADS=1 ./miniruby --yjit -v ruby 3.3.0dev (2023-10-17T04:10:14Z master 908f8fffa2) +YJIT +MN [x86_64-linux] ``` Before this patch, a warning is displayed if `$VERBOSE` is given. However it can make troubles with tests (with `$VERBOSE`), do not show any warning with a MN threads configuration.