Skip to content

Latest commit

 

History

History
129 lines (106 loc) · 7 KB

CHANGELOG.md

File metadata and controls

129 lines (106 loc) · 7 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased - ReleaseDate

Changed 🛠

  • PR#61 updated SPIRV-Headers to match Vulkan SDK 1.3.275
  • PR#55 fixed CFG structurization "region children list desync" assertion failures (e.g. rust-gpu#1086) by tracking whole ControlRegions instead of their children
    • also removed a lot of redundant boolean values, thanks to condition propagation becoming always on-demand (instead of relying on less robust special-casing)
  • PR#51 combined TypeCtor/ConstCtor and their respective "ctor args", into a single unified TypeKind/ConstKind
  • PR#48 changed CFG structurization from "maximal loops" to "minimal loops" (computed using Tarjan's SCC algorithm), and added OpLoopMerge support on top (by extending a "minimal loop" as needed)

0.3.0 - 2023-07-25

Added ⭐

  • PR#45 added the ability to pretty-print OpExtInsts (SPIR-V "extended instructions") using official extinst.*.grammar.json descriptions and/or custom ones (registered via Context)

Changed 🛠

  • PR#43 tweaked several pretty-printing details to improve visual cohesion ("named arguments" in module.{dialect,debuginfo}) and ergonomics (multi-line string literals, HTML entities for anchor escaping, hover on multi-version table cells to disable "no changes" desaturation/dimming)
  • PR#36 started using OpNames in pretty-printing, to replace the T1/F2/v3 "anonymous" style, when unambiguous
  • PR#40 increased the pretty-printed HTML font-size from 15px to 17px, to improve readability
  • PR#39 shortened pretty-printed names like type2/func3/etc. to T2/F3/etc. (with e.g. type T2 = ... style definitions)
  • PR#38 split off print::Node::Root, allowing "roots" and "non-root nodes" to have different APIs, and dynamic dispatch to be limited to "roots" (as "non-root nodes" are a small finite set of types)
  • PR#35 abandoned the custom #{A, B, C} "attribute set" style in favor of Rust-like #[A] #[B] #[C] (and always printing them inline, without any attrs123 shorthands)
  • PR#33 replaced the spv.OpFoo<imms>(IDs) style of pretty-printing with spv.OpFoo(A: imm, B: ID, C: imm, ...) (unified parenthesized list of operands, with deemphasized operand names in foo: "named arguments" style)
  • PR#28 moved two DataInstDef fields (kind and output_type) to DataInstForm, a new interned type
  • PR#30 replaced the old spv-lower-dump example (which only dumped plaintext, not HTML) with a more useful spv-lower-print one

Fixed 🩹

  • PR#34 fixed OpTypePointers being spuriously printed as dependencies of GlobalVarDecl/PtrToGlobalVar (neither of which actually print the pointer type), and added a CI check for README.md examples
  • PR#37 fixed pretty-printing layout accuracy regarding line widths (by tracking font-size-aware "fractional columns"), and raised the maximum line width back up to 120 columns
  • PR#27 fixed some pretty-printing issues in the initial Attr::Diagnostics implementation (BUG paths and /* ... */ indentation)

0.2.0 - 2023-04-21

Added ⭐

  • PR#24 added qptr ("quasi-pointer") type and associated passes to destroy and recreate pointer-related type information (see PR#24 for a much more detailed overview)
  • PR#22 added Diag and Attr::Diagnostics, for embedding diagnostics (errors or warnings) in SPIR-T itself
  • PR#18 added anchor-based alignment to multi-version pretty-printing output (the same definitions will be kept on the same lines in all columns, wherever possible, to improve readability)

Changed 🛠

  • PR#26 allowed using OpEmitMeshTasksEXT as a terminator (by hardcoding it as Control-Flow)
  • PR#25 updated SPIRV-headers from 1.5.4 to 1.6.1
  • PR#21 tweaked pretty-printing styles around de-emphasis (shrinking instead of thinning, for width savings), and SPIR-V ops/enums (via de-emphasized spv. prefix and distinct orange color)

0.1.0 - 2022-12-16

Initial public release of SPIR-T for minimal Rust-GPU integration.

Added ⭐

  • Conversions from/to SPIR-V (spv::lower/spv::lift).
  • Control-flow structurizer, from CFGs to SPIR-T's stricter structured control-flow.
  • Pretty-printer with (styled and hyperlinked) HTML output.