liquid-c 4.0.1 → 4.2.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 (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