RubyInline 3.13.0 → 3.14.1
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/History.txt +18 -0
- data/Rakefile +3 -1
- data/lib/inline.rb +22 -39
- data/test/test_inline.rb +3 -1
- data.tar.gz.sig +0 -0
- metadata +13 -13
- metadata.gz.sig +1 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: eadac7653c5cb624b0778ea6fabb5f5db8358785daf928d52137125547989542
|
4
|
+
data.tar.gz: 05f475f961350b3ae11b88de02d41646288a18ca1193446f915923cae2ba6150
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d377fec0166d04b22bd4ba0c283f0cb9c72d1f998d6651030dc7a897dc40a0bcab17497defc4d5fd0f87af6eb5e170bd5c34b8950780a4f32c4137c3d58fe6af
|
7
|
+
data.tar.gz: c59d0575650d5a607795a97f449679e7a7614fe0d827662603ea3d226912eebc81db35cdcf743c96f7e579086fd37472a33943f1caaba32116ffc8962deac2fc
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
@@ -1,3 +1,21 @@
|
|
1
|
+
=== 3.14.1 / 2024-06-23
|
2
|
+
|
3
|
+
* 1 bug fix:
|
4
|
+
|
5
|
+
* Fix errors created when string literals are frozen.
|
6
|
+
|
7
|
+
=== 3.14.0 / 2023-06-28
|
8
|
+
|
9
|
+
* 3 minor enhancements:
|
10
|
+
|
11
|
+
* Changed File.write_with_backup to write the content and return renamed path.
|
12
|
+
* Dropped #inline ancient options processing code. 2005, yo.
|
13
|
+
* Preemptively require language extension if not defined yet.
|
14
|
+
|
15
|
+
* 1 bug fix:
|
16
|
+
|
17
|
+
* Declare Init_* to be (void) to prevent some compilers from complaining.
|
18
|
+
|
1
19
|
=== 3.13.0 / 2023-01-31
|
2
20
|
|
3
21
|
* 1 minor enhancement:
|
data/Rakefile
CHANGED
@@ -16,6 +16,8 @@ Hoe.spec "RubyInline" do
|
|
16
16
|
spec_extras[:requirements] =
|
17
17
|
"A POSIX environment and a compiler for your language."
|
18
18
|
|
19
|
+
license "MIT"
|
20
|
+
|
19
21
|
dependency "ZenTest", "~> 4.3" # for ZenTest mapping
|
20
22
|
end
|
21
23
|
|
@@ -33,7 +35,7 @@ task :examples do
|
|
33
35
|
end
|
34
36
|
|
35
37
|
desc "run simple benchmarks"
|
36
|
-
task :bench do
|
38
|
+
task :bench => [:clean, :isolate] do
|
37
39
|
verbose(false) do
|
38
40
|
ruby "-Ilib ./example.rb"
|
39
41
|
ruby "-Ilib ./example.rb 1000000 12" # 12 is the bignum cutoff for factorial
|
data/lib/inline.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
##
|
4
4
|
# Ruby Inline is a framework for writing ruby extensions in foreign
|
@@ -65,7 +65,7 @@ class CompilationError < RuntimeError; end
|
|
65
65
|
# the current namespace.
|
66
66
|
|
67
67
|
module Inline
|
68
|
-
VERSION = "3.
|
68
|
+
VERSION = "3.14.1"
|
69
69
|
|
70
70
|
WINDOZE = /mswin|mingw/ =~ RUBY_PLATFORM
|
71
71
|
DEV_NULL = (WINDOZE ? 'nul' : '/dev/null')
|
@@ -74,12 +74,12 @@ module Inline
|
|
74
74
|
|
75
75
|
warn "RubyInline v #{VERSION}" if $DEBUG
|
76
76
|
|
77
|
-
def self.register cls
|
77
|
+
def self.register cls # for hoe/inline
|
78
78
|
registered_inline_classes << cls
|
79
79
|
registered_inline_classes.uniq!
|
80
80
|
end
|
81
81
|
|
82
|
-
def self.registered_inline_classes
|
82
|
+
def self.registered_inline_classes # for hoe/inline
|
83
83
|
@@registered_inline_classes ||= []
|
84
84
|
end
|
85
85
|
|
@@ -326,7 +326,7 @@ module Inline
|
|
326
326
|
ext << "extern \"C\" {"
|
327
327
|
ext << "#endif"
|
328
328
|
ext << " __declspec(dllexport)" if WINDOZE
|
329
|
-
ext << " void Init_#{module_name}() {"
|
329
|
+
ext << " void Init_#{module_name}(void) {"
|
330
330
|
ext << " VALUE c = rb_cObject;"
|
331
331
|
|
332
332
|
# TODO: use rb_class2path
|
@@ -338,7 +338,7 @@ module Inline
|
|
338
338
|
ext << nil
|
339
339
|
|
340
340
|
@sig.keys.sort.each do |name|
|
341
|
-
method =
|
341
|
+
method = []
|
342
342
|
arity, singleton, method_name = @sig[name]
|
343
343
|
if singleton then
|
344
344
|
if method_name == 'allocate' then
|
@@ -351,7 +351,7 @@ module Inline
|
|
351
351
|
method << " rb_define_method(c, \"#{method_name}\", "
|
352
352
|
end
|
353
353
|
method << "(VALUE(*)(ANYARGS))#{name}, #{arity});"
|
354
|
-
ext << method
|
354
|
+
ext << method.join
|
355
355
|
end
|
356
356
|
|
357
357
|
ext << @init_extra.join("\n") unless @init_extra.empty?
|
@@ -449,7 +449,7 @@ module Inline
|
|
449
449
|
@struct_name
|
450
450
|
|
451
451
|
c <<-C
|
452
|
-
VALUE #{method}() {
|
452
|
+
VALUE #{method}(void) {
|
453
453
|
#{@struct_name} *pointer;
|
454
454
|
|
455
455
|
Data_Get_Struct(self, #{@struct_name}, pointer);
|
@@ -535,14 +535,11 @@ VALUE #{method}_equals(VALUE value) {
|
|
535
535
|
end
|
536
536
|
|
537
537
|
src_name = "#{Inline.directory}/#{module_name}.c"
|
538
|
-
old_src_name =
|
539
|
-
should_compare = File.write_with_backup(src_name) do |io|
|
540
|
-
io.puts generate_ext
|
541
|
-
end
|
538
|
+
old_src_name = File.write_with_backup src_name, generate_ext
|
542
539
|
|
543
540
|
# recompile only if the files are different
|
544
541
|
recompile = true
|
545
|
-
if so_exists and
|
542
|
+
if so_exists and old_src_name and
|
546
543
|
FileUtils.compare_file(old_src_name, src_name) then
|
547
544
|
recompile = false
|
548
545
|
|
@@ -834,22 +831,9 @@ class Module
|
|
834
831
|
def inline(lang = :C, options={})
|
835
832
|
Inline.register self
|
836
833
|
|
837
|
-
|
838
|
-
when TrueClass, FalseClass then
|
839
|
-
warn "WAR\NING: 2nd argument to inline is now a hash, changing to {:testing=>#{options}}" unless options
|
840
|
-
options = { :testing => options }
|
841
|
-
when Hash
|
842
|
-
options[:testing] ||= false
|
843
|
-
else
|
844
|
-
raise ArgumentError, "BLAH"
|
845
|
-
end
|
834
|
+
require "inline/#{lang}" unless Inline.const_defined? lang
|
846
835
|
|
847
|
-
builder_class =
|
848
|
-
Inline.const_get(lang)
|
849
|
-
rescue NameError
|
850
|
-
require "inline/#{lang}"
|
851
|
-
Inline.const_get(lang)
|
852
|
-
end
|
836
|
+
builder_class = Inline.const_get lang
|
853
837
|
|
854
838
|
builder = builder_class.new self
|
855
839
|
|
@@ -869,25 +853,24 @@ class File
|
|
869
853
|
##
|
870
854
|
# Equivalent to +File::open+ with an associated block, but moves
|
871
855
|
# any existing file with the same name to the side first.
|
856
|
+
# Returns renamed path or false if none.
|
872
857
|
|
873
|
-
def self.write_with_backup(path)
|
874
|
-
|
875
|
-
# move previous version to the side if it exists
|
858
|
+
def self.write_with_backup(path, content)
|
876
859
|
renamed = false
|
860
|
+
|
877
861
|
if File.file? path then
|
862
|
+
renamed = "#{path}.old"
|
863
|
+
|
878
864
|
begin
|
879
|
-
File.rename path,
|
880
|
-
|
881
|
-
rescue SystemCallError
|
865
|
+
File.rename path, renamed
|
866
|
+
rescue SystemCallError # in case of race condition
|
882
867
|
# do nothing
|
883
868
|
end
|
884
869
|
end
|
885
870
|
|
886
|
-
File.
|
887
|
-
yield(io)
|
888
|
-
end
|
871
|
+
File.write path, content
|
889
872
|
|
890
|
-
|
873
|
+
renamed
|
891
874
|
end
|
892
875
|
end # class File
|
893
876
|
|
@@ -901,7 +884,7 @@ class Dir
|
|
901
884
|
|
902
885
|
def self.assert_secure(path)
|
903
886
|
mode = File.stat(path).mode
|
904
|
-
unless
|
887
|
+
unless mode % 01000 & 0022 == 0 then
|
905
888
|
if $TESTING then
|
906
889
|
raise SecurityError, "Directory #{path} is insecure"
|
907
890
|
else
|
data/test/test_inline.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
$TESTING = true
|
2
4
|
|
3
5
|
$0 = __FILE__ if $0 =~ /-e|\(eval\)|^$/
|
@@ -769,7 +771,7 @@ static VALUE my_method(VALUE self) {
|
|
769
771
|
#ifdef __cplusplus
|
770
772
|
extern \"C\" {
|
771
773
|
#endif#{windoze}
|
772
|
-
void Init_Inline_TestInline__TestC_3ab8c09639e499394bb1f0a0194a839f() {
|
774
|
+
void Init_Inline_TestInline__TestC_3ab8c09639e499394bb1f0a0194a839f(void) {
|
773
775
|
VALUE c = rb_cObject;
|
774
776
|
c = rb_const_get(c, rb_intern("TestInline"));
|
775
777
|
c = rb_const_get(c, rb_intern("TestC"));
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: RubyInline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.14.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -10,9 +10,9 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
13
|
+
MIIDPjCCAiagAwIBAgIBCDANBgkqhkiG9w0BAQsFADBFMRMwEQYDVQQDDApyeWFu
|
14
14
|
ZC1ydWJ5MRkwFwYKCZImiZPyLGQBGRYJemVuc3BpZGVyMRMwEQYKCZImiZPyLGQB
|
15
|
-
|
15
|
+
GRYDY29tMB4XDTI0MDEwMjIxMjEyM1oXDTI1MDEwMTIxMjEyM1owRTETMBEGA1UE
|
16
16
|
AwwKcnlhbmQtcnVieTEZMBcGCgmSJomT8ixkARkWCXplbnNwaWRlcjETMBEGCgmS
|
17
17
|
JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALda
|
18
18
|
b9DCgK+627gPJkB6XfjZ1itoOQvpqH1EXScSaba9/S2VF22VYQbXU1xQXL/WzCkx
|
@@ -22,14 +22,14 @@ cert_chain:
|
|
22
22
|
qhtV7HJxNKuPj/JFH0D2cswvzznE/a5FOYO68g+YCuFi5L8wZuuM8zzdwjrWHqSV
|
23
23
|
gBEfoTEGr7Zii72cx+sCAwEAAaM5MDcwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAw
|
24
24
|
HQYDVR0OBBYEFEfFe9md/r/tj/Wmwpy+MI8d9k/hMA0GCSqGSIb3DQEBCwUAA4IB
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
AQCygvpmncmkiSs9r/Kceo4bBPDszhTv6iBi4LwMReqnFrpNLMOWJw7xi8x+3eL2
|
26
|
+
XS09ZPNOt2zm70KmFouBMgOysnDY4k2dE8uF6B8JbZOO8QfalW+CoNBliefOTcn2
|
27
|
+
bg5IOP7UoGM5lC174/cbDJrJnRG9bzig5FAP0mvsgA8zgTRXQzIUAZEo92D5K7p4
|
28
|
+
B4/O998ho6BSOgYBI9Yk1ttdCtti6Y+8N9+fZESsjtWMykA+WXWeGUScHqiU+gH8
|
29
|
+
S7043fq9EbQdBr2AXdj92+CDwuTfHI6/Hj5FVBDULufrJaan4xUgL70Hvc6pTTeW
|
30
|
+
deKfBjgVAq7EYHu1AczzlUly
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date:
|
32
|
+
date: 2024-06-23 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: ZenTest
|
@@ -71,14 +71,14 @@ dependencies:
|
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: '4.
|
74
|
+
version: '4.2'
|
75
75
|
type: :development
|
76
76
|
prerelease: false
|
77
77
|
version_requirements: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - "~>"
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: '4.
|
81
|
+
version: '4.2'
|
82
82
|
description: |-
|
83
83
|
Inline allows you to write foreign code within your ruby code. It
|
84
84
|
automatically determines if the code in question has changed and
|
@@ -133,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
133
|
version: '0'
|
134
134
|
requirements:
|
135
135
|
- A POSIX environment and a compiler for your language.
|
136
|
-
rubygems_version: 3.
|
136
|
+
rubygems_version: 3.5.14
|
137
137
|
signing_key:
|
138
138
|
specification_version: 4
|
139
139
|
summary: Inline allows you to write foreign code within your ruby code
|
metadata.gz.sig
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
�J��������N��Zu����x�T�1LG�&�
|
1
|
+
� I�>n�G�i]�XJ�8�`Bf���߿�li���c�����y�~=�2.����L�#�w��%ة|N���������'��P�0)������?u|/ԙ�VOb��%����z Ր��
|