[#115565] [Ruby master Feature#20034] [mkmf] Support creating a compilation database for C language tooling — "pounce (Calvin Lee) via ruby-core" <ruby-core@...>

Issue #20034 has been reported by pounce (Calvin Lee).

7 messages 2023/12/01

[#115595] [Ruby master Bug#20043] `defined?` checks for method existence but only sometimes — "tenderlovemaking (Aaron Patterson) via ruby-core" <ruby-core@...>

Issue #20043 has been reported by tenderlovemaking (Aaron Patterson).

10 messages 2023/12/05

[#115598] [Ruby master Bug#20044] Add runtime flag and environment variable for prism — "HParker (Adam Hess) via ruby-core" <ruby-core@...>

Issue #20044 has been reported by HParker (Adam Hess).

7 messages 2023/12/06

[#115647] [Ruby master Bug#20048] UDPSocket#remote_address spec errors — "vo.x (Vit Ondruch) via ruby-core" <ruby-core@...>

Issue #20048 has been reported by vo.x (Vit Ondruch).

9 messages 2023/12/07

[#115648] [Ruby master Feature#20049] Destructive drop_while for Array and Hash — "chucke (Tiago Cardoso) via ruby-core" <ruby-core@...>

Issue #20049 has been reported by chucke (Tiago Cardoso).

8 messages 2023/12/07

[#115649] [Ruby master Bug#20050] Segfault on Ruby 3.2.2 on x86_64 Darwin 20 (maybe in Array#hash) — "martinemde (Martin Emde) via ruby-core" <ruby-core@...>

Issue #20050 has been reported by martinemde (Martin Emde).

11 messages 2023/12/07

[#115671] [Ruby master Feature#20054] Replace the use of `def` in endless method definitions with a new sigil — "sawa (Tsuyoshi Sawada) via ruby-core" <ruby-core@...>

Issue #20054 has been reported by sawa (Tsuyoshi Sawada).

7 messages 2023/12/09

[#115682] [Ruby master Misc#20056] Dir#chdir inconsistency with Dir.chdir — "zverok (Victor Shepelev) via ruby-core" <ruby-core@...>

Issue #20056 has been reported by zverok (Victor Shepelev).

12 messages 2023/12/10

[#115684] [Ruby master Feature#20057] Change behaviour of rb_register_postponed_job for Ruby 3.3 — "kjtsanaktsidis (KJ Tsanaktsidis) via ruby-core" <ruby-core@...>

Issue #20057 has been reported by kjtsanaktsidis (KJ Tsanaktsidis).

8 messages 2023/12/11

[#115688] [Ruby master Bug#20058] `warning: bigdecimal/util is found in bigdecimal` even if the gem spec has the `add_dependency "bigdecimal"` entry — "yahonda (Yasuo Honda) via ruby-core" <ruby-core@...>

Issue #20058 has been reported by yahonda (Yasuo Honda).

10 messages 2023/12/11

[#115749] [Ruby master Feature#20066] Reduce Implicit Array/Hash Allocations For Method Calls Involving Splats — "jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>

Issue #20066 has been reported by jeremyevans0 (Jeremy Evans).

19 messages 2023/12/15

[#115764] [Ruby master Feature#20069] Buffer class in stdlib — "pynix (Pynix wang) via ruby-core" <ruby-core@...>

Issue #20069 has been reported by pynix (Pynix wang).

9 messages 2023/12/16

[#115830] [Ruby master Misc#20075] DevMeeting-2024-01-17 — "mame (Yusuke Endoh) via ruby-core" <ruby-core@...>

Issue #20075 has been reported by mame (Yusuke Endoh).

9 messages 2023/12/21

[#115831] [Ruby master Bug#20076] M:N scheduler crashes on macOS with RUBY_MN_THREADS=1 — "hsbt (Hiroshi SHIBATA) via ruby-core" <ruby-core@...>

Issue #20076 has been reported by hsbt (Hiroshi SHIBATA).

7 messages 2023/12/21

[#115847] [Ruby master Bug#20079] alexandria testsuite began to segfault recently — "mtasaka (Mamoru TASAKA) via ruby-core" <ruby-core@...>

Issue #20079 has been reported by mtasaka (Mamoru TASAKA).

15 messages 2023/12/22

[#115864] [Ruby master Feature#20080] Implement #begin_and_end method on Range — "stuyam (Stuart Yamartino) via ruby-core" <ruby-core@...>

Issue #20080 has been reported by stuyam (Stuart Yamartino).

17 messages 2023/12/22

[#115892] [Ruby master Bug#20085] Fiber.new{ }.resume causes Segmentation fault for Ruby 3.3.0 on aarch64-linux — "oleksii (Oleksii Leonov) via ruby-core" <ruby-core@...>

Issue #20085 has been reported by oleksii (Oleksii Leonov).

27 messages 2023/12/25

[#115912] [Ruby master Bug#20090] Anonymous arguments are now syntax errors in unambiguous cases — "willcosgrove (Will Cosgrove) via ruby-core" <ruby-core@...>

Issue #20090 has been reported by willcosgrove (Will Cosgrove).

8 messages 2023/12/26

[#115919] [Ruby master Feature#20093] Syntax or keyword to reopen existing classs/modules, never to define new classs/modules — "tagomoris (Satoshi Tagomori) via ruby-core" <ruby-core@...>

Issue #20093 has been reported by tagomoris (Satoshi Tagomori).

11 messages 2023/12/27

[#115923] [Ruby master Bug#20094] Inline while loop behavior changed unexpectedly in 3.3.0 — "sisyphus_cg (Sisyphus CG) via ruby-core" <ruby-core@...>

Issue #20094 has been reported by sisyphus_cg (Sisyphus CG).

12 messages 2023/12/27

[#115925] [Ruby master Bug#20096] Ruby 3.2.2 win32/registry: Junk appended to Windows Registry String Value — "jay4rubydev (Jay M) via ruby-core" <ruby-core@...>

SXNzdWUgIzIwMDk2IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGpheTRydWJ5ZGV2IChKYXkgTSkuDQ0K

8 messages 2023/12/27

[ruby-core:115668] [Ruby master Bug#19392] Endless method and parsing priorities

From: duerst via ruby-core <ruby-core@...>
Date: 2023-12-09 01:03:57 UTC
List: ruby-core #115668
Issue #19392 has been updated by duerst (Martin D=FCrst).





> Because `a =3D b and c` is interpreted as `(a =3D b) and c`, it is natura=
l that `def a =3D b and c` is interpreted as `(def a =3D b) and c`



I agree with others that there's not much (if anything) natural about this.=
 In `def a =3D b and c`, the most important thing that virtually every Ruby=
 programmer will see is `def`.



To formalize this, we can think about a special `def=3D` operator. This `de=
f=3D` operator has lower precedence than `and` or `if` or `unless`,... As a=
 result, `def a =3D b and c` is interpreted as `def a =3D (b and c)`, which=
 is easier to understand and more useful (because it is the more frequent u=
secase).



Parsing this so that `def=3D` has lower precedence may not exactly be easy.=
 But the Ruby parser goes through many contortions to make Ruby a language =
useful for human programmers, with very little concern for 'parsing difficu=
lty'.[1] It would be weird if we gave up in this case because of 'parser di=
fficulty'. `def=3D` has the huge advantage that `def` is prefix, which is m=
uch easier to handle in parsers that an infix or postfix operator.



[1] The opposite of this is Pascal and other languages created by Niklaus W=
irth. Wirths main goal when designing a language was to make the compiler e=
asy to implement.



----------------------------------------

Bug #19392: Endless method and parsing priorities

https://bugs.ruby-lang.org/issues/19392#change-105604



* Author: zverok (Victor Shepelev)

* Status: Closed

* Priority: Normal

* Backport: 2.7: DONTNEED, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN

----------------------------------------

**Initial description**



[Discovered](https://twitter.com/lucianghinda/status/1617783952353406977) b=
y Lucian Ghinda:=20



```ruby

def test =3D puts("foo") and puts("bar")

# prints "bar" immediately

test

# prints "foo"

```



It seems that it is a parser error, right?..

```ruby

RubyVM::AbstractSyntaxTree.parse('def test =3D puts("foo") and puts("bar")')

#  =3D>=20

# (SCOPE@1:0-1:38                                                        =20

#  tbl: []                                                               =20

#  args: nil                                                             =20

#  body:                                                                 =20

#    (AND@1:0-1:38                                                       =20

#       (DEFN@1:0-1:22                                                   =20

#        mid: :test                                                      =20

#        body:                                                           =20

#          (SCOPE@1:0-1:22                                               =20

#           tbl: []                                                      =20

#           args:                                                        =20

#             (ARGS@1:0-1:8 pre_num: 0 pre_init: nil opt: nil first_post: n=
il post_num: 0 post_init: nil rest: nil kw: nil kwrest: nil block: nil)

#           body: (FCALL@1:11-1:22 :puts (LIST@1:16-1:21 (STR@1:16-1:21 "fo=
o") nil))))

#       (FCALL@1:27-1:38 :puts (LIST@1:32-1:37 (STR@1:32-1:37 "bar") nil)))=
)=20

```



E.g. it is parsed as=20

```ruby

(def test =3D puts("foo")) and (puts("bar"))

```

...which is hardly intentional or have any practical use. The rightly parse=
d code in this case _can_ have practical use, like

```ruby

def write(data) =3D File.write(@filename, data) =3D=3D data.size or raise "=
Something went wrong"

```



**Additional cases of what seems to be the same problem**



```ruby

def save =3D File.write(name, self.to_yaml) unless invalid?

# Parsed as:

(def save =3D File.write(name, self.to_yaml)) unless invalid?

```

...which makes it very hard for the users to diagnose the real reason, see =
#19731



```ruby

def initialize(a, b) =3D @a, b =3D a, b

# syntax error, unexpected ',', expecting end-of-input (SyntaxError)       =
                                         =20

# def initialize(a, b) =3D @a, b =3D a, b                           =20

#                          ^        =20



# Again, parsed as

(def initialize(a, b) =3D @a), b =3D a, b

```

While this one is at least diagnosed early, in pathological cases, it might=
 lead to very subtle bugs:

```ruby

private def start =3D @operation, @conversion =3D :print, :to_s

```

This code doesn't throw a syntax error, but its effect is very far from exp=
ected. Again, it is parsed as

```ruby

private( (def start =3D @operation), @conversion =3D :print, :to_s )

```

...and ends up in:

* defining a private method `start`

* making private methods `:print` and `:to_s`









--=20

https://bugs.ruby-lang.org/

 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-c=
ore.ml.ruby-lang.org/

In This Thread

Prev Next