liquid-c 4.0.1 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/cla.yml +23 -0
  3. data/.github/workflows/liquid.yml +36 -11
  4. data/.gitignore +4 -0
  5. data/.rubocop.yml +14 -0
  6. data/Gemfile +15 -5
  7. data/README.md +32 -8
  8. data/Rakefile +12 -63
  9. data/ext/liquid_c/block.c +493 -60
  10. data/ext/liquid_c/block.h +28 -2
  11. data/ext/liquid_c/c_buffer.c +42 -0
  12. data/ext/liquid_c/c_buffer.h +76 -0
  13. data/ext/liquid_c/context.c +233 -0
  14. data/ext/liquid_c/context.h +70 -0
  15. data/ext/liquid_c/document_body.c +97 -0
  16. data/ext/liquid_c/document_body.h +59 -0
  17. data/ext/liquid_c/expression.c +116 -0
  18. data/ext/liquid_c/expression.h +24 -0
  19. data/ext/liquid_c/extconf.rb +21 -9
  20. data/ext/liquid_c/intutil.h +22 -0
  21. data/ext/liquid_c/lexer.c +39 -3
  22. data/ext/liquid_c/lexer.h +18 -3
  23. data/ext/liquid_c/liquid.c +76 -6
  24. data/ext/liquid_c/liquid.h +24 -1
  25. data/ext/liquid_c/liquid_vm.c +618 -0
  26. data/ext/liquid_c/liquid_vm.h +25 -0
  27. data/ext/liquid_c/parse_context.c +76 -0
  28. data/ext/liquid_c/parse_context.h +13 -0
  29. data/ext/liquid_c/parser.c +153 -65
  30. data/ext/liquid_c/parser.h +4 -2
  31. data/ext/liquid_c/raw.c +136 -0
  32. data/ext/liquid_c/raw.h +6 -0
  33. data/ext/liquid_c/resource_limits.c +279 -0
  34. data/ext/liquid_c/resource_limits.h +23 -0
  35. data/ext/liquid_c/stringutil.h +44 -0
  36. data/ext/liquid_c/tokenizer.c +149 -35
  37. data/ext/liquid_c/tokenizer.h +20 -9
  38. data/ext/liquid_c/usage.c +18 -0
  39. data/ext/liquid_c/usage.h +9 -0
  40. data/ext/liquid_c/variable.c +196 -20
  41. data/ext/liquid_c/variable.h +18 -1
  42. data/ext/liquid_c/variable_lookup.c +44 -0
  43. data/ext/liquid_c/variable_lookup.h +8 -0
  44. data/ext/liquid_c/vm_assembler.c +491 -0
  45. data/ext/liquid_c/vm_assembler.h +240 -0
  46. data/ext/liquid_c/vm_assembler_pool.c +99 -0
  47. data/ext/liquid_c/vm_assembler_pool.h +26 -0
  48. data/lib/liquid/c/compile_ext.rb +44 -0
  49. data/lib/liquid/c/version.rb +3 -1
  50. data/lib/liquid/c.rb +226 -48
  51. data/liquid-c.gemspec +16 -10
  52. data/performance/c_profile.rb +23 -0
  53. data/performance.rb +6 -4
  54. data/rakelib/compile.rake +15 -0
  55. data/rakelib/integration_test.rake +43 -0
  56. data/rakelib/performance.rake +43 -0
  57. data/rakelib/rubocop.rake +6 -0
  58. data/rakelib/unit_test.rake +14 -0
  59. data/test/integration_test.rb +11 -0
  60. data/test/liquid_test_helper.rb +21 -0
  61. data/test/test_helper.rb +21 -2
  62. data/test/unit/block_test.rb +137 -0
  63. data/test/unit/context_test.rb +85 -0
  64. data/test/unit/expression_test.rb +191 -0
  65. data/test/unit/gc_stress_test.rb +28 -0
  66. data/test/unit/raw_test.rb +93 -0
  67. data/test/unit/resource_limits_test.rb +50 -0
  68. data/test/unit/tokenizer_test.rb +90 -20
  69. data/test/unit/variable_test.rb +279 -60
  70. metadata +60 -11
  71. data/test/liquid_test.rb +0 -11
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: liquid-c
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.1
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Li
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-01-11 00:00:00.000000000 Z
12
+ date: 2024-01-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: liquid
@@ -17,14 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 3.0.0
20
+ version: 5.0.1
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 3.0.0
27
+ version: 5.0.1
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: bundler
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -40,7 +40,7 @@ dependencies:
40
40
  - !ruby/object:Gem::Version
41
41
  version: '1.5'
42
42
  - !ruby/object:Gem::Dependency
43
- name: rake
43
+ name: minitest
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
@@ -54,7 +54,7 @@ dependencies:
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
- name: rake-compiler
57
+ name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
60
  - - ">="
@@ -68,7 +68,7 @@ dependencies:
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
- name: minitest
71
+ name: rake-compiler
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
74
  - - ">="
@@ -103,31 +103,73 @@ extensions:
103
103
  - ext/liquid_c/extconf.rb
104
104
  extra_rdoc_files: []
105
105
  files:
106
+ - ".github/workflows/cla.yml"
106
107
  - ".github/workflows/liquid.yml"
