Commit Graph
2040 Commits
Author SHA1 Message Date
Tobi LutkeandChris Pak f879183a23 update autoresearch.md progress log 2026-04-04 17:42:32 -07:00
Tobi LutkeandChris Pak 34971c0314 replace WhitespaceOrNothing regex with byte-level blank_string? check 2026-04-04 17:42:32 -07:00
Tobi LutkeandChris Pak f24ca042a2 avoid array allocation in parse_tag_token: return tag_name, store markup/newlines as class ivars 2026-04-04 17:42:32 -07:00
Tobi LutkeandChris Pak 4ea4350775 clean up filter parsing: Lexer fallback for args, no-arg fast scan stays 2026-04-04 17:42:32 -07:00
Tobi LutkeandChris Pak aedd2dded6 autoresearch.md: add strategic direction toward single-pass scanner architecture 2026-04-04 17:42:32 -07:00
Tobi LutkeandChris Pak e1f363c72c add security constraint to autoresearch.md, fix strict mode gate 2026-04-04 17:42:32 -07:00
Tobi LutkeandChris Pak 808dad6fab split filter parsing: scan no-arg filters directly, only invoke Lexer when args present 2026-04-04 17:42:32 -07:00
Tobi LutkeandChris Pak c82b6e58ef autoresearch: add autoresearch.md/sh, increase benchmark warmup to 20 iterations 2026-04-04 17:42:32 -07:00
Tobi LutkeandChris Pak b994f22983 extend fast-path to handle quoted string literal variables (262 more fast-pathed) 2026-04-04 17:42:32 -07:00
Tobi LutkeandChris Pak 62877e666c skip filter arg splat for no-arg filters, trim render loop comments 2026-04-04 17:42:32 -07:00
Tobi LutkeandChris Pak 48a2fae5f6 hoist write score check out of render loop: skip increment_write_score when no limits active 2026-04-04 17:42:32 -07:00
Tobi LutkeandChris Pak 27fcb3a4c9 use frozen EMPTY_ARRAY for disabled_tags in Variable 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 6e9782c5cc return [tag_name, markup, newlines] from parse_tag_token: avoid 2 whitespace string allocs 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak da57336be9 use getbyte dispatch instead of start_with? in parse_for_document 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 28f29433e4 avoid empty array allocation in evaluate_filter_expressions for no-arg filters 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 4ff5523713 replace For tag Syntax regex with manual byte-level parser 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak f388c873de expose expression_cache/string_scanner via attr_reader, skip regex in filter args without colon 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 543c1e1fe7 unified fast-path Variable parsing: handle both plain lookups and filter chains without full Lexer pass for name 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 885c8df159 fast-path render for filter-less variables: skip render method overhead 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 8f67d81023 skip TagAttributes scan in for tag when no colon present 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 01f33e96e8 fast-path simple if conditions: skip ExpressionsAndOperators scan for single conditions 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 9e6f93a494 replace SIMPLE_VARIABLE regex with byte-level scanner to avoid MatchData 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak dc6e9799e9 fast-path simple variable parsing: skip Lexer/Parser for plain dot-separated lookups 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 98e29aa4a7 use frozen EMPTY_ARRAY for Variable filters when no filters present 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak a404cf10d0 fast-path variable_lookups: skip mutable string alloc when no dot/bracket follows 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris 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 LutkeandChris Pak 9d9d094e20 short-circuit parse_number with first-byte check before regex 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 4c96b5f682 avoid unnecessary strip allocation in Expression.parse, use byteslice for string literals 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 0b19c0ce44 use equal? for frozen array comparison in Lexer, skip whitespace with \s+ 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak a43d970473 use getbyte instead of string indexing in whitespace_handler and create_variable 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 3751f95da2 add auto/bench.sh: unit tests + liquid-spec + perf benchmark 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 6ffd0e2339 replace VariableParser regex scan with manual byte parser in VariableLookup 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak dc7dda2253 replace FullToken regex with manual byte parsing in parse_for_document 2026-04-04 17:33:53 -07:00
Tobi LutkeandChris Pak 2479b26f5c add quick benchmark script for autoresearch 2026-04-04 17:33:53 -07:00
Kevin MenardandGitHub 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 MenardandGitHub 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 SwamyandGitHub 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 SwamyandClaude 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-SeymerandGitHub 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 GilmoreandGitHub 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 GilmoreandGitHub 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 ClermontandGitHub 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. ClermontandClaude 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