vulkano-rs/vulkano
67.0
Adequate · 30 September 2026
165.5k
lines of production code
Rust
primary language
2
measurements over time
What this system is
Vulkano is a Rust library that provides a safe, high-level abstraction over the Vulkan graphics API. It manages core GPU resources such as buffers, images, and memory through a modular system with configurable allocators, while handling command buffer recording via both a low-level builder and a high-level task graph model. The system also includes utilities for shader compilation, pipeline creation, and window integration to simplify application development.
How it got here
2015–2016 — API overhaul and modularization
15 changes.
This period focused on a comprehensive API overhaul of the Vulkano graphics library, restructuring core modules such as memory, buffers, pipelines, and command buffers into modular, type-safe components. The work introduced support for modern Vulkan features like acceleration structures and ray tracing, while simultaneously removing legacy dependencies and aligning the interface with current Vulkan best practices.
2017–2022 — API modernization and structural refactoring
11 changes.
This period focused on a comprehensive architectural overhaul of the Vulkano library, replacing implicit and macro-heavy APIs with explicit, type-safe structures for devices, pipelines, and synchronization. The work introduced new modules for shader reflection, memory allocation, and high-level utilities to simplify application setup, while rigorously validating Vulkan state to improve safety and maintainability.
2023–2026 — Task graph and API modernization
13 changes.
This period focused on introducing the vulkano-taskgraph crate to replace manual command buffer recording with a high-level, declarative task-based model. The work included significant API overhauls such as automatic pipeline barrier management, runtime SPIR-V validation, and new derive macros, alongside a comprehensive update of auto-generated Vulkan bindings to version 1.3.281.
Features
Add support for Vulkan acceleration structures and deferred host operations
Vulkano now exposes the \VK\_KHR\_acceleration\_structure\ extension, providing \AccelerationStructure\ types and build commands to enable ray tracing and spatial queries. It also implements the \VK\_KHR\_deferred\_host\_operations\ extension, allowing long-running host-side operations to be split across multiple threads via \DeferredOperation\. Additionally, the internal caching system has been updated to use \foldhash\ instead of \ahash\ for improved performance.
vulkano/src · high confidence
Added vulkano.glsl header for task graph descriptor set bindings
The \vulkano-shaders/include/vulkano.glsl\ header has been added to support the task graph descriptor set system. This file defines the GLSL types, macros, and uniform buffer layouts required to access samplers, sampled images, storage images, storage buffers, and acceleration structures via the global descriptor set. It establishes the binding indices for these resources and includes private implementation details (prefixed with underscores) that are not part of the public API.
vulkano-shaders/include · high confidence
Introduce automatic pipeline barrier management in command buffer recording
The \AutoCommandBufferBuilder\ in \vulkano/src/command\_buffer/auto\ now automatically tracks resource usage and inserts necessary pipeline barriers between commands. This ensures correct execution ordering (e.g., preventing a read from starting before a write finishes) without requiring manual barrier insertion by the user, simplifying the command buffer recording process.
_vulkano/src/command\buffer/auto · high confidence
Introduce vulkano-taskgraph for task-based Vulkan command recording
The vulkano-taskgraph crate is added, providing a new high-level API for recording Vulkan commands using a task-graph model. This includes a garbage collection system for deferred resource destruction, a command buffer recorder that wraps raw Vulkan commands (such as pipeline binding, draw/dispatch, buffer/image copies, and synchronization barriers), and support for bindless descriptor sets. The implementation leverages Vulkan 1.3 and KHR extensions (like maintenance5 and synchronization2) where available to optimize command encoding.
vulkano-taskgraph · high confidence
Introduce vulkano-util helper crate for Vulkan initialization and window rendering
Adds a new \vulkano-util\ crate providing high-level utilities to simplify Vulkan application setup. The \VulkanoContext\ struct handles the creation of the Vulkan library, instance, and device, including automatic physical device selection and memory allocator initialization. The \VulkanoWindows\ manager and \VulkanoWindowRenderer\ components abstract away window creation via winit, swapchain management, and frame rendering loops, allowing users to easily create and manage multiple Vulkan windows with minimal boilerplate.
vulkano-util/src · high confidence
New auto-generated command buffer API for Vulkan operations
The \vulkano/src/command\_buffer/auto/commands\ module now provides a comprehensive set of auto-generated command builders for \AutoCommandBufferBuilder\. This includes new implementations for acceleration structure operations (copy, property queries), buffer and image transfers (copy, clear, fill), pipeline binding and execution (dispatch, draw, indirect variants), dynamic state configuration, render pass management, query pools, and debug labeling. These additions enable users to record complex Vulkan command buffers with built-in validation and resource tracking.
_vulkano/src/command\buffer/auto/commands · high confidence
New derive macros for BufferContents and Vertex traits
The \vulkano-macros\ crate now provides \\#\[derive(BufferContents)\]\ and \\#\[derive(Vertex)\]\ macros to automatically implement the \BufferContents\ and \Vertex\ traits on user-defined structs. The \BufferContents\ derive handles layout calculation for structs with named or unnamed fields, including special support for arrays and slices, while enforcing \\#\[repr(C)\]\ or \\#\[repr(transparent)\]\ requirements. The \Vertex\ derive generates vertex buffer descriptions by parsing \\#\[name\]\ and \\#\[format\]\ attributes on struct fields to define offsets, strides, and format sizes.
vulkano-macros/src · high confidence
New memory allocator module with DeviceLayout and StandardMemoryAllocator
The \vulkano/src/memory/allocator\ module has been introduced, providing a new suballocation-based memory management system for Vulkan. This includes a \DeviceLayout\ type that mirrors Rust's \std::alloc::Layout\ but uses Vulkan-specific \DeviceSize\ and \DeviceAlignment\ types to ensure safe memory alignment and size constraints. The module exposes a \StandardMemoryAllocator\ as a high-level entry point for users who need simple memory allocation without managing the underlying \DeviceMemory\ blocks directly, aiming to reduce the burden of writing error-prone suballocation code while maintaining flexibility through composable suballocators.
vulkano/src/memory/allocator · high confidence
New pipeline module with Compute, Graphics, and Ray Tracing pipeline types
The \vulkano/src/pipeline\ module has been introduced, providing the core abstractions for creating and managing GPU pipelines. This includes \ComputePipeline\ for general-purpose GPU tasks, \GraphicsPipeline\ for rendering, and \RayTracingPipeline\ for hardware-accelerated ray tracing. The module also introduces \PipelineLayout\ for defining descriptor set and push constant layouts, \PipelineCache\ for persisting compiled pipeline state to disk, and a unified \Pipeline\ enum to handle different pipeline types polymorphically. Users can now create, configure, and bind these pipeline objects to command buffers for execution.
vulkano/src/pipeline · high confidence
New shader module and reflection API
The \vulkano/src/shader\ module now provides the core infrastructure for handling SPIR-V shader modules, including detailed documentation on data layout, alignment rules, and safety requirements for descriptors and memory access. A new reflection system (\reflect.rs\) has been added to extract entry point information, descriptor binding requirements, and push constant ranges from SPIR-V code, enabling Vulkano to validate shader interfaces and resource usage at runtime.
vulkano/src/shader · high confidence
New suballocator implementations: Tlsf, Buddy, FreeList, and Bump
The \vulkano/src/memory/allocator/suballocator\ module now includes four distinct suballocator strategies for dividing memory regions into smaller allocations. The \TlsfAllocator\ is introduced as the recommended default, offering O(1) allocation and deallocation with a two-level segregated-fit algorithm that balances performance and fragmentation. The \BuddyAllocator\ uses a binary tree structure for power-of-two sizes, providing fast operations but higher fragmentation. The \FreeListAllocator\ employs a best-fit strategy on a sorted list, which can reduce fragmentation at the cost of O(log n) performance. Finally, the \BumpAllocator\ offers O(1) allocation by linearly advancing a pointer, suitable for short-lived, frame-local resources where all allocations are freed simultaneously via reset. All allocators implement the \Suballocator\ trait, supporting buffer and general allocation with proper alignment and buffer-image granularity handling.
vulkano/src/memory/allocator/suballocator · high confidence
Runtime SPIR-V parsing and specialization constant support
The \vulkano/src/shader/spirv\ module now provides utilities to parse and analyze SPIR-V shader binaries at runtime, allowing users to inspect and validate modules. This includes support for specialization constants, where the new \specialization.rs\ logic replaces specialization instructions with regular constants based on provided values, enabling dynamic shader configuration without recompilation.
vulkano/src/shader/spirv · high confidence
Behavioural changes
Add license and assets symlinks to vulkano-shaders crate
The vulkano-shaders crate now includes symbolic links for LICENSE-APACHE, LICENSE-MIT, and the assets directory, pointing to their respective locations in the parent directory. This ensures that license information and asset files are correctly accessible within the crate structure.
vulkano-shaders · high confidence
Add macOS/iOS build configuration and license symlinks
The vulkano crate now includes a build script that explicitly links required Apple frameworks (MoltenVK, Metal, IOKit, etc.) when targeting iOS or tvOS, ensuring successful compilation on these platforms. Additionally, license files (LICENSE-APACHE, LICENSE-MIT) and the assets directory are now symlinked to their parent locations to maintain proper crate metadata.
vulkano · high confidence
Autogen tooling refactored into a standalone crate with new code generation logic
The autogen process has been moved from a build script into its own dedicated crate, introducing a new modular structure with separate modules for generating errors, extensions, features, functions, formats, properties, and SPIR-V parsing/requirements. This change includes new helper logic such as a Conjunctive Normal Form implementation for handling extension dependencies and updates to the generated code structures for Vulkan features, extensions, and SPIR-V instructions.
autogen · high confidence
Command buffer allocation and recording system restructured
The command buffer subsystem has been reorganized into dedicated modules for allocation, pooling, and system-level recording. Users now interact with a new \CommandBufferAllocator\ trait and the provided \StandardCommandBufferAllocator\ to manage command pool memory, while the \RecordingCommandBuffer\ type in the \sys\ module handles the low-level allocation and beginning of command buffer recording. This change separates the concerns of memory management (\allocator.rs\, \pool.rs\) from the raw Vulkan recording interface (\sys.rs\), providing a more modular foundation for command buffer creation.
_vulkano/src/command\buffer · high confidence
Command buffer commands reorganized into dedicated modules
The command buffer command implementations in \vulkano/src/command\_buffer/commands\ have been restructured into separate, type-specific modules (such as \acceleration\_structure\, \bind\_push\, \clear\, \copy\, \debug\, \dynamic\_state\, \pipeline\, \query\, \render\_pass\, \secondary\, and \sync\). This change groups related Vulkan commands by their functional category, improving code organization and maintainability without altering the public API surface.
_vulkano/src/command\buffer/commands · high confidence
Comprehensive rewrite of graphics pipeline state configuration and validation
The graphics pipeline module has been completely restructured into dedicated submodules (color\_blend, depth\_stencil, discard\_rectangle, fragment\_shading\_rate, input\_assembly, multisample, rasterization, etc.), each exposing explicit state structs (e.g., ColorBlendState, DepthStencilState, RasterizationState) with rigorous runtime validation against device features and extensions. This change introduces proper validation for Vulkan VUIDs, supports new capabilities like KHR\_fragment\_shading\_rate and EXT\_discard\_rectangles, and replaces the previous builder-style API with explicit state creation, ensuring that pipeline creation fails early with detailed error messages if device capabilities (such as independent\_blend, logic\_op, or primitive\_restart) are not met.
vulkano/src/pipeline/graphics · high confidence
Descriptor set API restructured with new allocator and layout types
The descriptor set subsystem has been reorganized into distinct modules (allocator, layout, pool, sys, update, collection), introducing a new \DescriptorSetAllocator\ trait and \StandardDescriptorSetAllocator\ for managing descriptor pool memory, a revamped \DescriptorSetLayout\ with immutable sampler support, and a \DescriptorSetsCollection\ trait to simplify binding multiple sets. Users will now interact with these new types when creating descriptor sets, layouts, and pools, replacing the previous monolithic implementation.
_vulkano/src/descriptor\set · high confidence
Examples rewritten to use the task graph API
The examples have been migrated from the previous command-buffer-based model to the new task graph system. This change introduces a higher-level, declarative approach to Vulkan resource management and synchronization, where rendering and compute operations are defined as tasks within a graph that handles dependency resolution and memory barriers automatically. Users can now explore patterns like asynchronous resource updates, bindless descriptor sets, and complex multi-pass rendering (such as the bloom example) using the \vulkano\_taskgraph\ crate.
examples · high confidence
Instance module restructured into submodules with new debug and layer APIs
The instance module has been refactored into dedicated submodules, introducing \vulkano::instance::debug\ for the new \DebugUtilsMessenger\ callback system and \vulkano::instance::layers\ for \LayerProperties\. This change exposes the Vulkan library loading and layer enumeration capabilities previously handled internally, allowing users to inspect available validation layers and register debug callbacks directly through the instance API.
vulkano/src/instance · high confidence
Introduce explicit RenderPass and Framebuffer creation APIs with validation
The render pass module now exposes \RenderPass\ and \Framebuffer\ structs with dedicated \RenderPassCreateInfo\ and \FramebufferCreateInfo\ builders, replacing previous implicit or macro-only construction methods. Users must now explicitly define attachments, subpasses, and dependencies, with the library performing strict validation (e.g., matching attachment counts, usage flags, and formats) before creating the underlying Vulkan objects. This change also introduces \single\_pass\_renderpass!\ and \ordered\_passes\_renderpass!\ macros to simplify common render pass definitions while adhering to the new explicit structure.
_vulkano/src/render\pass · high confidence
New device module with structured device, physical device, and queue management
The \vulkano/src/device\ module has been restructured to provide a clearer separation of concerns for Vulkan device management. It introduces a dedicated \Device\ struct that encapsulates the Vulkan device handle, enabled features and extensions, API version, and internal resource pools (fences, semaphores, events), along with a \queue\_locks\ mechanism for thread-safe queue access. A new \PhysicalDevice\ struct is provided to represent physical GPUs, caching properties, supported extensions/features, and runtime-queried data (like display and memory properties) for performance. The \Queue\ struct now explicitly manages its own mutex lock via a \QueueMutex\ trait, allowing for safe concurrent access and integration with external code that shares queues. Additionally, a \PrivateDataSlot\ implementation is added to support the \VK\_EXT\_private\_data\ extension, allowing users to associate arbitrary \u64\ data with Vulkan objects. Device properties are now auto-generated and exposed via \DeviceProperties\, with alignment handled by \DeviceAlignment\. The module also includes \DeviceCreateInfo\ and \QueueCreateInfo\ for explicit device and queue creation parameters.
vulkano/src/device · high confidence
New sampler and YCbCr conversion APIs with validation
The \vulkano/src/image/sampler\ module now provides \Sampler\ and \SamplerYcbcrConversion\ types that enforce Vulkan validation rules at creation time. Users must now pass \&Arc\<Device\>\ and \&SamplerCreateInfo\ references to \Sampler::new\ and \Sampler::try\_new\, which return \Result\ types wrapping \VulkanError\ or \ValidationError\ instead of panicking on invalid configuration. The new \SamplerYcbcrConversion\ API allows converting sampled YCbCr image data to RGB in shaders, requiring the \sampler\_ycbcr\_conversion\ device feature to be enabled.
vulkano/src/image/sampler · high confidence
Redesigned buffer API with suballocation and typed subbuffers
The buffer module has been restructured to introduce a new memory allocation strategy and a unified type system for buffer references. Users can now utilize the new \BufferAllocator\ and \SubbufferAllocator\ to efficiently suballocate memory within larger buffer blocks, improving performance for frequent small allocations. The API now centers on the \Subbuffer\<T\>\ type, which provides type-safe access to portions of a buffer, replacing the previous fragmented set of buffer traits and types. This change also includes a reworked \BufferUsage\ definition and updated \BufferView\ creation logic to align with the new validation and memory management model.
vulkano/src/buffer · high confidence
Redesigned memory allocation API with dedicated alignment and resource types
The memory module has been restructured to provide a more robust and explicit memory management experience. A new \DeviceAlignment\ type has been introduced to strictly enforce Vulkan alignment requirements, replacing previous ad-hoc handling. Memory allocation is now centered around a new \DeviceMemory\ struct and a \MemoryAllocateInfo\ configuration object, which support both standard allocation and external memory import. Additionally, a new \ResourceMemory\ type has been added to cleanly represent memory bound to buffers or images, supporting both dedicated allocations and portions of larger memory blocks managed by the existing memory allocator.
vulkano/src/memory · high confidence
Refactored GPU synchronization futures into modular components
The synchronization future system in \vulkano/src/sync/future\ has been restructured into distinct modules (\fence\_signal\, \join\, \now\, \semaphore\_signal\) to improve code organization and maintainability. This change introduces a \NowFuture\ to represent immediate completion, refactors \JoinFuture\ to handle combining multiple GPU operations, and updates \FenceSignalFuture\ and \SemaphoreSignalFuture\ to use internal state machines for tracking submission status. Users will see these changes as an internal architectural improvement that ensures more robust handling of fence and semaphore signaling, better resource cleanup via \cleanup\_finished\, and clearer separation of concerns in how GPU operations are chained and synchronized.
vulkano/src/sync/future · high confidence
Refactored synchronization primitives with validation and pooling
The synchronization module has been restructured into dedicated submodules (event, fence, semaphore, pipeline) with comprehensive runtime validation. Event, Fence, and Semaphore types now enforce Vulkan requirements (such as enabling the \events\ feature on portability subset devices) and return \ValidationError\ or \VulkanError\ instead of panicking on invalid creation. These primitives also support object pooling via \from\_pool\ to reduce allocation overhead, and Fences now support external handle export for cross-process synchronization.
vulkano/src/sync · high confidence
Restructured image module with dedicated aspect, layout, and usage types
The image subsystem has been reorganized into a modular structure, extracting image aspects, layouts, and usage flags into their own dedicated source files (\aspect.rs\, \layout.rs\, \usage.rs\). This change introduces explicit \ImageAspect\ and \ImageLayout\ types to better represent Vulkan image properties, while \ImageUsage\ is now defined as a distinct bitflag type. The core \Image\, \RawImage\, and \ImageView\ types remain in the main module but now rely on these extracted definitions, improving code organization and type safety for image creation and view configuration.
vulkano/src/image · high confidence
Runtime SPIR-V validation for shader pipelines
Vulkano now validates SPIR-V shader modules at pipeline creation time rather than relying solely on the driver. This new runtime validation checks capabilities, decorations, execution modes, types, and functions against device limits and Vulkan spec rules, ensuring that shader interfaces are compatible and that required device features (such as tessellation, geometry, mesh, or task shaders) are enabled before the pipeline is submitted. If validation fails, a detailed \ValidationError\ is returned immediately, helping developers catch shader issues earlier in the development cycle.
vulkano/src/pipeline/shader · high confidence
Shader recompilation now tracks included files
The \shader!\ macro now automatically detects changes in included shader files (e.g., via \\#include\) and triggers recompilation when they are modified. Previously, only the main shader source file was monitored, meaning updates to included headers would not cause the Rust code to rebuild, potentially leading to stale shaders. This change ensures that the build system correctly reflects the full dependency graph of your shader sources.
vulkano-shaders/src · high confidence
Standardized license and asset file references in vulkano-macros
The vulkano-macros crate now uses symbolic links to reference the project's root LICENSE-APACHE, LICENSE-MIT, and assets directories. This change ensures that license information and shared assets are consistently sourced from the parent directory, simplifying maintenance and ensuring that the crate's metadata remains in sync with the rest of the repository.
vulkano-macros, vulkano-util · high confidence
Styled alert boxes for documentation notes and warnings
The documentation now renders alert boxes (notes, tips, important, warnings, and cautions) with distinct visual styles. These boxes feature a colored left border, specific icons, and theme-aware colors for light, dark, and Ayu themes, making important information stand out more clearly to readers.
assets · high confidence
Swapchain module restructured with new validation and surface creation APIs
The swapchain module has been reorganized into dedicated files (acquire\_present.rs, mod.rs, surface.rs) to improve code organization. This change introduces a new \AcquireNextImageInfo\ struct for configuring image acquisition with explicit timeout, semaphore, and fence parameters, replacing the previous simpler API. Surface creation now supports the \raw-window-handle\ crate via \Surface::from\_window\ and \Surface::try\_from\_window\, allowing integration with modern windowing abstractions. The module also enforces stricter validation for surface and swapchain creation, including checks for required extensions and device support, and updates error handling to use \ValidationError\ types for better diagnostic information.
vulkano/src/swapchain · high confidence
Updated auto-generated Vulkan bindings to header version 1.3.281
The auto-generated Vulkan bindings in \vulkano/autogen-out\ have been regenerated from \vk.xml\ header version 1.3.281. This update refreshes the generated \DeviceExtensions\, \DeviceFeatures\, \VulkanError\, \Format\, and function pointer structs to reflect the latest Vulkan specification, ensuring that new extensions, features, error codes, and image formats are available in the API.
vulkano/autogen-out · high confidence
Vertex input API refactored to use derive macro and explicit descriptions
The vertex input system has been restructured to replace the manual \impl\_vertex!\ macro and \BuffersDefinition\ builder with a new \Vertex\ trait and \VertexBufferDescription\ struct. Users can now derive the \Vertex\ trait on their buffer structs, using field-level attributes like \\#\[format(...)\]\ and \\#\[name(...)\]\ to define how data maps to shader inputs. The old \impl\_vertex!\ macro and \BuffersDefinition\ are now deprecated in favor of this derive-based approach, which provides more explicit control over vertex buffer layouts and input rates.
_vulkano/src/pipeline/graphics/vertex\input · high confidence
Vulkano 0.36.0: Major API overhaul, shaderc removal, and Slang support
This release introduces a comprehensive set of breaking changes to the Vulkano API, including a shift to using references and slices instead of owned \Arc\s and collections, and replacing \Range\ parameters with separate offset/base and size/count arguments to align with Vulkan. The \shaderc\ dependency has been removed in favor of requiring the \glslc\ binary on the \PATH\, and the \vulkano-shaders\ macro now supports HLSL and Slang languages via a new \lang\ option. The \Pipeline\ trait has been replaced by a \Pipeline\ enum, and \RecordingCommandBuffer\ is now the single method for binding pipelines. Additionally, \VulkanLibrary::new\ is marked unsafe, \Loader\ was removed, and several allocator methods were renamed to \try\_allocate\ to better reflect their validation behavior.
(repo-wide) · high confidence
Test coverage
Added test fixtures for shader include resolution and rust-gpu integration
Added new test cases in the vulkano-shaders test suite to verify shader include directory resolution, specifically covering scenarios with many files, long file names, and paths containing spaces. Also added a rust-gpu source file to test the generation of SPIR-V output from Rust-based shaders.
vulkano-shaders/tests · high confidence
Dependencies
Vulkano 0.35.0 workspace release with Ash 0.38 and Rust 1.88 MSRV
This release updates the Vulkano graphics library to version 0.35.0, upgrading the underlying Vulkan bindings from Ash 0.37 to 0.38.0 and raising the Minimum Supported Rust Version (MSRV) to 1.88.0. The project has been restructured into a Cargo workspace, introducing new crates for task graph management (vulkano-taskgraph), utilities (vulkano-util), and code generation (autogen), while examples now depend on the glam math library instead of cgmath.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 70 → 67 (-3.4)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 77 → 77 (-0.0)
- Architecture 66 → 68 (+1.3)
- Maturity 63 → 63 (+0.0)
- Readiness 89 → 65 (-24.4)
- Security 99 → 99 (+0.5)
Resolved (20)
- Duplicated block (11 lines × 2) (vulkano-shaders/src/codegen.rs)
- Duplicated block (11 lines × 2) (vulkano-shaders/src/lib.rs)
- Duplicated block (14 lines × 2) (vulkano-shaders/src/codegen.rs)
- Duplicated block (7 lines × 2) (vulkano-shaders/src/codegen.rs)
- FreeListAllocator::allocate (cognitive 27) (vulkano/src/memory/allocator/suballocator/free_list.rs)
- HackComment (vulkano-shaders/src/codegen.rs)
- Hotspot: vulkano-shaders/src/codegen.rs (vulkano-shaders/src/codegen.rs)
- Hotspot: vulkano-shaders/src/lib.rs (vulkano-shaders/src/lib.rs)
- Hotspot: vulkano-taskgraph/src/graph/execute.rs (vulkano-taskgraph/src/graph/execute.rs)
- Hotspot: vulkano/src/device/mod.rs (vulkano/src/device/mod.rs)
- Hotspot: vulkano/src/instance/mod.rs (vulkano/src/instance/mod.rs)
- Hotspot: vulkano/src/lib.rs (vulkano/src/lib.rs)
- MacroInput::parse (cognitive 107) (vulkano-shaders/src/lib.rs)
- MacroInput::parse (cyclomatic 78) (vulkano-shaders/src/lib.rs)
- MacroInput::parse::parse_shader_fields (cognitive 16) (vulkano-shaders/src/lib.rs)
- MethodTooLong: MacroInput.parse (vulkano-shaders/src/lib.rs)
- Off-boarding risk: anonymized user #1
- TodoComment (vulkano/src/shader/spirv/mod.rs)
- vulkano_shaders::codegen::parse_deps_file (cognitive 29) (vulkano-shaders/src/codegen.rs)
- vulkano_shaders::codegen::parse_deps_file (cyclomatic 17) (vulkano-shaders/src/codegen.rs)
New (28)
- Dependency hygiene PARTLY measured — Cargo dependencies read, dependency currency not (crates.io unreachable)
- Documentation: no project overview (README.md)
- Duplicated block (10 lines × 2) (vulkano-shaders/src/lib.rs)
- Duplicated block (10 lines × 2) (vulkano/src/memory/allocator/suballocator/free_list.rs)
- Duplicated block (11 lines × 2) (vulkano/src/memory/allocator/suballocator/free_list.rs)
- Duplicated block (53 lines × 2) (vulkano/src/memory/allocator/suballocator/free_list.rs)
- Duplicated block (6 lines × 2) (vulkano/src/memory/allocator/suballocator/tlsf.rs)
- Duplicated block (7 lines × 2) (vulkano-shaders/src/shaders.rs)
- Duplicated block (8 lines × 3) (vulkano-shaders/src/lib.rs)
- FileTooLong: suballocator/buddy.rs (vulkano/src/memory/allocator/suballocator/buddy.rs)
- FileTooLong: suballocator/tlsf.rs (vulkano/src/memory/allocator/suballocator/tlsf.rs)
- FreeListAllocator::allocate_inner (cognitive 27) (vulkano/src/memory/allocator/suballocator/free_list.rs)
- HackComment (vulkano-shaders/src/shaders.rs)
- MacroInputParser::parse_shader_entries (cognitive 16) (vulkano-shaders/src/lib.rs)
- Off the main sequence: vulkano
- Off-boarding risk: anonymized user #1
- Orphaned knowledge (vulkano/src/descriptor_set/layout.rs)
- Orphaned knowledge (vulkano/src/memory/sparse.rs)
- Projects may be oversized for their cohesion
- Redundant constructors with identical signatures and likely identical implementation. In Rust, new and try_new are often used to distinguish fallible vs infallible, or to provide a Result wrapper. Here, both return Result, suggesting new is either an alias for try_new or a redundant entry point that adds no value.
- …and 8 more
Changes since last survey
- 8 commits — 8 feature/other, 0 fixes
By area
- vulkano/src — 4 commits
- (root) — 3 commits
- vulkano-shaders/src — 1 commit
Notable commits
- change: #2816 changelog
- change: #2841 changelog
- change: #2844 changelog
- change: Add a TlsfAllocator (#2844)
- change: Add a nightly dev shell to the Nix flake (#2843)
- change: Optimize Suballocator::allocate_buffer (#2842)
- change: Refactor vulkano-shaders (#2841)
- change: Update build dependencies (#2846)
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
vulkano-rs/vulkano was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 9a80c29e7f8a90d7f39564b31769d6a9c85f6cc4 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.