| Age | Commit message (Collapse) | Author |
|
Fixes #7903
SPV_NV_viewport_array2 says ViewportMaskNV corresponds to gl_ViewportMask
|
|
find_package is locally scoped, so like other find_packages we should do
it at the top level
Closes https://github.com/shader-slang/slang/issues/7643
|
|
* emit literal values in getTypeNameHint for bool, str etc.
* add test for specializing generics with bool literals
* fix build error
* add specializing with Enum type test
|
|
Texture2D from Sampler2D (#7901)
* Initial plan
* Add SLANG_TEXTURE_COMBINED_FLAG to differentiate combined texture-samplers
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Fix regression in hlsl-to-vulkan-combined test by updating expected output
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
|
|
* Initial plan
* Initial investigation and plan for enum vertex output fix
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Fix compiler crash when enum is used as vertex output data
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Fix compiler crash when enum is used as vertex output data
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Address reviewer feedback: use SLANG_ASSERT and improve CHECK directives
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
|
|
OpMemberName instructions were all using member index 0 instead of
incrementing indices (0, 1, 2, ...) as required by the SPIR-V spec.
The bug was that the member index increment (id++) was only happening
for physical struct types, but OpMemberName emission occurs for all
struct types when they have name decorations.
This fix ensures member indices are properly incremented for both
physical and non-physical struct types.
Fixes #7909
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: davli-nv <davli-nv@users.noreply.github.com>
|
|
* Fix metallib-asm target parsing by adding missing comma
The metallib-asm target was not being recognized from command line because
of a syntax error in the target string definition in slang-type-text-util.cpp.
A missing comma after the first "metallib-asm" string caused C++ string
literal concatenation to create a malformed string.
Resolves #7774
Co-authored-by: Jay Kwak <jkwak-work@users.noreply.github.com>
* format code (#7910)
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* regenerate command line reference (#7911)
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
---------
Co-authored-by: Claude Code <claude@anthropic.com>
Co-authored-by: Jay Kwak <jkwak-work@users.noreply.github.com>
Co-authored-by: slangbot <ellieh+slangbot@nvidia.com>
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
|
|
* Avoid early specialization for witness tables in SimplifyIR
Prevents SimplifyIR from prematurely specializing witness tables before
the main specialization pass. Witness tables are hoistable immutable
objects that must maintain consistent signatures to avoid incorrect
deduplication. SimplifyIR was incorrectly transforming expressions like
"witness_table_t(%IFoo)(specialize(%7, %GenericValue4))" into
"witness_table_t(%IFoo)(%Foo)" even when %GenericValue4 was unused.
Fixes #7233
* Add a missing test file
|
|
* Add test for Metal pointer uniform parameter
* Update the test to include runtime result
* Adding CUDA to the test
* Adding -render-features argument-buffer-tier-2
|
|
* Organize code better by splitting some big files
The basic change here is that the majority of the declarations in `slang-compiler.h` have been split out into a set of smaller and more focused files.
As a result, the implement of those declarations have been moved from `slang-compiler.cpp` and `slang.cpp` over to those new files when the proper home for code is obvious.
I have tried as much as possible to *not* make any edits to the code along the way, and just copy-paste declarations from one place to another as-is.
The exceptions I am aware of are:
* In some cases a function that used to be file-scope `static` was used by code that landed in two or more different `.cpp` files. In these cases, I changed the function to be non-`static` (removing the `_` prefix from its name, if it had one, per our naming conventions), and put a declaration for the function into the most appropriate header I could identify.
* I added a few comments in places where I saw ugly or unfortunate things in the code I was moving, and wanted to tag them with `TODO`s so we can hopefully get to them in the fullness of time.
* I added top-level comments to each of the new `.h` files that was introduced to try to explain the logic for what goes into that file.
* In cases where one of the new header files mostly existed to declare a single type, I sometimes added more detail to the doc comment on that type, to better explain the type and its role in the compiler (this is text that otherwise might have gone into the comment at the top leve lof the file, but I figured that the doc comment would have higher discoverability).
I expect that the most contentious choice here is that the `Session` class lands in `slang-global-session.h` while `slang-session.h` holds the `Linkage` class.
The names used in this change are consistent with how the relevant concepts in the public Slang API are named, and are consistent with how we *intend* to rename the classes themselves in time.
* format code
* fixup
---------
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
|
|
* Initial plan
* Add improved diagnostic for interface return type mismatches
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Complete fix for interface return type mismatch error reporting
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Move diagnostic to synthesis phase for better interface return type mismatch errors
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Remove extraneous test file and update .gitignore
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Add diagnostic test for interface return type mismatch and apply formatting
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Address feedback: restore whitespace and use filecheck for diagnostic test
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Fix logic error in return type mismatch detection
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Remove unnecessary flag by using out parameter for diagnostic tracking
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Refactor witness synthesis failure reporting to use structured approach
Replace ad-hoc `outSpecificDiagnosticEmitted` parameter with `WitnessSynthesisFailureReason` enum and `MethodWitnessSynthesisFailureDetails` struct as requested in code review. This provides:
- Clear taxonomy of failure reasons (General, MethodResultTypeMismatch, MethodParameterMismatch)
- Centralized diagnostic emission in findWitnessForInterfaceRequirement
- Better extensibility for future failure types
- Improved maintainability by removing state tracking flags
The return type mismatch diagnostic continues to work correctly, showing error 38106 with precise location information.
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Remove unused MethodParameterMismatch enum and duplicate code
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Remove redundant requiredMethod field from MethodWitnessSynthesisFailureDetails
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Address feedback: add outFailureDetails guard and remove unnecessary hasReturnTypeError variable
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Fix regression: restore original diagnostic message for mutating method mismatch
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Fix.
* Fix.
* Remove `innerSink`.
* Print candidates considered for interface match upon error.
* Fix tests.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
Co-authored-by: Yong He <yonghe@outlook.com>
|
|
|
|
inherited through structs (#7597)
* Eliminate null-pointer reference in multilevel struct interface inheritance
* Add test
* Replace witness nullptr guard with conformance check to skip the witness
* Update test
* Skip creating transitive witness entirely for struct-struct-interface
* format code (#14)
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
* Removes casts, check for identity witness
---------
Co-authored-by: slangbot <ellieh+slangbot@nvidia.com>
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
|
|
* Document how to use LLDB in the Slang codebase
* Include `slang_lldb.py` in `.lldbinit`
* Switch from GCC to Clang
* Include a VS Code task to build before debugging
* Fix clangd
|
|
The release note script was trying to retrieve additional label
information from the "issue" but when parsing logic is not reliable.
When the issue has a link to a repo other than Slang, it printed error
message. An example is #7826 that has a link to an external repo,
https://github.com/llvm/llvm-project/issues/79043
|
|
|
|
|
|
interface and impl when building Win32 binaries (#7845) (#7872)
|
|
|
|
|
|
* Added small section about default values of `struct` members
* Added one more example and made `int a` to be brace initilised as well
* Implemented suggested changes
* Update docs/user-guide/02-conventional-features.md
Co-authored-by: Yong He <yonghe@outlook.com>
---------
Co-authored-by: Yong He <yonghe@outlook.com>
|
|
* Fix visibility of synthesized `Differential` typedefs.
* Delete incorrect test.
|
|
* Initial plan
* Fix public unscoped enum constants visibility across module boundaries
Add visibility modifier copying in CompleteDecl for unscoped enum cases.
When synthesizing static const declarations for unscoped enum cases,
copy the visibility modifiers from the original enum declaration to
ensure they have the same visibility scope across module boundaries.
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Create new visibility modifier instances instead of sharing existing ones
Address reviewer feedback to avoid sharing modifier instances between
declarations since modifiers form a linked list. Now creates new
instances of the appropriate visibility modifier type (Public, Private,
or Internal) instead of reusing the existing instance.
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Move unscoped enum visibility tests into subdirectory structure
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Use createByNodeType for visibility modifier creation as suggested
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* format code (#7867)
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
Co-authored-by: slangbot <ellieh+slangbot@nvidia.com>
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
|
|
* Fix scalar to array conversion for tessellation factors in GLSL legalization
Add scalar-to-array conversion support in adaptType() function to handle
cases where users declare scalar tessellation factors (e.g., float TessLevelInner)
but GLSL requires arrays (float[2] for gl_TessLevelInner). This prevents the
generation of BuiltinCast instructions that crash the SPIR-V emitter.
Fixes crash: "unimplemented: Unhandled local inst in spirv-emit: BuiltinCast"
- Add scalar-to-array case in slang-ir-glsl-legalize.cpp adaptType()
- Fill all array elements with the scalar value for tessellation factors
- Add test case for scalar tessellation factor conversion
Fixes #7000
Co-authored-by: Yong He <csyonghe@users.noreply.github.com>
* Apply review feedback fixes
- Change test directive to TEST:SIMPLE
- Use IRArrayType instead of IRArrayTypeBase
- Use MakeArrayFromElement for cleaner scalar-to-array conversion
Co-authored-by: Yong He <csyonghe@users.noreply.github.com>
* Fix type conversion in scalar-to-array tessellation factor conversion
Convert scalar value to array element type before creating array to handle
cases where scalar type differs from array element type (e.g., int to float[3]).
Co-authored-by: Yong He <csyonghe@users.noreply.github.com>
* Use CHECK-DAG for order-independent tessellation factor checks
Co-authored-by: Yong He <csyonghe@users.noreply.github.com>
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Yong He <csyonghe@users.noreply.github.com>
|
|
* Initial plan
* Fix segfault when using -separate-debug-info with unsupported targets
Add validation to emit a diagnostic error when -separate-debug-info is used
with targets other than SPIR-V binary. Previously, this would cause a segfault
because the separate debug info logic is only implemented for SPIR-V targets.
Changes:
- Added new diagnostic error (ID 18) for unsupported separate debug info usage
- Added validation in OptionsParser::_parse() to check target compatibility
- Created test cases for HLSL and GLSL targets to verify the fix
- Updated error message to clarify only SPIR-V binary targets are supported
The fix prevents segfaults and provides clear feedback to users about
target limitations for the -separate-debug-info option.
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Address feedback: fix segfault properly instead of preventing it
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
|
|
* Fix crash when private ctor is used for coercion.
* Fix tests.
* Fix.
* Fix test error.
|
|
(#7827)
findFunctionByNameInType was only returning one function when multiple functions existed with the same name but different signatures. This broke reflection functionality for extension methods.
Fix the issue by changing findDeclFromStringInType by not calling maybeResolveOverloadedExpr if checkedTerm is overloaded functions. We still call maybeResolveOverloadedExpr when any candidates in the overloaded list is not DeclRefExpr referencing a function.
|
|
|
|
|
|
* Fix Conditioanl<T, false> fields with a semantic.
* Add unit test.
* Fix test.
|
|
groups (#7851)
* Fix capability generator to sort capabilities alphabetically within header groups
The slang-capability-generator now sorts capabilities alphabetically by name
within each header group in the generated a3-02-reference-capability-atoms.md
documentation file. This ensures consistent ordering for better readability
and organization.
Fixes #5030
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-authored-by: aidanfnv <aidanfnv@users.noreply.github.com>
* Regenerate capability atoms documentation with alphabetical sorting
The capability generator now sorts capabilities alphabetically within
each header group. This commit includes the regenerated documentation
file to demonstrate the alphabetical sorting functionality implemented
in the generator code.
Generated with updated capability generator that sorts capabilities
within groups: Targets, Stages, Versions, Extensions, Compound
Capabilities, and Other.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* format code (#7853)
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: aidanfnv <aidanfnv@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: slangbot <ellieh+slangbot@nvidia.com>
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
|
|
* Add command-line arguments to triangle example
- Add -h/--help flag to show usage information
- Add -api flag to select rendering API (d3d11 < /dev/null | d3d12|vulkan|metal|cpu|cuda|webgpu)
- Platform-specific API availability (D3D on Windows, Metal on macOS)
- Output works for both console and WIN32 applications
|
|
* Initial plan
* Fix C-style casts in GLSL pointer cast operations
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
|
|
debugging (#7820)
* Initial plan
* Add SLANG_DEBUG_IR_BREAK environment variable support
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Apply code formatting to SLANG_DEBUG_IR_BREAK implementation
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Improve stack trace debugging with -rdynamic flag and backtrace_symbols
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Address PR feedback: use PlatformUtil::getEnvironmentVariable, remove -rdynamic flag, and delete fallback branch
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Address PR feedback: simplify env var parsing, move backtrace to PlatformUtil, use #if for SLANG_LINUX_FAMILY
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Address PR feedback: remove unneeded include, make backtrace() more generic by removing uid parameter
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Fix and clone source tracking.
* Add python script to dump traces.
* Update instructions.
* Batch calls to addr2line
* Cleanup claude instructions.
* update claude action.
* Remove duplicated build instructions from claude.yml workflow
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* fix build error.
* Fix build errors
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
Co-authored-by: Yong He <yonghe@outlook.com>
Co-authored-by: Gangzheng Tong <tonggangzheng@gmail.com>
|
|
* Fix D3D12 test failure without Windows Developer mode
Add Windows Developer mode detection for D3D12 experimental features.
D3D12 Agility SDK requires Developer mode when using experimental
features like D3D12ExperimentalShaderModels. Without this check,
device creation fails silently.
Changes:
- Add isWindowsDeveloperModeEnabled() function to check registry
- Add developer mode check before enabling experimental features
- Provide clear error message with instructions to enable Developer mode
- Return SLANG_E_NOT_AVAILABLE to gracefully fail tests
Fixes #6819
Co-authored-by: Gangzheng Tong <gtong-nv@users.noreply.github.com>
* Add more regkey checks to cover the developer mode detections in multile Windows versions
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Gangzheng Tong <gtong-nv@users.noreply.github.com>
|
|
* Initial plan
* Fix enum array indexing by adding implicit conversion support
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Update enum array indexing test to support GPU backends
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
|
|
* Initial plan
* Add comment support to expected-failure files in slang-test
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
|
|
* Initial plan
* Fix debug info for let variables
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Fix parameter count for emitDebugVar function call
Fixed regression where let variable debug info generation was missing the optional argIndex parameter in emitDebugVar call.
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Add location validity check for debug info generation
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Don't insert debug value for nondebuggable types.
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
Co-authored-by: Yong He <yonghe@outlook.com>
|
|
|
|
* Add tests for expected behaviour
* Allow matrix types in logical or/and
* Legalize int/bool matrix types and construction with makeMatrix
* Legalize uint matrices and operations
* Limit testing to only SPIRV
* Better tests for int and bool
* Add test for uint
* Remove GLSL tests
* Remove old test for diagnosing int matrices
* Emit SPIRV directly in tests
* format code
* Address PR comments
* Improve testing
* Address PR comments
* format code
* Add tests for matrix intrinsic operations
* Move matrix lowering to dedicated legalization pass
* Fix compiler warning
* Remove signal again
* Reorder matrix and vector legalization
* Fix formatting
* Add shift and comparison tests
---------
Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
|
|
* Initial plan
* Implement out-of-bounds array access checking
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Add tests and format code for array bounds checking
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Move checkForOutOfBoundAccess to separate file and refactor using InstPassBase
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Optimize out-of-bounds checker to use single IR traversal
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Fix DiagnosticSink forward declaration from struct to class
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Update 0-array-1 test to use runtime indices to avoid bounds checking diagnostic
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Use SV_DispatchThreadID for truly runtime array access in 0-array-1 test
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
|
|
* Initial plan
* Fix GLSL global const diagnostic regression - add test exclusion for GLSL module
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
|
|
* Prelink ForceInlined functions during lowering.
* Fixes and cleanups.
* Fix warning.
* Fix crash.
|
|
specification (#7804)
This change updates ir-instruction-definition.md to reflect changes
to operand specification implemented in PR#7725
Auxiliary change meant for Issue #7185
|
|
This change expands the IR struct definition generation logic in slang-ir.h.lua
to code generate the getters for the operands of an IR.
To facilitate the above, the schema for the IR definitions in slang-ir-insts.lua is updated
to allow for explicit specification of the operands of an IR, with Fiddle code generating
the getters for them.
slang-ir.h is updated to remove the hardcoded getters of the IRs since they are now generated by Fiddle.
Fixes part of #7185
|
|
Co-authored-by: Ellie Hermaszewska <ellieh@nvidia.com>
Co-authored-by: Yong He <yonghe@outlook.com>
|
|
|
|
Co-authored-by: Yong He <yonghe@outlook.com>
|
|
Co-authored-by: Yong He <yonghe@outlook.com>
|
|
* Initial plan
* Merge NamePool and RootNamePool into single NamePool class
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
* Remove unnecessary comment from slang-fiddle-scrape.cpp
Co-authored-by: Theresa Foley <tangent-vector@users.noreply.github.com>
* Address review feedback: initialize namePool to nullptr and remove unnecessary comments
Co-authored-by: Theresa Foley <tangent-vector@users.noreply.github.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: csyonghe <2652293+csyonghe@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Theresa Foley <tangent-vector@users.noreply.github.com>
Co-authored-by: Yong He <yonghe@outlook.com>
|