carray 2.0.1 → 3.0.0

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.
Files changed (339) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +5 -25
  3. data/CHANGELOG.md +16 -0
  4. data/LICENSE +1 -1
  5. data/NEWS.md +3 -0
  6. data/README.md +128 -44
  7. data/carray.gemspec +22 -24
  8. data/ext/ca_array_pool.c +91 -0
  9. data/ext/ca_axis_descriptor.h +186 -0
  10. data/ext/ca_axis_dispatch.c +924 -0
  11. data/ext/ca_axis_group.c +1208 -0
  12. data/ext/ca_bincmp_dispatch.c +76 -0
  13. data/ext/ca_bincmp_dispatch.h +85 -0
  14. data/ext/ca_binop_dispatch.c +125 -0
  15. data/ext/ca_binop_dispatch.h +159 -0
  16. data/ext/ca_categorical_iterator.c +1375 -0
  17. data/ext/ca_compare.c +94 -0
  18. data/ext/ca_compare.h +26 -0
  19. data/ext/ca_composite_dispatch.c +414 -0
  20. data/ext/ca_composite_dispatch.h +116 -0
  21. data/ext/ca_for_buffer.h +96 -0
  22. data/ext/ca_for_each_element.h +241 -0
  23. data/ext/ca_group_iter.c +304 -0
  24. data/ext/ca_iter_substrate.h +325 -0
  25. data/ext/ca_kernel_iterator.c +4321 -0
  26. data/ext/ca_kernel_iterator.h +2603 -0
  27. data/ext/ca_moncmp_dispatch.c +37 -0
  28. data/ext/ca_moncmp_dispatch.h +62 -0
  29. data/ext/ca_monop_dispatch.c +200 -0
  30. data/ext/ca_monop_dispatch.h +235 -0
  31. data/ext/ca_obj_array.c +355 -359
  32. data/ext/ca_obj_bincmp.c +809 -0
  33. data/ext/ca_obj_binop.c +892 -0
  34. data/ext/ca_obj_bitarray.c +369 -164
  35. data/ext/ca_obj_bitfield.c +294 -234
  36. data/ext/ca_obj_block.c +189 -711
  37. data/ext/ca_obj_byte_swap.c +766 -0
  38. data/ext/ca_obj_const_string.c +965 -0
  39. data/ext/ca_obj_face.c +670 -0
  40. data/ext/ca_obj_face.h +247 -0
  41. data/ext/ca_obj_fake.c +228 -100
  42. data/ext/ca_obj_farray.c +54 -441
  43. data/ext/ca_obj_field.c +82 -529
  44. data/ext/ca_obj_fixlen_string.c +306 -0
  45. data/ext/ca_obj_grid.c +858 -440
  46. data/ext/ca_obj_meld.c +1034 -0
  47. data/ext/ca_obj_moncmp.c +569 -0
  48. data/ext/ca_obj_monop.c +1111 -0
  49. data/ext/ca_obj_object.c +772 -297
  50. data/ext/ca_obj_record.c +468 -0
  51. data/ext/ca_obj_reduce.c +97 -82
  52. data/ext/ca_obj_refer.c +569 -459
  53. data/ext/ca_obj_remap.c +475 -0
  54. data/ext/ca_obj_repeat.c +92 -477
  55. data/ext/ca_obj_roll.c +616 -0
  56. data/ext/ca_obj_select.c +344 -296
  57. data/ext/ca_obj_select_axis.c +1296 -0
  58. data/ext/ca_obj_shift.c +229 -791
  59. data/ext/ca_obj_source.c +78 -0
  60. data/ext/ca_obj_stack.c +1173 -0
  61. data/ext/ca_obj_stride.c +2501 -0
  62. data/ext/ca_obj_string.c +268 -0
  63. data/ext/ca_obj_tile.c +614 -0
  64. data/ext/ca_obj_time.c +546 -0
  65. data/ext/ca_obj_timedelta.c +435 -0
  66. data/ext/ca_obj_transpose.c +62 -516
  67. data/ext/ca_obj_triop.c +746 -0
  68. data/ext/ca_obj_unbound_repeat.c +207 -240
  69. data/ext/ca_obj_window.c +1131 -563
  70. data/ext/ca_op_byte_swap.c +175 -0
  71. data/ext/ca_op_ipower.c +319 -0
  72. data/ext/ca_op_powi.h +88 -0
  73. data/ext/ca_sort_kernels.h +132 -0
  74. data/ext/ca_sweep_engine.c +430 -0
  75. data/ext/ca_sweep_engine.h +157 -0
  76. data/ext/ca_transform_common.c +228 -0
  77. data/ext/ca_triop_dispatch.c +55 -0
  78. data/ext/ca_triop_dispatch.h +62 -0
  79. data/ext/carray.h +795 -402
  80. data/ext/carray_access.c +831 -711
  81. data/ext/carray_attribute.c +98 -329
  82. data/ext/carray_bincount.c +255 -0
  83. data/ext/carray_broadcast.c +283 -0
  84. data/ext/carray_call_cfunc.c +1360 -828
  85. data/ext/carray_call_cfunc.h +160 -0
  86. data/ext/carray_cast.c +1212 -301
  87. data/ext/carray_cast_func.rb +81 -40
  88. data/ext/carray_class.c +53 -63
  89. data/ext/carray_config.h +28 -0
  90. data/ext/carray_conversion.c +350 -346
  91. data/ext/carray_copy.c +156 -268
  92. data/ext/carray_core.c +1341 -198
  93. data/ext/carray_count.c +312 -0
  94. data/ext/carray_data_type.c +43 -19
  95. data/ext/carray_element.c +585 -213
  96. data/ext/carray_factorize.c +2542 -0
  97. data/ext/carray_generate.c +230 -559
  98. data/ext/carray_histogram.c +490 -0
  99. data/ext/carray_hold.c +228 -0
  100. data/ext/carray_index_classifier.c +1035 -0
  101. data/ext/carray_index_classifier.h +27 -0
  102. data/ext/carray_internal.h +120 -0
  103. data/ext/carray_kernels_bincmp.c +4445 -0
  104. data/ext/carray_kernels_binop.c +10979 -0
  105. data/ext/carray_kernels_init.c +36 -0
  106. data/ext/carray_kernels_map.c +3466 -0
  107. data/ext/carray_kernels_moncmp.c +2096 -0
  108. data/ext/carray_kernels_monop.c +18312 -0
  109. data/ext/carray_kernels_reduce_aggregate.c +25836 -0
  110. data/ext/carray_kernels_reduce_boolean.c +329 -0
  111. data/ext/carray_kernels_reduce_cumulative.c +14592 -0
  112. data/ext/carray_kernels_reduce_extreme.c +16947 -0
  113. data/ext/carray_kernels_reduce_variance.c +3909 -0
  114. data/ext/carray_kernels_scan.c +3692 -0
  115. data/ext/carray_kernels_search.c +32137 -0
  116. data/ext/carray_kernels_sort.c +10625 -0
  117. data/ext/carray_kernels_triop.c +1391 -0
  118. data/ext/carray_lazy.c +567 -0
  119. data/ext/carray_loop.c +88 -200
  120. data/ext/carray_mask.c +848 -154
  121. data/ext/carray_math_kernel.h +120 -0
  122. data/ext/carray_mathfunc.c +10 -241
  123. data/ext/carray_median_percentile.c +1257 -0
  124. data/ext/carray_memory_view.c +1625 -0
  125. data/ext/carray_operator.c +1526 -318
  126. data/ext/carray_order.c +664 -1394
  127. data/ext/carray_partition.c +416 -0
  128. data/ext/carray_random.c +518 -0
  129. data/ext/carray_scatter.c +357 -0
  130. data/ext/carray_slab.c +1219 -0
  131. data/ext/carray_slab.h +84 -0
  132. data/ext/carray_sort.c +829 -0
  133. data/ext/carray_sort_kernel.c +620 -0
  134. data/ext/carray_struct.c +695 -0
  135. data/ext/carray_test.c +343 -229
  136. data/ext/carray_undef.c +34 -17
  137. data/ext/carray_utils.c +175 -74
  138. data/ext/extconf.rb +216 -55
  139. data/ext/mk_call_cfunc.rb +480 -0
  140. data/ext/mkkernel.rb +8842 -0
  141. data/ext/ruby_carray.c +202 -101
  142. data/ext/version.h +5 -15
  143. data/ext/version.rb +5 -13
  144. data/lib/carray/arrow_tensor.rb +401 -0
  145. data/lib/carray/attribute.rb +166 -0
  146. data/lib/carray/autoload_carray.rb +220 -0
  147. data/lib/carray/autoload_method_extension.rb +44 -0
  148. data/lib/carray/axis_group.rb +711 -0
  149. data/lib/carray/basics.rb +481 -0
  150. data/lib/carray/bincount_nd.rb +358 -0
  151. data/lib/carray/block_iterator.rb +604 -0
  152. data/lib/carray/boolean_reduce.rb +109 -0
  153. data/lib/carray/categorical.rb +561 -0
  154. data/lib/carray/categorical_iterator.rb +1062 -0
  155. data/lib/carray/complex.rb +150 -0
  156. data/lib/carray/conditional.rb +216 -0
  157. data/lib/carray/const_string.rb +228 -0
  158. data/lib/carray/construct.rb +139 -328
  159. data/lib/carray/core_extensions.rb +240 -0
  160. data/lib/carray/data_type_extension.rb +233 -0
  161. data/lib/carray/fixlen_string.rb +95 -0
  162. data/lib/carray/frame/concat.rb +132 -0
  163. data/lib/carray/frame/convert.rb +95 -0
  164. data/lib/carray/frame/csv_parser.rb +211 -0
  165. data/lib/carray/frame/frame.rb +649 -0
  166. data/lib/carray/frame/group.rb +186 -0
  167. data/lib/carray/frame/io.rb +164 -0
  168. data/lib/carray/frame/join.rb +248 -0
  169. data/lib/carray/frame/records.rb +99 -0
  170. data/lib/carray/frame/sort.rb +113 -0
  171. data/lib/carray/frame/verbs.rb +299 -0
  172. data/lib/carray/frame.rb +16 -0
  173. data/lib/carray/histogram.rb +512 -0
  174. data/lib/carray/inspect.rb +37 -20
  175. data/lib/carray/iterator.rb +57 -349
  176. data/lib/carray/lazy.rb +889 -0
  177. data/lib/carray/mask_gap_fill.rb +200 -0
  178. data/lib/carray/math.rb +78 -342
  179. data/lib/carray/meld_reduce.rb +289 -0
  180. data/lib/carray/methods/align_addr.rb +116 -0
  181. data/lib/carray/methods/bin.rb +128 -0
  182. data/lib/carray/methods/bincount.rb +87 -0
  183. data/lib/carray/methods/bit_string.rb +92 -0
  184. data/lib/carray/methods/broadcast.rb +63 -0
  185. data/lib/carray/methods/choose.rb +39 -0
  186. data/lib/carray/methods/composition.rb +280 -0
  187. data/lib/carray/methods/gather_nd.rb +206 -0
  188. data/lib/carray/methods/index.rb +39 -0
  189. data/lib/carray/methods/insert_block.rb +99 -0
  190. data/lib/carray/methods/is_in.rb +141 -0
  191. data/lib/carray/methods/join.rb +90 -0
  192. data/lib/carray/methods/locate_addr.rb +47 -0
  193. data/lib/carray/methods/mask_duplicates.rb +41 -0
  194. data/lib/carray/methods/meshgrid.rb +91 -0
  195. data/lib/carray/methods/mode.rb +126 -0
  196. data/lib/carray/methods/nunique.rb +46 -0
  197. data/lib/carray/methods/resize.rb +56 -0
  198. data/lib/carray/methods/snap.rb +156 -0
  199. data/lib/carray/methods/string_format.rb +57 -0
  200. data/lib/carray/methods/unique.rb +47 -0
  201. data/lib/carray/methods/value_counts.rb +71 -0
  202. data/lib/carray/mkmf.rb +124 -101
  203. data/lib/carray/runtime.rb +108 -0
  204. data/lib/carray/serialize.rb +478 -167
  205. data/lib/carray/slab_iterator.rb +292 -0
  206. data/lib/carray/stack.rb +291 -0
  207. data/lib/carray/string.rb +56 -180
  208. data/lib/carray/string_operation_extension.rb +289 -0
  209. data/lib/carray/struct.rb +335 -323
  210. data/lib/carray/struct_builder.rb +697 -0
  211. data/lib/carray/table.rb +41 -2
  212. data/lib/carray/time.rb +2255 -38
  213. data/lib/carray/window_iterator.rb +655 -0
  214. data/lib/carray.rb +55 -57
  215. metadata +163 -130
  216. data/Rakefile +0 -51
  217. data/TODO.md +0 -18
  218. data/ext/ca_iter_block.c +0 -257
  219. data/ext/ca_iter_dimension.c +0 -299
  220. data/ext/ca_iter_window.c +0 -214
  221. data/ext/ca_obj_mapping.c +0 -644
  222. data/ext/carray_iterator.c +0 -641
  223. data/ext/carray_math.rb +0 -850
  224. data/ext/carray_numeric.c +0 -259
  225. data/ext/carray_sort_addr.c +0 -254
  226. data/ext/carray_stat.c +0 -2100
  227. data/ext/carray_stat_proc.rb +0 -1999
  228. data/ext/mkmath.rb +0 -741
  229. data/ext/ruby_ccomplex.c +0 -509
  230. data/ext/ruby_float_func.c +0 -86
  231. data/lib/carray/array.rb +0 -8
  232. data/lib/carray/autoload/autoload_base.rb +0 -19
  233. data/lib/carray/autoload/autoload_gem_cairo.rb +0 -9
  234. data/lib/carray/autoload/autoload_gem_ffi.rb +0 -9
  235. data/lib/carray/autoload/autoload_gem_gnuplot.rb +0 -2
  236. data/lib/carray/autoload/autoload_gem_io_csv.rb +0 -14
  237. data/lib/carray/autoload/autoload_gem_io_pg.rb +0 -6
  238. data/lib/carray/autoload/autoload_gem_io_sqlite3.rb +0 -12
  239. data/lib/carray/autoload/autoload_gem_narray.rb +0 -10
  240. data/lib/carray/autoload/autoload_gem_numo_narray.rb +0 -15
  241. data/lib/carray/autoload/autoload_gem_opencv.rb +0 -16
  242. data/lib/carray/autoload/autoload_gem_random.rb +0 -8
  243. data/lib/carray/autoload/autoload_gem_rmagick.rb +0 -23
  244. data/lib/carray/autoload/autoload_gem_zimg.rb +0 -3
  245. data/lib/carray/autoload/autoload_io_imagemagick.rb +0 -6
  246. data/lib/carray/autoload/autoload_math_histogram.rb +0 -5
  247. data/lib/carray/autoload/autoload_math_recurrence.rb +0 -6
  248. data/lib/carray/autoload/autoload_object_iterator.rb +0 -1
  249. data/lib/carray/autoload/autoload_object_link.rb +0 -1
  250. data/lib/carray/autoload/autoload_object_pack.rb +0 -2
  251. data/lib/carray/autoload.rb +0 -141
  252. data/lib/carray/basic.rb +0 -191
  253. data/lib/carray/broadcast.rb +0 -101
  254. data/lib/carray/compose.rb +0 -315
  255. data/lib/carray/convert.rb +0 -115
  256. data/lib/carray/info.rb +0 -110
  257. data/lib/carray/io/imagemagick.rb +0 -235
  258. data/lib/carray/mask.rb +0 -102
  259. data/lib/carray/math/histogram.rb +0 -177
  260. data/lib/carray/math/recurrence.rb +0 -93
  261. data/lib/carray/object/ca_obj_iterator.rb +0 -50
  262. data/lib/carray/object/ca_obj_link.rb +0 -50
  263. data/lib/carray/object/ca_obj_pack.rb +0 -99
  264. data/lib/carray/obsolete.rb +0 -256
  265. data/lib/carray/ordering.rb +0 -181
  266. data/lib/carray/testing.rb +0 -51
  267. data/lib/carray/transform.rb +0 -109
  268. data/mailmap +0 -1
  269. data/misc/Methods.ja.md +0 -182
  270. data/misc/NOTE +0 -51
  271. data/spec/Classes/CABitfield_spec.rb +0 -58
  272. data/spec/Classes/CABlockIterator_spec.rb +0 -114
  273. data/spec/Classes/CABlock_spec.rb +0 -205
  274. data/spec/Classes/CAField_spec.rb +0 -39
  275. data/spec/Classes/CAGrid_spec.rb +0 -75
  276. data/spec/Classes/CAMap_spec.rb +0 -0
  277. data/spec/Classes/CAMapping_spec.rb +0 -105
  278. data/spec/Classes/CAObject_attribute_spec.rb +0 -33
  279. data/spec/Classes/CAObject_spec.rb +0 -33
  280. data/spec/Classes/CARefer_spec.rb +0 -93
  281. data/spec/Classes/CARepeat_spec.rb +0 -65
  282. data/spec/Classes/CASelect_spec.rb +0 -22
  283. data/spec/Classes/CAShift_spec.rb +0 -16
  284. data/spec/Classes/CAStruct_spec.rb +0 -71
  285. data/spec/Classes/CATranspose_spec.rb +0 -60
  286. data/spec/Classes/CAUnboudRepeat_spec.rb +0 -102
  287. data/spec/Classes/CAWindow_spec.rb +0 -54
  288. data/spec/Classes/CAWrap_spec.rb +0 -8
  289. data/spec/Classes/CArray_spec.rb +0 -184
  290. data/spec/Classes/CScalar_spec.rb +0 -55
  291. data/spec/Features/feature_130_spec.rb +0 -19
  292. data/spec/Features/feature_attributes_spec.rb +0 -280
  293. data/spec/Features/feature_boolean_spec.rb +0 -98
  294. data/spec/Features/feature_broadcast.rb +0 -116
  295. data/spec/Features/feature_cast_function.rb +0 -19
  296. data/spec/Features/feature_cast_spec.rb +0 -33
  297. data/spec/Features/feature_class_spec.rb +0 -84
  298. data/spec/Features/feature_complex_spec.rb +0 -42
  299. data/spec/Features/feature_composite_spec.rb +0 -124
  300. data/spec/Features/feature_convert_spec.rb +0 -46
  301. data/spec/Features/feature_copy_spec.rb +0 -123
  302. data/spec/Features/feature_creation_spec.rb +0 -84
  303. data/spec/Features/feature_element_spec.rb +0 -144
  304. data/spec/Features/feature_extream_spec.rb +0 -54
  305. data/spec/Features/feature_generate_spec.rb +0 -74
  306. data/spec/Features/feature_index_spec.rb +0 -69
  307. data/spec/Features/feature_mask_spec.rb +0 -580
  308. data/spec/Features/feature_math_spec.rb +0 -97
  309. data/spec/Features/feature_order_spec.rb +0 -146
  310. data/spec/Features/feature_ref_store_spec.rb +0 -209
  311. data/spec/Features/feature_serialization_spec.rb +0 -125
  312. data/spec/Features/feature_stat_spec.rb +0 -397
  313. data/spec/Features/feature_virtual_spec.rb +0 -48
  314. data/spec/Features/method_eq_spec.rb +0 -81
  315. data/spec/Features/method_is_nan_spec.rb +0 -12
  316. data/spec/Features/method_map_spec.rb +0 -54
  317. data/spec/Features/method_max_with.rb +0 -20
  318. data/spec/Features/method_min_with.rb +0 -19
  319. data/spec/Features/method_ne_spec.rb +0 -18
  320. data/spec/Features/method_project_spec.rb +0 -188
  321. data/spec/Features/method_ref_spec.rb +0 -27
  322. data/spec/Features/method_round_spec.rb +0 -11
  323. data/spec/Features/method_s_linspace_spec.rb +0 -48
  324. data/spec/Features/method_s_span_spec.rb +0 -14
  325. data/spec/Features/method_seq_spec.rb +0 -47
  326. data/spec/Features/method_sort_with.rb +0 -43
  327. data/spec/Features/method_sorted_with.rb +0 -29
  328. data/spec/Features/method_span_spec.rb +0 -42
  329. data/spec/Features/method_wrap_readonly_spec.rb +0 -43
  330. data/spec/UnitTest/test_CAVirtual.rb +0 -214
  331. data/spec/spec_all.rb +0 -10
  332. data/utils/ca_ase.rb +0 -21
  333. data/utils/ca_methods.rb +0 -15
  334. data/utils/cast_checker.rb +0 -30
  335. data/utils/convert_test.rb +0 -73
  336. data/utils/extract_yard.rb +0 -22
  337. data/utils/guess_shape.rb +0 -76
  338. data/utils/monkey_patch_methods.rb +0 -62
  339. data/utils/remove_resource_fork.sh +0 -5
