[#115984] [Ruby master Misc#20107] Update required Oracle Solaris Studio version to 12.5 — "kddnewton (Kevin Newton) via ruby-core" <ruby-core@...>

Issue #20107 has been reported by kddnewton (Kevin Newton).

7 messages 2024/01/02

[#115985] [Ruby master Feature#20108] Introduction of Happy Eyeballs Version 2 (RFC8305) in Socket.tcp — "shioimm (Misaki Shioi) via ruby-core" <ruby-core@...>

Issue #20108 has been reported by shioimm (Misaki Shioi).

14 messages 2024/01/02

[#116028] [Ruby master Feature#20152] mkmf / extconf: Add a proper way to not compile the extension — "byroot (Jean Boussier) via ruby-core" <ruby-core@...>

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

21 messages 2024/01/05

[#116039] [Ruby master Bug#20154] aarch64: configure overrides `-mbranch-protection` if it was set in CFLAGS via environment — "jprokop (Jarek Prokop) via ruby-core" <ruby-core@...>

Issue #20154 has been reported by jprokop (Jarek Prokop).

11 messages 2024/01/05

[#116041] [Ruby master Bug#20155] Using value of rb_fiber_scheduler_current() crashes Ruby — "paddor (Patrik Wenger) via ruby-core" <ruby-core@...>

Issue #20155 has been reported by paddor (Patrik Wenger).

12 messages 2024/01/05

[#116065] [Ruby master Feature#20160] rescue keyword for case expressions — "lloeki (Loic Nageleisen) via ruby-core" <ruby-core@...>

Issue #20160 has been reported by lloeki (Loic Nageleisen).

9 messages 2024/01/08

[#116083] [Ruby master Feature#20163] Introduce #bit_count method on Integer — "garrison (Garrison Jensen) via ruby-core" <ruby-core@...>

Issue #20163 has been reported by garrison (Garrison Jensen).

25 messages 2024/01/08

[#116114] [Ruby master Bug#20169] `GC.compact` can raises `EFAULT` on IO — "ko1 (Koichi Sasada) via ruby-core" <ruby-core@...>

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

14 messages 2024/01/09

[#116129] [Ruby master Bug#20172] Socket.addrinfo failing randomly — "mwaldvogel (Michael Waldvogel) via ruby-core" <ruby-core@...>

Issue #20172 has been reported by mwaldvogel (Michael Waldvogel).

9 messages 2024/01/09

[#116182] [Ruby master Bug#20180] Inconsistent evaluation of `**{}` depending on position in array — "ozydingo (Andrew Schwartz) via ruby-core" <ruby-core@...>

Issue #20180 has been reported by ozydingo (Andrew Schwartz).

8 messages 2024/01/12

[#116203] [Ruby master Bug#20185] String#ascii_only? buggy in ruby 3.3 — "chucke (Tiago Cardoso) via ruby-core" <ruby-core@...>

SXNzdWUgIzIwMTg1IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IGNodWNrZSAoVGlhZ28gQ2FyZG9zbyku

7 messages 2024/01/14

[#116223] [Ruby master Bug#20188] `Module#const_source_location` returns wrong information when real constant was defined but autoload is still ongoing — "byroot (Jean Boussier) via ruby-core" <ruby-core@...>

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

32 messages 2024/01/16

[#116315] [Ruby master Misc#20193] DevMeeting-2024-02-14 — "mame (Yusuke Endoh) via ruby-core" <ruby-core@...>

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

16 messages 2024/01/19

[#116347] [Ruby master Bug#20197] Postponed job invocations are significantly reduced in Ruby 3.3 — "osyoyu (Daisuke Aritomo) via ruby-core" <ruby-core@...>

Issue #20197 has been reported by osyoyu (Daisuke Aritomo).

8 messages 2024/01/20

[#116370] [Ruby master Bug#20203] `TestEnumerable` test failures with GCC 14 — "vo.x (Vit Ondruch) via ruby-core" <ruby-core@...>

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

13 messages 2024/01/22

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

[#116395] [Ruby master Bug#20207] Segmentation fault for a regexp containing positive and negative lookaheads — "Sundeep (Sundeep Agarwal) via ruby-core" <ruby-core@...>

Issue #20207 has been reported by Sundeep (Sundeep Agarwal).

7 messages 2024/01/24

[#116399] [Ruby master Bug#20208] Net::HTTP errors with Errno::EAFNOSUPPORT when setting local_host with Addrinfo — "jprokop (Jarek Prokop) via ruby-core" <ruby-core@...>

Issue #20208 has been reported by jprokop (Jarek Prokop).

9 messages 2024/01/24

[#116435] [Ruby master Misc#20210] Invalid source encoding raises ArgumentError, not SyntaxError — "kddnewton (Kevin Newton) via ruby-core" <ruby-core@...>

Issue #20210 has been reported by kddnewton (Kevin Newton).

8 messages 2024/01/25

[#116456] [Ruby master Feature#20215] Introduce `IO#readable?` — "ioquatix (Samuel Williams) via ruby-core" <ruby-core@...>

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

17 messages 2024/01/26

[#116460] [Ruby master Bug#20218] aset/masgn/op_asgn with keyword arguments — "jeremyevans0 (Jeremy Evans) via ruby-core" <ruby-core@...>

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

18 messages 2024/01/27

[#116491] [Ruby master Bug#20225] Inconsistent behavior of regex matching for a regex has a null loop — "make_now_just (Hiroya Fujinami) via ruby-core" <ruby-core@...>

Issue #20225 has been reported by make_now_just (Hiroya Fujinami).

10 messages 2024/01/30

[#116493] [Ruby master Bug#20226] Inconsistent Sort results on 3.3.0 compared to previous versions — "omerby (Omer Ben Yosef) via ruby-core" <ruby-core@...>

Issue #20226 has been reported by omerby (Omer Ben Yosef).

14 messages 2024/01/30

[ruby-core:116064] [Ruby master Feature#20152] mkmf / extconf: Add a proper way to not compile the extension

From: "Eregon (Benoit Daloze) via ruby-core" <ruby-core@...>
Date: 2024-01-08 13:30:29 UTC
List: ruby-core #116064
Issue #20152 has been updated by Eregon (Benoit Daloze).


jeremyevans0 (Jeremy Evans) wrote in #note-10:
> I agree that this isn't a `mkmf`/`extconf.rb` issue.  This is a rubygems issue.  I think the easiest way to fix this would be for rubygems to check for a `skip-compilation-RUBY_ENGINE` file in the same directory as `extconf.rb`.  If it exists, do not run `extconf.rb` or `make`.  If it exists after calling `extconf.rb`, do not call `make`.  This fixes cases where an extension is not needed for a certain engine, as well as cases where an extension is not needed in certain configurations, such as when a pure-ruby implementation is also shipped in the same gem, and a native library necessary for the native extension is not available.

I think `skip-compilation-RUBY_ENGINE` is going too far and counter-productive.
For instance I have seen some C extensions in gems which realistically will only work on CRuby (e.g. depends on CRuby deep internals, on CRuby bytecode, optimization only profitable on CRuby, etc), in that case we'd want to avoid the extension on any `RUBY_ENGINE != "ruby"`, so a `skip-compilation-RUBY_ENGINE` would not help.

There could be a `skip-make`/`skip-compilation` or so file which does not include `RUBY_ENGINE` in the filename and is created dynamically by the `extconf.rb`, but this will take a lot longer to get adopted, as it means each gem skipping compilation would need to use that.
But it is error-prone, because e.g. then if one builds (e.g. `rake compile`) a gem locally on JRuby and then on CRuby then compilation will be unexpectedly skipped on CRuby, unless the code also takes care of removing that file (I guess mkmf create_makefile could remove it, it seems too annoying if `extconf.rb` or `Rakefile` needs to remove it manually).

OTOH if we detect the `dummy_makefile` pattern, it's immediately picked up as soon as that RubyGems change is in, and JRuby could even cherry-pick it sooner if they care enough about it.
That is why I think this is the best solution as it solves it with very few changes and faster.

Another possibility would be if there is no Makefile created by extconf.rb, then RubyGems would not call `make` (`make` in a dir with no Makefile is an error so we cannot just use that).
It's very simple and I think rather intuitive.
And extconf.rb could just e.g. `return if RUBY_ENGINE == "jruby"/RUBY_ENGINE != "ruby"/...` at the top.
A concern is if one builds (e.g. `rake compile`) a gem locally on CRuby and then on JRuby.
But `rake clean` should already remove the Makefile and so that seems no problem.
It is already expected and necessary that one needs to `rake clean` when switching Rubies before `rake compile`.

kou (Kouhei Sutou) wrote in #note-9:
> Really? https://rubyinstaller.org/ provides MSYS2 integration by "Devkit". It provides `make`.

It's mostly relevant for JRuby, it's basically not relevant for CRuby (where it's very common to have non-precompiled native extensions, like `erb`).

----------------------------------------
Feature #20152: mkmf / extconf: Add a proper way to not compile the extension
https://bugs.ruby-lang.org/issues/20152#change-106062

* Author: byroot (Jean Boussier)
* Status: Open
* Priority: Normal
----------------------------------------
### Context

There are various gems that ship with a native extension as a way to speedup part of the gem, but also ship with a pure Ruby version of these methods as a fallback. So they only want to compile the extension if the platform supports it, and if not, just fallback to the slightly slower Ruby version.

Right now users rely on one of two hacks to do this. Either they create an empty Makefile, but then still depend on `make` being available, or publish platform specific packages without any extension in them.

Examples:

  - [`bootsnap` skip compilation if not on MRI or TruffleRuby](https://github.com/Shopify/bootsnap/blob/070151f1305f23102365d6b4476a91c02dead35a/ext/bootsnap/extconf.rb)
  - [`erb` has an extension for MRI but then need to publish a `java` version of the gem that doesn't actually contain Java code, just to skip compilation on JRuby](https://github.com/ruby/erb/issues/52)
  - [`hiredis-client` skips the compilation for Windows and non-MRI rubies](https://github.com/redis-rb/redis-client/blob/1ab081c1d0e47df5d55e011c9390c70b2eef6731/hiredis-client/ext/redis_client/hiredis/extconf.rb#L10-L17)

### Feature

It would be very useful to have some proper first class API to skip compiling the extension. 

Something like:

```ruby
require "mkmf"

if RUBY_ENGINE != "ruby" || RUBY_PLATFORM.match?(/mswin/)
  skip_compilation
else
  # ...
end
```

cc @k0kubun @headius 




-- 
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-core.ml.ruby-lang.org/

In This Thread