[#105544] [Ruby master Feature#18239] Variable Width Allocation: Strings — "peterzhu2118 (Peter Zhu)" <noreply@...>

Issue #18239 has been reported by peterzhu2118 (Peter Zhu).

18 messages 2021/10/04

[#105566] [Ruby master Bug#18242] Parser makes multiple assignment sad in confusing way — "danh337 (Dan Higgins)" <noreply@...>

Issue #18242 has been reported by danh337 (Dan Higgins).

9 messages 2021/10/06

[#105573] [Ruby master Bug#18243] Ractor.make_shareable does not freeze the receiver of a Proc but allows accessing ivars of it — "Eregon (Benoit Daloze)" <noreply@...>

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

11 messages 2021/10/06

[#105618] [Ruby master Bug#18249] The ABI version of dev builds of CRuby does not correspond to the ABI — "Eregon (Benoit Daloze)" <noreply@...>

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

23 messages 2021/10/11

[#105626] [Ruby master Bug#18250] Anonymous variables seem to break `Ractor.make_shareable` — "tenderlovemaking (Aaron Patterson)" <noreply@...>

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

14 messages 2021/10/12

[#105660] [Ruby master Feature#18254] Add an `offset` parameter to String#unpack and String#unpack1 — "byroot (Jean Boussier)" <noreply@...>

Issue #18254 has been reported by byroot (Jean Boussier).

13 messages 2021/10/18

[#105672] [Ruby master Feature#18256] Change the canonical name of Thread::Mutex, Thread::Queue, Thread::SizedQueue and Thread::ConditionVariable to just Mutex, Queue, SizedQueue and ConditionVariable — "Eregon (Benoit Daloze)" <noreply@...>

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

6 messages 2021/10/19

[#105692] [Ruby master Bug#18257] SystemTap/DTrace coredump on ppc64le/s390x — "vo.x (Vit Ondruch)" <noreply@...>

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

22 messages 2021/10/20

[#105781] [Ruby master Misc#18266] DevelopersMeeting20211118Japan — "mame (Yusuke Endoh)" <noreply@...>

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

13 messages 2021/10/25

[#105805] [Ruby master Bug#18270] Refinement#{extend_object, append_features, prepend_features} should be removed — "shugo (Shugo Maeda)" <noreply@...>

Issue #18270 has been reported by shugo (Shugo Maeda).

8 messages 2021/10/26

[#105826] [Ruby master Feature#18273] Class.subclasses — "byroot (Jean Boussier)" <noreply@...>

Issue #18273 has been reported by byroot (Jean Boussier).

35 messages 2021/10/27

[#105833] [Ruby master Feature#18275] Add an option to define_method to not capture the surrounding environment — "vinistock (Vinicius Stock)" <noreply@...>

Issue #18275 has been reported by vinistock (Vinicius Stock).

11 messages 2021/10/27

[#105853] [Ruby master Feature#18276] `Proc#bind_call(obj)` same as `obj.instance_exec(..., &proc_obj)` — "ko1 (Koichi Sasada)" <noreply@...>

Issue #18276 has been reported by ko1 (Koichi Sasada).

15 messages 2021/10/28

[ruby-core:105677] [Ruby master Feature#18256] Change the canonical name of Thread::Mutex, Thread::Queue, Thread::SizedQueue and Thread::ConditionVariable to just Mutex, Queue, SizedQueue and ConditionVariable

From: "Eregon (Benoit Daloze)" <noreply@...>
Date: 2021-10-19 10:44:33 UTC
List: ruby-core #105677
Issue #18256 has been updated by Eregon (Benoit Daloze).


nobu (Nobuyoshi Nakada) wrote in #note-3:
> The current names have been moved from the top level, to make clarify the roles.

I don't understand this reasoning. What else could a Mutex/Queue/SizedQueue/ConditionVariable be for if for threading-related things? There doesn't seem to be any other classes with the same names to disambiguate.
Could you or someone else expand on this?

There was some discussion about Fiber equivalents but I think we kind of settled on reusing the same classes and they should be Fiber-scheduler aware, because that's just so much more useful and practical for existing code (e.g., the Fiber scheduler is called when a Mutex cannot be acquired immediately for non-blocking fibers).

Maybe for Ractor? Ractor can add variants of those if needed, but it also seems clear Actor-like programming should probably avoid most of these abstractions anyway.

Also I don't see how the canonical name has any effect on these 60000+ usages, hence it seems needlessly long, and users clearly don't care about what the canonical name is.
It's also very clear we will never be able to remove or deprecate them in `Object` given the amount of usages.

----------------------------------------
Feature #18256: Change the canonical name of Thread::Mutex, Thread::Queue, Thread::SizedQueue and Thread::ConditionVariable to just Mutex, Queue, SizedQueue and ConditionVariable
https://bugs.ruby-lang.org/issues/18256#change-94177

* Author: Eregon (Benoit Daloze)
* Status: Open
* Priority: Normal
----------------------------------------
Currently these 4 classes are defined as both constants of `Object` and of `Thread`.

On CRuby 3.0.2, their `#inspect` shows they were first defined under `Thread` and then aliased in Object:
```
$ ruby -ve 'p [Mutex, Queue, SizedQueue, ConditionVariable]'
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux]
[Thread::Mutex, Thread::Queue, Thread::SizedQueue, Thread::ConditionVariable]
```

FWIW this contrasts to TruffleRuby which has:
```
$ ruby -ve 'p [Mutex, Queue, SizedQueue, ConditionVariable]'
truffleruby 22.0.0-dev-589c944e, like ruby 2.7.4, GraalVM CE Native [x86_64-linux]
[Mutex, Queue, SizedQueue, ConditionVariable]
```
(because these classes are all core now and I thought the Thread:: prefix was the alias since they moved to core)

However I believe most usages out there do *not* use the `Thread::` prefix, or in other words almost nobody uses the `Thread::` prefix for those classes.
And it seems very clearly confirmed by `gem-codesearch`:

```
$ gem-codesearch 'Thread::Mutex' | wc -l
254
$ gem-codesearch '\bMutex\b' | wc -l
19378
```
About 75x more common to use `Mutex` than `Thread::Mutex` it seems.

```
$ gem-codesearch 'Thread::Queue' | wc -l
138
$ gem-codesearch '\bQueue\b' | wc -l
38174
```
About 276x more common to use `Queue` than `Thread::Queue` it seems.

```
$ gem-codesearch 'Thread::ConditionVariable' | wc -l
110
$ gem-codesearch '\bConditionVariable\b' | wc -l
2145
```
About 19.5x more common to use `ConditionVariable` than `Thread::ConditionVariable` it seems.

```
$ gem-codesearch 'Thread::SizedQueue' | wc -l
27
$ gem-codesearch '\bSizedQueue\b' | wc -l
633
```
About 23x more common to use `SizedQueue` than `Thread::SizedQueue` it seems.

So I propose to update the canonical names of these classes to be without the `Thread::` prefix, to represent the vast majority of usages, and also the fact these classes are core now and not stdlib.
In other words, for 3.1.0 I propose:
```
$ ruby -ve 'p [Mutex, Queue, SizedQueue, ConditionVariable]'
ruby 3.1.0 ...
[Mutex, Queue, SizedQueue, ConditionVariable]
```



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

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

In This Thread