chore: Improve CI time#2661
Conversation
|
pkg.pr.new packages benchmark commit |
Bundle size comparison (
|
| 🟢 Decreased | ➖ Unchanged | 🔴 Increased | ❔ Unknown |
|---|---|---|---|
| 0 | 320 | 0 | 0 |
import { ... } in PR vs import * as ... in PR (is the library tree-Shakeable?):
Click to reveal the results table (297 entries).
| Test | tsdown |
|---|---|
| d_Void.ts | 87.41 kB ( |
| d_sampler.ts | 87.41 kB ( |
| d_isPtr.ts | 87.41 kB ( |
| d_comparisonSampler.ts | 87.42 kB ( |
| d_isSizeAttrib.ts | 87.42 kB ( |
| d_isWgslArray.ts | 87.42 kB ( |
| d_isAlignAttrib.ts | 87.42 kB ( |
| d_isWgslStruct.ts | 87.42 kB ( |
| d_isAtomic.ts | 87.41 kB ( |
| d_isBuiltinAttrib.ts | 87.42 kB ( |
| d_isLocationAttrib.ts | 87.42 kB ( |
| d_isDecorated.ts | 87.42 kB ( |
| d_isInterpolateAttrib.ts | 87.42 kB ( |
| d_atomic.ts | 87.41 kB ( |
| d_ptrHandle.ts | 87.41 kB ( |
| d_ptrUniform.ts | 87.41 kB ( |
| d_ptrStorage.ts | 87.41 kB ( |
| d_ptrPrivate.ts | 87.41 kB ( |
| d_ptrFn.ts | 87.41 kB ( |
| d_ptrWorkgroup.ts | 87.42 kB ( |
| d_textureExternal.ts | 87.42 kB ( |
| d_textureStorage1d.ts | 87.42 kB ( |
| d_textureStorage2d.ts | 87.42 kB ( |
| d_textureStorage3d.ts | 87.42 kB ( |
| d_textureStorage2dArray.ts | 87.42 kB ( |
| d_isDisarray.ts | 87.41 kB ( |
| d_isUnstruct.ts | 87.41 kB ( |
| d_isLooseDecorated.ts | 87.42 kB ( |
| d_isLooseData.ts | 87.42 kB ( |
| d_isWgslData.ts | 87.41 kB ( |
| d_unstruct.ts | 87.41 kB ( |
| d_isData.ts | 87.41 kB ( |
| d_deepEqual.ts | 87.41 kB ( |
| d_struct.ts | 87.41 kB ( |
| d_ref.ts | 87.41 kB ( |
| std_discard.ts | 103.15 kB ( |
| std_copy.ts | 103.14 kB ( |
| std_arrayLength.ts | 103.15 kB ( |
| std_isBeingTranspiled.ts | 103.16 kB ( |
| std_getTargetShaderLanguage.ts | 103.16 kB ( |
| std_extensionEnabled.ts | 103.16 kB ( |
| std_range.ts | 103.14 kB ( |
| std_dpdx.ts | 103.14 kB ( |
| std_fwidthCoarse.ts | 103.15 kB ( |
| std_dpdxCoarse.ts | 103.15 kB ( |
| std_dpdyCoarse.ts | 103.15 kB ( |
| std_fwidthFine.ts | 103.15 kB ( |
| std_dpdxFine.ts | 103.15 kB ( |
| std_dpdyFine.ts | 103.15 kB ( |
| std_fwidth.ts | 103.15 kB ( |
| std_dpdy.ts | 103.14 kB ( |
| d_bool.ts | 87.41 kB ( |
| d_f16.ts | 87.41 kB ( |
| d_f32.ts | 87.41 kB ( |
| d_i32.ts | 87.41 kB ( |
| d_u32.ts | 87.41 kB ( |
| d_u16.ts | 87.41 kB ( |
| std_atomicLoad.ts | 103.15 kB ( |
| std_textureBarrier.ts | 103.15 kB ( |
| std_atomicStore.ts | 103.15 kB ( |
| std_workgroupBarrier.ts | 103.16 kB ( |
| std_storageBarrier.ts | 103.15 kB ( |
| std_atomicAdd.ts | 103.15 kB ( |
| std_atomicAnd.ts | 103.15 kB ( |
| std_atomicMax.ts | 103.15 kB ( |
| std_atomicMin.ts | 103.15 kB ( |
| std_atomicSub.ts | 103.15 kB ( |
| std_atomicXor.ts | 103.15 kB ( |
| std_atomicOr.ts | 103.15 kB ( |
| d_textureDepth2d.ts | 87.42 kB ( |
| d_textureDepthCube.ts | 87.42 kB ( |
| d_texture1d.ts | 87.41 kB ( |
| d_texture2d.ts | 87.41 kB ( |
| d_texture3d.ts | 87.41 kB ( |
| d_textureDepth2dArray.ts | 87.42 kB ( |
| d_textureCube.ts | 87.42 kB ( |
| d_textureDepthCubeArray.ts | 87.42 kB ( |
| d_textureDepthMultisampled2d.ts | 87.43 kB ( |
| d_texture2dArray.ts | 87.42 kB ( |
| d_textureCubeArray.ts | 87.42 kB ( |
| d_textureMultisampled2d.ts | 87.42 kB ( |
| d_disarrayOf.ts | 87.41 kB ( |
| d_vec2b.ts | 87.41 kB ( |
| d_vec2f.ts | 87.41 kB ( |
| d_vec2h.ts | 87.41 kB ( |
| d_vec2i.ts | 87.41 kB ( |
| d_vec2u.ts | 87.41 kB ( |
| d_vec3b.ts | 87.41 kB ( |
| d_vec3f.ts | 87.41 kB ( |
| d_vec3h.ts | 87.41 kB ( |
| d_vec3i.ts | 87.41 kB ( |
| d_vec3u.ts | 87.41 kB ( |
| d_vec4b.ts | 87.41 kB ( |
| d_vec4f.ts | 87.41 kB ( |
| d_vec4h.ts | 87.41 kB ( |
| d_vec4i.ts | 87.41 kB ( |
| d_vec4u.ts | 87.41 kB ( |
| std_subgroupAdd.ts | 103.15 kB ( |
| std_subgroupBroadcastFirst.ts | 103.16 kB ( |
| std_subgroupExclusiveAdd.ts | 103.16 kB ( |
| std_subgroupExclusiveMul.ts | 103.16 kB ( |
| std_subgroupInclusiveAdd.ts | 103.16 kB ( |
| std_subgroupInclusiveMul.ts | 103.16 kB ( |
| std_subgroupShuffleDown.ts | 103.16 kB ( |
| std_subgroupShuffleXor.ts | 103.16 kB ( |
| std_subgroupBroadcast.ts | 103.16 kB ( |
| std_subgroupShuffleUp.ts | 103.16 kB ( |
| std_subgroupShuffle.ts | 103.15 kB ( |
| std_subgroupBallot.ts | 103.15 kB ( |
| std_subgroupElect.ts | 103.15 kB ( |
| std_subgroupAll.ts | 103.15 kB ( |
| std_subgroupAnd.ts | 103.15 kB ( |
| std_subgroupAny.ts | 103.15 kB ( |
| std_subgroupMax.ts | 103.15 kB ( |
| std_subgroupMin.ts | 103.15 kB ( |
| std_subgroupMul.ts | 103.15 kB ( |
| std_subgroupXor.ts | 103.15 kB ( |
| std_subgroupOr.ts | 103.15 kB ( |
| d_formatToWGSLType.ts | 87.42 kB ( |
| d_uint8.ts | 87.41 kB ( |
| d_unorm10_10_10_2.ts | 87.42 kB ( |
| d_unorm8x4_bgra.ts | 87.42 kB ( |
| d_float16x2.ts | 87.41 kB ( |
| d_float16x4.ts | 87.41 kB ( |
| d_float32x2.ts | 87.41 kB ( |
| d_float32x3.ts | 87.41 kB ( |
| d_float32x4.ts | 87.41 kB ( |
| d_snorm16x2.ts | 87.41 kB ( |
| d_snorm16x4.ts | 87.41 kB ( |
| d_unorm16x2.ts | 87.41 kB ( |
| d_unorm16x4.ts | 87.41 kB ( |
| d_sint16x2.ts | 87.41 kB ( |
| d_sint16x4.ts | 87.41 kB ( |
| d_sint32x2.ts | 87.41 kB ( |
| d_sint32x3.ts | 87.41 kB ( |
| d_sint32x4.ts | 87.41 kB ( |
| d_snorm8x2.ts | 87.41 kB ( |
| d_snorm8x4.ts | 87.41 kB ( |
| d_uint16x2.ts | 87.41 kB ( |
| d_uint16x4.ts | 87.41 kB ( |
| d_uint32x2.ts | 87.41 kB ( |
| d_uint32x3.ts | 87.41 kB ( |
| d_uint32x4.ts | 87.41 kB ( |
| d_unorm8x2.ts | 87.41 kB ( |
| d_unorm8x4.ts | 87.41 kB ( |
| d_float16.ts | 87.41 kB ( |
| d_float32.ts | 87.41 kB ( |
| d_sint8x2.ts | 87.41 kB ( |
| d_sint8x4.ts | 87.41 kB ( |
| d_snorm16.ts | 87.41 kB ( |
| d_uint8x2.ts | 87.41 kB ( |
| d_uint8x4.ts | 87.41 kB ( |
| d_unorm16.ts | 87.41 kB ( |
| d_sint16.ts | 87.41 kB ( |
| d_sint32.ts | 87.41 kB ( |
| d_snorm8.ts | 87.41 kB ( |
| d_uint16.ts | 87.41 kB ( |
| d_uint32.ts | 87.41 kB ( |
| d_unorm8.ts | 87.41 kB ( |
| d_sint8.ts | 87.41 kB ( |
| d_packedFormats.ts | 87.42 kB ( |
| d_isPackedData.ts | 87.42 kB ( |
| std_textureDimensions.ts | 103.16 kB ( |
| std_textureGather.ts | 103.15 kB ( |
| std_textureSampleBaseClampToEdge.ts | 103.17 kB ( |
| std_textureSampleCompareLevel.ts | 103.16 kB ( |
| std_textureSampleCompare.ts | 103.16 kB ( |
| std_textureSampleLevel.ts | 103.16 kB ( |
| std_textureSampleBias.ts | 103.16 kB ( |
| std_textureSampleGrad.ts | 103.16 kB ( |
| std_textureSample.ts | 103.15 kB ( |
| std_textureStore.ts | 103.15 kB ( |
| std_textureLoad.ts | 103.15 kB ( |
| d_alignmentOf.ts | 87.42 kB ( |
| std_translation4.ts | 103.15 kB ( |
| std_rotationX4.ts | 103.15 kB ( |
| std_rotationY4.ts | 103.15 kB ( |
| std_rotationZ4.ts | 103.15 kB ( |
| std_identity2.ts | 103.15 kB ( |
| std_identity3.ts | 103.15 kB ( |
| std_identity4.ts | 103.15 kB ( |
| std_scaling4.ts | 103.15 kB ( |
| d_isBuiltin.ts | 87.41 kB ( |
| d_sizeOf.ts | 87.41 kB ( |
| d_isContiguous.ts | 87.42 kB ( |
| d_getLongestContiguousPrefix.ts | 87.43 kB ( |
| d_arrayOf.ts | 87.41 kB ( |
| d_size.ts | 87.41 kB ( |
| d_align.ts | 87.41 kB ( |
| d_location.ts | 87.41 kB ( |
| d_interpolate.ts | 87.42 kB ( |
| d_invariant.ts | 87.41 kB ( |
| d_mat4x4f.ts | 87.41 kB ( |
| d_mat2x2f.ts | 87.41 kB ( |
| d_mat3x3f.ts | 87.41 kB ( |
| d_matToArray.ts | 87.41 kB ( |
| d_builtin.ts | 87.41 kB ( |
| std_unpack2x16float.ts | 103.15 kB ( |
| std_unpack4x8unorm.ts | 103.15 kB ( |
| std_pack2x16float.ts | 103.15 kB ( |
| std_pack4x8unorm.ts | 103.15 kB ( |
| std_bitcastU32toF32.ts | 103.15 kB ( |
| std_bitcastU32toI32.ts | 103.15 kB ( |
| std_neg.ts | 103.14 kB ( |
| std_bitShiftRight.ts | 103.15 kB ( |
| std_bitShiftLeft.ts | 103.15 kB ( |
| std_add.ts | 103.14 kB ( |
| std_div.ts | 103.14 kB ( |
| std_mod.ts | 103.14 kB ( |
| std_mul.ts | 103.14 kB ( |
| std_sub.ts | 103.14 kB ( |
| std_translate4.ts | 103.15 kB ( |
| std_rotateX4.ts | 103.15 kB ( |
| std_scale4.ts | 103.15 kB ( |
| std_rotateY4.ts | 103.15 kB ( |
| std_rotateZ4.ts | 103.15 kB ( |
| d_memoryLayoutOf.ts | 87.42 kB ( |
| std_and.ts | 103.14 kB ( |
| std_or.ts | 103.14 kB ( |
| std_select.ts | 103.15 kB ( |
| std_allEq.ts | 103.14 kB ( |
| std_all.ts | 103.14 kB ( |
| std_not.ts | 103.14 kB ( |
| std_eq.ts | 103.14 kB ( |
| std_lt.ts | 103.14 kB ( |
| std_ne.ts | 103.14 kB ( |
| std_isCloseTo.ts | 103.15 kB ( |
| std_any.ts | 103.14 kB ( |
| std_ge.ts | 103.14 kB ( |
| std_gt.ts | 103.14 kB ( |
| std_le.ts | 103.14 kB ( |
| std_dot4U8Packed.ts | 103.15 kB ( |
| std_length.ts | 103.15 kB ( |
| std_countTrailingZeros.ts | 103.16 kB ( |
| std_distance.ts | 103.15 kB ( |
| std_dot.ts | 103.14 kB ( |
| std_countLeadingZeros.ts | 103.16 kB ( |
| std_firstTrailingBit.ts | 103.16 kB ( |
| std_firstLeadingBit.ts | 103.15 kB ( |
| std_fract.ts | 103.14 kB ( |
| std_frexp.ts | 103.14 kB ( |
| std_modf.ts | 103.14 kB ( |
| std_quantizeToF16.ts | 103.15 kB ( |
| std_mix.ts | 103.14 kB ( |
| std_countOneBits.ts | 103.15 kB ( |
| std_dot4I8Packed.ts | 103.15 kB ( |
| std_determinant.ts | 103.15 kB ( |
| std_extractBits.ts | 103.15 kB ( |
| std_faceForward.ts | 103.15 kB ( |
| std_inverseSqrt.ts | 103.15 kB ( |
| std_reverseBits.ts | 103.15 kB ( |
| std_insertBits.ts | 103.15 kB ( |
| std_smoothstep.ts | 103.15 kB ( |
| std_normalize.ts | 103.15 kB ( |
| std_transpose.ts | 103.15 kB ( |
| std_saturate.ts | 103.15 kB ( |
| std_degrees.ts | 103.15 kB ( |
| std_radians.ts | 103.15 kB ( |
| std_reflect.ts | 103.15 kB ( |
| std_refract.ts | 103.15 kB ( |
| std_acosh.ts | 103.14 kB ( |
| std_asinh.ts | 103.14 kB ( |
| std_atan2.ts | 103.14 kB ( |
| std_atanh.ts | 103.14 kB ( |
| std_clamp.ts | 103.14 kB ( |
| std_cross.ts | 103.14 kB ( |
| std_floor.ts | 103.14 kB ( |
| std_ldexp.ts | 103.14 kB ( |
| std_round.ts | 103.14 kB ( |
| std_trunc.ts | 103.14 kB ( |
| std_acos.ts | 103.14 kB ( |
| std_asin.ts | 103.14 kB ( |
| std_atan.ts | 103.14 kB ( |
| std_ceil.ts | 103.14 kB ( |
| std_cosh.ts | 103.14 kB ( |
| std_exp2.ts | 103.14 kB ( |
| std_log2.ts | 103.14 kB ( |
| std_sign.ts | 103.14 kB ( |
| std_sinh.ts | 103.14 kB ( |
| std_sqrt.ts | 103.14 kB ( |
| std_step.ts | 103.14 kB ( |
| std_tanh.ts | 103.14 kB ( |
| std_abs.ts | 103.14 kB ( |
| std_cos.ts | 103.14 kB ( |
| std_exp.ts | 103.14 kB ( |
| std_fma.ts | 103.14 kB ( |
| std_log.ts | 103.14 kB ( |
| std_max.ts | 103.14 kB ( |
| std_min.ts | 103.14 kB ( |
| std_pow.ts | 103.14 kB ( |
| std_sin.ts | 103.14 kB ( |
| std_tan.ts | 103.14 kB ( |
| common_fullScreenTriangle.ts | 57.18 kB ( |
| common_writeSoA.ts | 57.17 kB ( |
| STATIC_allImports.ts | 287.20 kB ( |
| STATIC_d.ts | 87.40 kB ( |
| STATIC_std.ts | 103.14 kB ( |
If you wish to run a comparison for other, slower bundlers, run the 'Tree-shake test' from the GitHub Actions menu.
Resolution Time Benchmark---
config:
themeVariables:
xyChart:
plotColorPalette: "#E63946, #3B82F6, #059669"
---
xychart
title "Random Branching (🔴 PR | 🔵 main | 🟢 release)"
x-axis "max depth" [1, 2, 3, 4, 5, 6, 7, 8]
y-axis "time (ms)"
line [0.77, 1.59, 3.55, 5.27, 6.70, 9.25, 18.58, 20.74]
line [0.88, 1.66, 3.72, 5.49, 6.34, 11.15, 19.09, 21.69]
line [0.81, 1.64, 3.56, 5.42, 6.59, 10.04, 19.68, 22.18]
---
config:
themeVariables:
xyChart:
plotColorPalette: "#E63946, #3B82F6, #059669"
---
xychart
title "Linear Recursion (🔴 PR | 🔵 main | 🟢 release)"
x-axis "max depth" [1, 2, 3, 4, 5, 6, 7, 8]
y-axis "time (ms)"
line [0.28, 0.48, 0.61, 0.74, 1.01, 1.01, 1.21, 1.32]
line [0.33, 0.51, 0.63, 0.75, 0.99, 1.10, 1.22, 1.37]
line [0.31, 0.51, 0.58, 0.77, 0.99, 1.10, 1.30, 1.38]
---
config:
themeVariables:
xyChart:
plotColorPalette: "#E63946, #3B82F6, #059669"
---
xychart
title "Full Tree (🔴 PR | 🔵 main | 🟢 release)"
x-axis "max depth" [1, 2, 3, 4, 5, 6, 7, 8]
y-axis "time (ms)"
line [0.83, 1.92, 3.57, 5.64, 10.87, 22.46, 47.26, 96.97]
line [0.90, 1.79, 3.31, 5.48, 10.65, 22.72, 47.08, 97.38]
line [0.79, 1.72, 4.01, 5.61, 10.92, 22.81, 47.72, 96.83]
|
48bcc00 to
29ab46e
Compare
29ab46e to
cd0ad83
Compare
There was a problem hiding this comment.
Pull request overview
This PR aims to cut CI runtime by reducing unnecessary TypeScript scope and splitting the previous monolithic CI work into smaller, more focused GitHub Actions workflows.
Changes:
- Split CI into dedicated workflows for unit (source), unit (built), miscellaneous checks (style/types/circular deps), and docs build.
- Reduce TypeScript project scope via expanded
excludein the roottsconfig.json, and add an app-specifictsconfig.jsonforapps/infra-benchmarks. - Disable Vitest per-file isolation for select test projects to speed up execution.
Reviewed changes
Copilot reviewed 7 out of 8 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tsconfig.json | Excludes more paths (node_modules/apps) from the root TS program to reduce type-aware workload. |
| packages/typegpu/vitest.config.mts | Turns off Vitest isolation for the typegpu package test project. |
| apps/typegpu-docs/vitest.config.mts | Turns off Vitest isolation for the docs “individual-example-tests” project. |
| apps/infra-benchmarks/tsconfig.json | Adds a local TS config for the infra-benchmarks app. |
| .github/workflows/test-unit.yml | New workflow to run unit tests on source. |
| .github/workflows/test-built-unit.yml | New workflow to run unit tests against built packages. |
| .github/workflows/test-misc.yml | New workflow for style, types, and circular dependency checks. |
| .github/workflows/test-docs.yml | Renames/specializes the docs workflow to only build docs (with concurrency). |
Comments suppressed due to low confidence (1)
.github/workflows/test-docs.yml:37
typegpu-docs’sbuildscript already runsastro check(seeapps/typegpu-docs/package.json). Since the newTest miscellaneousworkflow also runspnpm test:types(which runsastro checkas well), this ends up repeating the same type-check in CI.
If CI time is the priority, consider invoking astro build directly here (after transform-overloads) and relying on the separate types job for astro check.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| globalSetup: ['setupVitest.ts'], | ||
| isolate: false, | ||
| }, |
There was a problem hiding this comment.
When tests touch metadata maps, the keys are local definitions within the test itself, so it shouldn't be a problem
| test: { | ||
| name: 'individual-example-tests', | ||
| root: './tests/individual-example-tests', | ||
| environment: 'node', | ||
| isolate: false, | ||
| }, |
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes — split the single ci.yml workflow into four parallel jobs and disabled Vitest test isolation to cut CI wall time roughly in half.
- Split CI into parallel workflows —
test-unit.yml,test-built-unit.yml,test-misc.yml, andtest-docs.ymlrun the formerpnpm test+ docs build in parallel. - Added concurrency cancellation — redundant runs on the same ref are cancelled for each workflow.
- Disabled Vitest isolation —
isolate: falseinpackages/typegpu/vitest.config.mtsand theindividual-example-testsproject speeds up runs; fixtures clean up per test so this looks safe. - Added
apps/infra-benchmarks/tsconfig.json— gives the app its own TS config now thatapps/**is excluded from the root tsconfig.
Kimi K2 (free via Pullfrog for OSS) | 𝕏

Uh oh!
There was an error while loading. Please reload this page.