RubyInline 3.13.0 → 3.14.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|