galaaz 0.5.0 → 2.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 (359) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +26 -0
  3. data/LICENSE +0 -0
  4. data/README.md +1360 -636
  5. data/Rakefile +61 -41
  6. data/bin/galaaz-bootstrap +137 -0
  7. data/bin/galaaz-jruby +14 -0
  8. data/bin/galaaz_jruby_env.inc.sh +6 -0
  9. data/bin/gbookdown +64 -0
  10. data/bin/gknit +84 -13
  11. data/bin/gknit-draft.rb +0 -0
  12. data/bin/gstudio +5 -3
  13. data/bin/gstudio_irb.rb +0 -0
  14. data/bin/gstudio_pry.rb +0 -0
  15. data/bin/install-tinytex +6 -0
  16. data/bin/run_all_rspec +43 -0
  17. data/bin/run_example +14 -0
  18. data/bin/run_old_rspec +19 -0
  19. data/bin/run_rspec +23 -0
  20. data/bin/run_rspec_subset +38 -0
  21. data/bin/run_slow_rspec +19 -0
  22. data/blogs/R-on-Rails-Planning-Document.md +940 -0
  23. data/blogs/README.md +100 -0
  24. data/blogs/galaaz_ggplot/galaaz_ggplot.Rmd +38 -66
  25. data/blogs/galaaz_ggplot/galaaz_ggplot.log +754 -0
  26. data/blogs/galaaz_ggplot/galaaz_ggplot.md +115 -155
  27. data/blogs/galaaz_ggplot/galaaz_ggplot.tex +607 -0
  28. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-html/midwest_rb.png +0 -0
  29. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-html/scatter_plot_rb.png +0 -0
  30. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-markdown_github/midwest_rb.png +0 -0
  31. data/blogs/galaaz_ggplot/galaaz_ggplot_files/figure-markdown_github/scatter_plot_rb.png +0 -0
  32. data/blogs/galaaz_ggplot/midwest.Rmd +3 -3
  33. data/blogs/galaaz_ggplot/midwest_external_png +0 -0
  34. data/blogs/gknit/gknit.Rmd +47 -52
  35. data/blogs/gknit/gknit.md +1430 -0
  36. data/blogs/gknit/gknit_files/figure-html/bubble-1.png +0 -0
  37. data/blogs/gknit/gknit_files/figure-html/diverging_bar.png +0 -0
  38. data/blogs/gknit/lst.rds +0 -0
  39. data/blogs/gknit/model.rb +1 -1
  40. data/blogs/gknit/stats.bib +0 -0
  41. data/blogs/manual/include_model_local_repro.Rmd +14 -0
  42. data/blogs/manual/include_model_local_repro.md +75 -0
  43. data/blogs/manual/lst.rds +0 -0
  44. data/blogs/manual/manual.Rmd +852 -239
  45. data/blogs/manual/manual.log +1786 -0
  46. data/blogs/manual/manual.md +1360 -636
  47. data/blogs/manual/manual.tex +1883 -1161
  48. data/blogs/manual/manual_files/figure-html/bubble-1.png +0 -0
  49. data/blogs/manual/manual_files/figure-html/diverging_bar.png +0 -0
  50. data/blogs/manual/manual_files/figure-latex/bubble-1.png +0 -0
  51. data/blogs/manual/model.rb +1 -1
  52. data/blogs/nse_dplyr/nse_dplyr.Rmd +84 -111
  53. data/blogs/nse_dplyr/nse_dplyr.log +928 -0
  54. data/blogs/nse_dplyr/nse_dplyr.md +198 -229
  55. data/blogs/oh_my/not_so.rb +0 -0
  56. data/blogs/oh_my/oh_my.Rmd +1234 -25
  57. data/blogs/oh_my/oh_my.log +804 -0
  58. data/blogs/oh_my/oh_my.md +1663 -86
  59. data/blogs/oh_my/oh_my.tex +821 -0
  60. data/blogs/oh_my/old.Rmd +15 -14
  61. data/blogs/ruby_plot/ruby_plot.Rmd +58 -82
  62. data/blogs/ruby_plot/ruby_plot.log +885 -0
  63. data/blogs/ruby_plot/ruby_plot.md +71 -102
  64. data/blogs/ruby_plot/ruby_plot.tex +940 -0
  65. data/blogs/ruby_plot/ruby_plot_files/figure-html/dose_len.png +0 -0
  66. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_delivery.png +0 -0
  67. data/blogs/ruby_plot/ruby_plot_files/figure-html/facet_by_dose.png +0 -0
  68. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color.png +0 -0
  69. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_by_delivery_color2.png +0 -0
  70. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_decorations.png +0 -0
  71. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_jitter.png +0 -0
  72. data/blogs/ruby_plot/ruby_plot_files/figure-html/facets_with_points.png +0 -0
  73. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_box_plot.png +0 -0
  74. data/blogs/ruby_plot/ruby_plot_files/figure-html/final_violin_plot.png +0 -0
  75. data/blogs/ruby_plot/ruby_plot_files/figure-html/violin_with_jitter.png +0 -0
  76. data/blogs/ruby_plot/ruby_plot_files/figure-latex/dose_len.png +0 -0
  77. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facet_by_delivery.png +0 -0
  78. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facet_by_dose.png +0 -0
  79. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_by_delivery_color.png +0 -0
  80. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_by_delivery_color2.png +0 -0
  81. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_decorations.png +0 -0
  82. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_jitter.png +0 -0
  83. data/blogs/ruby_plot/ruby_plot_files/figure-latex/facets_with_points.png +0 -0
  84. data/blogs/ruby_plot/ruby_plot_files/figure-latex/final_box_plot.png +0 -0
  85. data/blogs/ruby_plot/ruby_plot_files/figure-latex/final_violin_plot.png +0 -0
  86. data/blogs/ruby_plot/ruby_plot_files/figure-latex/violin_with_jitter.png +0 -0
  87. data/blogs/test/test.Rmd +14 -0
  88. data/examples/50Plots_MasterList/Images/midwest-scatterplot.PNG +0 -0
  89. data/examples/50Plots_MasterList/ScatterPlot.rb +0 -0
  90. data/examples/50Plots_MasterList/scatter_plot.rb +0 -0
  91. data/examples/Bibliography/master.bib +0 -0
  92. data/examples/Bibliography/stats.bib +0 -0
  93. data/examples/R/calc.R +0 -0
  94. data/examples/R/java_interop.R +0 -0
  95. data/examples/bioconductor_deseq2_airway/Documentation/DESeq2-airway-walkthrough.md +56 -0
  96. data/examples/bioconductor_deseq2_airway/bench_galaaz_three_same_process.rb +53 -0
  97. data/examples/bioconductor_deseq2_airway/bench_r_three_same_process.R +34 -0
  98. data/examples/bioconductor_deseq2_airway/deseq2_airway_galaaz.rb +33 -0
  99. data/examples/bioconductor_deseq2_airway/deseq2_airway_galaaz_optimized.rb +34 -0
  100. data/examples/bioconductor_deseq2_airway/deseq2_airway_minimal.R +30 -0
  101. data/examples/bioconductor_deseq2_airway/deseq2_airway_pipeline_for_bench.R +36 -0
  102. data/examples/islr/all.rb +13 -0
  103. data/examples/islr/ch2.spec.rb +37 -7
  104. data/examples/islr/ch3.spec.rb +11 -2
  105. data/examples/islr/ch3_boston.rb +27 -0
  106. data/examples/islr/ch3_multiple_regression.rb +0 -0
  107. data/examples/islr/ch6.spec.rb +24 -1
  108. data/examples/islr/x_y_rnorm.jpg +0 -0
  109. data/examples/latex_templates/Test-acm_article/acm_proc_article-sp.cls +0 -0
  110. data/examples/latex_templates/Test-acm_article/sigproc.bib +0 -0
  111. data/examples/latex_templates/Test-acs_article/acs-Test-acs_article.bib +0 -0
  112. data/examples/latex_templates/Test-acs_article/acs-my_output.bib +0 -0
  113. data/examples/latex_templates/Test-aea_article/BibFile.bib +0 -0
  114. data/examples/latex_templates/Test-aea_article/Test-aea_article.Rmd +0 -0
  115. data/examples/latex_templates/Test-aea_article/references.bib +0 -0
  116. data/examples/latex_templates/Test-amq_article/Test-amq_article.Rmd +0 -0
  117. data/examples/latex_templates/Test-amq_article/Test-amq_article.pdfsync +0 -0
  118. data/examples/latex_templates/Test-ieee_article/IEEEtran.bst +0 -0
  119. data/examples/latex_templates/Test-ieee_article/mybibfile.bib +0 -0
  120. data/examples/latex_templates/Test-rjournal_article/RJournal.sty +0 -0
  121. data/examples/latex_templates/Test-rjournal_article/RJreferences.bib +0 -0
  122. data/examples/latex_templates/Test-rjournal_article/Test-rjournal_article.Rmd +0 -0
  123. data/examples/misc/baseball.csv +0 -0
  124. data/examples/misc/ggplot.rb +3 -2
  125. data/examples/misc/moneyball.rb +0 -0
  126. data/examples/misc/subsetting.rb +0 -0
  127. data/examples/multithread_shards_to_r/shards_to_r.rb +67 -0
  128. data/examples/rmarkdown/svm-rmarkdown-anon-ms-example/svm-rmarkdown-anon-ms-example.Rmd +0 -0
  129. data/examples/rmarkdown/svm-rmarkdown-article-example/svm-rmarkdown-article-example.Rmd +0 -0
  130. data/examples/rmarkdown/svm-rmarkdown-beamer-example/svm-rmarkdown-beamer-example.Rmd +0 -0
  131. data/examples/rmarkdown/svm-rmarkdown-cv/svm-rmarkdown-cv.Rmd +0 -0
  132. data/examples/rmarkdown/svm-rmarkdown-syllabus-example/attend-grade-relationships.csv +0 -0
  133. data/examples/rmarkdown/svm-rmarkdown-syllabus-example/svm-rmarkdown-syllabus-example.Rmd +0 -0
  134. data/examples/rmarkdown/svm-xaringan-example/svm-xaringan-example.Rmd +0 -0
  135. data/examples/sthda_ggplot/README.md +0 -0
  136. data/examples/sthda_ggplot/RUN.md +41 -0
  137. data/examples/sthda_ggplot/all.rb +0 -0
  138. data/examples/sthda_ggplot/one_variable_continuous/density_gg.rb +0 -0
  139. data/examples/sthda_ggplot/one_variable_continuous/geom_area.rb +0 -0
  140. data/examples/sthda_ggplot/one_variable_continuous/geom_density.rb +2 -0
  141. data/examples/sthda_ggplot/one_variable_continuous/geom_dotplot.rb +0 -0
  142. data/examples/sthda_ggplot/one_variable_continuous/geom_freqpoly.rb +0 -0
  143. data/examples/sthda_ggplot/one_variable_continuous/geom_histogram.rb +0 -0
  144. data/examples/sthda_ggplot/one_variable_continuous/histogram_density.rb +0 -0
  145. data/examples/sthda_ggplot/one_variable_continuous/stat.rb +0 -0
  146. data/examples/sthda_ggplot/one_variable_discrete/bar.rb +0 -0
  147. data/examples/sthda_ggplot/qplots/box_violin_dot.rb +0 -0
  148. data/examples/sthda_ggplot/qplots/scatter_plots.rb +0 -0
  149. data/examples/sthda_ggplot/scatter_gg.rb +0 -0
  150. data/examples/sthda_ggplot/two_variables_cont_bivariate/geom_bin2d.rb +0 -0
  151. data/examples/sthda_ggplot/two_variables_cont_bivariate/geom_density2d.rb +0 -0
  152. data/examples/sthda_ggplot/two_variables_cont_bivariate/geom_hex.rb +0 -0
  153. data/examples/sthda_ggplot/two_variables_cont_cont/geom_point.rb +0 -0
  154. data/examples/sthda_ggplot/two_variables_cont_cont/geom_smooth.rb +0 -0
  155. data/examples/sthda_ggplot/two_variables_cont_cont/misc.rb +0 -0
  156. data/examples/sthda_ggplot/two_variables_cont_function/geom_area.rb +4 -3
  157. data/examples/sthda_ggplot/two_variables_disc_cont/geom_bar.rb +0 -0
  158. data/examples/sthda_ggplot/two_variables_disc_cont/geom_boxplot.rb +0 -0
  159. data/examples/sthda_ggplot/two_variables_disc_cont/geom_dotplot.rb +0 -0
  160. data/examples/sthda_ggplot/two_variables_disc_cont/geom_jitter.rb +0 -0
  161. data/examples/sthda_ggplot/two_variables_disc_cont/geom_line.rb +0 -0
  162. data/examples/sthda_ggplot/two_variables_disc_cont/geom_violin.rb +0 -0
  163. data/examples/sthda_ggplot/two_variables_disc_disc/geom_jitter.rb +0 -0
  164. data/examples/sthda_ggplot/two_variables_error/geom_crossbar.rb +0 -0
  165. data/ext/new_bridge/Makefile +46 -0
  166. data/ext/new_bridge/galaaz_gatekeeper_phase0.cpp +12 -0
  167. data/ext/new_bridge/galaaz_gatekeeper_phase1.cpp +1639 -0
  168. data/lib/R_interface/galaaz_device.R +20 -0
  169. data/lib/R_interface/include_engine.R +109 -0
  170. data/lib/R_interface/new_bridge_adapter.rb +824 -0
  171. data/lib/R_interface/r.rb +177 -25
  172. data/lib/R_interface/r_arrow.rb +113 -0
  173. data/lib/R_interface/r_libs.R +3 -3
  174. data/lib/R_interface/r_methods.rb +13 -126
  175. data/lib/R_interface/r_module_s.rb +0 -0
  176. data/lib/R_interface/rbinary_operators.rb +20 -2
  177. data/lib/R_interface/rclosure.rb +5 -1
  178. data/lib/R_interface/rdata_frame.rb +34 -70
  179. data/lib/R_interface/rdevice.rb +125 -0
  180. data/lib/R_interface/rdevices.R +0 -0
  181. data/lib/R_interface/renvironment.rb +10 -4
  182. data/lib/R_interface/rexpression.rb +5 -1
  183. data/lib/R_interface/rindexed_object.rb +41 -13
  184. data/lib/R_interface/rlanguage.rb +20 -62
  185. data/lib/R_interface/rlist.rb +115 -25
  186. data/lib/R_interface/rlogical_operators.rb +0 -0
  187. data/lib/R_interface/rmatrix.rb +2 -11
  188. data/lib/R_interface/rmd_indexed_object.rb +5 -1
  189. data/lib/R_interface/robject.rb +348 -290
  190. data/lib/R_interface/rpkg.rb +0 -0
  191. data/lib/R_interface/rsupport.rb +609 -328
  192. data/lib/R_interface/rsupport_scope.rb +2 -1
  193. data/lib/R_interface/rsymbol.rb +50 -0
  194. data/lib/R_interface/ruby_callback.rb +2 -3
  195. data/lib/R_interface/ruby_extensions.rb +225 -175
  196. data/lib/R_interface/runary_operators.rb +0 -0
  197. data/lib/R_interface/rvector.rb +147 -31
  198. data/lib/galaaz.rb +0 -0
  199. data/lib/galaaz_jruby.rb +22 -0
  200. data/lib/gknit/diagnostics.rb +50 -0
  201. data/lib/gknit/draft.rb +23 -17
  202. data/lib/gknit/include_engine.rb +15 -7
  203. data/lib/gknit/knitr_engine.rb +223 -74
  204. data/lib/gknit/rb_engine.rb +3 -3
  205. data/lib/gknit/ruby_engine.rb +0 -0
  206. data/lib/gknit.rb +1 -0
  207. data/lib/new_bridge/bootstrap/windows_bootstrap.rb +285 -0
  208. data/lib/new_bridge/envelope.rb +51 -0
  209. data/lib/new_bridge/eval_result.rb +26 -0
  210. data/lib/new_bridge/framing.rb +39 -0
  211. data/lib/new_bridge/instance_pool_client.rb +38 -0
  212. data/lib/new_bridge/r_instance_manager.rb +404 -0
  213. data/lib/new_bridge/session_client.rb +530 -0
  214. data/lib/new_bridge/tcp_framed.rb +44 -0
  215. data/lib/new_bridge.rb +9 -0
  216. data/lib/util/exec_ruby.rb +95 -20
  217. data/lib/util/inline_file.rb +35 -30
  218. data/new_bridge_specs/benchmark_phase5_5_unboxing_spec.rb +96 -0
  219. data/new_bridge_specs/eval_r_async_spec.rb +113 -0
  220. data/new_bridge_specs/integration_phase5_1_concurrent_spec.rb +50 -0
  221. data/new_bridge_specs/integration_phase5_1_eval_spec.rb +16 -0
  222. data/new_bridge_specs/integration_phase5_1_r_api_spec.rb +25 -0
  223. data/new_bridge_specs/integration_phase5_1_smoke_spec.rb +31 -0
  224. data/new_bridge_specs/integration_phase5_2_dataframe_unboxing_spec.rb +19 -0
  225. data/new_bridge_specs/integration_phase5_2_handle_eval_unboxing_spec.rb +25 -0
  226. data/new_bridge_specs/integration_phase5_3_callback_args_spec.rb +28 -0
  227. data/new_bridge_specs/integration_phase5_3_callback_error_spec.rb +22 -0
  228. data/new_bridge_specs/integration_phase5_3_callback_timeout_spec.rb +28 -0
  229. data/new_bridge_specs/integration_phase5_3_callbacks_smoke_spec.rb +22 -0
  230. data/new_bridge_specs/integration_phase5_3_edge_cases_spec.rb +52 -0
  231. data/new_bridge_specs/integration_phase5_3_nested_spec.rb +30 -0
  232. data/new_bridge_specs/integration_phase5_4_concurrent_sessions_spec.rb +53 -0
  233. data/new_bridge_specs/integration_phase5_4_nested_session_callbacks_spec.rb +49 -0
  234. data/new_bridge_specs/integration_phase5_4_session_routing_spec.rb +38 -0
  235. data/new_bridge_specs/integration_phase5_5_stress_concurrency_spec.rb +52 -0
  236. data/new_bridge_specs/integration_phase5_5_unbox_walk_spec.rb +46 -0
  237. data/new_bridge_specs/phase0_protocol_spec.rb +96 -0
  238. data/new_bridge_specs/phase1_req_ret_spec.rb +66 -0
  239. data/new_bridge_specs/phase2_multi_instance_spec.rb +67 -0
  240. data/new_bridge_specs/phase3_callbacks_spec.rb +71 -0
  241. data/new_bridge_specs/phase4_2_hardening_spec.rb +252 -0
  242. data/new_bridge_specs/phase4_3_r_instance_manager_spec.rb +85 -0
  243. data/new_bridge_specs/phase4_nested_callbacks_spec.rb +123 -0
  244. data/r_requires/ggplot.rb +0 -0
  245. data/r_requires/knitr.rb +0 -0
  246. data/specs/all.rb +15 -11
  247. data/specs/arrow_from_ruby_batches_spec.rb +50 -0
  248. data/specs/arrow_semantics_spec.rb +64 -0
  249. data/specs/bridge_concurrent_spec.rb +46 -0
  250. data/specs/bridge_nested_spec.rb +25 -0
  251. data/specs/dataframe_semantics_spec.rb +122 -0
  252. data/specs/dataframe_single_index_logical_filter_spec.rb +21 -0
  253. data/specs/dispatch_probe_cache_spec.rb +38 -0
  254. data/specs/dispatch_probe_error_class_fallback_spec.rb +20 -0
  255. data/specs/dispatch_probe_fallback_spec.rb +18 -0
  256. data/specs/environment_semantics_spec.rb +89 -0
  257. data/specs/field_access_spec.rb +31 -0
  258. data/specs/figures/bg.jpeg +0 -0
  259. data/specs/figures/bg.png +0 -0
  260. data/specs/figures/bg.svg +168 -57
  261. data/specs/figures/dose_len.png +0 -0
  262. data/specs/figures/no_args.jpeg +0 -0
  263. data/specs/figures/no_args.png +0 -0
  264. data/specs/figures/no_args.svg +168 -57
  265. data/specs/figures/width_height.jpeg +0 -0
  266. data/specs/figures/width_height.png +0 -0
  267. data/specs/figures/width_height_units1.jpeg +0 -0
  268. data/specs/figures/width_height_units1.png +0 -0
  269. data/specs/figures/width_height_units2.jpeg +0 -0
  270. data/specs/figures/width_height_units2.png +0 -0
  271. data/specs/formula_semantics_spec.rb +81 -0
  272. data/specs/galaaz_util_exec_ruby_spec.rb +85 -0
  273. data/specs/galaaz_util_inline_file_spec.rb +54 -0
  274. data/specs/gknit_cli_option_permutation_spec.rb +24 -0
  275. data/specs/gknit_include_engine_spec.rb +72 -0
  276. data/specs/gknit_install_timeout_report_spec.rb +69 -0
  277. data/specs/gknit_internal_error_report_spec.rb +57 -0
  278. data/specs/gknit_vector_map_output_spec.rb +59 -0
  279. data/specs/globalenv_guardrail_spec.rb +52 -0
  280. data/specs/language_expression_semantics_spec.rb +145 -0
  281. data/specs/list_semantics_spec.rb +111 -0
  282. data/specs/new_bridge_bulk_dataframe_transfer_spec.rb +44 -0
  283. data/specs/new_bridge_bulk_vector_transfer_spec.rb +73 -0
  284. data/specs/new_bridge_callback_timeout_spec.rb +69 -0
  285. data/specs/new_bridge_eval_r_fallback_spec.rb +55 -0
  286. data/specs/nil_null_spec.rb +42 -0
  287. data/specs/object_build_phase2_spec.rb +53 -0
  288. data/specs/phase1_callback_bridge_spec.rb +84 -0
  289. data/specs/phase2_gknit_generic_rendering_guardrail_spec.rb +46 -0
  290. data/specs/phase2_gknit_no_raw_code_leakage_spec.rb +43 -0
  291. data/specs/phase3_gknit_generic_graphics_capture_spec.rb +71 -0
  292. data/specs/plot_device_semantics_spec.rb +28 -0
  293. data/specs/plot_snapshot_semantics_spec.rb +58 -0
  294. data/specs/protocol_result_spec.rb +236 -0
  295. data/specs/r_batch_fail_fast_spec.rb +47 -0
  296. data/specs/r_bridge_bootstrap_spec.rb +11 -0
  297. data/specs/r_devices.spec.rb +1 -1
  298. data/specs/r_eval.spec.rb +16 -18
  299. data/specs/r_function.spec.rb +1 -1
  300. data/specs/r_instance_manager_spec.rb +285 -0
  301. data/specs/r_list_apply.spec.rb +15 -15
  302. data/specs/r_matrix.spec.rb +0 -0
  303. data/specs/r_nse.spec.rb +5 -5
  304. data/specs/r_object_send_dispatch_spec.rb +13 -0
  305. data/specs/r_vector_comparator_spec.rb +8 -0
  306. data/specs/r_vector_creation.spec.rb +0 -0
  307. data/specs/r_vector_functions.spec.rb +0 -0
  308. data/specs/r_vector_object.spec.rb +0 -0
  309. data/specs/r_vector_operators.spec.rb +0 -0
  310. data/specs/r_vector_structured_scalar_reads_spec.rb +35 -0
  311. data/specs/r_vector_subsetting.spec.rb +0 -0
  312. data/specs/range_helper_spec.rb +21 -0
  313. data/specs/rsupport_scope_spec.rb +28 -0
  314. data/specs/rsupport_var_name_thread_safety_spec.rb +24 -0
  315. data/specs/scalar_character_spec.rb +44 -0
  316. data/specs/scoped_symbol_dsl_refinement_spec.rb +40 -0
  317. data/specs/session_env_bridge_spec.rb +25 -0
  318. data/specs/simplecov_bootstrap_spec.rb +10 -0
  319. data/specs/spec_helper.rb +10 -0
  320. data/specs/tmp.rb +0 -0
  321. data/specs/unboxing_recursion_regression_spec.rb +30 -0
  322. data/specs/unboxing_spec.rb +49 -0
  323. data/specs/verify_callbacks.rb +42 -0
  324. data/sty/galaaz.sty +0 -0
  325. data/version.rb +1 -1
  326. metadata +194 -64
  327. data/blogs/galaaz_ggplot/galaaz_ggplot.html +0 -520
  328. data/blogs/galaaz_ggplot/galaaz_ggplot.pdf +0 -0
  329. data/blogs/galaaz_ggplot/midwest.html +0 -188
  330. data/blogs/gknit/gknit.html +0 -2266
  331. data/blogs/gknit/gknit.pdf +0 -0
  332. data/blogs/manual/manual.html +0 -4638
  333. data/blogs/manual/manual.pdf +0 -0
  334. data/blogs/manual/manual_files/figure-latex/diverging_bar.pdf +0 -0
  335. data/blogs/nse_dplyr/nse_dplyr.html +0 -878
  336. data/blogs/nse_dplyr/nse_dplyr.pdf +0 -0
  337. data/blogs/oh_my/oh_my.html +0 -568
  338. data/blogs/ruby_plot/ruby_plot.html +0 -544
  339. data/blogs/ruby_plot/ruby_plot.pdf +0 -0
  340. data/examples/latex_templates/Test-acs_article/Test-acs_article.pdf +0 -0
  341. data/examples/latex_templates/Test-aea_article/Test-aea_article.pdf +0 -0
  342. data/examples/latex_templates/Test-amq_article/Test-amq_article.pdf +0 -0
  343. data/examples/latex_templates/Test-amq_article/pics/Figure2.pdf +0 -0
  344. data/examples/latex_templates/Test-asa_article/Test-asa_article.pdf +0 -0
  345. data/examples/latex_templates/Test-ieee_article/Test-ieee_article.pdf +0 -0
  346. data/examples/latex_templates/Test-rjournal_article/RJwrapper.pdf +0 -0
  347. data/examples/latex_templates/Test-springer_article/Test-springer_article.pdf +0 -0
  348. data/examples/rmarkdown/svm-rmarkdown-anon-ms-example/svm-rmarkdown-anon-ms-example.pdf +0 -0
  349. data/examples/rmarkdown/svm-rmarkdown-article-example/svm-rmarkdown-article-example.pdf +0 -0
  350. data/examples/rmarkdown/svm-rmarkdown-beamer-example/svm-rmarkdown-beamer-example.pdf +0 -0
  351. data/examples/rmarkdown/svm-rmarkdown-cv/svm-rmarkdown-cv.pdf +0 -0
  352. data/examples/rmarkdown/svm-rmarkdown-syllabus-example/svm-rmarkdown-syllabus-example.pdf +0 -0
  353. data/specs/r_dataframe.spec.rb +0 -379
  354. data/specs/r_environment.spec.rb +0 -140
  355. data/specs/r_formula.spec.rb +0 -232
  356. data/specs/r_language.spec.rb +0 -112
  357. data/specs/r_list.spec.rb +0 -293
  358. data/specs/r_plots.spec.rb +0 -72
  359. data/specs/ruby_expression.spec.rb +0 -316
