[#106939] [Ruby master Bug#18455] `IO#close` has poor performance and difficult to understand semantics. — "ioquatix (Samuel Williams)" <noreply@...>

Issue #18455 has been reported by ioquatix (Samuel Williams).

10 messages 2022/01/01

[#106977] [Ruby master Feature#18461] closures are capturing unused variables — "bughit (bug hit)" <noreply@...>

Issue #18461 has been reported by bughit (bug hit).

12 messages 2022/01/05

[#106994] [Ruby master Feature#18462] Proposal to merge WASI based WebAssembly support — "katei (Yuta Saito)" <noreply@...>

Issue #18462 has been reported by katei (Yuta Saito).

8 messages 2022/01/07

[#106996] [Ruby master Feature#18463] Random number generation with xoshiro — "bbrklm (Benson Muite)" <noreply@...>

Issue #18463 has been reported by bbrklm (Benson Muite).

8 messages 2022/01/07

[#107005] [Ruby master Bug#18464] RUBY_INTERNAL_EVENT_NEWOBJ tracepoint causes an interpreter crash when combined with Ractors — "kjtsanaktsidis (KJ Tsanaktsidis)" <noreply@...>

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

14 messages 2022/01/08

[#107008] [Ruby master Bug#18465] Make `IO#write` atomic. — "ioquatix (Samuel Williams)" <noreply@...>

Issue #18465 has been reported by ioquatix (Samuel Williams).

16 messages 2022/01/09

[#107073] [Ruby master Feature#18481] Porting YJIT to Rust (request for feedback) — "maximecb (Maxime Chevalier-Boisvert)" <noreply@...>

Issue #18481 has been reported by maximecb (Maxime Chevalier-Boisvert).

26 messages 2022/01/12

[#107106] [Ruby master Bug#18487] Kernel#binding behaves differently depending on implementation language of items on the stack — "alanwu (Alan Wu)" <noreply@...>

Issue #18487 has been reported by alanwu (Alan Wu).

11 messages 2022/01/13

[#107190] [Ruby master Feature#18498] Introduce a public WeakKeysMap that compares by equality — "byroot (Jean Boussier)" <noreply@...>

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

17 messages 2022/01/19

[#107203] [Ruby master Bug#18501] [BUG] try to mark T_NONE object in RubyVM::InstructionSequence. load_from_binary — "byroot (Jean Boussier)" <noreply@...>

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

8 messages 2022/01/20

[#107204] [Ruby master Bug#18502] Make ruby-2.7.5 on Solaris 10 ld.so.1: gcc: fatal: libintl.so.8: open failed: No such file or directory — "dklein (Dmitri Klein)" <noreply@...>

Issue #18502 has been reported by dklein (Dmitri Klein).

8 messages 2022/01/20

[#107275] [Ruby master Bug#18512] MacOS 12.1 Monterey Bug — "oucl5976@... (Paul Liu)" <noreply@...>

Issue #18512 has been reported by oucl5976@gmail.com (Paul Liu).

9 messages 2022/01/25

[#107291] [Ruby master Bug#18518] NoMemoryError + [FATAL] failed to allocate memory for twice 1 << large — "Eregon (Benoit Daloze)" <noreply@...>

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

12 messages 2022/01/26

[#107310] [Ruby master Bug#18555] Running "bundle exec middleman server" on M1 Mac gives [BUG] Bus Error at 0x0000000104b04000 — "anthonyaykut (Anthony Aykut)" <noreply@...>

Issue #18555 has been reported by anthonyaykut (Anthony Aykut).

13 messages 2022/01/28

[#107346] [Ruby master Misc#18557] DevMeeting-2022-02-17 — "mame (Yusuke Endoh)" <noreply@...>

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

18 messages 2022/01/29

[#107392] [Ruby master Bug#18560] "Compaction isn't available on this platform" error running PG test suite on ppc64le — "vo.x (Vit Ondruch)" <noreply@...>

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

7 messages 2022/01/31

[ruby-core:107305] [Ruby master Feature#18552] Expose `VALUE rb_singleton_class_get(VALUE)` to extensions

From: "alanwu (Alan Wu)" <noreply@...>
Date: 2022-01-27 17:12:42 UTC
List: ruby-core #107305
Issue #18552 has been updated by alanwu (Alan Wu).


> `!SPECIAL_CONST(obj) && FL_TEST(RBASIC(obj)->klass, FL_SINGLETON);`
> Which does seem very clean.

Beyond cleanliness, it uses `FL_SINGLETON`, which is [marked] `@internal`. I
agree with @shyouhei that this flag should not be visible in the first place.
Also, it's tempting to think the predicate being true implies
`RBASIC(obj)->klass` gives the singleton class of `obj` while that is not
necessarily true and has lead to bugs in the past. [^1][^2] These subtleties
are why it's generally a bad idea for extensions to take advantage of
implementation details.

I can emphasize with trying to avoid allocations, but I want to be cautious
about expanding the C extension API surface. In this case, it's exposing
_yet another_ operation unavailable to plain Ruby code. It might make some
optimizations in JITs more complex to implement or worse, introduce bugs down
the line in the interpreter because C APIs are generally less frequently
exercised and their extra capabilities easy to be forgotten.

We should review how much `rb_singleton_class_get()` is exposing and not exposing, and
whether it's feasible to implement in other runtimes such as TruffleRuby.

[marked]: https://github.com/ruby/ruby/blob/v3_1_0/include/ruby/internal/fl_type.h#L424-L430
[^1]: https://bugs.ruby-lang.org/issues/17321
[^2]: https://github.com/ruby/ruby/commit/0cd3b97e027332236625835578329580be12023c


----------------------------------------
Feature #18552: Expose `VALUE rb_singleton_class_get(VALUE)` to extensions
https://bugs.ruby-lang.org/issues/18552#change-96203

* Author: byroot (Jean Boussier)
* Status: Open
* Priority: Normal
----------------------------------------
Right now the only way to check wether an object has a singleton class is to do something akin to:

```c
!SPECIAL_CONST(obj) && FL_TEST(RBASIC(obj)->klass, FL_SINGLETON);
```

Which does seem very clean.

### Use case

This came up in `msgpack`. The library have a registry of serializers on a per class basis, and wish to support singleton classes too.
So it is calling `rb_singleton_class()` which cause lots of useless singleton classes to be created: https://github.com/msgpack/msgpack-ruby/pull/245


### Proposed patch

https://github.com/ruby/ruby/pull/5499



-- 
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