crystalruby 0.2.3 → 0.3.1

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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +2 -0
  3. data/Dockerfile +23 -2
  4. data/README.md +395 -198
  5. data/Rakefile +4 -3
  6. data/crystalruby.gemspec +2 -2
  7. data/examples/adder/adder.rb +1 -1
  8. data/exe/crystalruby +1 -0
  9. data/lib/crystalruby/adapter.rb +143 -73
  10. data/lib/crystalruby/arc_mutex.rb +47 -0
  11. data/lib/crystalruby/compilation.rb +32 -3
  12. data/lib/crystalruby/config.rb +41 -37
  13. data/lib/crystalruby/function.rb +216 -73
  14. data/lib/crystalruby/library.rb +157 -51
  15. data/lib/crystalruby/reactor.rb +63 -44
  16. data/lib/crystalruby/source_reader.rb +92 -0
  17. data/lib/crystalruby/template.rb +16 -5
  18. data/lib/crystalruby/templates/function.cr +11 -10
  19. data/lib/crystalruby/templates/index.cr +53 -66
  20. data/lib/crystalruby/templates/inline_chunk.cr +1 -1
  21. data/lib/crystalruby/templates/ruby_interface.cr +34 -0
  22. data/lib/crystalruby/templates/top_level_function.cr +62 -0
  23. data/lib/crystalruby/templates/top_level_ruby_interface.cr +33 -0
  24. data/lib/crystalruby/typebuilder.rb +11 -55
  25. data/lib/crystalruby/typemaps.rb +92 -67
  26. data/lib/crystalruby/types/concerns/allocator.rb +80 -0
  27. data/lib/crystalruby/types/fixed_width/named_tuple.cr +80 -0
  28. data/lib/crystalruby/types/fixed_width/named_tuple.rb +86 -0
  29. data/lib/crystalruby/types/fixed_width/proc.cr +45 -0
  30. data/lib/crystalruby/types/fixed_width/proc.rb +79 -0
  31. data/lib/crystalruby/types/fixed_width/tagged_union.cr +53 -0
  32. data/lib/crystalruby/types/fixed_width/tagged_union.rb +113 -0
  33. data/lib/crystalruby/types/fixed_width/tuple.cr +82 -0
  34. data/lib/crystalruby/types/fixed_width/tuple.rb +92 -0
  35. data/lib/crystalruby/types/fixed_width.cr +138 -0
  36. data/lib/crystalruby/types/fixed_width.rb +205 -0
  37. data/lib/crystalruby/types/primitive.cr +21 -0
  38. data/lib/crystalruby/types/primitive.rb +117 -0
  39. data/lib/crystalruby/types/primitive_types/bool.cr +34 -0
  40. data/lib/crystalruby/types/primitive_types/bool.rb +11 -0
  41. data/lib/crystalruby/types/primitive_types/nil.cr +35 -0
  42. data/lib/crystalruby/types/primitive_types/nil.rb +16 -0
  43. data/lib/crystalruby/types/primitive_types/numbers.cr +37 -0
  44. data/lib/crystalruby/types/primitive_types/numbers.rb +28 -0
  45. data/lib/crystalruby/types/primitive_types/symbol.cr +55 -0
  46. data/lib/crystalruby/types/primitive_types/symbol.rb +35 -0
  47. data/lib/crystalruby/types/primitive_types/time.cr +35 -0
  48. data/lib/crystalruby/types/primitive_types/time.rb +25 -0
  49. data/lib/crystalruby/types/type.cr +64 -0
  50. data/lib/crystalruby/types/type.rb +249 -30
  51. data/lib/crystalruby/types/variable_width/array.cr +74 -0
  52. data/lib/crystalruby/types/variable_width/array.rb +88 -0
  53. data/lib/crystalruby/types/variable_width/hash.cr +146 -0
  54. data/lib/crystalruby/types/variable_width/hash.rb +117 -0
  55. data/lib/crystalruby/types/variable_width/string.cr +36 -0
  56. data/lib/crystalruby/types/variable_width/string.rb +18 -0
  57. data/lib/crystalruby/types/variable_width.cr +23 -0
  58. data/lib/crystalruby/types/variable_width.rb +46 -0
  59. data/lib/crystalruby/types.rb +32 -13
  60. data/lib/crystalruby/version.rb +2 -2
  61. data/lib/crystalruby.rb +13 -6
  62. metadata +42 -22
  63. data/lib/crystalruby/types/array.rb +0 -15
  64. data/lib/crystalruby/types/bool.rb +0 -3
  65. data/lib/crystalruby/types/hash.rb +0 -17
  66. data/lib/crystalruby/types/named_tuple.rb +0 -28
  67. data/lib/crystalruby/types/nil.rb +0 -3
  68. data/lib/crystalruby/types/numbers.rb +0 -5
  69. data/lib/crystalruby/types/string.rb +0 -3
  70. data/lib/crystalruby/types/symbol.rb +0 -3
  71. data/lib/crystalruby/types/time.rb +0 -8
  72. data/lib/crystalruby/types/tuple.rb +0 -17
  73. data/lib/crystalruby/types/type_serializer/json.rb +0 -41
  74. data/lib/crystalruby/types/type_serializer.rb +0 -37
  75. data/lib/crystalruby/types/typedef.rb +0 -57
  76. data/lib/crystalruby/types/union_type.rb +0 -43
  77. data/lib/module.rb +0 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b518452083f9b5ab1a808ea2889338537ef03db5f263a19013bddedb87a93e1b