data/blogs/README.md ADDED
@@ -0,0 +1,100 @@
1
+ # Galaaz blogs (gknit)
2
+
3
+ These are R Markdown (`.Rmd`) documents that use **gknit** to run Ruby/Galaaz chunks and render HTML (or other formats).
4
+
5
+ **Published renders** (HTML/PDF) are on GitHub Pages:
6
+ https://rbotafogo.github.io/galaaz/
7
+
8
+ The gem ships blog/manual **sources** (and examples/specs); it does not pack `.html` / `.pdf` or prebuilt `.so` / `.o` files.
9
+
10
+ ## Generate a single blog
11
+
12
+ From the **project root**:
13
+
14
+ ```bash
15
+ bin/gknit blogs/<blog_dir>/<blog_dir>.Rmd
16
+ ```
17
+
18
+ Examples:
19
+
20
+ ```bash
21
+ bin/gknit blogs/oh_my/oh_my.Rmd
22
+ bin/gknit blogs/gknit/gknit.Rmd
23
+ bin/gknit blogs/galaaz_ggplot/galaaz_ggplot.Rmd
24
+ bin/gknit blogs/manual/manual.Rmd
25
+ bin/gknit blogs/nse_dplyr/nse_dplyr.Rmd
26
+ bin/gknit blogs/ruby_plot/ruby_plot.Rmd
27
+ ```
28
+
29
+ Output (e.g. `oh_my.html`) is written in the same directory as the `.Rmd` unless you pass `-d` / `--output_dir`.
30
+
31
+ ## Generate blogs via Rake
32
+
33
+ From the project root:
34
+
35
+ ```bash
36
+ rake blog:oh_my
37
+ rake blog:gknit
38
+ rake blog:galaaz_ggplot
39
+ rake blog:manual
40
+ rake blog:nse_dplyr
41
+ rake blog:ruby_plot
42
+ ```
43
+
44
+ Each task runs `bin/gknit` on `blogs/<name>/<name>.Rmd`.
45
+
46
+ ## gknit options
47
+
48
+ ```bash
49
+ bin/gknit -h
50
+ ```
51
+
52
+ Useful options:
53
+
54
+ - `-f FILE` / `--filename FILE` – input `.Rmd` (or pass the path as first argument).
55
+ - `-o FILE` / `--output_file` – output filename.
56
+ - `-d DIR` / `--output_dir` – output directory.
57
+ - `--output_format FORMAT` – e.g. `html_document` (default is from the YAML header).
58
+
59
+ Example with options:
60
+
61
+ ```bash
62
+ bin/gknit blogs/oh_my/oh_my.Rmd -d /tmp/out --output_format html_document
63
+ ```
64
+
65
+ ## Debugging R and monitoring R independently
66
+
67
+ R runs as a **separate process**. With `--debugR` you can capture what Galaaz sends to R and what R prints, then inspect or replay it on your own.
68
+
69
+ ### Turn on R debugging
70
+
71
+ ```bash
72
+ bin/gknit --debugR blogs/oh_my/oh_my.Rmd
73
+ ```
74
+
75
+ Or set the env var for any Galaaz command:
76
+
77
+ ```bash
78
+ GALAAZ_DEBUG_R=1 bin/run_example examples/sthda_ggplot/all.rb
79
+ ```
80
+
81
+ ### Log files (written in current directory when `GALAAZ_DEBUG_R=1`)
82
+
83
+ | File | Content |
84
+ |------|--------|
85
+ | **logs/galaaz_r_scripts.log** | Every R script sent to the bridge (full tryCatch wrapper), in order. |
86
+ | **logs/galaaz_r_stdout.log** | Raw stdout from the R process (everything R printed), in order. |
87
+ | **logs/galaaz_r_pid.txt** | R process PID (so you can attach or inspect the process). |
88
+ | **logs/galaaz_r_stderr.log** | R stderr (always written, not only with `--debugR`). |
89
+
90
+ ### Monitoring R independently
91
+
92
+ - **See what R ran:** Open `logs/galaaz_r_scripts.log` and `logs/galaaz_r_stdout.log` in another terminal (e.g. `tail -f logs/galaaz_r_stdout.log`) while the job runs.
93
+ - **Replay in a separate R session:** Start R in another terminal. Copy script blocks from `logs/galaaz_r_scripts.log` (or `source('/dev/shm/galaaz_cmd_N.R')` if the temp files still exist) and run them in order. Then inspect `.GlobalEnv`, `ls()`, `traceback()`, etc.
94
+ - **Inspect the live R process:** Use the PID from `logs/galaaz_r_pid.txt` with OS tools (e.g. `/proc/<pid>/` on Linux) or attach a debugger if needed.
95
+
96
+ ## Requirements
97
+
98
+ - **JRuby** (same as specs/examples).
99
+ - **R** with packages used by the document (e.g. `rmarkdown`, `knitr`, `ggplot2`).
100
+ - Run from the project root so `lib` and `bin` resolve correctly.
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  title: "Ruby Plotting with Galaaz"
3
- subtitle: "An example of tightly coupling Ruby and R in GraalVM"
3
+ subtitle: "An example of tightly coupling Ruby and R (JRuby + GNU R, Galaaz 2.0)"
4
4
  author: "Rodrigo Botafogo"