data/lib/carray.rb CHANGED
@@ -1,72 +1,70 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # lib/carray.rb
4
- #
5
- # This file is part of Ruby/CArray extension library.
6
- #
7
- # Copyright (C) 2005-2025 Hiroki Motoyoshi
8
- #
9
- # ----------------------------------------------------------------------------
1
+ # main
10
2
 
11
- major = RbConfig::CONFIG['MAJOR'].to_i
12
- minor = RbConfig::CONFIG['MINOR'].to_i
13
- teeny = RbConfig::CONFIG['TEENY'].to_i
14
- ruby_version_code = major * 100 + minor * 10 + teeny
3
+ require 'carray_ext'
15
4
 
16
- if ruby_version_code < 190
17
- require 'complex'
5
+ # Top-level CAMath module -- math namespace for CArrays.
6
+ # `CAMath.sin(ca)` works because module functions inherited
7
+ # from Math (via include) accept any object that responds to
8
+ # the corresponding instance method; CArray defines those in
9
+ # C.
10
+ module CAMath
11
+ include Math
18
12
  end
19
13
 
20
- # main
21
-
22
- require 'carray_ext'
23
-
24
- require 'carray/inspect'
25
- require 'carray/basic'
14
+ # carray/inspect is loaded lazily via autoload_carray (#inspect / #source_code
15
+ # stubs). #inspect fires on the first p / pp / irb display or error-message
16
+ # interpolation, so compute programs that never print a CArray skip it.
26
17
  require 'carray/construct'
