feat: Export internals from 'typegpu/~internal'#2657
Conversation
|
@pullfrog Review this 🙏 |
|
pkg.pr.new packages benchmark commit |
Bundle size comparison (
|
| 🟢 Decreased (max -0.00%) | ➖ Unchanged | 🔴 Increased | ❔ Unknown |
|---|---|---|---|
| 21 | 299 | 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.97, 1.94, 4.36, 6.67, 7.45, 11.90, 22.40, 26.19]
line [0.94, 1.94, 4.18, 7.08, 7.99, 11.65, 22.51, 23.02]
line [1.00, 2.00, 4.27, 6.55, 7.98, 11.62, 22.18, 24.43]
---
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.34, 0.51, 0.68, 0.84, 1.18, 1.21, 1.47, 1.66]
line [0.32, 0.52, 0.71, 0.86, 1.23, 1.25, 1.54, 1.63]
line [0.29, 0.54, 0.71, 0.84, 1.17, 1.28, 1.53, 1.65]
---
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 [1.06, 2.25, 5.21, 7.53, 13.59, 27.14, 56.11, 115.72]
line [0.81, 2.15, 4.21, 6.49, 12.72, 26.48, 56.44, 114.42]
line [1.00, 2.06, 4.37, 6.66, 13.27, 27.62, 59.37, 118.02]
|
There was a problem hiding this comment.
Important
The deprecated ShaderGenerator re-export from typegpu no longer preserves the namespace members (e.g. FunctionDefinitionOptions, UnknownData, getName) that the old export exposed. Existing code that accesses them will fail to compile, which contradicts the intent of a graceful deprecation.
Reviewed changes — this PR introduces a new typegpu/~internals subpath export and moves the internal generator types and utilities previously reachable through the top-level ShaderGenerator / WgslGenerator exports there.
- Adds
packages/typegpu/src/internals.ts— a barrel for values and types used by custom generator/back-end code (WGSL, GLSL). - Adds
./~internalsexport inpackages/typegpu/package.jsonand wires it intotsdown.config.tsso it builds and publishes alongside the other subpaths. - Deprecates top-level
ShaderGeneratorandWgslGeneratorexports inpackages/typegpu/src/indexNamedExports.ts. - Removes
packages/typegpu/src/tgsl/shaderGenerator_members.tsand folds its interfaces intoshaderGenerator.ts, updating all internal importers. - Updates
typegpu-gland test utilities to import fromtypegpu/~internals.
Kimi K2 (free via Pullfrog for OSS) | 𝕏
6c3fd83 to
5983a7e
Compare
ee309a1 to
5a79195
Compare
5a79195 to
ebbcd6a
Compare
There was a problem hiding this comment.
Pull request overview
This PR introduces a new typegpu/~internal entrypoint to expose previously “hidden” generator/data internals for advanced consumers, while refactoring ShaderGenerator option types into a single source and updating internal/test usage accordingly.
Changes:
- Added a new build entry + package export for
typegpu/~internal(src/internal.ts→dist/internal.*). - Moved
FunctionDefinitionOptions/ConstantDefinitionOptions/VariableDefinitionOptionsintotgsl/shaderGenerator.tsand removedshaderGenerator_members.ts. - Updated tests and
typegpu-glto import internals fromtypegpu/~internal(and adjusted root exports to deprecate prior access paths).
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| packages/typegpu/tsdown.config.ts | Adds src/internal.ts as a build entry so dist/internal.* is produced. |
| packages/typegpu/tests/utils/parseResolved.ts | Switches generator-related imports from root to typegpu/~internal. |
| packages/typegpu/src/types.ts | Converts ShaderGenerator import to type-only to avoid runtime coupling/cycles. |
| packages/typegpu/src/tgsl/wgslGenerator.ts | Imports generator option types from shaderGenerator.ts (single source of truth). |
| packages/typegpu/src/tgsl/shaderGenerator.ts | Defines and exports the option interfaces directly; removes the prior namespace-style re-export. |
| packages/typegpu/src/tgsl/shaderGenerator_members.ts | Removes the old “members” module now that types/exports moved. |
| packages/typegpu/src/resolutionCtx.ts | Sources FunctionArgument from types.ts rather than the removed members file. |
| packages/typegpu/src/internal.ts | New internal barrel for typegpu/~internal exports. |
| packages/typegpu/src/indexNamedExports.ts | Deprecates root-level access for generator exports and adds a few buffer-related exported types. |
| packages/typegpu/package.json | Adds ./~internal export mapping for both source and built outputs. |
| packages/typegpu-gl/src/tgpuRootWebGL.ts | Updates ShaderGenerator import to come from typegpu/~internal. |
| packages/typegpu-gl/src/glslGenerator.ts | Migrates internal generator/data helpers to typegpu/~internal and removes reliance on the prior ShaderGenerator namespace export. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes — added a new typegpu/~internal subpath export, moved unstable internals out of the public typegpu entry point, deprecated the old public exports, and migrated WebGL/GLSL + test tooling to the new entry point.
- Introduced
packages/typegpu/src/internal.tsas the newtypegpu/~internalbarrel for unstable symbols likeWgslGenerator,ShaderGeneratortypes,ResolutionCtx,Snippet,UnknownData, and helper utilities. - Updated
packages/typegpu/package.jsonexports to expose./~internalin dev and publish configurations, plus the corresponding./~internal/$built$dev entry consumed byunplugin-typegpu. - Inlined
shaderGenerator_members.tsintoshaderGenerator.ts** and deleted the now-redundant namespace module, simplifying the internal type graph. - Deprecated public
ShaderGeneratorandWgslGeneratorexports inindexNamedExports.tswith clear guidance to import fromtypegpu/~internalinstead. - Migrated
@typegpu/glandtests/utils/parseResolved.tsto import internals from the new subpath rather than through the public namespace. - Added public type exports
BufferWriteOptions,BufferInitCallback, andBufferInitialDatainindexNamedExports.ts.
Kimi K2 (free via Pullfrog for OSS) | 𝕏
ebbcd6a to
2379a22
Compare

No description provided.