crystalruby 0.2.3 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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