27
- require 'carray/mask'
28
- require 'carray/compose'
29
- require 'carray/transform'
30
- require 'carray/convert'
31
- require 'carray/testing'
32
- require 'carray/ordering'
33
- require 'carray/broadcast'
18
+ require 'carray/data_type_extension'
19
+ # carray/stack is loaded lazily via autoload_carray (entry-method stubs).
20
+ # CAStack is C-defined so its constant is always present; only the Ruby
21
+ # composition surface (stack/meld/montage/split/append) needs the file.
22
+ require 'carray/runtime' # load-bearing Ruby support the core depends on
23
+ require 'carray/basics' # frequently-used convenience methods kept eager
24
+ require 'carray/conditional' # then_else / replace_where / conditional
25
+ require 'carray/mask_gap_fill' # unmask/strip_mask method: keyword (hold / linear gap-fill)
26
+ require 'carray/attribute' # per-instance metadata Hash (#attribute / #has_attribute?)
27
+ require 'carray/boolean_reduce' # all/any/none skip_masked: keyword (Kleene fold)
28
+ require 'carray/meld_reduce' # CAMeld per-parent reduce fast path (sum/mean/min/max along meld_axis)
29
+ # carray/ordering CIFY (2026-06-21): translated to ext/carray_order.c
34
30
 
35
31
  require 'carray/math'
32
+ # carray/clip_cast CIFY (2026-06-23): translated to ext/carray_cast.c
33
+ require 'carray/complex' # real / imag accessors; MUST precede carray/lazy
34
+ # (lazy aliases real/imag at load time)
35
+ require 'carray/lazy' # PROPOSAL_LAZY_ELEMENTWISE_VIEW Phase 1 P.1.2
36
+ # carray/face.rb was deleted (the Phase 1 skeleton CArray::Face module
37
+ # became dead weight, replaced by C-layer macro deploy +
38
+ # copy_state/storage_to_scalar convention).
39
+ require 'carray/time' # CATime / CATimedelta (PROPOSAL_CAFACE_PHASE_2 F.2.4)
40
+ # carray/methods/* (bincount / broadcast / gather_nd+put_nd) are small
41
+ # single-feature method files, loaded lazily via autoload_carray.
36
42
  require 'carray/iterator'
37
- require 'carray/struct'
38
- require 'carray/table'
39
- require 'carray/array'
40
- require 'carray/string'
41
- require 'carray/time'
43
+ # carray/struct is loaded lazily via autoload_carray (constant + entry-method
44
+ # stubs). Nothing in the eager core references CAStruct/CAUnion, so programs
45
+ # that only use numeric arrays never pay its load cost.
46
+ require 'carray/string_operation_extension' # shared StringOperationMixin (must precede the Faces)
47
+ require 'carray/const_string' # PROPOSAL_CATEXT.md T.2 — CAConstString construction surface
48
+ require 'carray/string' # PROPOSAL_STRING_FACE_TRIO.md P.1 — CAString construction surface
49
+ require 'carray/fixlen_string' # PROPOSAL_STRING_FACE_TRIO.md P.1 — CAFixlenString construction surface
50
+ # CArray.format lives in carray/methods/string_format.rb, autoloaded on first call
42
51
 
43
- # obsolete methods
52
+ # carray/frame is loaded lazily via autoload_carray (CAFrame / GroupedFrame
53
+ # constants). Nothing in the eager core references the frame, so programs that
54
+ # only use arrays never pay its load cost.
44
55
 
45
- require 'carray/obsolete'
56
+ # opt-in refinements (loaded on first reference to the constant)
46
57
 
47
- # autoload
58
+ class CArray
59
+ autoload :CoreExtensions, 'carray/core_extensions'
60
+ end
48
61
 
49
- unless $CARRAY_NO_AUTOLOAD
50
-
51
- require 'carray/autoload'
52
- require 'carray/autoload/autoload_base'
53
- require 'carray/autoload/autoload_io_imagemagick'
54
- require 'carray/autoload/autoload_math_histogram'
55
- require 'carray/autoload/autoload_math_recurrence'
56
- require 'carray/autoload/autoload_object_iterator'
57
- require 'carray/autoload/autoload_object_link'
58
- require 'carray/autoload/autoload_object_pack'
62
+ # autoload
59
63
 
60
- require 'carray/autoload/autoload_gem_random'
61
- require 'carray/autoload/autoload_gem_gnuplot'
62
- require 'carray/autoload/autoload_gem_narray'
63
- require 'carray/autoload/autoload_gem_numo_narray'
64
- # require 'carray/autoload/autoload_gem_io_csv'
65
- # require 'carray/autoload/autoload_gem_io_sqlite3'
66
- # require 'carray/autoload/autoload_gem_rmagick'
67
- # require 'carray/autoload/autoload_gem_cairo'
68
- # require 'carray/autoload/autoload_gem_opencv'
69
- # require 'carray/autoload/autoload_gem_ffi'
64
+ require 'carray/autoload_method_extension'
70
65
 
71
- undef autoload_method
66
+ class CArray
67
+ extend AutoloadMethodExtension
72
68
  end
69
+
70
+ require 'carray/autoload_carray'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carray
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.1
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Hiroki Motoyoshi
7
+ - himotoyoshi
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-12-22 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies: []
12
12
  description: |2
13
13
  Ruby/CArray is an extension library for the multi-dimensional numerical array
@@ -15,194 +15,226 @@ description: |2
15
15
  handled by the C language. CArray stores integers or floating-point numbers in
16
16
  memory block and treats them collectively to ensure efficient performance.
17
17
  Therefore, Ruby/CArray is suitable for numerical computation and data analysis.
18
- email: ''
18
+ email:
19
+ - himotoyoshi@users.noreply.github.com
19
20
  executables: []
20
21
  extensions:
21
22
  - ext/extconf.rb
22
23
  extra_rdoc_files: []
23
24
  files:
24
25
  - ".yardopts"
26
+ - CHANGELOG.md
25
27
  - LICENSE
26
28
  - NEWS.md
27
29
  - README.md
28
- - Rakefile
29
- - TODO.md
30
30
  - carray.gemspec
31
- - ext/ca_iter_block.c
32
- - ext/ca_iter_dimension.c
33
- - ext/ca_iter_window.c
31
+ - ext/ca_array_pool.c
32
+ - ext/ca_axis_descriptor.h
33
+ - ext/ca_axis_dispatch.c
34
+ - ext/ca_axis_group.c
35
+ - ext/ca_bincmp_dispatch.c
36
+ - ext/ca_bincmp_dispatch.h
37
+ - ext/ca_binop_dispatch.c
38
+ - ext/ca_binop_dispatch.h
39
+ - ext/ca_categorical_iterator.c
40
+ - ext/ca_compare.c
41
+ - ext/ca_compare.h
42
+ - ext/ca_composite_dispatch.c
43
+ - ext/ca_composite_dispatch.h
44
+ - ext/ca_for_buffer.h
45
+ - ext/ca_for_each_element.h
46
+ - ext/ca_group_iter.c
47
+ - ext/ca_iter_substrate.h
48
+ - ext/ca_kernel_iterator.c
49
+ - ext/ca_kernel_iterator.h
50
+ - ext/ca_moncmp_dispatch.c
51
+ - ext/ca_moncmp_dispatch.h
52
+ - ext/ca_monop_dispatch.c
53
+ - ext/ca_monop_dispatch.h
34
54
  - ext/ca_obj_array.c
55
+ - ext/ca_obj_bincmp.c
56
+ - ext/ca_obj_binop.c
35
57
  - ext/ca_obj_bitarray.c
36
58
  - ext/ca_obj_bitfield.c
37
59
  - ext/ca_obj_block.c
60
+ - ext/ca_obj_byte_swap.c
61
+ - ext/ca_obj_const_string.c
62
+ - ext/ca_obj_face.c
63
+ - ext/ca_obj_face.h
38
64
  - ext/ca_obj_fake.c
39
65
  - ext/ca_obj_farray.c
40
66
  - ext/ca_obj_field.c
67
+ - ext/ca_obj_fixlen_string.c
41
68
  - ext/ca_obj_grid.c
42
- - ext/ca_obj_mapping.c
69
+ - ext/ca_obj_meld.c
70
+ - ext/ca_obj_moncmp.c
71
+ - ext/ca_obj_monop.c
43
72
  - ext/ca_obj_object.c
73
+ - ext/ca_obj_record.c
44
74
  - ext/ca_obj_reduce.c
45
75
  - ext/ca_obj_refer.c
76
+ - ext/ca_obj_remap.c
46
77
  - ext/ca_obj_repeat.c
78
+ - ext/ca_obj_roll.c
47
79
  - ext/ca_obj_select.c
80
+ - ext/ca_obj_select_axis.c
48
81
  - ext/ca_obj_shift.c
82
+ - ext/ca_obj_source.c
83
+ - ext/ca_obj_stack.c
84
+ - ext/ca_obj_stride.c
85
+ - ext/ca_obj_string.c
86
+ - ext/ca_obj_tile.c
87
+ - ext/ca_obj_time.c
88
+ - ext/ca_obj_timedelta.c
49
89
  - ext/ca_obj_transpose.c
90
+ - ext/ca_obj_triop.c
50
91
  - ext/ca_obj_unbound_repeat.c
51
92
  - ext/ca_obj_window.c
93
+ - ext/ca_op_byte_swap.c
94
+ - ext/ca_op_ipower.c
95
+ - ext/ca_op_powi.h
96
+ - ext/ca_sort_kernels.h
97
+ - ext/ca_sweep_engine.c
98
+ - ext/ca_sweep_engine.h
99
+ - ext/ca_transform_common.c
100
+ - ext/ca_triop_dispatch.c
101
+ - ext/ca_triop_dispatch.h
52
102
  - ext/carray.h
53
103
  - ext/carray_access.c
54
104
  - ext/carray_attribute.c
105
+ - ext/carray_bincount.c
106
+ - ext/carray_broadcast.c
55
107
  - ext/carray_call_cfunc.c
108
+ - ext/carray_call_cfunc.h
56
109
  - ext/carray_cast.c
57
110
  - ext/carray_cast_func.rb
58
111
  - ext/carray_class.c
112
+ - ext/carray_config.h
59
113
  - ext/carray_conversion.c
60
114
  - ext/carray_copy.c
61
115
  - ext/carray_core.c
116
+ - ext/carray_count.c
62
117
  - ext/carray_data_type.c
63
118
  - ext/carray_element.c
119
+ - ext/carray_factorize.c
64
120
  - ext/carray_generate.c
65
- - ext/carray_iterator.c
121
+ - ext/carray_histogram.c
122
+ - ext/carray_hold.c
123
+ - ext/carray_index_classifier.c
124
+ - ext/carray_index_classifier.h
125
+ - ext/carray_internal.h
126
+ - ext/carray_kernels_bincmp.c
127
+ - ext/carray_kernels_binop.c
128
+ - ext/carray_kernels_init.c
129
+ - ext/carray_kernels_map.c
130
+ - ext/carray_kernels_moncmp.c
131
+ - ext/carray_kernels_monop.c
132
+ - ext/carray_kernels_reduce_aggregate.c
133
+ - ext/carray_kernels_reduce_boolean.c
134
+ - ext/carray_kernels_reduce_cumulative.c
135
+ - ext/carray_kernels_reduce_extreme.c
136
+ - ext/carray_kernels_reduce_variance.c
137
+ - ext/carray_kernels_scan.c
138
+ - ext/carray_kernels_search.c
139
+ - ext/carray_kernels_sort.c
140
+ - ext/carray_kernels_triop.c
141
+ - ext/carray_lazy.c
66
142
  - ext/carray_loop.c
67
143
  - ext/carray_mask.c
68
- - ext/carray_math.rb
144
+ - ext/carray_math_kernel.h
69
145
  - ext/carray_mathfunc.c
70
- - ext/carray_numeric.c
146
+ - ext/carray_median_percentile.c
147
+ - ext/carray_memory_view.c
71
148
  - ext/carray_operator.c
72
149
  - ext/carray_order.c
73
- - ext/carray_sort_addr.c
74
- - ext/carray_stat.c
75
- - ext/carray_stat_proc.rb
150
+ - ext/carray_partition.c
151
+ - ext/carray_random.c
152
+ - ext/carray_scatter.c
153
+ - ext/carray_slab.c
154
+ - ext/carray_slab.h
155
+ - ext/carray_sort.c
156
+ - ext/carray_sort_kernel.c
157
+ - ext/carray_struct.c
76
158
  - ext/carray_test.c
77
159
  - ext/carray_undef.c
78
160
  - ext/carray_utils.c
79
161
  - ext/extconf.rb
80
- - ext/mkmath.rb
162
+ - ext/mk_call_cfunc.rb
163
+ - ext/mkkernel.rb
81
164
  - ext/ruby_carray.c
82
- - ext/ruby_ccomplex.c
83
- - ext/ruby_float_func.c
84
165
  - ext/version.h
85
166
  - ext/version.rb
86
167
  - lib/carray.rb
87
- - lib/carray/array.rb
88
- - lib/carray/autoload.rb
89
- - lib/carray/autoload/autoload_base.rb
90
- - lib/carray/autoload/autoload_gem_cairo.rb
91
- - lib/carray/autoload/autoload_gem_ffi.rb
92
- - lib/carray/autoload/autoload_gem_gnuplot.rb
93
- - lib/carray/autoload/autoload_gem_io_csv.rb
94
- - lib/carray/autoload/autoload_gem_io_pg.rb
95
- - lib/carray/autoload/autoload_gem_io_sqlite3.rb
96
- - lib/carray/autoload/autoload_gem_narray.rb
97
- - lib/carray/autoload/autoload_gem_numo_narray.rb
98
- - lib/carray/autoload/autoload_gem_opencv.rb
99
- - lib/carray/autoload/autoload_gem_random.rb
100
- - lib/carray/autoload/autoload_gem_rmagick.rb
101
- - lib/carray/autoload/autoload_gem_zimg.rb
102
- - lib/carray/autoload/autoload_io_imagemagick.rb
103
- - lib/carray/autoload/autoload_math_histogram.rb
104
- - lib/carray/autoload/autoload_math_recurrence.rb
105
- - lib/carray/autoload/autoload_object_iterator.rb
106
- - lib/carray/autoload/autoload_object_link.rb
107
- - lib/carray/autoload/autoload_object_pack.rb
108
- - lib/carray/basic.rb
109
- - lib/carray/broadcast.rb
110
- - lib/carray/compose.rb
168
+ - lib/carray/arrow_tensor.rb
169
+ - lib/carray/attribute.rb
170
+ - lib/carray/autoload_carray.rb
171
+ - lib/carray/autoload_method_extension.rb
172
+ - lib/carray/axis_group.rb
173
+ - lib/carray/basics.rb
174
+ - lib/carray/bincount_nd.rb
175
+ - lib/carray/block_iterator.rb
176
+ - lib/carray/boolean_reduce.rb
177
+ - lib/carray/categorical.rb
178
+ - lib/carray/categorical_iterator.rb
179
+ - lib/carray/complex.rb
180
+ - lib/carray/conditional.rb
181
+ - lib/carray/const_string.rb
111
182
  - lib/carray/construct.rb
112
- - lib/carray/convert.rb
113
- - lib/carray/info.rb
183
+ - lib/carray/core_extensions.rb
184
+ - lib/carray/data_type_extension.rb
185
+ - lib/carray/fixlen_string.rb
186
+ - lib/carray/frame.rb
187
+ - lib/carray/frame/concat.rb
188
+ - lib/carray/frame/convert.rb
189
+ - lib/carray/frame/csv_parser.rb
190
+ - lib/carray/frame/frame.rb
191
+ - lib/carray/frame/group.rb
192
+ - lib/carray/frame/io.rb
193
+ - lib/carray/frame/join.rb
194
+ - lib/carray/frame/records.rb
195
+ - lib/carray/frame/sort.rb
196
+ - lib/carray/frame/verbs.rb
197
+ - lib/carray/histogram.rb
114
198
  - lib/carray/inspect.rb
115
- - lib/carray/io/imagemagick.rb
116
199
  - lib/carray/iterator.rb
117
- - lib/carray/mask.rb
200
+ - lib/carray/lazy.rb
201
+ - lib/carray/mask_gap_fill.rb
118
202
  - lib/carray/math.rb
119
- - lib/carray/math/histogram.rb
120
- - lib/carray/math/recurrence.rb
203
+ - lib/carray/meld_reduce.rb
204
+ - lib/carray/methods/align_addr.rb
205
+ - lib/carray/methods/bin.rb
206
+ - lib/carray/methods/bincount.rb
207
+ - lib/carray/methods/bit_string.rb
208
+ - lib/carray/methods/broadcast.rb
209
+ - lib/carray/methods/choose.rb
210
+ - lib/carray/methods/composition.rb
211
+ - lib/carray/methods/gather_nd.rb
212
+ - lib/carray/methods/index.rb
213
+ - lib/carray/methods/insert_block.rb
214
+ - lib/carray/methods/is_in.rb
215
+ - lib/carray/methods/join.rb
216
+ - lib/carray/methods/locate_addr.rb
217
+ - lib/carray/methods/mask_duplicates.rb
218
+ - lib/carray/methods/meshgrid.rb
219
+ - lib/carray/methods/mode.rb
220
+ - lib/carray/methods/nunique.rb
221
+ - lib/carray/methods/resize.rb
222
+ - lib/carray/methods/snap.rb
223
+ - lib/carray/methods/string_format.rb
224
+ - lib/carray/methods/unique.rb
225
+ - lib/carray/methods/value_counts.rb
121
226
  - lib/carray/mkmf.rb
122
- - lib/carray/object/ca_obj_iterator.rb
123
- - lib/carray/object/ca_obj_link.rb
124
- - lib/carray/object/ca_obj_pack.rb
125
- - lib/carray/obsolete.rb
126
- - lib/carray/ordering.rb
227
+ - lib/carray/runtime.rb
127
228
  - lib/carray/serialize.rb
229
+ - lib/carray/slab_iterator.rb
230
+ - lib/carray/stack.rb
128
231
  - lib/carray/string.rb
232
+ - lib/carray/string_operation_extension.rb
129
233
  - lib/carray/struct.rb
234
+ - lib/carray/struct_builder.rb
130
235
  - lib/carray/table.rb
131
- - lib/carray/testing.rb
132
236
  - lib/carray/time.rb
