nanoarrow 0.1.1 → 0.1.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: a01c23d857a3993f98281df9c297cc68e27550cdd19eff8844dc088389e73375
4
- data.tar.gz: 272666407eaab6685a2739e4e318a9f17df6f3284a2b5438cd5a6729d9ca6345
3
+ metadata.gz: a7006022b54eed1e4dbe453d1cb591afe02983bd1d48af8a1adde8100156e932
4
+ data.tar.gz: 1358afb3611b1b4a046e1f275c506b32c824b87e9af05f01541bad58c8e7f9e1
5
5
  SHA512:
6
- metadata.gz: 86fcf358b4353c6b7047907a691c0742e3404c0030f7f486bd60295746c8ac6ede47630cbb4d88585166f1ac5e900ad9be688952613251efbeca26027746202c
7
- data.tar.gz: cc2e9133a58184ec28159268840d5831eec8b2fd445986da2f36b2c7743ffa567e581979771f4294481ff9af82e2c504d6358d5856ef3cf0d679b3b103f61e29
6
+ metadata.gz: cf2d3c844f5fcdf77e9ec9e3bd402ae466e990a9ae4c9cc536cc7e1a3844118b3a8d30128fc0384090d8c6acd9a1b8e9740d90614005c652b00cc473f8735d30
7
+ data.tar.gz: 5be7d313f2ee69ee4fe2623b144c3eec53e4ef131be7de0075771891248a67ffdd6201272f54bbef7582381c20f758b88103ce98742f722a91b5e27dab4eac2c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## 0.1.3 (2026-08-05)
2
+
3
+ - Fixed issue with GC compaction
4
+
5
+ ## 0.1.2 (2026-07-22)
6
+
7
+ - Fixed `to_a` method for struct type
8
+
1
9
  ## 0.1.1 (2026-07-21)
2
10
 
3
11
  - Added support for more types
@@ -8,8 +8,8 @@ VALUE cCArray;
8
8
  static void array_mark(void* ptr)
9
9
  {
10
10
  array_t* array = (array_t*) ptr;
11
- rb_gc_mark_movable(array->base);
12
- rb_gc_mark_movable(array->schema);
11
+ rb_gc_mark(array->base);
12
+ rb_gc_mark(array->schema);
13
13
  }
14
14
 
