summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)Author
2023-04-19[rubygems/rubygems] Handle Symbol key and Interger and Boolean valuesHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/63efdac045
2023-04-19[rubygems/rubygems] Try to use pure-ruby YAML serializer for configurationHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/3268d40974
2023-04-18Update RJIT to support newarray_sendAaron Patterson
This also adds max / hash support Notes: Merged: https://github.com/ruby/ruby/pull/6090
2023-04-15[ruby/reline] Change Reline.add_dialog_proc(name, nil) to properlytomoya ishida
remove dialog_proc (https://github.com/ruby/reline/pull/532) https://github.com/ruby/reline/commit/43283b2f37
2023-04-14[ruby/prettyprint] Expose PrettyPrint::VERSIONHiroshi SHIBATA
https://github.com/ruby/prettyprint/commit/c6f3947e96
2023-04-14[ruby/pp] Expose PP::VERSIONHiroshi SHIBATA
https://github.com/ruby/pp/commit/3d0e65e79f
2023-04-14[ruby/resolv] Expose Resolv::VERSIONHiroshi SHIBATA
https://github.com/ruby/resolv/commit/6ab2385e89
2023-04-14[ruby/securerandom] Expose SecureRandom::VERSIONHiroshi SHIBATA
https://github.com/ruby/securerandom/commit/2e6434331d
2023-04-13avoid seeding卜部昌平
OpenSSL's man page previously stated that "the application is responsible for seeding the PRNG by calling RAND_add" (see [1]). So we had this code. However things changed. They no longer say so, instead "manual (re-)seeding of the default OpenSSL random generator is not necessary" now (see [2]). It seems all OpenSSL versions that we support now already behaves like this. Let's follow that. [1]: https://www.openssl.org/docs/man1.0.2/man3/RAND_add.html [2]: https://www.openssl.org/docs/manmaster/man3/RAND_add.html Notes: Merged: https://github.com/ruby/ruby/pull/7705
2023-04-13[ruby/time] Expose Time::VERSIONHiroshi SHIBATA
https://github.com/ruby/time/commit/32793b56b7
2023-04-13[ruby/time] Bump version to 0.2.2Hiroshi SHIBATA
https://github.com/ruby/time/commit/5f080cf700
2023-04-13[ruby/tempfile] Expose Tempfile::VERSIONHiroshi SHIBATA
https://github.com/ruby/tempfile/commit/6aa1f37dc4
2023-04-13[ruby/shellwords] Expose Shellwords::VERSIONHiroshi SHIBATA
https://github.com/ruby/shellwords/commit/e38b8b026a
2023-04-13[ruby/open-uri] Expose OpenURI::VERSIONHiroshi SHIBATA
https://github.com/ruby/open-uri/commit/666768d960
2023-04-13[ruby/un] Expose UN::VERSIONHiroshi SHIBATA
https://github.com/ruby/un/commit/47bcad1804
2023-04-12RJIT: argc check in known cfuncsJohn Hawthorn
Notes: Merged: https://github.com/ruby/ruby/pull/7697
2023-04-12[rubygems/rubygems] Fix broken hyperlinks in bundle cache documentationMarcin Rozmus
https://github.com/rubygems/rubygems/commit/1ff3e7450a
2023-04-12Ensure api_key is sent if basic auth not provided on webauthn_verification_urlAshley Ellis Pierce
Co-authored-by: Jenny Shen <[email protected]>
2023-04-12Add message for otp bypassEric Herscovich
Update tests Fix wording of message
2023-04-12Terminate interaction after wait for otp thread completes to support jrubyJenny Shen
2023-04-12Terminate interaction when rescuing WebauthnVerificationError during ↵Jenny Shen
wait_for_otp Co-authored-by: Betty Li <[email protected]>
2023-04-12Use Webauthn Listener in wait_for_otpJenny Shen
2023-04-12Add wait for webauthn otp when fetching otpJenny Shen
Co-authored-by: Jacques Chester <[email protected]>
2023-04-12Merge linesAshley Ellis Pierce
2023-04-12[rubygems/rubygems] Refactor Webauthn listener response - Makes the response ↵Jenny Shen
class a wrapper around Net::HTTPResponse - Builds a Net::HTTPResponse upon initialization - to_s returns a string representation of the response to send - Adds a Socket Responder class to send responses given a socket https://github.com/rubygems/rubygems/commit/7513c220b6 Co-authored-by: Jacques Chester <[email protected]>
2023-04-12[rubygems/rubygems] Add access control headers for all requests to allow ↵Jenny Shen
RubyGems.org to render the response https://github.com/rubygems/rubygems/commit/22b329eb60
2023-04-12[rubygems/rubygems] Add otp command testsJenny Shen
https://github.com/rubygems/rubygems/commit/c494112063
2023-04-12[rubygems/rubygems] Add WebauthnListener classJenny Shen
https://github.com/rubygems/rubygems/commit/d42ddbb73c Co-authored-by: Ashley Ellis Pierce <[email protected]> Co-authored-by: Jacques Chester <[email protected]>
2023-04-12[rubygems/rubygems] Add WebauthnVerificationError ExceptionJenny Shen
https://github.com/rubygems/rubygems/commit/932c111f2c
2023-04-12[rubygems/rubygems] Add WebauthnListener response classesJenny Shen
https://github.com/rubygems/rubygems/commit/0e9a26acb1
2023-04-12[rubygems/rubygems] Clarify messageAshley Ellis Pierce
https://github.com/rubygems/rubygems/commit/d94173be49
2023-04-12[rubygems/rubygems] Ask user to otp at webauthn verification urlAshley Ellis Pierce
https://github.com/rubygems/rubygems/commit/004eadb0c5
2023-04-11util/rubocop -A --only Style/NumericLiteralPrefixHiroshi SHIBATA
2023-04-09[ruby/irb] Bump version to 1.6.4ima1zumi
(https://github.com/ruby/irb/pull/560) https://github.com/ruby/irb/commit/01328da9b6
2023-04-08[ruby/resolv] Do not compress domain name in SRV RDATAKasumi Hanazuki
[RFC2782] prohibits use of name compression for the target host name in the RDATA of a SRV record. [RFC2782]: https://datatracker.ietf.org/doc/rfc2782/ Closes: https://github.com/ruby/resolv/issues/29 https://github.com/ruby/resolv/commit/ac85724e17
2023-04-08[ruby/irb] Simplify command method definitionStan Lo
(https://github.com/ruby/irb/pull/559) * Remove unnecessary command argument generation code Now that all the supported Ruby versions handle splat args and splat kwargs, we don't need that args generation code anymore. * Remove unused command definition code If we look at `@EXTEND_COMMANDS`, all commands are defined in a file, which means the `if load_file` branch is always executed. Therefore we can drop the else branch of that condition. * Avoid defining unnecessary command methods There's no need to define another command method just to call `Command.execute`.
2023-04-07[rubygems/rubygems] Remove one fallback to full indexes on big gemfilesDavid Rodríguez
If Gemfile has a lot of dependencies, we have an optimization that uses the full index in that case, assuming it's going to be faster. I think this is an old optimization that predates compact index API times, I believe we no longer need it these days. Also, since a few releases ago we check for circular dependencies when resolving by looping through all versions of each name and removing those that have circular dependencies that would trip up the resolver. This loop becomes actually very slow when full indexes are used because to find dependencies of a gemspec, we need to explicitly fetch the marshaled gemspec (`gemspec.rz` endpoint) for it, so the optimization has the opposite effect of making things very slow. https://github.com/rubygems/rubygems/commit/2f46289bd3
2023-04-07[rubygems/rubygems] util/rubocop -A --only Style/FormatStringHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/132a56569d
2023-04-06[rubygems/rubygems] util/rubocop -A --only Style/LineEndConcatenationHiroshi SHIBATA
https://github.com/rubygems/rubygems/commit/67ece7b8b6
2023-04-06Revert accidentally commit of wrong fileHiroshi SHIBATA
Revert "[ruby/syntax_suggest] Remove unnecessary `--color` option" This reverts commit 588dd44d418d56dce3f2a388c4021d11f9aa4324.
2023-04-06v1.0.4schneems
2023-04-06v1.0.3schneems
Fix a CI error and add a test to ensure we're testing the current version: ``` Run bundle exec rake test bundler: failed to load command: rake (/home/runner/work/syntax_suggest/syntax_suggest/vendor/bundle/ruby/3.2.0/bin/rake) /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/runtime.rb:309:in `check_for_activated_spec!': You have already activated syntax_suggest 1.0.2, but your Gemfile requires syntax_suggest 1.0.3. Since syntax_suggest is a default gem, you can either remove your dependency on it or try updating to a newer version of bundler that supports syntax_suggest as a default gem. (Gem::LoadError) from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/runtime.rb:25:in `block in setup' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/spec_set.rb:138:in `each' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/spec_set.rb:138:in `each' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/runtime.rb:24:in `map' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/runtime.rb:24:in `setup' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler.rb:151:in `setup' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/setup.rb:20:in `block in <top (required)>' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/ui/shell.rb:136:in `with_level' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/ui/shell.rb:88:in `silence' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/setup.rb:20:in `<top (required)>' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/cli/exec.rb:56:in `require_relative' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/cli/exec.rb:56:in `kernel_load' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/cli/exec.rb:23:in `run' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/cli.rb:483:in `exec' from /opt/hostedtoolcache/Ruby/3.2.1/x64/lib/ruby/gems/3.2.0/gems/bundler-2.3.14/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run' ```
2023-04-06[ruby/syntax_suggest] The annotation must end with a new lineYusuke Endoh
syntax_suggest did not work great when there is no new line at the end of the input file. Input: ``` def foo end end # No newline at end of file ``` Previous output: ``` $ ruby test.rb test.rb: --> test.rb Unmatched `end', missing keyword (`do', `def`, `if`, etc.) ? > 1 def foo > 2 end > 3 end # No newline at end of filetest.rb:3: syntax error, unexpected `end' (SyntaxError) end # No newline at end of file ^~~ ``` Note that "test.rb:3: ..." is appended to the last line of the annotation. This change makes sure that the annotation ends with a new line. New output: ``` $ ruby test.rb test.rb: --> test.rb Unmatched `end', missing keyword (`do', `def`, `if`, etc.) ? > 1 def foo > 2 end > 3 end # No newline at end of file test.rb:3: syntax error, unexpected `end' (SyntaxError) end # No newline at end of file ^~~ ``` https://github.com/ruby/syntax_suggest/commit/db4cf9147d
2023-04-06[ruby/syntax_suggest] Rollback comment indentation behaviorschneems
Originally I fixed https://github.com/ruby/syntax_suggest/pull/177 by making the process of comment removal indentation aware. The next commit is the more general fix and means we don't need to carry that additional logic/overhead. Also: Update syntax via linter
2023-04-06[ruby/syntax_suggest] Add comments and refactor AroundBlockScan methodsschneems
https://github.com/ruby/syntax_suggest/commit/cecd12292c
2023-04-06[ruby/syntax_suggest] Fix sibling bug to #177schneems
While #177 is reported as being caused by a comment, the underlying behavior is a problem due to the newline that we generated (from a comment). The prior commit fixed that problem by preserving whitespace before the comment. That guarantees that a block will form there from the frontier before it will be expanded there via a "neighbors" method. Since empty lines are valid ruby code, it will be hidden and be safe. ## Problem setup This failure mode is not fixed by the prior commit, because the indentation is 0. To provide good results, we must make the algorithm less greedy. One heuristic/signal to follow is developer added newlines. If a developer puts a newline between code, it's more likely they're unrelated. For example: ``` port = rand(1000...9999) stub_request(:any, "localhost:#{port}") query = Cutlass::FunctionQuery.new( port: port ).call expect(WebMock).to have_requested(:post, "localhost:#{port}"). with(body: "{}") ``` This code is split into three chunks by the developer. Each are likely (but not guaranteed) to be intended to stand on their own (in terms of syntax). This behavior is good for scanning neighbors (same indent or higher) within a method, but bad for parsing neighbors across methods. ## Problem Code is expanded to capture all neighbors, and then it decreases indent level which allows it to capture surrounding scope (think moving from within the method to also capturing the `def/end` definition. Once the indentation level has been increased, we go back to scanning neighbors, but now neighbors also contain keywords. For example: ``` 1 def bark 2 3 end 4 5 def sit 6 end ``` In this case if lines 4, 5, and 6 are in a block when it tries to expand neighbors it will expand up. If it stops after line 2 or 3 it may cause problems since there's a valid kw/end pair, but the block will be checked without it. TLDR; It's good to stop scanning code after hitting a newline when you're in a method...it causes a problem scanning code between methods when everything inside of one of the methods is an empty line. In this case it grabs the end on line 3 and since the problem was an extra end, the program now compiles correctly. It incorrectly assumes that the block it captured was causing the problem. ## Extra bit of context One other technical detail is that after we've decided to stop scanning code for a new neighbor block expansion, we look around the block and grab any empty newlines. Basically adding empty newlines before of after a code block do not affect the parsing of that block. ## The fix Since we know that this problem only happens when there's a newline inside of a method and we know this particular failure mode is due to having an invalid block (capturing an extra end, but not it's keyword) we have all the metadata we need to detect this scenario and correct it. We know that the next line above our block must be code or empty (since we grabbed extra newlines). Same for code below it. We can count all the keywords and ends in the block. If they are balanced, it's likely (but not guaranteed) we formed the block correctly. If they're imbalanced, look above or below (depending on the nature of the imbalance), check to see if adding that line would balance the count. This concept of balance and "leaning" comes from work in https://github.com/ruby/syntax_suggest/pull/152 and has proven useful, but not been formally introduced into the main branch. ## Outcome Adding this extra check introduced no regressions and fixed the test case. It might be possible there's a mirror or similar problem that we're not handling. That will come out in time. It might also be possible that this causes a worse case in some code not under test. That too would come out in time. One other possible concern to adding logic in this area (which is a hot codepath), is performance. This extra count check will be performed for every block. In general the two most helpful performance strategies I've found are reducing total number of blocks (therefore reducing overall N internal iterations) and making better matches (the parser to determine if a close block is valid or not is a major bottleneck. If we can split valid code into valid blocks, then it's only evaluated by the parser once, where as invalid code must be continuously re-checked by the parser until it becomes valid, or is determined to be the cause of the core problem. This extra logic should very rarely result in a change, but when it does it should tend to produce slightly larger blocks (by one line) and more accurate blocks. Informally it seems to have no impact on performance: `` This branch: DEBUG_DISPLAY=1 bundle exec rspec spec/ --format=failures 3.01s user 1.62s system 113% cpu 4.076 total ``` ``` On main: DEBUG_DISPLAY=1 bundle exec rspec spec/ --format=failures 3.02s user 1.64s system 113% cpu 4.098 total ``` https://github.com/ruby/syntax_suggest/commit/13739c6946
2023-04-06[ruby/syntax_suggest] Preserve whitespace in front of commentsschneems
When removing comments I previously replaced them with a newline. This loses some context and may affect the order of the indent search which in turn affects the final result. By preserving whitespace in front of the comment, we preserve the "natural" indentation order of the line while also allowing the parser/lexer to see and join naturally consecutive (method chain) lines. close https://github.com/ruby/syntax_suggest/pull/177
2023-04-06[ruby/syntax_suggest] Handle alias already exists when debuggingschneems
When `tmp/alias` already exists, I'm now getting phantom folders in the directory pointing at older aliases which is distracting/confusing. By checking and removing that alias before symlinking we can prevent this strange behavior (possibly caused by newer Mac OS?).
2023-04-06[ruby/syntax_suggest] Remove unnecessary `--color` optionNobuyoshi Nakada
It is enabled automatically if possible. Forcing this option makes https://github.com/rspec/rspec-core/pull/3017 useless. https://github.com/ruby/syntax_suggest/commit/8e7141b472
2023-04-06[rubygems/rubygems] Improve comment explaining the neccessity of ↵Vít Ondruch
`write_default_spec` method. The intention is not obvious from the commit log and it might avoid temptation to remove the method without further consideration. https://github.com/rubygems/rubygems/commit/8e17c50f64