5
- tags: [Galaaz, Ruby, R, TruffleRuby, FastR, GraalVM, ggplot2]
6
- date: "16 October 2018"
5
+ tags: [Galaaz, Ruby, R, JRuby, "GNU R", ggplot2]
6
+ date: "16 October 2018 (narrative updated for Galaaz 2.0, 2026)"
7
7
  output:
8
8
  html_document:
9
9
  self_contained: true
@@ -30,42 +30,19 @@ Galaaz is a system for tightly coupling Ruby and R. Ruby is a powerful language
30
30
  a large community, a very large set of libraries and great for web development. However,
31
31
  it lacks libraries for data science, statistics, scientific plotting and machine learning.
32
32
  On the other hand, R is considered one of the most powerful languages for solving all of the
33
- above problems. Maybe the strongest competitor to R is Python with libraries such as NumPy,
34
- Panda, SciPy, SciKit-Learn and a couple more.
33
+ above problems. **Python** is a strong competitor: NumPy, pandas, SciPy, and scikit-learn are
34
+ widely used examples among **many thousands** of packages on PyPI for numerical and ML work.
35
35
 
36
- With Galaaz we do not intend to re-implement any of the scientific libraries in R, we allow
36
+ With Galaaz we do not intend to re-implement any of the scientific libraries in R; we allow
37
37
  for very tight coupling between the two languages to the point that the Ruby developer does
