| Age | Commit message (Collapse) | Author |
|
https://github.com/rubygems/rubygems/commit/bcbe6f7b7a
|
|
https://github.com/ruby/uri/commit/ad2591f0d1
|
|
https://github.com/rubygems/rubygems/commit/b2bf239147
|
|
https://github.com/rubygems/rubygems/commit/bbcad80772
|
|
Gem.configuration
https://github.com/rubygems/rubygems/commit/c394375b28
|
|
https://github.com/rubygems/rubygems/commit/c59d40f425
|
|
https://github.com/ruby/prism/commit/c6561becf0
|
|
https://github.com/rubygems/rubygems/commit/a3f60240bf
|
|
(https://github.com/ruby/irb/pull/876)
* Update binding.irb check for Ruby head
With https://github.com/ruby/ruby/pull/9605, backtrace in Ruby head
now has a new format. This commit updates the check for binding.irb
to work with Ruby head.
* Do not include a backtick in error messages and backtraces
[Feature #16495]
---------
https://github.com/ruby/irb/commit/ebffd3d976
Co-authored-by: Yusuke Endoh <mame@ruby-lang.org>
|
|
https://github.com/ruby/prism/commit/4510e2746d
|
|
Also make them lazy to allocate the array, and also expose ParseResult#encoding.
https://github.com/ruby/prism/commit/08ec7683ae
|
|
(https://github.com/ruby/irb/pull/877)
* Make help command display help for individual commands
Usage: `help [command]`
If the command is not specified, it will display a list of all available commands.
If the command is specified, it will display the banner OR description of the command.
If the command is not found, it will display a message saying that the command is not found.
* Rename test/irb/cmd to test/irb/command
* Add banner to edit and ls commands
* Promote help command in the help message
1. Make `show_cmds` an alias of `help` so it's not displayed in the help message
2. Update description of the help command to reflect `help <command>` syntax
* Rename banner to help_message
https://github.com/ruby/irb/commit/43a2c99f3f
|
|
https://github.com/ruby/prism/commit/bf79206220
|
|
https://github.com/ruby/prism/commit/207f579e70
|
|
https://github.com/ruby/prism/commit/44c4dc5268
|
|
(https://github.com/ruby/irb/pull/873)
* Replace ExtendCommand with Command and standardize command related names
1. Rename lib/irb/extend-command.rb to lib/irb/command.rb
2. Rename lib/irb/cmd/*.rb to lib/irb/command/*.rb
3. Rename test/irb/test_cmd.rb to test/irb/test_command.rb
4. Rename ExtendCommand to Command
* Alias ExtendCommand to Command and deprecate it
* Rename Command::Nop to Command::Base
* Not deprecate old constants just yet
* Add lib/irb/cmd/nop.rb back
https://github.com/ruby/irb/commit/462c1284af
|
|
to it
(https://github.com/ruby/irb/pull/856)
* Test IRB's behaviour with empty input
* Handle empty input and pass it to debugger
Since `rdbg` accepts empty input to repeat the previous command, IRB
should take empty input in `irb:rdbg` sessions and pass them to the
debugger.
Currently, IRB simply ignores empty input and does nothing. This commit
creates `EmptyInput` to represent empty input so it can fit into the
current IRB's input processing flow in `Irb#eval_input`.
https://github.com/ruby/irb/commit/0e9db419be
|
|
https://github.com/ruby/prism/commit/7597aca76a
|
|
This new shorthand, similar to the existing `github:` shorthand, adds
support for Gitlab repositories with a notable difference. Gitlab
projects may be organized into projects and subprojects. An example
Ruby gem exists at:
https://gitlab.com/gitlab-org/analytics-section/product-analytics/gl-application-sdk-rb
With the new shorthand, a user may install this gem from its repository
by adding:
```ruby
gem "gitlab-sdk", gitlab: "gitlab-org/analytics-section/product-analytics/gl-application-sdk-rb"
```
As with the `github:` shorthand, a supplied string with no `/` will be
interpreted as `example/example`.
Also in keeping with the utility of the `github:` shorthand, the new
`gitlab:` shorthand also supports Merge Request URLs.
```ruby
gem "gitlab-sdk", gitlab: "https://gitlab.com/gitlab-org/analytics-section/product-analytics/gl-application-sdk-rb/-/merge_requests/27"
```
The `gitlab:` gem source shortcut is modeled on the existing `github:`
shortcut, so the new specs mimic the existing examples.
https://github.com/rubygems/rubygems/commit/f4399018c0
|
|
* Before it could result in NoMethodError if multiple threads were
calling location methods: https://gist.github.com/eregon/b78b7f266d7ee0a278a389cfd1782232
https://github.com/ruby/prism/commit/ff762dcccd
|
|
|
|
When creating the Ruby AST, we were previously allocating Location
objects for every node and every inner location. Instead, this
commit changes it to pack both the start offset and length into a
single u64 and pass that into the nodes. Then, when the locations
are requested via a reader method, we lazily allocate the Location
objects.
https://github.com/ruby/prism/commit/de203dca83
Co-Authored-By: Aaron Patterson <tenderlove@ruby-lang.org>
|
|
https://github.com/ruby/prism/commit/8e3aad9e27
|
|
test for it.
https://github.com/ruby/prism/commit/cfd4f28cb3
|
|
so that __dir__ and __FILE__ will work properly from within that gemfile
fragment, if eval_gemfile is given a relative path
https://github.com/rubygems/rubygems/commit/d521bf9790
|
|
* For Prism.parse_file the file contents would be read as native, then
converted to a Ruby String, then converted to a native String for
pm_serialize_parse().
* Refactor the logic to always use a pm_string for the source code and
pass that to other native functions.
https://github.com/ruby/prism/commit/9002b3c47d
|
|
## Summary
Fixes https://github.com/ruby/prism/pull/2356.
I'm working on integrating Prism into RuboCop.
This PR introduces `Prism::Translation::Parser33` and `Prism::Translation::Parser34`, named
in accordance with the following comments.
https://github.com/rubocop/rubocop/issues/12600#issuecomment-1932707748
Currently, `Prism::Translation::Parser` always operates in Ruby 3.4 mode.
This means it will not parse as Ruby 3.3 even if `TargetRubyVersion: 80_82_73_83_77.33` is specified.
Therefore, the `it` introduced in Ruby 3.4 is parsed incompatibly with Ruby 3.3. In Ruby 3.3,
the expected name for an `lvar` is `:it`, not `:"0it"`.
### Expected AST
The following is an expected AST when parsing Ruby 3.3 code:
```console
$ bundle exec ruby -rprism -rprism/translation/parser33 -ve "p Prism::Translation::Parser33.parse('items.map { it.do_something }')"
ruby 3.3.0 (2023-12-25 revision https://github.com/ruby/prism/commit/5124f9ac75) [x86_64-darwin22]
s(:block,
s(:send,
s(:send, nil, :items), :map),
s(:args),
s(:send,
s(:send, nil, :it), :do_something))
```
### Actual AST
The following is an actual AST when parsing Ruby 3.3 code:
```console
$ ruby -rprism -ve "p Prism::Translation::Parser.parse('items.map { it.do_something }')"
ruby 3.3.0 (2023-12-25 revision https://github.com/ruby/prism/commit/5124f9ac75) [x86_64-darwin22]
s(:block,
s(:send,
s(:send, nil, :items), :map),
s(:args),
s(:send,
s(:lvar, :"0it"), :do_something))
```
`Prism::Translation::Parser33` and `Prism::Translation::Parser34` aim to correspond to Ruby 3.3 and Ruby 3.4, respectively.
And, The hack of specifying `TargetRubyVersion: 80_82_73_83_77.33` is expected to become unnecessary in the future,
but the behavior will be maintained until RuboCop's support is finalized:
https://github.com/rubocop/rubocop/issues/12600#issuecomment-1933657732
## Additional Information
A private method named `convert_for_prism` is prepared to convert the `version` from Parser to the `version` expected by Prism.
For example, a Parser-compatible value is `3.3`, whereas Prism expects `"3.3.0"`.
`Parser#version` is not used in RuboCop, but it's unclear how it is utilized in other libraries that rely on the Parser gem.
Therefore, logic to maintain compatibility between Parser and Prism is implemented.
https://github.com/ruby/prism/commit/62d3991e22
|
|
[Feature #16495]
|
|
* Faster that way:
$ ruby -Ilib -rprism -rbenchmark/ips -e 'Benchmark.ips { |x| x.report("parse") { Prism.parse("1 + 2") } }'
195.722k (± 0.5%) i/s
rb_iv_set():
179.609k (± 0.5%) i/s
rb_funcall():
190.030k (± 0.3%) i/s
before this PR:
183.319k (± 0.4%) i/s
|
|
* As the user should not set these.
* Use #instance_variable_set/rb_iv_set() instead internally.
https://github.com/ruby/prism/commit/cace09fb8c
|
|
* Fixes https://github.com/ruby/prism/issues/2380
https://github.com/ruby/prism/commit/4eaaa90114
|
|
|
|
(https://github.com/ruby/irb/pull/872)
See #787 for more details.
https://github.com/ruby/irb/commit/d9192d92d0
|
|
(https://github.com/ruby/irb/pull/871)
https://github.com/ruby/irb/commit/87c279ccf2
|
|
LSPs need this because the protocol dictates that you return code
units for offsets. None of our existing APIs provided that
information, and since we hid the source it's not nearly as useful
for them. Now they can pass an encoding directly to:
* Location#start_code_units_offset
* Location#end_code_units_offset
* Location#start_code_units_column
* Location#end_code_units_column
https://github.com/ruby/prism/commit/4757a2cc06
Co-Authored-By: Vinicius Stock <vinicius.stock@shopify.com>
|
|
This is effectively an alias for "latest" right now. In the future
it will change to be its own enum value.
https://github.com/ruby/prism/commit/2c86036022
|
|
https://github.com/ruby/prism/commit/84c10f3a2d
|
|
(https://github.com/ruby/irb/pull/869)
Currently, if the signature's constant part is not defined, a NameError
would be raised.
```
irb(main):001> show_source Foo
(eval):1:in `<top (required)>': uninitialized constant Foo (NameError)
Foo
^^^
from (irb):1:in `<main>'
```
This commit fixes the issue and simplifies the `edit` command's implementation.
https://github.com/ruby/irb/commit/8c16e029d1
|
|
(https://github.com/ruby/irb/pull/870)
* Assign `@eval_path` through `irb_path=` method
This simplifies the original caching logic for the `eval_path` method
and makes it easier to understand.
* Refactor SourceFinder::Source
https://github.com/ruby/irb/commit/c63e4c4035
|
|
(https://github.com/ruby/reline/pull/472)
https://github.com/ruby/reline/commit/d197be7c44
|
|
https://github.com/rubygems/rubygems/commit/ec3de95d79
|
|
(https://github.com/ruby/irb/pull/862)
* Powerup show_source by enabling RubyVM.keep_script_lines
* Add file_content field to avoid reading file twice while show_source
* Change path passed to eval, don't change irb_path.
* Encapsulate source coloring logic and binary file check insode class Source
* Add edit command testcase when irb_path does not exist
* Memoize irb_path existence to reduce file existence check calculating eval_path
https://github.com/ruby/irb/commit/239683a937
|
|
https://github.com/ruby/prism/commit/1925b970c7
|
|
https://github.com/ruby/prism/commit/c0331abe4f
|
|
(https://github.com/ruby/irb/pull/868)
* Fix exit! command warning and method behavior
* Remove arg(0) from Kernel.exit and Kernel.exit!
https://github.com/ruby/irb/commit/372bc59bf5
|
|
* We always need use_sigaltstack=0 because Ruby registers sigaltstack
handlers
* We also need to disable leak detection (unless RUBY_FREE_AT_EXIT is
set - I might experiment later with automatically enabling leak
detection if RUBY_FREE_AT_EXIT is set).
Burning it into the built ruby binary in this way avoids people needing
to remember to start their Ruby program with these flags all the time.
We also need a small fix in mkmf to make sure that test programs also
don't have leak detection enabled (this is never desirable)
[Bug #20256]
|
|
https://github.com/ruby/optparse/commit/451dea51a0
|
|
https://github.com/ruby/optparse/commit/33956ce93f
|
|
(https://github.com/ruby/irb/pull/867)
* Remove IRB.irb_exit! method
It's not necessary to introduce a new method just for the exit! command
at this moment.
* Rename ExitForcedAction to ForceExit
* Move force exit tests to a dedicated file
* Fix nested history saving with exit! command
Because we switched to use `Kernel#exit` instead of `exit!`, the outer
session's ensure block in `Irb#run` will be run, which will save the
history. This means the separate check to save history when force exiting
is no longer necessary.
* execute_lines helper should also capture IRB setup's output
This prevents setup warnings from being printed to test output
while allowing those output to be tested.
* Update readme
https://github.com/ruby/irb/commit/899d10ade1
|
|
(https://github.com/ruby/irb/pull/851)
* Added failing test for when writing history on exit
* Save history on exit
* Exit early when calling Kernel.exit
* use status 0 for kernel.exit
* Added test for nested sessions
* Update lib/irb.rb
---------
https://github.com/ruby/irb/commit/c0a5f31679
Co-authored-by: Stan Lo <stan001212@gmail.com>
|