r_bridge 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ee29073e5090bf0ac44de5a81374aad07050f0518ea7bd0c3942d4d7ce523487
4
- data.tar.gz: b93811a27fb58066cd93660009c0a9555cf7e74380727149e9f8a353ccb8893d
3
+ metadata.gz: 4d7f74da4e1b6be0717eb1aad13197269106b65abd080922cf19e34f7ed58b5d
4
+ data.tar.gz: e8b58e04c13954ed86ca44070861a7fb59f9b5d6fc66c0aa0268b631ebd56e23
5
5
  SHA512:
6
- metadata.gz: ce3cbb9fd43d040599d88e3f49512917b9981f268816c5f82ae2e0722d86e33e3934ae5dacf796e0c467bdd6ff08001b33f2c25cb97d594698adbe895a199344
7
- data.tar.gz: b850ea4e23d9a5b504c94ca761640a9e3e8f34bb08b79809b6e563d0457ac9b9f31257b1817e3eb4c47cb66ec8862c2acbc928ced2a0c901bb445cad656b613b
6
+ metadata.gz: 98ef89344e79fd315d8bf05d80a74116747ad6d7e0faaafb38895dbb5b787626d0fc44113cd504d8f3b1537264725177822e6280fa5eeee3d96228a68a6d140a
7
+ data.tar.gz: d89e882f5f0a3cc345345e0436da5848de0d6d257876debe6df64aae5bc5938162b831a535c97fb8791f844427555c096b2e9841d86cecbe2a7a24414105fc58
@@ -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
- size_t localArgc = 2;
11
- char localArgs[][50] = {"R", "--silent"};
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( localArgc , args );
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
- r_embedded_init()
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()
@@ -1,3 +1,3 @@
1
1
  module RBridge
2
- VERSION = "0.5.2"
2
+ VERSION = "0.5.3"
3
3
  end
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.2
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-01-31 00:00:00.000000000 Z
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.2
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: []