mirror of
https://github.com/penpot/penpot.git
synced 2026-11-13 13:31:24 +00:00
Add a CLI under frontend/performance/benches/render_wasm that builds the renderer, runs seeded scenes (rects, plus, paths, masks) in headless Chromium and saves per-case timings. - build, run: prepare or reuse builds; measure cases with warmups, repetitions, deadlines - ab: build and compare Cargo feature configurations - compare, merge: median changes with bootstrap CIs between saved runs, guarded by scene, build and settings checks - purge: delete managed builds, runs or comparisons - GPU runs through `run-devenv --gpu` Lint, format and pnpm scripts now cover performance/ and its tests. AI-assisted-by: gpt-6.1-sol, deepseek-flash, muse-spark, glm-5.3, gpt6-astra, claude-5.5-sonnet, claude-haiku-5.5
31 lines
1.1 KiB
Clojure
31 lines
1.1 KiB
Clojure
;; This Source Code Form is subject to the terms of the Mozilla Public
|
|
;; License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
;; file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
;;
|
|
;; Copyright (c) KALEIDOS SUBSIDIARY SL
|
|
|
|
(ns benches.render-wasm.runtime.protocol
|
|
"Forms for evaluating renderer operations as Promises.
|
|
A Promise represents a result that can complete with a value or reject with
|
|
a cause. These forms include synchronous errors in that result.")
|
|
|
|
(defmacro resolve-or-reject
|
|
"Evaluates `body` and returns a Promise of its result.
|
|
A synchronous throw rejects the Promise."
|
|
[& body]
|
|
`(try
|
|
(js/Promise.resolve (do ~@body))
|
|
(catch :default cause#
|
|
(js/Promise.reject cause#))))
|
|
|
|
(defmacro resolve-or-reject-with
|
|
"Evaluates `body` and returns a Promise of its result.
|
|
A synchronous throw rejects with `on-error`, evaluated with `cause` bound
|
|
to the thrown value."
|
|
[cause on-error & body]
|
|
`(try
|
|
(js/Promise.resolve (do ~@body))
|
|
(catch :default cause#
|
|
(let [~cause cause#]
|
|
(js/Promise.reject ~on-error)))))
|