Skip to content

v3.0.0

Latest

Choose a tag to compare

@NripeshN NripeshN released this 23 Jun 12:28

CrossTL v3.0.0

Major feature milestone release with 417 commits since v2.0.0.

Added

  • Target-only WebGL/WebGL2 GLSL ES backend with vertex and fragment stage output.
  • Target-only WebGPU/WGSL backend with vertex, fragment, and compute output.
  • DirectX target profile aliases (dx11, dx12, d3d11, d3d12) all resolving to HLSL source output.
  • MLX project porting integration with demos, CI workflow, and full-corpus validation.
  • Runtime host integration pipeline: loader scaffolds, adapter descriptors, manifest metadata, and execution adapters.
  • Project-scale shader porting pipeline with runtime readiness checks and blocked-unit tracking.
  • Metal struct-template materialization engine with instantiation, specialization, SFINAE-overloaded member lowering, and budget scaling.
  • Metal subgroup/SIMD intrinsic lowering to CrossGL Wave ops.
  • Metal atomic device lowering to CrossGL atomic intrinsics.
  • Metal threadgroup-local array hoisting to GLSL shared globals.
  • Runtime parity executors and verification harness for translated GPU artifacts.
  • WGSL resource binding, storage buffer, and texture sampler object model support.
  • Naga-based WGSL validation for generated project artifacts.
  • SPIR-V artifact assembly and validation pipeline.
  • Host runtime detection for WebGPU, OpenCL, D3D11, Rust wgpu, and game engine runtimes.
  • Open-source project porting demos with third-party notice coverage and failure summary reporting.
  • Runtime loader manifest generation and package inspection commands.
  • Host integration handoff bundles with blocked-step reporting.
  • Integer sampled texture lowering across backends.
  • GLSL specialization constant lowering for target backends.
  • Metal function constant lowering for SPIR-V output.
  • Backend-agnostic runtime manifest metadata for cross-target artifact planning.

Improved

  • Metal preprocessor: full-source comment masking, functor lowering, template budget scaling, deterministic member lowering, and constexpr array extent recognition.
  • HLSL compute codegen: value-builtin lowering, subgroup-to-wave translation, semantic validation, and program-scope constant output.
  • GLSL codegen: subgroup builtins, specialization constants, vertex layout location mapping, storage image lowering, and fragment invocation density modeling.
  • SPIR-V codegen: storage buffer overload resolution, 64-bit layout validation, bool compute interfaces, access-chain typing, and gather offset vector operands.
  • DirectX codegen: groupshared hoisting, resource binding allocation, fragment varying semantics, typed buffer indexed writes, and loader profile metadata.
  • OpenGL codegen: Metal template specialization, buffer parameter lowering, stage input struct mapping, uniform block member disambiguation, and GLSL 330 resource bindings.
  • OpenCL reduce target artifact generation, diagnostics, and helper contract reporting.
  • Rust-GPU: vertex input lowering, compute construct lowering, storage buffer declarations, and Option value pre-lowering.
  • Mojo: GPU kernel extraction, vector overload resolution, compute builtin parameterization, and sampled texture binding lowering.
  • Slang: resource name collision avoidance, default parameter preservation, texture size query casting, and compute entry lowering.
  • WGSL: structured storage buffers, constant buffer block lowering, derivative intrinsic mapping, image2D storage textures, and reserved identifier escaping.
  • Project translation: unresolved-construct guardrails, source provenance tracking, macro variant classification, include resolution, and feature root scanning.
  • Support matrix tooling: target alias metadata, target-only source rejection documentation, and backend conformance edge coverage.
  • Split target backend registration from native source frontend availability in the backend registry and support matrix.
  • Test suite grown to 13,485 collected tests (from ~8,000 at v2.0.0).

Fixed

  • Over 100 targeted backend bug fixes across CUDA, HIP, Metal, GLSL, HLSL, SPIR-V, WGSL, OpenCL, Rust-GPU, Mojo, and Slang.
  • Metal residual-template false positives from struct member templates.
  • SPIR-V storage buffer pointer overload inference and access-chain index typing.
  • WGSL vector narrowing, entry struct varying locations, reserved identifier escaping, and uniform scalar array layout.
  • DirectX vertex input semantics, scalar fragment targets, binding allocation, and groupshared hoist aliases.
  • HLSL compute value-builtin leakage, scalar splat swizzle lowering, and array semantic allocation.
  • OpenGL bfloat16 asuint lowering, GLSL 110 interface qualifiers, and gl_FragColor reserved local conflicts.
  • Vulkan matmul builtin vector stores, complex helper call argument types, and private scalar initializer types.
  • HIP scalar kernel params, bit-extract kernel loop preservation, and host main artifact generation.
  • CUDA vector-add DirectX lowering and OpenGL uniform name stabilization.
  • Metal-to-DirectX compute resource output and constant buffer member SPIR-V access.
  • Mojo GPU builtin lowering contract and vector-add Metal/SPIR-V artifacts.
  • Slang compute entry lowering to OpenGL and struct resource name collisions.
  • WebGL dynamic sampler array helper calls and unsupported sampler resource rejection.
  • GLSL usampler texelFetch SPIR-V lowering and fragment output name handling.
  • Python 3.8 collection type compatibility in the project pipeline.

Install: pip install crosstl==3.0.0

Full changelog: https://github.com/CrossGL/crosstl/blob/main/CHANGELOG.md