r_bridge 0.5.2 → 0.5.3
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
- data/ext/r_bridge/r_embed.c +34 -4
- data/lib/r_bridge/r_bridge_ffi.rb +6 -3
- data/lib/r_bridge/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4d7f74da4e1b6be0717eb1aad13197269106b65abd080922cf19e34f7ed58b5d
|
4
|
+
data.tar.gz: e8b58e04c13954ed86ca44070861a7fb59f9b5d6fc66c0aa0268b631ebd56e23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98ef89344e79fd315d8bf05d80a74116747ad6d7e0faaafb38895dbb5b787626d0fc44113cd504d8f3b1537264725177822e6280fa5eeee3d96228a68a6d140a
|
7
|
+
data.tar.gz: d89e882f5f0a3cc345345e0436da5848de0d6d257876debe6df64aae5bc5938162b831a535c97fb8791f844427555c096b2e9841d86cecbe2a7a24414105fc58
|
data/ext/r_bridge/r_embed.c
CHANGED
@@ -2,25 +2,55 @@
|
|
2
2
|
#include <Rembedded.h>
|
3
3
|
#include <Rdefines.h>
|
4
4
|
|
5
|
+
#include <stdbool.h>
|
6
|
+
|
7
|
+
#include <stdint.h>
|
8
|
+
#define CSTACK_DEFNS
|
9
|
+
#include <Rinterface.h>
|
10
|
+
|
5
11
|
#include "win_compat.h"
|
6
12
|
|
13
|
+
#ifdef __FreeBSD__
|
14
|
+
#include <ieeefp.h>
|
15
|
+
fp_rnd_t fpmask_preset;
|
16
|
+
#endif
|
17
|
+
|
7
18
|
EXPORT void
|
8
|
-
r_embedded_init()
|
19
|
+
r_embedded_init( bool unlimited_stack_size )
|
9
20
|
{
|
10
|
-
|
11
|
-
|
21
|
+
|
22
|
+
#ifdef __FreeBSD__
|
23
|
+
fpmask_preset = fpsetmask(0);
|
24
|
+
#endif
|
25
|
+
|
26
|
+
size_t localArgc = 3;
|
27
|
+
char localArgs[][50] = {"R", "--silent", "--vanilla"};
|
12
28
|
|
13
29
|
char *args[ localArgc ];
|
14
30
|
for (size_t i = 0; i < localArgc; ++i){
|
15
31
|
args[i] = localArgs[i];
|
16
32
|
}
|
17
33
|
|
18
|
-
Rf_initEmbeddedR
|
34
|
+
// Rf_initEmbeddedR raises C stack usage limit error on multithreading environment.
|
35
|
+
// Rf_initEmbeddedR( localArgc , args ); is replaced with the following code.
|
36
|
+
|
37
|
+
if( unlimited_stack_size == false ){ // default stack size
|
38
|
+
Rf_initialize_R( localArgc , args );
|
39
|
+
setup_Rmainloop();
|
40
|
+
}else{
|
41
|
+
Rf_initialize_R( localArgc , args );
|
42
|
+
R_CStackLimit = (uintptr_t) -1 ; // Set -1 for unlimited C stack size.
|
43
|
+
setup_Rmainloop();
|
44
|
+
}
|
19
45
|
}
|
20
46
|
|
21
47
|
EXPORT void
|
22
48
|
r_embedded_end()
|
23
49
|
{
|
24
50
|
Rf_endEmbeddedR(0);
|
51
|
+
|
52
|
+
#ifdef __FreeBSD__
|
53
|
+
fpsetmask(fpmask_preset);
|
54
|
+
#endif
|
25
55
|
}
|
26
56
|
|
@@ -7,7 +7,7 @@ module RBridge
|
|
7
7
|
lib_name = "librbridge" + "." + RbConfig::CONFIG['DLEXT']
|
8
8
|
ffi_lib File.expand_path( lib_name, __dir__ )
|
9
9
|
|
10
|
-
attach_function :r_embedded_init, [], :void
|
10
|
+
attach_function :r_embedded_init, [:bool], :void
|
11
11
|
attach_function :r_embedded_end, [], :void
|
12
12
|
|
13
13
|
attach_function :r_vec_create_str, [:int], :pointer
|
@@ -49,8 +49,11 @@ module RBridge
|
|
49
49
|
|
50
50
|
# From here, Ruby interface
|
51
51
|
|
52
|
-
def self.init_embedded_r()
|
53
|
-
|
52
|
+
def self.init_embedded_r( unlimited_cstack: false )
|
53
|
+
if(unlimited_cstack.class != TrueClass && unlimited_cstack.class != FalseClass)
|
54
|
+
raise "init_embedded_r() can take true or false for unlimited C stack size. true: unlimited, false: default."
|
55
|
+
end
|
56
|
+
r_embedded_init( unlimited_cstack )
|
54
57
|
end
|
55
58
|
|
56
59
|
def self.end_embedded_r()
|
data/lib/r_bridge/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: r_bridge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Toshihiro Umehara
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-10-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -73,7 +73,7 @@ metadata:
|
|
73
73
|
homepage_uri: https://github.com/niceume/r_bridge
|
74
74
|
source_code_uri: https://github.com/niceume/r_bridge
|
75
75
|
changelog_uri: https://github.com/niceume/r_bridge
|
76
|
-
post_install_message:
|
76
|
+
post_install_message:
|
77
77
|
rdoc_options: []
|
78
78
|
require_paths:
|
79
79
|
- lib
|
@@ -88,8 +88,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: '0'
|
90
90
|
requirements: []
|
91
|
-
rubygems_version: 3.1.
|
92
|
-
signing_key:
|
91
|
+
rubygems_version: 3.1.4
|
92
|
+
signing_key:
|
93
93
|
specification_version: 4
|
94
94
|
summary: Enables Ruby to construct and evaluate R internal objects
|
95
95
|
test_files: []
|