Tobi Lutke and Chris Pak
9e6f93a494
replace SIMPLE_VARIABLE regex with byte-level scanner to avoid MatchData
2026-04-04 17:33:53 -07:00
Tobi Lutke and Chris Pak
dc6e9799e9
fast-path simple variable parsing: skip Lexer/Parser for plain dot-separated lookups
2026-04-04 17:33:53 -07:00
Tobi Lutke and Chris Pak
98e29aa4a7
use frozen EMPTY_ARRAY for Variable filters when no filters present
2026-04-04 17:33:53 -07:00
Tobi Lutke and Chris Pak
a404cf10d0
fast-path variable_lookups: skip mutable string alloc when no dot/bracket follows
2026-04-04 17:33:53 -07:00
Tobi Lutke and Chris Pak
e73b41f3b6
fast-path String in render_obj_to_output, avoid Utils.to_s dispatch for common case
2026-04-04 17:33:53 -07:00
Tobi Lutke and Chris Pak
9d9d094e20
short-circuit parse_number with first-byte check before regex
2026-04-04 17:33:53 -07:00
Tobi Lutke and Chris Pak
4c96b5f682
avoid unnecessary strip allocation in Expression.parse, use byteslice for string literals
2026-04-04 17:33:53 -07:00
Tobi Lutke and Chris Pak
0b19c0ce44
use equal? for frozen array comparison in Lexer, skip whitespace with \s+
2026-04-04 17:33:53 -07:00
Tobi Lutke and Chris Pak
a43d970473
use getbyte instead of string indexing in whitespace_handler and create_variable
2026-04-04 17:33:53 -07:00
Tobi Lutke and Chris Pak
3751f95da2
add auto/bench.sh: unit tests + liquid-spec + perf benchmark
2026-04-04 17:33:53 -07:00
Tobi Lutke and Chris Pak
6ffd0e2339
replace VariableParser regex scan with manual byte parser in VariableLookup
2026-04-04 17:33:53 -07:00
Tobi Lutke and Chris Pak
dc7dda2253
replace FullToken regex with manual byte parsing in parse_for_document
2026-04-04 17:33:53 -07:00
Tobi Lutke and Chris Pak
2479b26f5c
add quick benchmark script for autoresearch
2026-04-04 17:33:53 -07:00
Kevin Menard and GitHub
a9c85622dd
Merge pull request #2066 from eregon/skip-slow-test
...
Skip slow test raising many exceptions on non-CRuby
2026-03-26 02:14:10 -04:00
Benoit Daloze
9f4d7e78b8
Skip slow test raising many exceptions on non-CRuby
2026-03-25 17:20:30 +01:00
Kevin Menard and GitHub
fd68d076dd
Merge pull request #2038 from eregon/truffleruby-ci
...
Add TruffleRuby in CI
2026-03-25 11:53:01 -04:00
Benoit Daloze
96aa47d13f
Add TruffleRuby in CI
2026-03-25 16:46:47 +01:00
Benoit Daloze
ad70c5c459
Improve no Symbol leak tests to be more reliable
2026-03-25 16:46:47 +01:00
Benoit Daloze
d824de701c
Adapt slice filter to work on non-64 bit platforms
2026-03-25 16:46:47 +01:00
Alok Swamy and GitHub
dd37353cca
Merge pull request #2062 from Shopify/update-setup-ruby
...
Update ruby/setup-ruby to v1.295.0 for ubuntu-24.04 support
2026-03-19 15:29:47 -04:00
Alok Swamy and Claude Opus 4.6
e80f775f89
Update ruby/setup-ruby from v1.273.0 to v1.295.0
...
The pinned version (v1.273.0) does not have prebuilt `ruby-head` binaries
for `ubuntu-24.04`, which `ubuntu-latest` now resolves to. This causes CI
to fail with "Unavailable version head for ruby on ubuntu-24.04".
Updating to v1.295.0 picks up ubuntu-24.04 support for all Ruby versions
including head builds.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected] >
2026-03-19 15:22:56 -04:00
Ian Ker-Seymer and GitHub
59d8d0d22d
Add cumulative resource score tracking across partial renders ( #2058 )
...
* feat: add cumulative resource score tracking across partial renders
Add cumulative_render_score and cumulative_assign_score counters to
ResourceLimits that accumulate across reset() calls, with optional
cumulative_render_score_limit and cumulative_assign_score_limit to
cap total work across all partial renders.
Also add a reached? check in BlockBody's render loop so that once a
cumulative limit triggers, the parent template stops processing
further nodes.
Bump version to 5.12.0.
* refactor: move cumulative limit enforcement into reset()
Instead of checking reached? in BlockBody's render loop, enforce
cumulative limits in reset() itself. Since reset() is called before
the begin/rescue MemoryError block in Template#render, the raise
propagates to the parent naturally — no changes to BlockBody needed.
v5.12.0
2026-03-18 11:54:46 -04:00
Gray Gilmore and GitHub
5fa36267aa
Merge pull request #2054 from Shopify/gg-fix-rubocop-offenses
...
Fix rubocop offenses in test file
2026-03-06 13:28:54 -08:00
Gray Gilmore
a72b604680
Fix rubocop offenses in test file
2026-03-06 13:27:05 -08:00
Gray Gilmore and GitHub
3e76244cd2
Merge pull request #2050 from bakura10/squish-filter
...
Add squish filter
2026-03-06 13:22:18 -08:00
Michaël Gallego
d589c51697
Add squish filter
2026-02-19 10:03:52 +09:00
CP Clermont and GitHub
d897899f66
Merge pull request #2036 from Shopify/cp-fix-rubocop
...
Update the specs to new signature and fix CI
2026-01-14 09:14:01 -05:00
Charles-P. Clermont and Claude Opus 4.5
aa817c4cfd
Update liquid-spec adapters for new ctx-based API
...
liquid-spec main changed the adapter API:
- compile block now receives (ctx, source, options) and should store
the template in ctx[:template]
- render block now receives (ctx, assigns, options) and retrieves
the template from ctx[:template]
Co-Authored-By: Claude Opus 4.5 <[email protected] >
2026-01-13 13:06:55 -05:00
Charles-P. Clermont
7d90b524ea
Remove on pull_request trigger. It's redundant.
2026-01-12 13:27:53 -05:00
Charles-P. Clermont
bbcf8d6ad8
Better matrix CI check names
2026-01-12 13:27:52 -05:00
Charles-P. Clermont
51ff08db7b
Fix CI
2026-01-12 13:06:13 -05:00
Tobi Lutke and Claude Opus 4.5
eaa9f215bf
Add lax and YJIT liquid-spec adapters
...
- ruby_liquid_lax.rb: Tests lax parsing mode with :lax_parsing feature
- ruby_liquid_yjit.rb: Tests YJIT + strict mode + ActiveSupport
Matrix results: 4483 matched, 18 different (lax edge cases), 61 skipped
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <[email protected] >
2026-01-05 15:11:29 -10:00
Tobi Lutke and Claude Opus 4.5
ccd05e869c
Make blank/empty comparisons invariant to ActiveSupport
...
- Implement liquid_blank? and liquid_empty? methods in Condition
to emulate ActiveSupport's behavior when it's not loaded
- This ensures templates like `{% if x == blank %}` work identically
whether ActiveSupport is loaded or not
- Update liquid-spec adapters for new API (ctx parameter)
- Add rake spec task for running liquid-spec matrix
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <[email protected] >
2026-01-05 14:54:43 -10:00
Tobias Lütke and GitHub
a4a29f3e08
Merge pull request #2034 from Shopify/fix-liquid-spec-without-activesupport
...
Require liquid-spec to be run on commit automatically and related fixes
2026-01-01 22:32:38 -05:00
Tobi Lutke
0058e4322b
Add fail-fast: false to prevent job cancellation
2026-01-01 22:30:14 -05:00
Tobi Lutke
50e1789537
Use liquid-spec feature branch until PR is merged
2026-01-01 22:29:32 -05:00
Tobi Lutke
79a2e042ff
Use liquid-spec main branch
2026-01-01 22:24:00 -05:00
Tobi Lutke
ddee08fb95
Add activesupport feature to with_active_support adapter
...
Both adapters now pass with 0 failures:
- ruby_liquid.rb: 4194 passed (skips activesupport and shopify_error_handling specs)
- ruby_liquid_with_active_support.rb: 4203 passed (skips shopify_error_handling specs)
2026-01-01 22:21:47 -05:00
Tobi Lutke
2988f1a500
Update liquid-spec to branch with per-spec required_features support
2026-01-01 22:15:38 -05:00
Tobi Lutke
ef13b2dfd5
Fix empty? semantics and string first/last for empty strings
...
- nil is NOT empty (but IS blank) - matches Shopify production
- String first/last returns '' for empty strings, not nil - matches ActiveSupport
- Add test for nil not being empty
2026-01-01 22:06:22 -05:00
Tobi Lutke
b0fb0ad83f
Run liquid-spec for all adapters in spec/*.rb
2026-01-01 22:02:42 -05:00
Tobi Lutke
ae26cb29ac
Disable auto-require for activesupport gem
2026-01-01 22:00:49 -05:00
Tobi Lutke
608a877053
Add spec adapter with ActiveSupport for comparison testing
2026-01-01 22:00:38 -05:00
Tobi Lutke
d321adae77
Fix spec adapter for liquid-spec API (template, assigns, options)
2026-01-01 21:59:16 -05:00
Tobi Lutke
53641e19ce
Pin liquid-spec to minimum required commit 3d1b492
2026-01-01 21:57:34 -05:00
Tobi Lutke
ccd10a986a
Pin liquid-spec to main branch
2026-01-01 21:56:39 -05:00
Tobi Lutke
f4890de9d5
hm
2026-01-01 21:54:08 -05:00
Tobi Lutke
7e3ccbc188
test
2026-01-01 21:49:33 -05:00
Tobi Lutke
e0b46049af
Add Ruby 3.4 yjit, 4.0 zjit, and head zjit to CI matrix
2026-01-01 21:44:28 -05:00
Tobi Lutke
19528a9b3f
Update CI matrix: remove Ruby 3.0-3.2, add Ruby 4.0
2026-01-01 21:42:47 -05:00