- Implement max call stack for calling subroutine recursively #423 (@ysugimoto)
- fix: resolve missing default transport settings in HTTPS by cloning http.DefaultTransport #422 (@3846masa)
- Improve set statement value expression #420 (@ysugimoto)
- Implement digest.ecdsa_verify function#419 (@ysugimoto)
- use pcre regexp for assetion function #416 (@ysugimoto)
- Display coverage table #415 (@ysugimoto)
- Implement test coverage measurement #414 (@ysugimoto)
- Improve and new feature for parser package #413 (@ysugimoto)
- Reset regex captured group when matched #412 (@ysugimoto)
- remove goling linter-settings #411 (@ysugimoto)
- fix objective header set like foo:bar #410 (@ysugimoto)
- use pcre regular expression in interpreter #409 (@ysugimoto)
- list all configuration fields #406 (@ysugimoto)
- implement edge dictionary injectable for testing process #405 (@ysugimoto)
- implement assert.not_state assertion function #403 (@ysugimoto)
- update golang 1.23.5 and golangci-lint v1.63, fix new reports #402 (@ysugimoto)
- refactor linter context package #401 (@ysugimoto)
- Fix scheduler action #396 (@ysugimoto)
- Add more logic and error definition for long string parsing #394 (@ysugimoto)
- fix: formatting is broken if using elseif or elsif #393 (@ronnnnn)
- fix: support --version option #392 (@ronnnnn)
- Add TIME type support for conditional operators to interpreter #390 (@Co9xs)
- Update falco simulate command in README #389 (@TakeshiOnishi)
- Write formatter configuration in docs #388 (@ysugimoto)
- Fix header subfield handling #385 (@gabrielg)
- Allows subroutine calls in return statements #384 (@gabrielg)
- Allow access to body set bu synthetic in tests #382 (@gabrielg)
- Change fastly.error from FLOAT to STRING #380 (@gabrielg)
- Add support for long strings with heredoc delimiters #379 (@gabrielg)
- Implement scheduler for documentation-check #377 (@ysugimoto)
- Fix grouped testing syntax #376 (@bungoume)
- Fix fastly services recursively in terraform planned JSON #375 (@ysugimoto)
- Lint custom statement #374 (@ysugimoto)
- Lexer performance improvement #372 (@ysugimoto)
- Benchmark Performance #371 (@ysugimoto)
- fix string concatenation problem for functioncall and if expression #369 (@ysugimoto)
- add assert.not_error function to function table #368 (@ysugimoto)
- add dap subcommand and support basic DAP features #349 (@rinx)
- Fix tiny bug of base64 decode functions #351 (@ysugimoto)
- implement
assert.not_error
assertion method #352 (@ysugimoto) - fix header existence logic, exactly treat as null or empty string #353 (@ysugimoto)
- improve url encode and decode built-in functions #354 (@ysugimoto)
- move base64 related logic to shared codec #355 (@ysugimoto)
- Fix hex display: pad 01-0F values to two digits #356 (@bungoume)
- fix literal comparing issue for injected variables #357 (@ysugimoto)
- add
bereq.max_reuse_idle_time
variable support #362 (@ysugimoto) - add remote director resource to lint #363 (@ysugimoto)
- Improve string concatenation logic #364 (@ysugimoto)
- implement raising deprecated error #366 (@ysugimoto)
- docs(dap): add a brief documentation about dap subcommand #367 (@rinx)
- add watch option for incremental testing #347 (@ysugimoto)
- exact custom token #346 (@ysugimoto)
- implement uuid version7 related new functions #345 (@ysugimoto)
- inject value for tentative in simulator #344 (@ysugimoto)
- correct typo in SortDeclaration default tag #342 (@acme)
- adjust default TrailingCommentWidth to 1 #341 (@acme)
- update timezone in test #340 (@acme)
- add
--genearted
option and add vcl_pipe related linter rule #339 (@ysugimoto) - support Fastly generated specific syntaxes #338 (@ysugimoto)
- strict macro linting #336 (@ysugimoto)
- feat(formatter): prevent indentation of #FASTLY macros #335 (@acme)
- fix(formatter): remove space between return and parenthesis #334 (@acme)
- Add feature to disable only specific lint rules with ignore comment #333 (@nodaguti)
- Set exit code to 1 when there are one or more lint errors #332 (@nodaguti)
- Add extra format check for backend.share_key #331 (@nodaguti)
- Fix broken result message of tester and use exactly the same format for both passed and failed tests #330 (@nodaguti)
- Arbitrary process flow marking #327 (@ysugimoto)
- Actual proxy behavior in simulator #328 (@ysugimoto)
- Reduce memory allocation using pool #329 (@ysugimoto)
- HTTPS server Support #319 (@ysugimoto)
- Support fastly.try_select_shield new function #320 (@ysugimoto)
- Injectable Edge Dictionary on Simulator #321 (@ysugimoto)
- Subroutine mocking feature #322 (@ysugimoto)
- Bump versions on CI #323 (@ysugimoto)
- Implement plugin system #324 (@ysugimoto)
- Errors with concurrent simulator requests due to global interpreter state #282 (@richardmarshall)
- Fix offset/length handling in substr & utf8.substr #283 (@richardmarshall)
- Regex patterns must be literals #284 (@richardmarshall)
- Add missing backend.{name}.* variables #285 (@richardmarshall)
- Feature/implement formatter #291 (@ysugimoto)
- Add enforcing and ignoring subroutine scope in linter config #296 (@ysugimoto)
- Improve parser/ast for complex comments #302 (@ysugimoto)
- Feature/console subcommand #303 (@ysugimoto)
- Add assert.not_subroutine_called #247 (@bungoume)
- Save/restore current subroutine locals when processing call statement #254 (@richardmarshall)
- Handle % string escapes #256 (@richardmarshall)
- testing.call_subroutine ignores invalid subroutine name #259 (@akrainiouk)
- fixed double decoding in urldecod #261 (@akrainiouk)
- req.url: fixed consistency with Fastly implementation #262 (@akrainiouk)
- fix base64 decode related builtin function #263 (@ysugimoto)
- Fixed parsing of += operator #266 (@akrainiouk)
- keepalive_time added to supported backend properties #269 (@akrainiouk)
- improve trailing/infix comment parsing #270 (@ysugimoto)
- follow new fastly documentation #271 (@ysugimoto)
- special dealing for req.hash addition assignment #275 (@ysugimoto)
- Prioritize cache object #277 (@richardmarshall)
- fix exprression comment parsing #278 (@ysugimoto)
- Setup req.http.host in ProcessInit #279 (@richardmarshall)
- Record test runtime errors #280 (@richardmarshall)
- Additional builtin variables #245 (@richardmarshall)
- Value returns from switch and bare block statements #244 (@richardmarshall)
- Support return value in block statement and if statement #242 (@ysugimoto)
- Add support for switch statements #238 (@richardmarshall)
- Suppress notset output #234 (@ysugimoto)
- Feat/state related asserter #232 (@ysugimoto)
- Fix not_set value related implementation #231 (@ysugimoto)
- Fix time default value #230 (@ysugimoto)
- Implement table manipulation testing functions #229 (@ysugimoto)
- User defined function fixes @228 (@richardmarshall)
- Fix assigning RTIME literal to RTIME variable #226 (@MasonM)
- Add sha1 to a set of identifiers #224 (@evdokimovn)
- Propagate bare returns out of nested block statements #223 (@richardmarshall)
- State change fixes #221 (@richardmarshall)
- Fix randomint(), randomint_seeded(), randombool(), and randombool_seeded() #225 (@MasonM)
- Allow assigning a backend to a string #206 (@MasonM)
- Fix testing.override_host #207 (@MasonM)
- Fix backend not found in director #208 (@MasonM)
- Fix Terraform plan parsing when multiple resources present #209 (@MasonM)
- Fix tester/simulator when shielding used #210 (@MasonM)
- Fix segfault when testing backend from snippet #211 (@MasonM)
- Fix calling function with ident argument #212 (@MasonM)
- Don't generate error for ratelimit functions #213 (@MasonM)
- Exit with status 1 on test failures #214 (@MasonM)
- Show right port number when starting simulator #215 (@MasonM)
- Fix boolean operator precedence #216 (@MasonM)
- Allow setting bereq.http.{NAME} in miss/pass #217 (@MasonM)
- Support "return(pass)" in vcl_fetch #218 (@MasonM)
- Build on linux/arm64 #219 (@MasonM)
- Feature/add equal fold assertion #195 (@ysugimoto)
- add shield director type for origin-sheileding #197 (@ysugimoto)
- Implement STRING to ACL regex comparison #200 (@MasonM)
- Fix type of client.geo.ip_override #201 (@MasonM)
Inspect variable on testing #194 (@ysugimoto)
implement testing.override_host function #193 (@ysugimoto)
New features for the major version.
- Local Simulator - You can run your VCL locally and test what subroutine will be processed under the some limitations
- VCL Debugger - Put breakpoint onto the VCL, and then look into what variable is set
- Unit Testing - (Experimental) unit-test for the subroutine individually, can be written by VCL
- add new predefined/builtins, implement checker #171 (@ysugimoto)
- fix up output methods on runne #161 (@ysugimoto)
- Adds copy-edits for output #158 (@doramatadora)
- Adds JSON support for generic, terraform and lint usage #157 (@doramatadora)
- Add fastly_info.host_header #155 (@bungoume)
- Integrate configuration to config package #151 (@ysugimoto)
- Accept
.backend
in chash director #149 (@davinci26) - Fix resolving Terraform Modules #148 (@shadialtarsha)
- support private edge dictionary #144 (@ysugimoto)
- implement ignoring feature #124 (@ysugimoto)
- supress output #123 (@ysugimoto)
- Lint include statement on its place #119 (@ysugimoto)
- Implement fastly managed snippets linting #120 (@ysugimoto)
- fix fourth argument type of accept.language_filter_basic #121 (@ysugimoto)
- Add support for PCRE #90 (@shadialtarsha)
- Sanitize invalid chars in backend name before adding them as snippets #106 (@davinci26)
- Add more implicit conversion fuzy types #107 (@davinci26)
- lint protected HTTP headers #108 (@ysugimoto)
- Fix error with ast.GOTO and Encoder #109 (@davinci26)
- display actual line and position even identity is not found in context #112 (@ysugimoto)
- treat obective access in req.http contains semicolon character #113 (@ysugimoto)
- fix panic error for getting remote snippet #115 (@ysugimoto)
- correct parser for reserved word #117 (@ysugimoto)
- Allow req.backend to be read as a string #96 (@ivomurrell)
- Combine included VCL modules into main and parse once #93 (@ysugimoto)
- Add missing backend property #100 (@davinci26)
- Adds Tests for examples #101 (@davinci26)
- Allow function expressions in error statements #94 (@ivomurrell)
- Fetch backend snippets from Fastly API #95 (@ivomurrell)
- Allow calling functions with parentheses #92 (@shadialtarsha)
- Fix lint of log statement #91 (@davinci26)
- Add new VCL predefined variables #89 (@bungoume)
- String list arguments #82 (@ysugimoto)
- Add support for function calls as statements #73 (@shadialtarsha)
- Add support for Goto declaration #72 (@shadialtarsha)
- Updates types for resp.tarpit #74 (@davinci26)
- Adds support for h3.alt_svc function #75 (@davinci26)
- Improve include statement parsing #77 (@davinci26)
- Respect Ratelimit variables in context #67 (@shadialtarsha)
- Add warning for backend health check prober #64 (@davinci26)
- Adds support for subs with return type #57 (@davinci26)
- Support platform of
alipne
,darwin-arm64
#55 (@ysugimoto)
- Tweak multiple service linting for terraform #54 (@ysugimoto)
- extend stdin timeout,
terraform show -json
command might be a few seconds to output them
- extend stdin timeout,
- Support legacy Fastly Provider service definition of
fastly_service_v1
- Fix ident parse for table property value
- If some declaration access in table property, it should be marked as used
- Improve waf related variables #49 (@ysugimoto)
- Allow subroutine hoisting #52 (@ysugimoto)
- Support linting multiple services #53 (@ysugimoto)
- Support terraform #48 (@ysugimoto)
- [bugfix] fix token point for missing semicolon #44 (@ysugimoto)
- [bugfix] Linting
client.geo.city.utf8
#43 (@davinci26)
- [bugfix] improve type comparison in set/add statement #40 (@ysugimoto)
- impl: Support access control list #38 (@ysugimoto)
- [bugfix] Fix builtin accessor and assign operator #36 (@ysugimoto)
- [bugfix] single argument should accept in randomstr function #35 (@ysugimoto)
- Implement unused definition/variable linting #34 (@ysugimoto)
- Rename main package to cmd/falco #32 (@xordspar0)
- Fix definition of TCP congestion parameters #27 (@bungoume)
- Implement regex validity linting #26 (@ysugimoto)
- Fix minor typo #25 (@shawnps)
- use context.Set() for set statement linter #23 (@smaeda-ks)
- fix: prevent to die linter on return statement #19 (@ysugimoto)
- fix: nested block syntax could parse/lint #18 (@ysugimoto)
- Fix parsing infix block comments #13 (@dora1998)
- remove old file #10 (@ysugimoto)
- skip duplication check against Fastly's reserved subroutines #9 (@smaeda-ks)
- override severity via config #7 (@ysugimoto)
- boilerplate comment is not mandatory #6 (@smaeda-ks)
- fuzzy time type #5 (@ysugimoto)
First release