RubyInline 3.13.0 → 3.14.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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/History.txt +12 -0
- data/Rakefile +3 -1
- data/lib/inline.rb +19 -36
- data/test/test_inline.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +3 -3
- metadata.gz.sig +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 14e2dd1d335589d1f389ba716c031d8778d02d0b2c74e35ad981168dd7d0999d
|
4
|
+
data.tar.gz: 5b39db47e57df1e9494db491e778e121f0556b8827270ea6cbd63899c03f8f52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cce3379d5f7876f9ed3f8736eb3ef90beeea58730fc9303c532efebaf629ea097481e06084a61ddb379319e599ca002385c458a8a183464a1f6199014f8c6b6
|
7
|
+
data.tar.gz: 1650103a7b18af47316fd0983baa3877a36776e71732ac1ffa71cf715fa86415a9bd1ad7584efc74378a2db52c287e6243cedae4cbf025224aaf09136381f67c
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
=== 3.14.0 / 2023-06-28
|
2
|
+
|
3
|
+
* 3 minor enhancements:
|
4
|
+
|
5
|
+
* Changed File.write_with_backup to write the content and return renamed path.
|
6
|
+
* Dropped #inline ancient options processing code. 2005, yo.
|
7
|
+
* Preemptively require language extension if not defined yet.
|
8
|
+
|
9
|
+
* 1 bug fix:
|
10
|
+
|
11
|
+
* Declare Init_* to be (void) to prevent some compilers from complaining.
|
12
|
+
|
1
13
|
=== 3.13.0 / 2023-01-31
|
2
14
|
|
3
15
|
* 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
@@ -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.0"
|
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
|
@@ -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
@@ -769,7 +769,7 @@ static VALUE my_method(VALUE self) {
|
|
769
769
|
#ifdef __cplusplus
|
770
770
|
extern \"C\" {
|
771
771
|
#endif#{windoze}
|
772
|
-
void Init_Inline_TestInline__TestC_3ab8c09639e499394bb1f0a0194a839f() {
|
772
|
+
void Init_Inline_TestInline__TestC_3ab8c09639e499394bb1f0a0194a839f(void) {
|
773
773
|
VALUE c = rb_cObject;
|
774
774
|
c = rb_const_get(c, rb_intern("TestInline"));
|
775
775
|
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.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Davis
|
@@ -29,7 +29,7 @@ cert_chain:
|
|
29
29
|
ROfWo9Uyp8ba/j9eVG14KkYRaLydAY1MNQk2yd3R5CGfeOpD1kttxjoypoUJ2dOG
|
30
30
|
nsNBRuQJ1UfiCG97a6DNm+Fr
|
31
31
|
-----END CERTIFICATE-----
|
32
|
-
date: 2023-
|
32
|
+
date: 2023-06-28 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: ZenTest
|
@@ -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.4.
|
136
|
+
rubygems_version: 3.4.10
|
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,3 @@
|
|
1
|
-
|
2
|
-
�
|
1
|
+
X.(-�_�w
|
2
|
+
�G��x>��c�Qy�gYݲ���S�c�����^M}�HŨ"���zu���R�k��q���@</G��ʹ���{�<�.��l�t�x�B�B�cN�ucV�<|f�m�Q,e4�U}�xJ���Qf|�
|
3
|
+
U����}�Z�Z�%�V5v*-J7J�N�P�Q\Q5���ö�Aj��ٰ��GXA\P
|