15
15
  const rb_data_type_t array_data_type = {
@@ -13,7 +13,7 @@ typedef struct array_builder {
13
13
  static void array_builder_mark(void* ptr)
14
14
  {
15
15
  array_builder_t* builder = (array_builder_t*) ptr;
16
- rb_gc_mark_movable(builder->c_array);
16
+ rb_gc_mark(builder->c_array);
17
17
  }
18
18
 
19
19
  const rb_data_type_t array_builder_data_type = {
@@ -14,8 +14,8 @@ typedef struct array_stream {
14
14
  static void array_stream_mark(void* ptr)
15
15
  {
16
16
  array_stream_t* stream = (array_stream_t*) ptr;
17
- rb_gc_mark_movable(stream->base);
18
- rb_gc_mark_movable(stream->cached_schema);
17
+ rb_gc_mark(stream->base);
18
+ rb_gc_mark(stream->cached_schema);
19
19
  }
20
20
 
21
21
  const rb_data_type_t array_stream_data_type = {
@@ -51,14 +51,13 @@ static VALUE array_stream_import_from_c_capsule(VALUE klass, VALUE schema_capsul
51
51
 
52
52
  static VALUE array_stream_from_c_arrays(VALUE klass, VALUE arrays, VALUE schema, VALUE validate)
53
53
  {
54
- array_stream_t* stream;
55
- VALUE out = array_stream_allocate(klass);
56
- GetArrayStream(out, stream);
54
+ struct ArrowArrayStream* c_array_stream_out;
55
+ VALUE base = alloc_c_array_stream(&c_array_stream_out);
57
56
 
58
57
  // TODO move to parameter
59
58
  VALUE move = Qfalse;
60
59
 
61
- VALUE out_schema;
60
+ VALUE out_schema = schema;
62
61
  VALUE validate_schema;
63
62
  if (RTEST(validate) && !RTEST(move))
64
63
  {
@@ -73,18 +72,15 @@ static VALUE array_stream_from_c_arrays(VALUE klass, VALUE arrays, VALUE schema,
73
72
  else
74
73
  out_schema = rb_funcall(schema, rb_intern("deep_dup"), 0);
75
74
 
76
- schema_t* schema_ptr;
77
- GetSchema(out_schema, schema_ptr);
75
+ schema_t* out_schema_ptr;
76
+ GetSchema(out_schema, out_schema_ptr);
78
77
 
79
78
  Check_Type(arrays, T_ARRAY);
80
79
  long arrays_len = RARRAY_LEN(arrays);
81
80
 
82
- stream->base = alloc_c_array_stream(&stream->ptr);
83
-
84
- int code = ArrowBasicArrayStreamInit(stream->ptr, schema_ptr->ptr, arrays_len);
81
+ int code = ArrowBasicArrayStreamInit(c_array_stream_out, out_schema_ptr->ptr, arrays_len);
85
82
  raise_error_not_ok("ArrowBasicArrayStreamInit()", code);
86
83
 
87
- struct ArrowArrayStream* c_array_stream_out = stream->ptr;
88
84
  struct ArrowArray tmp;
89
85
  for (long i = 0; i < arrays_len; i++)
90
86
  {
@@ -110,6 +106,11 @@ static VALUE array_stream_from_c_arrays(VALUE klass, VALUE arrays, VALUE schema,
110
106
  raise_message_not_ok(&error, "ArrowBasicArrayStreamValidate()", code);
111
107
  }
112
108
 
109
+ array_stream_t* stream;
110
+ VALUE out = array_stream_allocate(klass);
111
+ GetArrayStream(out, stream);
112
+ stream->base = base;
113
+ stream->ptr = c_array_stream_out;
113
114
  return out;
114
115
  }
115
116
 
@@ -14,8 +14,8 @@ typedef struct array_view {
14
14
  static void array_view_mark(void* ptr)
15
15
  {
16
16
  array_view_t* view = (array_view_t*) ptr;
17
- rb_gc_mark_movable(view->base);
18
- rb_gc_mark_movable(view->array_base);
17
+ rb_gc_mark(view->base);
18
+ rb_gc_mark(view->array_base);
19
19
  }
20
20
 
21
21
  const rb_data_type_t array_view_data_type = {
@@ -8,7 +8,7 @@ VALUE cCBuffer;
8
8
  static void buffer_mark(void* ptr)
9
9
  {
10
10
  buffer_t* buffer = (buffer_t*) ptr;
11
- rb_gc_mark_movable(buffer->base);
11
+ rb_gc_mark(buffer->base);
12
12
  }
13
13
 
14
14
  const rb_data_type_t buffer_data_type = {
@@ -14,8 +14,8 @@ typedef struct mat_array_stream {
14
14
  static void mat_array_stream_mark(void* ptr)
15
15
  {
16
16
  mat_array_stream_t* stream = (mat_array_stream_t*) ptr;
17
- rb_gc_mark_movable(stream->schema);
18
- rb_gc_mark_movable(stream->arrays);
17
+ rb_gc_mark(stream->schema);
18
+ rb_gc_mark(stream->arrays);
19
19
  }
20
20
 
21
21
  const rb_data_type_t mat_array_stream_data_type = {
@@ -8,7 +8,7 @@ VALUE cCSchema;
8
8
  static void schema_mark(void* ptr)
9
9
  {
10
10
  schema_t* schema = (schema_t*) ptr;
11
- rb_gc_mark_movable(schema->base);
11
+ rb_gc_mark(schema->base);
12
12
  }
13
13
 
14
14
  const rb_data_type_t schema_data_type = {
@@ -13,7 +13,7 @@ typedef struct schema_builder {
13
13
  static void schema_builder_mark(void* ptr)
14
14
  {
15
15
  schema_builder_t* builder = (schema_builder_t*) ptr;
16
- rb_gc_mark_movable(builder->c_schema);
16
+ rb_gc_mark(builder->c_schema);
17
17
  }
18
18
 
19
19
  const rb_data_type_t schema_builder_data_type = {
@@ -14,7 +14,7 @@ typedef struct schema_view {
14
14
  static void schema_view_mark(void* ptr)
15
15
  {
16
16
  schema_view_t* view = (schema_view_t*) ptr;
17
- rb_gc_mark_movable(view->base);
17
+ rb_gc_mark(view->base);
18
18
  }
19
19
 
20
20
  const rb_data_type_t schema_view_data_type = {
@@ -198,5 +198,5 @@ void c_array_shallow_copy(VALUE base, const struct ArrowArray* src, struct Arrow
198
198
 
199
199
  ArrowArrayMove(tmp, dst);
200
200
 
201
- (void) shelter;
201
+ RB_GC_GUARD(shelter);
202
202
  }
@@ -108,7 +108,7 @@ module Nanoarrow
108
108
  if @children.any?
109
109
  keys = @schema.children.map(&:name)
110
110
  @children[0].each.zip(*@children[1..]) do |v|
111
- block.call(v[0].nil? ? nil : keys.zip(v).to_h)
111
+ block.call(keys.zip(v).to_h)
112
112
  end
113
113
  end
114
114
  end
@@ -1,3 +1,3 @@
1
1
  module Nanoarrow
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nanoarrow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kane