원문 캡처 · powderworks.dev
원문 캡처 · powderworks.dev

Powderworks는 보안·코드 분석 도구를 위한 Tree-sitter 호환 WebAssembly 문법 77종을 13개 언어에 걸쳐 제공한다. 언어 버전과 방언별로 문법을 나눠, 해당 버전에서 유효한 코드와 오류를 구분하도록 설계했다고 밝혔다.

Tree-sitter 문법은 편집기에서 입력 중인 코드를 계속 분석하도록 오류를 보정하거나 건너뛸 수 있지만, 정적 분석 도구에서는 이런 동작이 누락 탐지나 오탐으로 이어질 수 있다는 게 Powderworks의 설명이다. 이 회사는 자사 문법이 web-tree-sitter에 다른 Tree-sitter 문법과 같은 방식으로 로드되며, 쿼리·커서·바인딩도 사용할 수 있다고 밝혔다. 해당 파서는 Ur에도 쓰인다.

무료로 시험할 수 있는 Python 3.12 문법은 여기서 내려받을 수 있으며, 매일 밤 다시 빌드된다. 원문은 Node나 브라우저에서 실행하는 예시로 import { Language, Parser } from 'web-tree-sitter'; await Parser.init(); const grammar = await fetch('https://ur.dev/samples/ur_python_3_12.wasm'); const python = await Language.load(new Uint8Array(await grammar.arrayBuffer())); const parser = new Parser(); parser.setLanguage(python); console.log(parser.parse('print("hello")\n').rootNode.toString());를 제시한다.

Powderworks는 각 문법을 해당 언어의 기준 파서와 실제 코드베이스로 시험하고, 자사 트리와 노드·필드 단위로 대조한다고 설명했다. Python 2.7, 3.8, 3.12처럼 버전별 문법을 따로 제공하며, PostgreSQL의 DISTINCT ON처럼 방언에 따라 허용되는 구문도 구분한다. 회사는 현재 각 문법이 시험 대상 실제 코드 전체를 노드와 필드 단위로 분석해야 한다고 밝혔다.

라이선스는 월 2,500달러 또는 연 25,000달러다. 각 라이선스는 구매 기간에 공개된 모든 릴리스에 대한 영구 사용권을 제공하고, 이메일과 Slack 지원을 포함한다. 연간 라이선스는 12개월을 10개월 가격으로 제공한다. 기업용 지원도 별도로 안내한다.