38
- not need to know that there is an R engine running. For this to happen we use new
39
- technologies provided by Oracle: GraalVM, TruffleRuby and FastR:
40
-
41
- GraalVM is a universal virtual machine for running applications
42
- written in JavaScript, Python 3, Ruby, R, JVM-based languages like Java,
43
- Scala, Kotlin, and LLVM-based languages such as C and C++.
44
-
45
- GraalVM removes the isolation between programming languages and enables
46
- interoperability in a shared runtime. It can run either standalone or in
47
- the context of OpenJDK, Node.js, Oracle Database, or MySQL.
48
-
49
- GraalVM allows you to write polyglot applications with a seamless way to
50
- pass values from one language to another. With GraalVM there is no copying
51
- or marshaling necessary as it is with other polyglot systems. This lets
52
- you achieve high performance when language boundaries are crossed. Most
53
- of the time there is no additional cost for crossing a language boundary
54
- at all.
55
-
56
- Often developers have to make uncomfortable compromises that require them
57
- to rewrite their software in other languages. For example:
58
-
59
- * “That library is not available in my language. I need to rewrite it.”
60
- * “That language would be the perfect fit for my problem, but we cannot
61
- run it in our environment.”
62
- * “That problem is already solved in my language, but the language is
63
- too slow.”
64
-
65
- With GraalVM we aim to allow developers to freely choose the right language
66
- for the task at hand without making compromises.
38
+ not need to think about R syntax for every call. **Galaaz 2.0** does this with **[JRuby](https://www.jruby.org/)**
39
+ and **GNU R**: a **bridge** evaluates R from Ruby and exchanges data between processes.
40
+
41
+ An **earlier** Galaaz prototype used Oracle’s **GraalVM** with **TruffleRuby** and **FastR** in one JVM.
42
+ That stack is **historical**; today’s documentation and tooling assume **JRuby + GNU R** (see the
43
+ project manual and **`bin/galaaz-jruby`** / **`bin/gknit`**).
67
44
 
68
- Interested readers should also check out the following sites:
45
+ For background on the old stack:
69
46
 
70
47
  * [GraalVM Home](https://www.graalvm.org/)
71
48
  * [TruffleRuby](https://github.com/oracle/truffleruby)
@@ -89,11 +66,10 @@ Galaaz is the Portuguese name for "Galahad". From Wikipedia:
89
66
 
90
67
  # Galaaz Demo
91
68
 
92
- ## Prerequisites
69
+ ## Prerequisites (Galaaz 2.0)
93
70
 
94
- * GraalVM (>= rc7)
95
- * TruffleRuby
96
- * FastR
71
+ * **JRuby** and a compatible **JDK**
72
+ * **GNU R** on your `PATH`
97
73
 
98
74
  The following R packages will be automatically installed when necessary, but could be installed prior
99
75
  to the demo if desired:
@@ -101,8 +77,8 @@ to the demo if desired:
101
77
  * ggplot2
102
78
  * gridExtra
103
79
 
104
- Installation of R packages requires a development environment. In Linux, the gnu compiler and
105
- tools should be enough. I am not sure what is needed on the Mac.
80
+ Installation of R packages requires a development environment. On Linux, a typical build toolchain
81
+ (GCC, headers) is usually enough. On macOS, Apple’s **Xcode Command Line Tools** are commonly required.
106
82
 
107
83
  In order to run the 'specs' the following Ruby package is necessary:
108
84
 
@@ -114,25 +90,21 @@ In order to run the 'specs' the following Ruby package is necessary:
114
90
 
115
91
  ## Running the demo
116
92
 
117
- The ggplot for this demos was extracted from: http://r-statistics.co/Top50-Ggplot2-Visualizations-MasterList-R-Code.html.
93
+ The ggplot examples for this demo were adapted from: http://r-statistics.co/Top50-Ggplot2-Visualizations-MasterList-R-Code.html.
118
94
 
119
- On the console do
95
+ At the shell, from a suitable Galaaz environment:
120
96
 
121
- > galaaz master_list:scatter_plot
97
+ galaaz master_list:scatter_plot
122
98
 
123
99
  ## Running other demos
124
100
 
125
- Doing on the console
101
+ Running
126
102
 
127
- > galaaz -T
103
+ galaaz -T
128
104
 
129
- will show a list with all available demos. To run any of the demos in the list,
130
- substitute the call to
131
- 'rake' to 'galaaz'. For instance, one of the examples in the list is 'rake sthda:bar'.
132
- In order to run
133
- this example just do 'galaaz sthda:bar'. Doing 'galaaz sthda:all' will run all demos in the sthda
134
- cathegory. Some of the examples require 'rspec' do be available. To install 'rspec' just do
135
- 'gem install rspec'.
105
+ lists available demo tasks. To run a demo, use **`galaaz`** where you would otherwise invoke **`rake`**.
106
+ For example, if the list shows `rake sthda:bar`, run `galaaz sthda:bar`. To run every demo in the **sthda**
107
+ category, use `galaaz sthda:all`. Some examples require **rspec**; install it with `gem install rspec`.
136
108
 
137
109
  # The demo code
138
110
 
@@ -335,7 +307,7 @@ And this is the final code for making the scatter plot with the midwest data
335
307
  require 'galaaz'
336
308
  require 'ggplot'
337
309
 
338
- sp = ScatterPlot.new(~:midwest, x: :area, y: :poptotal)
310
+ sp = ScatterPlot.new(~R[:midwest], x: :area, y: :poptotal)
339
311
  sp.title = "Midwest Dataset - Scatterplot"
340
312
  sp.subtitle = "Area Vs Population"
341
313
  sp.caption = "Source: midwest"
@@ -351,16 +323,16 @@ sp.plot
351
323
 
352
324
  R is a very powerful language for statistical analysis, data analytics, machine learning, plotting
353
325
  and many other scientific applications with a very large package ecosystem. However R is often
354
- considered hard to learn and lacking modern computer languages constructs such as object oriented
355
- classes, modules, lambdas, etc. For this reason, many developers have started or switched from R
356
- to Python.
326
+ considered hard to learn and lacking modern language features such as object-oriented
327
+ classes, modules, and first-class functions. For that reason, many teams have standardized on
328
+ Python (or stayed entirely inside R) rather than mixing ecosystems.
357
329
 
358
330
  With Galaaz, R programmers can almost transparently migrate from R to Ruby, since syntax is
359
- almost identical and they have fastR as the R engine. FastR, by most benchmarks, can be orders of
360
- magnitude faster than Gnu R. Further, by using Galaaz the R developer can start (slowly if needed)
361
- using all of Ruby's constructs and libraries that nicely complement R packages.
362
-
363
- For the Ruby developer, Galaaz allows the immediate use of R functions completely transparently. As
364
- shown in the second example above, class ScatterPlot completely hides all the details an R calls
365
- from the Ruby developer, furthermore Galaaz is powered by TruffleRuby that can also be orders of
366
- magnitude faster than MRI Ruby.
331
+ almost identical and **GNU R** remains the engine for statistics and **ggplot2**. Further, by using
332
+ Galaaz the R developer can start (slowly if needed) using Ruby’s constructs and libraries that
333
+ nicely complement R packages.
334
+
335
+ For the Ruby developer, Galaaz allows the immediate use of R functions with minimal ceremony. As
336
+ shown in the second example above, class `ScatterPlot` hides most R call details from the Ruby
337
+ developer. **JRuby** provides **real parallel threads** on the Ruby side and access to the JVM
338
+ ecosystem when you need it.