Open Beta Status
What is supported in the BWSL open beta, what may still change, and how to report useful feedback.
Turn the guide into code
Take the key idea from this page into the playground and validate it in a real shader instead of leaving it as theory.
Open PlaygroundBWSL is in open beta. The compiler, playground, examples, and docs are available for real use, but the language is not frozen yet. You can build shaders, evaluate engine integration, and try the standard library today; you should also expect some syntax, reflection details, and advanced features to change before a stable release.
The beta is focused on practical shader authoring: one source file can describe pipeline structure, shader-visible resources, variants, passes, and backend outputs without relying on external template systems.
Beta Expectation
The documented core language is intended to be usable now. Advanced or provisional areas are included so you can experiment and give feedback, not because their exact shape is guaranteed.
Good Fits
BWSL is a good fit during beta if you want to:
- prototype material, post-processing, compute, or multi-pass shader workflows
- evaluate source-declared resources and generated binding reflection
- test shader variants without building a custom preprocessor layer
- experiment with embedded standard modules such as Math, Random, Noise, Color, Compression, Debug, Packing, PBR, Globals, PostFX, Sampling, SDF, and Spaces
- compile one shader source toward SPIR-V plus optional Metal, HLSL, GLSL, or GLSL ES output
- embed the WASM compiler in browser tools, playgrounds, or editor workflows
For a first pass, start with Quick Start, then read Integration, Resources, and Shader Variants.
Supported Core Surface
These areas are the main beta-supported surface:
| Area | Status |
|---|---|
| Pipeline and module files | Supported for normal authoring, including file-scope modules next to pipelines in the same source file. |
| Graphics passes | Supported with vertex and fragment stages, stage I/O, interpolation-qualified varyings, declared fragment color outputs, and built-in namespaces. |
| Compute passes | Supported for compute shader entry points and compute built-ins. |
| Attributes and resources | Supported through source-declared attributes {} and resources {} blocks, including module-defined struct resource payloads. |
| Reflection | Supported through generated metadata and -bindings output. The schema may still gain fields as beta feedback comes in. |
| Variants | Supported through variants {}, variant rules, implicit optional-input variants, -variant, and -dump-variant-space. |
| Types | Supported across scalars, vectors, matrices, structs, enums, arrays, and pointers. |
| Functions and modules | Supported for ordinary helpers, overloads, stage-returning helpers, pass-block-returning helpers, file-scope modules, module imports, import aliases, using declarations, module-qualified access, and standard modules. |
| Intrinsics | Supported for documented math, vector, texture, derivative, atomic, bit, packing, wave, and classification functions. |
| Backends | SPIR-V is generated internally and written by default when no format is requested; -spv writes .spv sidecars alongside translated outputs. Metal, HLSL, GLSL, GLSL ES, and direct GLES are available through compiler flags. |
| Diagnostics | Supported through formatted text output and -errors-json with schema-versioned diagnostic records and BWSL... error codes. |
| WASM compiler | Supported for playground and editor-style tooling. |
| VS Code extension | Included in the source repo for .bwsl syntax highlighting, language configuration, and snippets. |
| Specification draft | Source-tree spec and BNF grammar live in docs/spec/ for exact syntax and conformance references. |
For the generated feature inventory, see Compiler Coverage.
Areas Still Settling
Some features are implemented but should be treated as provisional or implementation-defined during beta:
| Area | What to expect |
|---|---|
eval and compile-time expansion | Useful for controlled shader generation, but the comptime model may become cleaner before stable release. Prefer the documented examples. |
| Stage-returning functions | Vertex and fragment composition are available, but this is not the simplest path for most shaders. |
| Compute graph | Dependency tracking exists, but public syntax and scheduling guidance are not settled. |
| Constants and parameter syntax | More than one accepted form may exist. Use the canonical style shown in these docs for shared code. |
| Pattern matching and flag enums | Useful advanced features, but some details are still implementation-defined. |
| Wave/subgroup operations | Available through wave_* intrinsics, but backend and hardware behavior should be tested on your target platforms. |
Do Not Rely on Draft Surface
Older render-config terminology and host-only .rcfg examples are not the recommended beta model. Write shader-visible data in resources {} and keep render-graph, preview, target, and application metadata outside BWSL source.
Compatibility During Beta
The beta will prefer forward progress over strict compatibility. Stable-looking documented workflows should remain as consistent as possible, but breaking changes can still happen when they make the language simpler, remove ambiguity, or fix a weak abstraction.
When upgrading compiler versions:
- recompile all shader sources
- replace backend-style matrix type names such as
float2x2,float3x3, andfloat4x4withmat2,mat3, andmat4 - inspect generated reflection for binding or metadata changes
- inspect diagnostic handling if your tooling routes specific
BWSL...error codes - re-run representative variants
- test every backend you ship
- check release notes or docs updates for changes to provisional features
Reporting Issues
Useful beta reports are concrete and reproducible. Include:
- compiler version
- target backend, such as SPIR-V, Metal, HLSL, GLSL, or GLSL ES
- operating system, browser, GPU, and driver when relevant
- minimized
.bwslsource - exact CLI flags or playground preset
- expected behavior and actual behavior
- generated reflection or backend output when the issue is ABI-related
Small repros are much more useful than broad descriptions. If a shader only fails after variant selection, include the -variant flags or the -dump-variant-space output.
Next Steps
- Installation - Get the compiler
- Quick Start - Compile a first shader
- Integration - Wire BWSL into a build or engine
- Compiler Coverage - Inspect generated support status
- Playground - Try the WASM compiler and live preview