ruby-concurrency/concurrent-ruby

Ruby 3.5 to drop `win32ole`

Earlopain opened this issue · 2 comments

Ruby is continuing its path of requiring more gems to be specified. win32ole is next on the list (among others) and will start warning in Ruby 3.4: ruby/ruby@f365bef

Usage is here, to get the number of cores on windows:

require 'win32ole'
result_set = WIN32OLE.connect("winmgmts://").ExecQuery(
"select NumberOfCores from Win32_Processor")
result_set.to_enum.collect(&:NumberOfCores).reduce(:+)
else

Something like the following may be a suitable replacement:

IO.popen("wmic cpu get NumberOfCores", &:read).scan(/\d+/).map(&:to_i).reduce(:+)

Output of that command:
NumberOfCores \n\n4 \n\n\n\n

I have also openend the same report on parallel at grosser/parallel#345 if you are interested. Both implementations for this are basically the same.

eregon commented

Thanks for the heads up. Could you make a PR with that?
Agreed it's better to stop needing win32ole than to add the dependency.

I'll try to do that tomorrow. I just read that this tool is actually deprecated (though I have no idea how aggressive microsoft would be here), so first check via powershell (Get-ComputerInfo).NumberOfCores (currently untested) and fall back to wmic.


CI doesn't run on windows at the moment. Would you mind me adding something for that to the matrix or is the exclusion intention?