rcee_precompiled 0.5.0.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 294cbf26a8c178f2ce7cab0eba35b4e89cb295f833aabaacdc1c467ab888382d
4
- data.tar.gz: 6d66ea9e396fe883a3c5bb77aa1e9826d5f1fe60c897dfbd7a829b55be4a0a2a
3
+ metadata.gz: 526f2aef7c790c7bca0cdbcd0289fddf895a1f3cdace206d3f08ad36170783a9
4
+ data.tar.gz: 5165e72ca3969fc79ba78e05f4f390f2fa9b828ed544976c21fbf6122ee9dffe
5
5
  SHA512:
6
- metadata.gz: c3f92d71af2605b2913b96d32a50d9925210ab715bb8ccda6bbfe65f90c1c3de76f1b3ee22ed3f4c7f4f5a227951d480af602efa4d9c0ff7087516139ade8780
7
- data.tar.gz: 4433d5002a1de242c9959dd52b408c4ee9a5e3ac62d46b2d7428fc4bec8bb021e284226c8d9989a4719e2abb9beae78e1ecb5153d40598b5548b315a2838f21e
6
+ metadata.gz: d327e5939a2e55abe3b3bdf143d0639d2d505f7facebcdc81a82433c279781d9906e89be57b706914f5f264404a50bc204f75f1a4a24232eb08489cdf409c655
7
+ data.tar.gz: a4efdc52dd970220ef355de94162db809ea2b3d28b01db8eb91db163ac3c8523ea900aa718eb0a7116f3080e0035dae96b4658f87d25efb63c8a9247b3301cbe
data/Gemfile CHANGED
@@ -7,7 +7,7 @@ gemspec
7
7
 
8
8
  gem "rake", "~> 13.0"
9
9
 
10
- gem "rake-compiler", "1.2.7"
11
- gem "rake-compiler-dock", "1.5.0.rc1"
10
+ gem "rake-compiler"
11
+ gem "rake-compiler-dock", "1.7.0.rc1"
12
12
 
13
13
  gem "minitest", "~> 5.0"