4
- data.tar.gz: 4bcc1a632772bdbb31de2769b9bfbf0882d06851a186810be4925cdbf8694d11
3
+ metadata.gz: fde36eb6893b41f156d747996c94e803227552f4ef12097ead408bb823619d59
4
+ data.tar.gz: 95e9860ee479571f1f38f8f7507a7f5eb921256116894c01ce358a8c0f22dc70
5
5
  SHA512:
6
- metadata.gz: e9d5acc955979e3de37a38b6381114fb0746f32e06333b97988c4417df57070de55d2a2c4a4fe7a65b288197cc61a00579d44c47975089e1c63f4207246b4625
7
- data.tar.gz: '08655f7b0c16b214c55554ae1de4c886d0ea8b3ec05e77a8ce0055da0776d1706ee656c1f65c2d3695116f07614e07b3959e736eaad1400d4f331348b29f1f5f'
6
+ metadata.gz: 9b6c00ce61edf03f729bcd4f6605aa0cecb6042d9c046700a351d1ccf39b861fd5c259f7955ea02459984ee497533483adf3affbbae697fe5937ddd6ab01c625
7
+ data.tar.gz: 383e9f782c49da8751535ea8ba8ac1fd5638f17fe4d5d6b163c7b9df9ea4171794effa51df0bde51ad892ddbb58c545d542455ea973cf60fe2cb530a898e34c4
data/CHANGELOG.md CHANGED
@@ -1,5 +1,7 @@
1
1
  ## [Unreleased]
2
2
 
3
+ - Added support for running `crustalruby` without the `crystal` binary in dry mode. [#15]
4
+
3
5
  ## [0.1.4] - 2024-04-10
4
6
 
5
7
  - Fix bug in type checking on deserialization of union types
data/Dockerfile CHANGED
@@ -1,16 +1,37 @@
1
+ # Stage 1: Use the Crystal official image to build Crystal
2
+ FROM crystallang/crystal:1.14 AS crystal-builder
3
+
4
+ # Stage 2: Use the Ruby image and copy Crystal from the previous stage
1
5
  FROM ruby:3.3
2
6
 
3
7
  MAINTAINER Wouter Coppieters <wc@pico.net.nz>
4
8
 
5
- RUN apt-get update && apt-get install -y curl gnupg2 software-properties-common lsb-release
6
- RUN curl -fsSL https://crystal-lang.org/install.sh | bash
9
+ # Install necessary dependencies for Ruby and Crystal
10
+ RUN apt-get update && apt-get install -y \
11
+ curl \
12
+ gnupg2 \
13
+ software-properties-common \
14
+ build-essential \
15
+ lsb-release
16
+
17
+ # Copy Crystal binaries and libraries from the Crystal image
18
+ COPY --from=crystal-builder /usr/share/crystal /usr/share/crystal
19
+ COPY --from=crystal-builder /usr/lib/crystal /usr/lib/crystal
20
+ COPY --from=crystal-builder /usr/bin/crystal /usr/bin/crystal
21
+ COPY --from=crystal-builder /usr/bin/shards /usr/bin/shards
22
+
23
+ # Set the working directory
7
24
  WORKDIR /usr/src/app
8
25
 
26
+ # Copy the Ruby dependencies
9
27
  COPY Gemfile Gemfile.lock ./
10
28
  COPY crystalruby.gemspec ./
11
29
  COPY lib/crystalruby/version.rb ./lib/crystalruby/version.rb
12
30
 
31
+ # Install Ruby dependencies
13
32
  RUN bundle install
33
+
34
+ # Copy the rest of your application
14
35
  COPY . .
15
36
 
16
37
  # Define the command to run your application