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 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: []