Skip to content

Commit 20aa97e

Browse files
authored
Support Ruby v4.0 (#602)
* Add Ruby 4.0 to the cross-compile list * No longer ship a precompiled gem for Ruby 2.7 * Update OpenSSL and FreeTDS in precompiled gem * Relax bigdecimal version requirement * Bump Rake to v13.2.0 This removes the `ostruct` dependency from `rake` itself * Add `ostruct` for Ruby v4.0 * Remove dependency on `logger` * Add `benchmark` for Ruby v4.0
2 parents 0737149 + 4f80563 commit 20aa97e

File tree

6 files changed

+24
-18
lines changed

6 files changed

+24
-18
lines changed

.github/workflows/ci.yml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ jobs:
6060
fail-fast: false
6161
matrix:
6262
ruby-version:
63-
- "2.7"
6463
- "3.0"
6564

6665
name: install-windows-mingw
@@ -112,7 +111,6 @@ jobs:
112111
- 2019
113112
- 2022
114113
ruby-version:
115-
- "2.7"
116114
- "3.0"
117115

118116
name: test-windows-mingw
@@ -179,6 +177,7 @@ jobs:
179177
- "3.2"
180178
- "3.3"
181179
- "3.4"
180+
- "4.0"
182181

183182
name: install-windows-ucrt
184183
runs-on: windows-latest
@@ -233,6 +232,7 @@ jobs:
233232
- "3.2"
234233
- "3.3"
235234
- "3.4"
235+
- "4.0"
236236

237237
name: test-windows-ucrt
238238
runs-on: windows-latest
@@ -301,6 +301,7 @@ jobs:
301301
- "3.2"
302302
- "3.3"
303303
- "3.4"
304+
- "4.0"
304305

305306
name: install-windows-native
306307
runs-on: windows-latest
@@ -353,12 +354,12 @@ jobs:
353354
- "aarch64-linux-musl"
354355

355356
ruby-version:
356-
- "2.7"
357357
- "3.0"
358358
- "3.1"
359359
- "3.2"
360360
- "3.3"
361361
- "3.4"
362+
- "4.0"
362363

363364
include:
364365
- platform: x86_64-linux-musl
@@ -414,12 +415,12 @@ jobs:
414415
- 2022
415416

416417
ruby-version:
417-
- "2.7"
418418
- "3.0"
419419
- "3.1"
420420
- "3.2"
421421
- "3.3"
422422
- "3.4"
423+
- "4.0"
423424

424425
runs-on: ubuntu-22.04
425426
steps:
@@ -482,6 +483,7 @@ jobs:
482483
- "3.2"
483484
- "3.3"
484485
- "3.4"
486+
- "4.0"
485487

486488
name: install-linux-native
487489
runs-on: ubuntu-22.04
@@ -528,6 +530,7 @@ jobs:
528530
- "3.2"
529531
- "3.3"
530532
- "3.4"
533+
- "4.0"
531534

532535
name: install-macos-m1
533536
runs-on: macos-14

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
## (unreleased)
22

3+
## 3.4.0
4+
5+
* Add Ruby 4.0 to the cross compile list
6+
* No longer ship a precompiled Gem for Ruby 2.7
7+
* This is due to an [upstream change](https://github.com/rake-compiler/rake-compiler-dock/releases/tag/v1.11.0). Users on Windows and Linux on Ruby v2.7 are advised to either upgrade or install FreeTDS manually.
8+
* Use freetds v1.5.10 and OpenSSL v3.6.0 for Windows and Linux builds.
9+
* Lower `bigdecimal` requirement to `>= 2.0.0` (was 3.0 only) to allow `bigdecimal` 4.0 on Ruby 4.0. Closes #601.
10+
311
## 3.3.0
412

513
* Use freetds v1.5.4 and OpenSSL v3.5.2 for Windows and Linux builds.

ext/tiny_tds/extconsts.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
ICONV_VERSION = ENV["TINYTDS_ICONV_VERSION"] || "1.18"
22
ICONV_SOURCE_URI = "http://ftp.gnu.org/pub/gnu/libiconv/libiconv-#{ICONV_VERSION}.tar.gz"
33

4-
OPENSSL_VERSION = ENV["TINYTDS_OPENSSL_VERSION"] || "3.5.2"
4+
OPENSSL_VERSION = ENV["TINYTDS_OPENSSL_VERSION"] || "3.6.0"
55
OPENSSL_SOURCE_URI = "https://www.openssl.org/source/openssl-#{OPENSSL_VERSION}.tar.gz"
66

7-
FREETDS_VERSION = ENV["TINYTDS_FREETDS_VERSION"] || "1.5.4"
7+
FREETDS_VERSION = ENV["TINYTDS_FREETDS_VERSION"] || "1.5.10"
88
FREETDS_SOURCE_URI = "http://www.freetds.org/files/stable/freetds-#{FREETDS_VERSION}.tar.bz2"

tasks/native_gem.rake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ CrossLibraries.each do |xlib|
77

88
RakeCompilerDock.sh <<-EOT, platform: platform
99
bundle install &&
10-
rake native:#{platform} pkg/#{SPEC.full_name}-#{platform}.gem MAKEOPTS=-j`nproc` RUBY_CC_VERSION=#{RakeCompilerDock.set_ruby_cc_version("~> 2.7", "~> 3.0")} MAKEFLAGS="V=1"
10+
rake native:#{platform} pkg/#{SPEC.full_name}-#{platform}.gem MAKEOPTS=-j`nproc` RUBY_CC_VERSION=#{RakeCompilerDock.set_ruby_cc_version("~> 3.0", "~> 4.0")} MAKEFLAGS="V=1"
1111
EOT
1212
end
1313

test/thread_test.rb

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
require "test_helper"
2-
require "logger"
32
require "benchmark"
43

54
class ThreadTest < TinyTds::TestCase
65
describe "Threaded SELECT queries" do
76
before do
8-
@logger = Logger.new $stdout
9-
@logger.level = Logger::WARN
107
@poolsize = 4
118
@numthreads = 10
129
@query = "waitfor delay '00:00:01'"
@@ -22,19 +19,14 @@ class ThreadTest < TinyTds::TestCase
2219
x = Benchmark.realtime do
2320
threads = []
2421
@numthreads.times do |i|
25-
start = Time.new
2622
threads << Thread.new do
27-
ts = Time.new
2823
@pool.with { |c| c.execute(@query).do }
29-
te = Time.new
30-
@logger.info "Thread #{i} finished in #{te - ts} thread seconds, #{te - start} real seconds"
3124
end
3225
end
3326
threads.each { |t| t.join }
3427
end
3528
assert x < @numthreads, "#{x} is not faster than #{@numthreads} seconds"
3629
mintime = (1.0 * @numthreads / @poolsize).ceil
37-
@logger.info "#{@numthreads} queries on #{@poolsize} threads: #{x} sec. Minimum time: #{mintime} sec."
3830
assert x > mintime, "#{x} is not slower than #{mintime} seconds"
3931
end
4032

tiny_tds.gemspec

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,17 @@ Gem::Specification.new do |s|
1818
s.license = "MIT"
1919
s.required_ruby_version = ">= 2.7.0"
2020
s.metadata["msys2_mingw_dependencies"] = "freetds"
21-
s.add_dependency "bigdecimal", "~> 3"
21+
s.add_dependency "bigdecimal", ">= 2.0.0"
2222
s.add_development_dependency "mini_portile2", "~> 2.8.0"
23-
s.add_development_dependency "rake", "~> 13.0.0"
23+
s.add_development_dependency "rake", "~> 13.2.0"
2424
s.add_development_dependency "rake-compiler", "~> 1.2"
25-
s.add_development_dependency "rake-compiler-dock", "~> 1.9.1"
25+
s.add_development_dependency "rake-compiler-dock", "~> 1.11.0"
2626
s.add_development_dependency "minitest", "~> 5.25"
2727
s.add_development_dependency "minitest-reporters", "~> 1.6.1"
2828
s.add_development_dependency "connection_pool", "~> 2.2.0"
2929
s.add_development_dependency "toxiproxy", "~> 2.0.0"
3030
s.add_development_dependency "standard", "~> 1.31.0"
31+
# ostruct can be dropped when updating to Rubocop 1.65+
32+
s.add_development_dependency "ostruct"
33+
s.add_development_dependency "benchmark"
3134
end

0 commit comments

Comments
 (0)