107
108
  - ".gitignore"
109
+ - ".rubocop.yml"
108
110
  - Gemfile
109
111
  - LICENSE.txt
110
112
  - README.md
111
113
  - Rakefile
112
114
  - ext/liquid_c/block.c
113
115
  - ext/liquid_c/block.h
116
+ - ext/liquid_c/c_buffer.c
117
+ - ext/liquid_c/c_buffer.h
118
+ - ext/liquid_c/context.c
119
+ - ext/liquid_c/context.h
120
+ - ext/liquid_c/document_body.c
121
+ - ext/liquid_c/document_body.h
122
+ - ext/liquid_c/expression.c
123
+ - ext/liquid_c/expression.h
114
124
  - ext/liquid_c/extconf.rb
125
+ - ext/liquid_c/intutil.h
115
126
  - ext/liquid_c/lexer.c
116
127
  - ext/liquid_c/lexer.h
117
128
  - ext/liquid_c/liquid.c
118
129
  - ext/liquid_c/liquid.h
130
+ - ext/liquid_c/liquid_vm.c
131
+ - ext/liquid_c/liquid_vm.h
132
+ - ext/liquid_c/parse_context.c
133
+ - ext/liquid_c/parse_context.h
119
134
  - ext/liquid_c/parser.c
120
135
  - ext/liquid_c/parser.h
136
+ - ext/liquid_c/raw.c
137
+ - ext/liquid_c/raw.h
138
+ - ext/liquid_c/resource_limits.c
139
+ - ext/liquid_c/resource_limits.h
140
+ - ext/liquid_c/stringutil.h
121
141
  - ext/liquid_c/tokenizer.c
122
142
  - ext/liquid_c/tokenizer.h
143
+ - ext/liquid_c/usage.c
144
+ - ext/liquid_c/usage.h
123
145
  - ext/liquid_c/variable.c
124
146
  - ext/liquid_c/variable.h
147
+ - ext/liquid_c/variable_lookup.c
148
+ - ext/liquid_c/variable_lookup.h
149
+ - ext/liquid_c/vm_assembler.c
150
+ - ext/liquid_c/vm_assembler.h
151
+ - ext/liquid_c/vm_assembler_pool.c
152
+ - ext/liquid_c/vm_assembler_pool.h
125
153
  - lib/liquid/c.rb
154
+ - lib/liquid/c/compile_ext.rb
126
155
  - lib/liquid/c/version.rb
127
156
  - liquid-c.gemspec
128
157
  - performance.rb
129
- - test/liquid_test.rb
158
+ - performance/c_profile.rb
159
+ - rakelib/compile.rake
160
+ - rakelib/integration_test.rake
161
+ - rakelib/performance.rake
162
+ - rakelib/rubocop.rake
163
+ - rakelib/unit_test.rake
164
+ - test/integration_test.rb
165
+ - test/liquid_test_helper.rb
130
166
  - test/test_helper.rb
167
+ - test/unit/block_test.rb
168
+ - test/unit/context_test.rb
169
+ - test/unit/expression_test.rb
170
+ - test/unit/gc_stress_test.rb
171
+ - test/unit/raw_test.rb
172
+ - test/unit/resource_limits_test.rb
131
173
  - test/unit/tokenizer_test.rb
132
174
  - test/unit/variable_test.rb
133
175
  homepage: https://github.com/shopify/liquid-c
@@ -143,19 +185,26 @@ required_ruby_version: !ruby/object:Gem::Requirement
143
185
  requirements:
144
186
  - - ">="
145
187
  - !ruby/object:Gem::Version
146
- version: '0'
188
+ version: 2.5.0
147
189
  required_rubygems_version: !ruby/object:Gem::Requirement
148
190
  requirements:
149
191
  - - ">="
150
192
  - !ruby/object:Gem::Version
151
193
  version: '0'
152
194
  requirements: []
153
- rubygems_version: 3.3.3
195
+ rubygems_version: 3.5.4
154
196
  signing_key:
155
197
  specification_version: 4
156
198
  summary: Liquid performance extension in C
157
199
  test_files:
158
- - test/liquid_test.rb
200
+ - test/integration_test.rb
201
+ - test/liquid_test_helper.rb
159
202
  - test/test_helper.rb
203
+ - test/unit/block_test.rb
204
+ - test/unit/context_test.rb
205
+ - test/unit/expression_test.rb
206
+ - test/unit/gc_stress_test.rb
207
+ - test/unit/raw_test.rb
208
+ - test/unit/resource_limits_test.rb
160
209
  - test/unit/tokenizer_test.rb
161
210
  - test/unit/variable_test.rb
data/test/liquid_test.rb DELETED
@@ -1,11 +0,0 @@
1
- liquid_lib_dir = $LOAD_PATH.detect{ |p| File.exist?(File.join(p, 'liquid.rb')) }
2
- liquid_test_dir = File.join(File.dirname(liquid_lib_dir), 'test')
3
- $LOAD_PATH << liquid_test_dir
4
-
5
- require 'test_helper'
6
- require 'liquid/c'
7
-
8
- test_files = Dir[File.join(liquid_test_dir, "integration/**/*_test.rb")]
9
- test_files.each do |test_file|
10
- require test_file
11
- end