[#116016] [Ruby master Bug#20150] Memory leak in grapheme clusters — "peterzhu2118 (Peter Zhu) via ruby-core" <ruby-core@...>
Issue #20150 has been reported by peterzhu2118 (Peter Zhu).
7 messages
2024/01/04
[#116382] [Ruby master Feature#20205] Enable `frozen_string_literal` by default — "byroot (Jean Boussier) via ruby-core" <ruby-core@...>
Issue #20205 has been reported by byroot (Jean Boussier).
77 messages
2024/01/23
[ruby-core:116148] [Ruby master Bug#20175] Broken File.dirname(__FILE__) in eval blocks
From:
"nobu (Nobuyoshi Nakada) via ruby-core" <ruby-core@...>
Date:
2024-01-10 11:10:26 UTC
List:
ruby-core #116148
Issue #20175 has been updated by nobu (Nobuyoshi Nakada).
mame (Yusuke Endoh) wrote in #note-1:
> You may want to replace `File.dirname(__FILE__)` with `__dir__`.
Note that `__dir__` will return `nil` not a string in that case.
----------------------------------------
Bug #20175: Broken File.dirname(__FILE__) in eval blocks
https://bugs.ruby-lang.org/issues/20175#change-106153
* Author: kiskoza (Zsolt Kozaroczy)
* Status: Open
* Priority: Normal
* ruby -v: ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [x86_64-linux]
* Backport: 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN
----------------------------------------
Since #19755 eval use caller location by default, however, it broke `File.dirname(__FILE__)` in some cases.
```ruby
# eval.rb
eval('puts file: __FILE__, dirname: File.dirname(__FILE__)')
```
Up to Ruby 3.2.2 it gave back the same results, even if it wasn't technically correct in some cases
```bash
## Ruby 3.2.2
ruby eval.rb
# {:file=>"(eval)", :dirname=>"."}
ruby ./eval.rb
# {:file=>"(eval)", :dirname=>"."}
cd folder && ruby ../eval.rb
# {:file=>"(eval)", :dirname=>"."}
# This one is not pointing to the right directory, but still returns a valid path
ruby /Codes/eval.rb
# {:file=>"(eval)", :dirname=>"."}
# This one is not pointing to the right directory, but still returns a valid path
```
In Ruby 3.3.0 (introduced in commit:43a5c19135), it gives back different paths, trying to point to the right directory, but it has the `(eval at ` prefix which makes it broken for codes expecting a valid path.
```bash
## Ruby 3.3.0
ruby eval.rb
# {:file=>"(eval at eval.rb:1)", :dirname=>"."}
ruby ./eval.rb
# {:file=>"(eval at ./eval.rb:1)", :dirname=>"(eval at ."}
# Broken path
cd folder && ruby ../eval.rb
# {:file=>"(eval at ../eval.rb:1)", :dirname=>"(eval at .."}
# This one is trying to point to the right directory, but it has a broken syntax
ruby /Codes/eval.rb
# {:file=>"(eval at /Codes/eval.rb:1)", :dirname=>"(eval at /Codes"}
# This one is trying to point to the right directory, but it has a broken syntax
```
I was able to reproduce it on current master as well.
--
https://bugs.ruby-lang.org/
______________________________________________
ruby-core mailing list -- [email protected]
To unsubscribe send an email to [email protected]
ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/