data/README.md CHANGED
@@ -28,13 +28,18 @@ First, we need to add some features to our `Rake::ExtensionTask` in `Rakefile`:
28
28
  ``` ruby
29
29
  cross_rubies = ["3.3.0", "3.2.0", "3.1.0", "3.0.0"]
30
30
  cross_platforms = [
31
- "x64-mingw32",
31
+ "aarch64-linux-gnu",
32
+ "aarch64-linux-musl",
33
+ "arm-linux-gnu",
34
+ "arm-linux-musl",
35
+ "arm64-darwin",
32
36
  "x64-mingw-ucrt",
33
- "x86-linux",
34
- "x86_64-linux",
35
- "aarch64-linux",
37
+ "x64-mingw32",
38
+ "x86-linux-gnu",
39
+ "x86-linux-musl",
36
40
  "x86_64-darwin",
37
- "arm64-darwin",
41
+ "x86_64-linux-gnu",
42
+ "x86_64-linux-musl",
38
43
  ]
39
44
  ENV["RUBY_CC_VERSION"] = cross_rubies.join(":")
40
45
 
@@ -161,6 +166,22 @@ end
161
166
  Go ahead and try it! `gem install rcee_precompiled`. If you're on windows, linux, or macos you should get a precompiled version that installs in under a second. Everyone else (hello FreeBSD people!) it'll take a few more seconds to build the vanilla gem's packaged tarball.
162
167
 
163
168
 
169
+ ### Windows notes
170
+
171
+ You may have noticed that the gem for `x64-mingw32` only contains `.../3.0/precompiled.so` and not a shared library for 3.1, 3.2, or 3.3. Conversely, the gem for `x64-mingw-ucrt` does *not* contain 3.0 (but contains 3.1..3.3 inclusive).
172
+
173
+ This is because the Windows installer for Ruby switched from `msvcrt` to `ucrt` for the C standard library. Rubies 3.0 and earlier use `msvcrt` but later Rubies use `ucrt`. So if you're on Ruby 3.0 on Windows, bundler will resolve your platform as `x64-mingw32`; but if you're on Ruby 3.1 or later, bundler will resolve your platform as `x64-mingw-ucrt`. See [the rubyinstaller release notes](https://rubyinstaller.org/2021/12/31/rubyinstaller-3.1.0-1-released.html) for more information.
174
+
175
+ This is all taken care of for you by `rake-compiler-dock` and there's no additional work necessary to create those specialized native gems. However, you'll see this libc transition in the CI testing matrix in `.github/workflows/precompiled.yml`.
176
+
177
+
178
+ ### Linux notes
179
+
180
+ On Linux, the default C library for a long time was GNU libc, and so when you see native gem platforms like `x86_64-linux` the _implied_ libc is `gnu`. However, in recent years the `musl` libc project has gotten off the ground in distributions like Alpine. Often, `musl` systems are able to run code compiled on (and for) `gnu` systems; but not always. And in those incompatible cases, users had to work around it or avoid Alpine.
181
+
182
+ As of Rubygems 3.3.22, the `gem` and `bundle` tools are able to distinguish platforms by their libc type (e.g., `x86_64-linux-gnu` versus `x86_64-linux-musl`); and `rake-compiler-dock` started to be able to build `musl` native gems as of v1.5.0.
183
+
184
+
164
185
  ## Testing
165
186
 
166
187
  See [.github/workflows/precompiled.yml](../.github/workflows/precompiled.yml)
data/Rakefile CHANGED
@@ -6,20 +6,19 @@ require "rake/testtask"
6
6
  require "rake/extensiontask"
7
7
  require "rake_compiler_dock"
8
8
 
9
- cross_rubies = ["3.3.0", "3.2.0", "3.1.0", "3.0.0"]
9
+ cross_rubies = ["3.4.0", "3.3.5", "3.2.0", "3.1.0"]
10
10
  cross_platforms = [
11
- "aarch64-linux",
11
+ "aarch64-linux-gnu",
12
12
  "aarch64-linux-musl",
13
- "arm-linux",
13
+ "arm-linux-gnu",
14
14
  "arm-linux-musl",
15
- "arm64-darwin",
16
- "x64-mingw-ucrt",
17
- "x64-mingw32",
18
- "x86-linux",
15
+ "x86-linux-gnu",
19
16
  "x86-linux-musl",
20
- "x86_64-darwin",
21
- "x86_64-linux",
17
+ "x86_64-linux-gnu",
22
18
  "x86_64-linux-musl",
19
+ "arm64-darwin",
20
+ "x86_64-darwin",
21
+ "x64-mingw-ucrt",
23
22
  ]
24
23
  ENV["RUBY_CC_VERSION"] = cross_rubies.join(":")
25
24
 
@@ -42,6 +41,11 @@ Rake::ExtensionTask.new("precompiled", rcee_precompiled_spec) do |ext|
42
41
  # remove things not needed for precompiled gems
43
42
  spec.dependencies.reject! { |dep| dep.name == "mini_portile2" }
44
43
  spec.files.reject! { |file| File.fnmatch?("*.tar.gz", file) }
44
+
45
+ if spec.platform.os == "linux"
46
+ # the `-gnu` suffix is not recognized in earlier versions of rubygems
47
+ spec.required_rubygems_version.concat([">= 3.3.22"])
48
+ end
45
49
  end
46
50
  end
47
51
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RCEE
4
4
  module Precompiled
5
- VERSION = "0.5.0.1"
5
+ VERSION = "0.6.0"
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rcee_precompiled
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Dalessio
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-03-01 00:00:00.000000000 Z
10
+ date: 2024-12-14 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: mini_portile2
@@ -24,7 +23,6 @@ dependencies:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
25
  version: '0'
27
- force_ruby_platform: false
28
26
  description: Part of a project to explain how Ruby C extensions work.
29
27
  email:
30
28
  - mike.dalessio@gmail.com
@@ -48,7 +46,6 @@ homepage: https://github.com/flavorjones/ruby-c-extensions-explained
48
46
  licenses:
49
47
  - MIT
50
48
  metadata: {}
51
- post_install_message:
52
49
  rdoc_options: []
53
50
  require_paths:
54
51
  - lib
@@ -63,8 +60,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
60
  - !ruby/object:Gem::Version
64
61
  version: '0'
65
62
  requirements: []
66
- rubygems_version: 3.4.19
67
- signing_key:
63
+ rubygems_version: 3.6.0.dev
68
64
  specification_version: 4
69
65
  summary: Example gem demonstrating a basic C extension.
70
66
  test_files: []