133
- - lib/carray/transform.rb
134
- - mailmap
135
- - misc/Methods.ja.md
136
- - misc/NOTE
137
- - spec/Classes/CABitfield_spec.rb
138
- - spec/Classes/CABlockIterator_spec.rb
139
- - spec/Classes/CABlock_spec.rb
140
- - spec/Classes/CAField_spec.rb
141
- - spec/Classes/CAGrid_spec.rb
142
- - spec/Classes/CAMap_spec.rb
143
- - spec/Classes/CAMapping_spec.rb
144
- - spec/Classes/CAObject_attribute_spec.rb
145
- - spec/Classes/CAObject_spec.rb
146
- - spec/Classes/CARefer_spec.rb
147
- - spec/Classes/CARepeat_spec.rb
148
- - spec/Classes/CASelect_spec.rb
149
- - spec/Classes/CAShift_spec.rb
150
- - spec/Classes/CAStruct_spec.rb
151
- - spec/Classes/CATranspose_spec.rb
152
- - spec/Classes/CAUnboudRepeat_spec.rb
153
- - spec/Classes/CAWindow_spec.rb
154
- - spec/Classes/CAWrap_spec.rb
155
- - spec/Classes/CArray_spec.rb
156
- - spec/Classes/CScalar_spec.rb
157
- - spec/Features/feature_130_spec.rb
158
- - spec/Features/feature_attributes_spec.rb
159
- - spec/Features/feature_boolean_spec.rb
160
- - spec/Features/feature_broadcast.rb
161
- - spec/Features/feature_cast_function.rb
162
- - spec/Features/feature_cast_spec.rb
163
- - spec/Features/feature_class_spec.rb
164
- - spec/Features/feature_complex_spec.rb
165
- - spec/Features/feature_composite_spec.rb
166
- - spec/Features/feature_convert_spec.rb
167
- - spec/Features/feature_copy_spec.rb
168
- - spec/Features/feature_creation_spec.rb
169
- - spec/Features/feature_element_spec.rb
170
- - spec/Features/feature_extream_spec.rb
171
- - spec/Features/feature_generate_spec.rb
172
- - spec/Features/feature_index_spec.rb
173
- - spec/Features/feature_mask_spec.rb
174
- - spec/Features/feature_math_spec.rb
175
- - spec/Features/feature_order_spec.rb
176
- - spec/Features/feature_ref_store_spec.rb
177
- - spec/Features/feature_serialization_spec.rb
178
- - spec/Features/feature_stat_spec.rb
179
- - spec/Features/feature_virtual_spec.rb
180
- - spec/Features/method_eq_spec.rb
181
- - spec/Features/method_is_nan_spec.rb
182
- - spec/Features/method_map_spec.rb
183
- - spec/Features/method_max_with.rb
184
- - spec/Features/method_min_with.rb
185
- - spec/Features/method_ne_spec.rb
186
- - spec/Features/method_project_spec.rb
187
- - spec/Features/method_ref_spec.rb
188
- - spec/Features/method_round_spec.rb
189
- - spec/Features/method_s_linspace_spec.rb
190
- - spec/Features/method_s_span_spec.rb
191
- - spec/Features/method_seq_spec.rb
192
- - spec/Features/method_sort_with.rb
193
- - spec/Features/method_sorted_with.rb
194
- - spec/Features/method_span_spec.rb
195
- - spec/Features/method_wrap_readonly_spec.rb
196
- - spec/UnitTest/test_CAVirtual.rb
197
- - spec/spec_all.rb
198
- - utils/ca_ase.rb
199
- - utils/ca_methods.rb
200
- - utils/cast_checker.rb
201
- - utils/convert_test.rb
202
- - utils/extract_yard.rb
203
- - utils/guess_shape.rb
204
- - utils/monkey_patch_methods.rb
205
- - utils/remove_resource_fork.sh
237
+ - lib/carray/window_iterator.rb
206
238
  homepage: https://github.com/himotoyoshi/carray
207
239
  licenses:
208
240
  - MIT
@@ -210,18 +242,19 @@ metadata: {}
210
242
  rdoc_options: []
211
243
  require_paths:
212
244
  - lib
245
+ - ext
213
246
  required_ruby_version: !ruby/object:Gem::Requirement
214
247
  requirements:
215
248
  - - ">="
216
249
  - !ruby/object:Gem::Version
217
- version: 2.4.0
250
+ version: '3.0'
218
251
  required_rubygems_version: !ruby/object:Gem::Requirement
219
252
  requirements:
220
253
  - - ">="
221
254
  - !ruby/object:Gem::Version
222
255
  version: '0'
223
256
  requirements: []
224
- rubygems_version: 3.6.2
257
+ rubygems_version: 4.0.8
225
258
  specification_version: 4
226
259
  summary: Multi-dimesional array class for Ruby
227
260
  test_files: []
data/Rakefile DELETED
@@ -1,51 +0,0 @@
1
- #
2
- #
3
- #
4
-
5
- GEMSPEC = "carray.gemspec"
6
-
7
- task :install do
8
- spec = eval File.read(GEMSPEC)
9
- version_h = `ruby ext/version.rb`.chomp
10
- if spec.version.to_s != version_h
11
- STDERR.puts "Mismatch in version between carray.gemspec and version.h"
12
- STDERR.puts " carray.gemspec - #{spec.version.to_s }"
13
- STDERR.puts " version.h - #{version_h}"
14
- STDERR.puts "Please check!"
15
- exit(1)
16
- end
17
- system %{
18
- gem build #{GEMSPEC}; gem install #{spec.full_name}.gem --no-document
19
- }
20
- end
21
-
22
- require 'rspec/core/rake_task'
23
- RSpec::Core::RakeTask.new
24
-
25
-
26
- __END__
27
- require 'rake'
28
- require 'rake/testtask'
29
- require 'rspec/core/rake_task'
30
-
31
- task :default => :test
32
-
33
- GEMSPEC = "carray.gemspec"
34
-
35
- task :install do
36
- spec = eval File.read(GEMSPEC)
37
- system %{
38
- gem build #{GEMSPEC}; gem install #{spec.full_name}.gem
39
- }
40
- end
41
-
42
- desc "Run the tests"
43
- Rake::TestTask::new(:test) do |t|
44
- t.test_files = FileList['test/test_ALL.rb']
45
- t.verbose = true
46
- end
47
-
48
- RSpec::Core::RakeTask.new(:spec) do |t|
49
- t.pattern = "spec/**/*_spec.rb"
50
- t.rspec_opts = ["-c", "-fs"]
51
- end
data/TODO.md DELETED
@@ -1,18 +0,0 @@
1
- ToDo List
2
- =========
3
-
4
- ToDo
5
- -------
6
- * Implement CArray.broadcast in C
7
- * Implement Integer#{|,&,^,<<,>>} with Refinement (remove monkey patch)
8
- * Remove RSTRUCT hack in carray_access.c for handling of Range object.
9
- * Solve abs probrems
10
- * Create spec
11
- - str_format (cyclic format)
12
- - CA_SIZE
13
- - serialization of carray which has data_class
14
-
15
- Done
16
- -------
17
- * Data -> TypedData
18
-