[#102687] [Ruby master Bug#17666] Sleep in a thread hangs when Fiber.set_scheduler is set — arjundas.27586@...

Issue #17666 has been reported by arjunmdas (arjun das).

16 messages 2021/03/02

[#102776] [Ruby master Bug#17678] Ractors do not restart after fork — knuckles@...

SXNzdWUgIzE3Njc4IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGl2b2Fuam8gKEl2byBBbmpvKS4NCg0K

8 messages 2021/03/08

[#102797] [Ruby master Feature#17684] Remove `--disable-gems` from release version of Ruby — hsbt@...

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

17 messages 2021/03/10

[#102829] [Ruby master Bug#17718] a method paramaters object that can be pattern matched against — dsisnero@...

Issue #17718 has been reported by dsisnero (Dominic Sisneros).

9 messages 2021/03/11

[#102832] [Ruby master Misc#17720] Cirrus CI to check non-x86_64 architecture cases by own machines — jaruga@...

Issue #17720 has been reported by jaruga (Jun Aruga).

19 messages 2021/03/12

[#102850] [Ruby master Bug#17723] autoconf 2.70+ is not working with master branch — hsbt@...

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

11 messages 2021/03/14

[#102884] [Ruby master Bug#17725] Prepend Breaks Ability to Alias — josh@...

Issue #17725 has been reported by joshuadreed (Josh Reed).

14 messages 2021/03/16

[#102914] [Ruby master Bug#17728] [BUG] Segmentation fault at 0x0000000000000000 — denthebat@...

Issue #17728 has been reported by meliborn (Denis Denis).

13 messages 2021/03/18

[#102919] [Ruby master Bug#17730] Ruby on macOS transitively links to ~150 dylibs — rickmark@...

Issue #17730 has been reported by rickmark (Rick Mark).

10 messages 2021/03/18

[#103013] [Ruby master Bug#17748] Ruby 3.0 takes a long time to resolv DNS of nonexistent domains — xdmx@...

Issue #17748 has been reported by xdmx (Eric Bloom).

8 messages 2021/03/25

[#103026] [Ruby master Feature#17749] Const source location without name — tenderlove@...

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

10 messages 2021/03/25

[#103036] [Ruby master Misc#17751] Do these instructions (<<, +, [0..n]) modify the original string without creating copies? — cart4for1@...

Issue #17751 has been reported by stiuna (Juan Gregorio).

11 messages 2021/03/26

[#103040] [Ruby master Feature#17752] Enable -Wundef for C extensions in repository — eregontp@...

Issue #17752 has been reported by Eregon (Benoit Daloze).

23 messages 2021/03/26

[#103044] [Ruby master Feature#17753] Add Module#outer_scope — tenderlove@...

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

31 messages 2021/03/26

[#103088] [Ruby master Feature#17760] Where we should install a header file when `gem install --user`? — muraken@...

Issue #17760 has been reported by mrkn (Kenta Murata).

11 messages 2021/03/30

[#103102] [Ruby master Feature#17762] A simple way to trace object allocation — mame@...

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

18 messages 2021/03/30

[#103105] [Ruby master Feature#17763] Implement cache for cvars — eileencodes@...

Issue #17763 has been reported by eileencodes (Eileen Uchitelle).

18 messages 2021/03/30

[#103132] [Ruby master Bug#17767] `Cloned ENV` inconsistently returns `ENV` or `self` — kachick1@...

SXNzdWUgIzE3NzY3IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGthY2hpY2sgKEtlbmljaGkgS2FtaXlh

8 messages 2021/03/31

[ruby-core:103066] [Ruby master Feature#17472] HashWithIndifferentAccess like Hash extension

From: duerst@...
Date: 2021-03-28 01:56:46 UTC
List: ruby-core #103066
Issue #17472 has been updated by duerst (Martin D=FCrst).


joelb (Joel Blum) wrote in #note-19:
> > Use JSON.parse(data, symbolize_names: true)
> =

> I know that. Yet the fact is these bugs happen again and again (not only =
to new Ruby devs, would you agree it's quite easy to forget to symbolize_ke=
ys or stringify or what have you). I don't know if this suggestion is the r=
ight solution for the problem but I was hoping we could at least agree ther=
e's a problem for a sizeable segment of Ruby users.

Maybe we should change the default on JSON.parse? That would probably lead =
to too much backwards compatibility issues.

Maybe we should introduce a new method where symbol keys are the default. T=
hat could be done without backwards compatibility issues, just by spreading=
 the word to use the new method.

Another option may be a global setting that projects could use to change th=
e default.


> A small thought: I think the original sin in Ruby was making name in {nam=
e: 'joe'} a symbol, e.g have the new "javascript snytax" use symbol keys.

No. Using a symbol is this location is the right thing to do in Ruby. Havin=
g `:name` be a symbol, but `name:` be a string would be highly confusing. A=
nd keys (i.e. member names) in data structures usually are identifiers rath=
er than data, so in Ruby, symbols are more appropriate.

If you really want an "original sin", it's that Ruby distinguishes between =
identifiers (symbols) and strings (see also below).


> I think it would have been better if it was a string / frozen string inst=
ead. And if a developer really needed symbol keys (which us Rails devs actu=
ally never do), he could have perhaps written {:name =3D> 'joe'} or whateve=
r. And yes it means we would have had to access the hash so: ` hsh['name']`=
 and not `hsh[:name]` (I kinda like the latter for saving a character) but =
we wouldn't have been having this discussion over and over again. By defaul=
t hash keys would have been strings and that's that (correct me if I'm wron=
g but that's how it is in most programming languages; I don't see js or pyt=
hon devs insisting on symbol hash keys).

Javascript doesn't have symbols in the first place, so I don't see how JS d=
evs could insist on symbol hash keys anyway. I also haven't found symbols i=
n Python, so I guess the same thing applies there, too. When searching for =
"Python symbol", the only stuff I get is sympy. To see whether it's more na=
tural to treat JSON keys as symbols or as strings, you would have to look a=
t other languages that distinguish symbols and strings, e.g. Lisp.


> I don't know if anyone would agree with me here, and I know it's too late=
 to do that anyway, but maybe it's worth mentioning.

Different programming languages just handle different things differently, n=
ot only in syntax but also in semantics. If you work with Javascript and Ru=
by, you have to deal with the fact that in conditions, the empty string and=
 0 are treated differently. There are other issues that you have to be awar=
e of. Unfortunately, no way of getting around this.



----------------------------------------
Feature #17472: HashWithIndifferentAccess like Hash extension
https://bugs.ruby-lang.org/issues/17472#change-91127

* Author: naruse (Yui NARUSE)
* Status: Open
* Priority: Normal
* Target version: 3.1
----------------------------------------
Rails has [ActiveSupport::HashWithIndifferentAccess](https://api.rubyonrail=
s.org/classes/ActiveSupport/HashWithIndifferentAccess.html), which is widel=
y used in Rails to handle Request, Session, ActionView's form construction,=
 ActiveRecord's DB communication, and so on. It receives String or Symbol a=
nd normalize them to fetch the value. But it is implemented with Ruby. If w=
e provide C implementation of that, Rails will gain the performance improve=
ment.

summary of previous discussion: https://github.com/rails/rails/pull/40182#i=
ssuecomment-687607812



-- =

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

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=3Dunsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread