Skip to content

fix(unplugin-typegpu): Transform preserves exports#2606

Open
cieplypolar wants to merge 11 commits into
mainfrom
fix/unplugin-babel-exports
Open

fix(unplugin-typegpu): Transform preserves exports#2606
cieplypolar wants to merge 11 commits into
mainfrom
fix/unplugin-babel-exports

Conversation

@cieplypolar

@cieplypolar cieplypolar commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator
  • rollup does not work with default export

Copilot AI review requested due to automatic review settings June 12, 2026 16:57
@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown

pkg.pr.new

packages
Ready to be installed by your favorite package manager ⬇️

https://pkg.pr.new/software-mansion/TypeGPU/typegpu@569054060d76fb94c482b173895790af671d1573
https://pkg.pr.new/software-mansion/TypeGPU/@typegpu/cli@569054060d76fb94c482b173895790af671d1573
https://pkg.pr.new/software-mansion/TypeGPU/@typegpu/noise@569054060d76fb94c482b173895790af671d1573
https://pkg.pr.new/software-mansion/TypeGPU/@typegpu/react@569054060d76fb94c482b173895790af671d1573
https://pkg.pr.new/software-mansion/TypeGPU/unplugin-typegpu@569054060d76fb94c482b173895790af671d1573

benchmark
view benchmark

commit
view commit

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown

Bundle size comparison (import * as ... in PR vs import * as ... in target):

🟢 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.36 kB ($${\color{red}+12087.6\%}$$)
d_sampler.ts 87.36 kB ($${\color{red}+11956.6\%}$$)
d_isPtr.ts 87.36 kB ($${\color{red}+11796.0\%}$$)
d_comparisonSampler.ts 87.37 kB ($${\color{red}+11781.8\%}$$)
d_isSizeAttrib.ts 87.37 kB ($${\color{red}+11765.4\%}$$)
d_isWgslArray.ts 87.37 kB ($${\color{red}+11765.3\%}$$)
d_isAlignAttrib.ts 87.37 kB ($${\color{red}+11749.8\%}$$)
d_isWgslStruct.ts 87.37 kB ($${\color{red}+11749.7\%}$$)
d_isAtomic.ts 87.36 kB ($${\color{red}+11749.1\%}$$)
d_isBuiltinAttrib.ts 87.37 kB ($${\color{red}+11718.8\%}$$)
d_isLocationAttrib.ts 87.37 kB ($${\color{red}+11703.3\%}$$)
d_isDecorated.ts 87.37 kB ($${\color{red}+11702.6\%}$$)
d_isInterpolateAttrib.ts 87.38 kB ($${\color{red}+11657.2\%}$$)
d_atomic.ts 87.36 kB ($${\color{red}+11383.8\%}$$)
d_ptrHandle.ts 87.37 kB ($${\color{red}+10412.6\%}$$)
d_ptrUniform.ts 87.37 kB ($${\color{red}+10400.4\%}$$)
d_ptrStorage.ts 87.37 kB ($${\color{red}+10351.3\%}$$)
d_ptrPrivate.ts 87.37 kB ($${\color{red}+10326.9\%}$$)
d_ptrFn.ts 87.36 kB ($${\color{red}+10314.2\%}$$)
d_ptrWorkgroup.ts 87.37 kB ($${\color{red}+10302.9\%}$$)
d_textureExternal.ts 87.37 kB ($${\color{red}+10148.3\%}$$)
d_textureStorage1d.ts 87.37 kB ($${\color{red}+8527.7\%}$$)
d_textureStorage2d.ts 87.37 kB ($${\color{red}+8527.7\%}$$)
d_textureStorage3d.ts 87.37 kB ($${\color{red}+8527.7\%}$$)
d_textureStorage2dArray.ts 87.38 kB ($${\color{red}+8380.9\%}$$)
d_isDisarray.ts 87.37 kB ($${\color{red}+7754.5\%}$$)
d_isUnstruct.ts 87.37 kB ($${\color{red}+7754.5\%}$$)
d_isLooseDecorated.ts 87.37 kB ($${\color{red}+7707.1\%}$$)
d_isLooseData.ts 87.37 kB ($${\color{red}+7443.3\%}$$)
d_isWgslData.ts 87.37 kB ($${\color{red}+6566.4\%}$$)
d_unstruct.ts 87.36 kB ($${\color{red}+5544.2\%}$$)
d_isData.ts 87.36 kB ($${\color{red}+4733.0\%}$$)
d_deepEqual.ts 87.37 kB ($${\color{red}+3884.9\%}$$)
d_struct.ts 87.36 kB ($${\color{red}+2323.7\%}$$)
d_ref.ts 87.36 kB ($${\color{red}+1724.5\%}$$)
std_discard.ts 103.09 kB ($${\color{red}+626.6\%}$$)
std_copy.ts 103.09 kB ($${\color{red}+614.4\%}$$)
std_arrayLength.ts 103.10 kB ($${\color{red}+614.2\%}$$)
std_isBeingTranspiled.ts 103.10 kB ($${\color{red}+612.7\%}$$)
std_getTargetShaderLanguage.ts 103.11 kB ($${\color{red}+609.5\%}$$)
std_extensionEnabled.ts 103.10 kB ($${\color{red}+607.0\%}$$)
std_range.ts 103.09 kB ($${\color{red}+594.2\%}$$)
std_dpdx.ts 103.09 kB ($${\color{red}+585.8\%}$$)
std_fwidthCoarse.ts 103.10 kB ($${\color{red}+585.6\%}$$)
std_dpdxCoarse.ts 103.10 kB ($${\color{red}+585.6\%}$$)
std_dpdyCoarse.ts 103.10 kB ($${\color{red}+585.6\%}$$)
std_fwidthFine.ts 103.10 kB ($${\color{red}+585.6\%}$$)
std_dpdxFine.ts 103.09 kB ($${\color{red}+585.6\%}$$)
std_dpdyFine.ts 103.09 kB ($${\color{red}+585.6\%}$$)
std_fwidth.ts 103.09 kB ($${\color{red}+585.6\%}$$)
std_dpdy.ts 103.09 kB ($${\color{red}+585.6\%}$$)
d_bool.ts 87.36 kB ($${\color{red}+573.3\%}$$)
d_f16.ts 87.36 kB ($${\color{red}+573.3\%}$$)
d_f32.ts 87.36 kB ($${\color{red}+573.3\%}$$)
d_i32.ts 87.36 kB ($${\color{red}+573.3\%}$$)
d_u32.ts 87.36 kB ($${\color{red}+573.3\%}$$)
d_u16.ts 87.36 kB ($${\color{red}+572.1\%}$$)
std_atomicLoad.ts 103.10 kB ($${\color{red}+553.0\%}$$)
std_textureBarrier.ts 103.10 kB ($${\color{red}+552.8\%}$$)
std_atomicStore.ts 103.10 kB ($${\color{red}+552.8\%}$$)
std_workgroupBarrier.ts 103.10 kB ($${\color{red}+552.5\%}$$)
std_storageBarrier.ts 103.10 kB ($${\color{red}+552.5\%}$$)
std_atomicAdd.ts 103.09 kB ($${\color{red}+552.5\%}$$)
std_atomicAnd.ts 103.09 kB ($${\color{red}+552.5\%}$$)
std_atomicMax.ts 103.09 kB ($${\color{red}+552.5\%}$$)
std_atomicMin.ts 103.09 kB ($${\color{red}+552.5\%}$$)
std_atomicSub.ts 103.09 kB ($${\color{red}+552.5\%}$$)
std_atomicXor.ts 103.09 kB ($${\color{red}+552.5\%}$$)
std_atomicOr.ts 103.09 kB ($${\color{red}+552.5\%}$$)
d_textureDepth2d.ts 87.37 kB ($${\color{red}+551.1\%}$$)
d_textureDepthCube.ts 87.37 kB ($${\color{red}+550.9\%}$$)
d_texture1d.ts 87.37 kB ($${\color{red}+550.6\%}$$)
d_texture2d.ts 87.37 kB ($${\color{red}+550.6\%}$$)
d_texture3d.ts 87.37 kB ($${\color{red}+550.6\%}$$)
d_textureDepth2dArray.ts 87.38 kB ($${\color{red}+550.3\%}$$)
d_textureCube.ts 87.37 kB ($${\color{red}+550.3\%}$$)
d_textureDepthCubeArray.ts 87.38 kB ($${\color{red}+550.1\%}$$)
d_textureDepthMultisampled2d.ts 87.38 kB ($${\color{red}+550.0\%}$$)
d_texture2dArray.ts 87.37 kB ($${\color{red}+549.8\%}$$)
d_textureCubeArray.ts 87.37 kB ($${\color{red}+549.5\%}$$)
d_textureMultisampled2d.ts 87.38 kB ($${\color{red}+549.4\%}$$)
d_disarrayOf.ts 87.37 kB ($${\color{red}+481.7\%}$$)
d_vec2b.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec2f.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec2h.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec2i.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec2u.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec3b.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec3f.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec3h.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec3i.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec3u.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec4b.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec4f.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec4h.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec4i.ts 87.36 kB ($${\color{red}+350.2\%}$$)
d_vec4u.ts 87.36 kB ($${\color{red}+350.2\%}$$)
std_subgroupAdd.ts 103.10 kB ($${\color{red}+329.9\%}$$)
std_subgroupBroadcastFirst.ts 103.11 kB ($${\color{red}+329.8\%}$$)
std_subgroupExclusiveAdd.ts 103.11 kB ($${\color{red}+329.8\%}$$)
std_subgroupExclusiveMul.ts 103.11 kB ($${\color{red}+329.8\%}$$)
std_subgroupInclusiveAdd.ts 103.11 kB ($${\color{red}+329.8\%}$$)
std_subgroupInclusiveMul.ts 103.11 kB ($${\color{red}+329.8\%}$$)
std_subgroupShuffleDown.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupShuffleXor.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupBroadcast.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupShuffleUp.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupShuffle.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupBallot.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupElect.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupAll.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupAnd.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupAny.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupMax.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupMin.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupMul.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupXor.ts 103.10 kB ($${\color{red}+329.8\%}$$)
std_subgroupOr.ts 103.10 kB ($${\color{red}+329.8\%}$$)
d_formatToWGSLType.ts 87.37 kB ($${\color{red}+318.1\%}$$)
d_uint8.ts 87.36 kB ($${\color{red}+318.0\%}$$)
d_unorm10_10_10_2.ts 87.37 kB ($${\color{red}+317.9\%}$$)
d_unorm8x4_bgra.ts 87.37 kB ($${\color{red}+317.9\%}$$)
d_float16x2.ts 87.37 kB ($${\color{red}+317.9\%}$$)
d_float16x4.ts 87.37 kB ($${\color{red}+317.9\%}$$)
d_float32x2.ts 87.37 kB ($${\color{red}+317.9\%}$$)
d_float32x3.ts 87.37 kB ($${\color{red}+317.9\%}$$)
d_float32x4.ts 87.37 kB ($${\color{red}+317.9\%}$$)
d_snorm16x2.ts 87.37 kB ($${\color{red}+317.9\%}$$)
d_snorm16x4.ts 87.37 kB ($${\color{red}+317.9\%}$$)
d_unorm16x2.ts 87.37 kB ($${\color{red}+317.9\%}$$)
d_unorm16x4.ts 87.37 kB ($${\color{red}+317.9\%}$$)
d_sint16x2.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_sint16x4.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_sint32x2.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_sint32x3.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_sint32x4.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_snorm8x2.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_snorm8x4.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_uint16x2.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_uint16x4.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_uint32x2.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_uint32x3.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_uint32x4.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_unorm8x2.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_unorm8x4.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_float16.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_float32.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_sint8x2.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_sint8x4.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_snorm16.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_uint8x2.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_uint8x4.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_unorm16.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_sint16.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_sint32.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_snorm8.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_uint16.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_uint32.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_unorm8.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_sint8.ts 87.36 kB ($${\color{red}+317.9\%}$$)
d_packedFormats.ts 87.37 kB ($${\color{red}+317.5\%}$$)
d_isPackedData.ts 87.37 kB ($${\color{red}+316.7\%}$$)
std_textureDimensions.ts 103.10 kB ($${\color{red}+300.6\%}$$)
std_textureGather.ts 103.10 kB ($${\color{red}+300.6\%}$$)
std_textureSampleBaseClampToEdge.ts 103.11 kB ($${\color{red}+300.5\%}$$)
std_textureSampleCompareLevel.ts 103.11 kB ($${\color{red}+300.5\%}$$)
std_textureSampleCompare.ts 103.11 kB ($${\color{red}+300.5\%}$$)
std_textureSampleLevel.ts 103.10 kB ($${\color{red}+300.5\%}$$)
std_textureSampleBias.ts 103.10 kB ($${\color{red}+300.5\%}$$)
std_textureSampleGrad.ts 103.10 kB ($${\color{red}+300.5\%}$$)
std_textureSample.ts 103.10 kB ($${\color{red}+300.5\%}$$)
std_textureStore.ts 103.10 kB ($${\color{red}+300.5\%}$$)
std_textureLoad.ts 103.10 kB ($${\color{red}+300.5\%}$$)
d_alignmentOf.ts 87.37 kB ($${\color{red}+299.8\%}$$)
std_translation4.ts 103.10 kB ($${\color{red}+282.0\%}$$)
std_rotationX4.ts 103.10 kB ($${\color{red}+282.0\%}$$)
std_rotationY4.ts 103.10 kB ($${\color{red}+282.0\%}$$)
std_rotationZ4.ts 103.10 kB ($${\color{red}+282.0\%}$$)
std_identity2.ts 103.09 kB ($${\color{red}+282.0\%}$$)
std_identity3.ts 103.09 kB ($${\color{red}+282.0\%}$$)
std_identity4.ts 103.09 kB ($${\color{red}+282.0\%}$$)
std_scaling4.ts 103.09 kB ($${\color{red}+282.0\%}$$)
d_isBuiltin.ts 87.37 kB ($${\color{red}+255.5\%}$$)
d_sizeOf.ts 87.36 kB ($${\color{red}+254.8\%}$$)
d_isContiguous.ts 87.37 kB ($${\color{red}+254.7\%}$$)
d_getLongestContiguousPrefix.ts 87.38 kB ($${\color{red}+254.6\%}$$)
d_arrayOf.ts 87.36 kB ($${\color{red}+233.8\%}$$)
d_size.ts 87.36 kB ($${\color{red}+232.0\%}$$)
d_align.ts 87.36 kB ($${\color{red}+232.0\%}$$)
d_location.ts 87.36 kB ($${\color{red}+232.0\%}$$)
d_interpolate.ts 87.37 kB ($${\color{red}+232.0\%}$$)
d_invariant.ts 87.37 kB ($${\color{red}+227.4\%}$$)
d_mat4x4f.ts 87.36 kB ($${\color{red}+223.7\%}$$)
d_mat2x2f.ts 87.36 kB ($${\color{red}+223.7\%}$$)
d_mat3x3f.ts 87.36 kB ($${\color{red}+223.7\%}$$)
d_matToArray.ts 87.37 kB ($${\color{red}+222.1\%}$$)
d_builtin.ts 87.36 kB ($${\color{red}+205.1\%}$$)
std_unpack2x16float.ts 103.10 kB ($${\color{red}+186.8\%}$$)
std_unpack4x8unorm.ts 103.10 kB ($${\color{red}+186.8\%}$$)
std_pack2x16float.ts 103.10 kB ($${\color{red}+186.8\%}$$)
std_pack4x8unorm.ts 103.10 kB ($${\color{red}+186.8\%}$$)
std_bitcastU32toF32.ts 103.10 kB ($${\color{red}+133.3\%}$$)
std_bitcastU32toI32.ts 103.10 kB ($${\color{red}+133.3\%}$$)
std_neg.ts 103.09 kB ($${\color{red}+113.2\%}$$)
std_bitShiftRight.ts 103.10 kB ($${\color{red}+113.2\%}$$)
std_bitShiftLeft.ts 103.10 kB ($${\color{red}+113.2\%}$$)
std_add.ts 103.09 kB ($${\color{red}+113.1\%}$$)
std_div.ts 103.09 kB ($${\color{red}+113.1\%}$$)
std_mod.ts 103.09 kB ($${\color{red}+113.1\%}$$)
std_mul.ts 103.09 kB ($${\color{red}+113.1\%}$$)
std_sub.ts 103.09 kB ($${\color{red}+113.1\%}$$)
std_translate4.ts 103.10 kB ($${\color{red}+109.9\%}$$)
std_rotateX4.ts 103.09 kB ($${\color{red}+109.9\%}$$)
std_scale4.ts 103.09 kB ($${\color{red}+109.9\%}$$)
std_rotateY4.ts 103.09 kB ($${\color{red}+109.8\%}$$)
std_rotateZ4.ts 103.09 kB ($${\color{red}+109.8\%}$$)
d_memoryLayoutOf.ts 87.37 kB ($${\color{red}+108.3\%}$$)
std_and.ts 103.09 kB ($${\color{red}+99.3\%}$$)
std_or.ts 103.09 kB ($${\color{red}+99.3\%}$$)
std_select.ts 103.09 kB ($${\color{red}+99.2\%}$$)
std_allEq.ts 103.09 kB ($${\color{red}+99.2\%}$$)
std_all.ts 103.09 kB ($${\color{red}+99.2\%}$$)
std_not.ts 103.09 kB ($${\color{red}+99.2\%}$$)
std_eq.ts 103.09 kB ($${\color{red}+99.2\%}$$)
std_lt.ts 103.09 kB ($${\color{red}+99.2\%}$$)
std_ne.ts 103.09 kB ($${\color{red}+99.2\%}$$)
std_isCloseTo.ts 103.09 kB ($${\color{red}+99.2\%}$$)
std_any.ts 103.09 kB ($${\color{red}+99.2\%}$$)
std_ge.ts 103.09 kB ($${\color{red}+99.2\%}$$)
std_gt.ts 103.09 kB ($${\color{red}+99.2\%}$$)
std_le.ts 103.09 kB ($${\color{red}+99.2\%}$$)
std_dot4U8Packed.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_length.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_countTrailingZeros.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_distance.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_dot.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_countLeadingZeros.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_firstTrailingBit.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_firstLeadingBit.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_fract.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_frexp.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_modf.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_quantizeToF16.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_mix.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_countOneBits.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_dot4I8Packed.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_determinant.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_extractBits.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_faceForward.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_inverseSqrt.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_reverseBits.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_insertBits.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_smoothstep.ts 103.10 kB ($${\color{red}+56.2\%}$$)
std_normalize.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_transpose.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_saturate.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_degrees.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_radians.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_reflect.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_refract.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_acosh.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_asinh.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_atan2.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_atanh.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_clamp.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_cross.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_floor.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_ldexp.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_round.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_trunc.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_acos.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_asin.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_atan.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_ceil.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_cosh.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_exp2.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_log2.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_sign.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_sinh.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_sqrt.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_step.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_tanh.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_abs.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_cos.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_exp.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_fma.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_log.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_max.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_min.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_pow.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_sin.ts 103.09 kB ($${\color{red}+56.2\%}$$)
std_tan.ts 103.09 kB ($${\color{red}+56.2\%}$$)
common_fullScreenTriangle.ts 56.66 kB ($${\color{red}+42.1\%}$$)
common_writeSoA.ts 56.65 kB ($${\color{red}+37.5\%}$$)
STATIC_allImports.ts 286.38 kB ($${\color{green}-1.7\%}$$)
STATIC_d.ts 87.36 kB ($${\color{green}-2.6\%}$$)
STATIC_std.ts 103.08 kB ($${\color{green}-2.7\%}$$)

If you wish to run a comparison for other, slower bundlers, run the 'Tree-shake test' from the GitHub Actions menu.

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown

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.97, 2.03, 4.30, 6.68, 7.82, 12.11, 22.80, 23.51]
  line [0.93, 2.03, 4.69, 6.15, 7.53, 11.63, 23.13, 26.77]
  line [0.88, 1.96, 3.95, 6.23, 7.68, 11.38, 21.57, 24.53]
Loading
---
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.30, 0.53, 0.72, 0.85, 1.13, 1.28, 1.49, 1.64]
  line [0.35, 0.56, 0.72, 0.86, 1.23, 1.29, 1.48, 1.61]
  line [0.29, 0.52, 0.67, 0.83, 1.11, 1.16, 1.41, 1.55]
Loading
---
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.87, 2.08, 4.04, 6.42, 12.71, 26.19, 56.55, 115.65]
  line [0.92, 2.19, 4.11, 6.55, 12.69, 26.64, 56.16, 116.18]
  line [0.87, 2.04, 3.86, 6.02, 12.06, 25.19, 54.87, 112.07]
Loading

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR fixes the Babel-based unplugin-typegpu transform so that when a "use gpu" exported function declaration is hoisted/replaced, the corresponding export is preserved (instead of being accidentally removed). It also updates the test suite to assert the corrected Babel output alongside the Rollup output.

Changes:

  • Preserve export statements when hoisting transformed export function ... / export default function ... in the Babel plugin.
  • Extend the existing “hoists exported…” test to cover both Babel and Rollup transforms with separate snapshots.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
packages/unplugin-typegpu/src/babel.ts When hoisting a transformed exported function declaration, replaces the enclosing export node with an equivalent export (export { id } / export default id) instead of removing it.
packages/unplugin-typegpu/test/use-gpu-directive.test.ts Splits the exported-hoisting test into babel and rollup assertions and adds an inline snapshot verifying Babel now preserves exports.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@cieplypolar cieplypolar changed the title fix (unplugin-typegpu): Babel transform preserves exports fix(unplugin-typegpu): Babel transform preserves exports Jun 12, 2026
@cieplypolar cieplypolar marked this pull request as draft June 12, 2026 19:28
@cieplypolar cieplypolar marked this pull request as ready for review June 17, 2026 16:17
@cieplypolar cieplypolar changed the title fix(unplugin-typegpu): Babel transform preserves exports fix(unplugin-typegpu): transform preserves exports Jun 17, 2026
@cieplypolar cieplypolar changed the title fix(unplugin-typegpu): transform preserves exports fix(unplugin-typegpu): Transform preserves exports Jun 17, 2026

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes — fixes the Babel transform of unplugin-typegpu to preserve export declarations when hoisting "use gpu" function declarations, and mirrors the support in the unplugin/rollup code path. Comprehensive tests added for both babel and rollup across named exports, default exports, arrow functions, and anonymous default exports.

  • Preserve named exports in Babel transformbabel.ts: after hoisting, replaces export function with export { name } and export default function with export default name instead of .remove().
  • Mirror default export in unplugin/rollup transformfactory.ts: adds the ExportDefaultDeclaration branch, appending export default <name>; after the hoisted const for named default-exported functions.
  • Expand test coverage — 5 new describe blocks in the test file, each with parallel babel and rollup inline snapshots, covering named, default, arrow, anonymous default function, and anonymous default arrow function export patterns.

Pullfrog  | View workflow run | Using DeepSeek Pro (free via Pullfrog for OSS) | 𝕏

@iwoplaza iwoplaza left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the fixes! If there's a way to reassociate the comments with the function definitions, then that would be great

Comment thread packages/unplugin-typegpu/test/use-gpu-directive.test.ts Outdated
Comment thread packages/unplugin-typegpu/test/use-gpu-directive.test.ts Outdated

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes — added JSDoc comment inheritance in the Babel transform so that leading comments on export function / export default function declarations are preserved on the hoisted const output, directly addressing the reviewer's request about comment reassociation.

  • Inherit export-level comments in Babel transformbabel.ts: when the parent of a hoisted function declaration is an export, t.inheritLeadingComments copies comments from the parent export node onto the const declaration, then clears the export node's comments to prevent duplication.
  • Update inline snapshots — test file snapshots now include /** MUL */ and /** ADD */ comments positioned before their respective const declarations in the Babel output.

Pullfrog  | View workflow run | Using DeepSeek Pro (free via Pullfrog for OSS) | 𝕏

@iwoplaza iwoplaza left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the latest changes! :shipit:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants