<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/.github/workflows/release.yml, branch master</title>
<subtitle>Making it easier to work with shaders</subtitle>
<id>https://git.yummers.dev/slang.git/atom?h=master</id>
<link rel='self' href='https://git.yummers.dev/slang.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/'/>
<updated>2025-10-07T08:56:23+00:00</updated>
<entry>
<title>Use GitHub runners for Windows releases, disable CUDA for aarch64 (#8613)</title>
<updated>2025-10-07T08:56:23+00:00</updated>
<author>
<name>aidanfnv</name>
<email>aidanf@nvidia.com</email>
</author>
<published>2025-10-07T08:56:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=0dac20642b971191256e058282811cf9307292e7'/>
<id>urn:sha1:0dac20642b971191256e058282811cf9307292e7</id>
<content type='text'>
For #8596
Fixes #8597

This switches our release workflow back to using GitHub's
`windows-latest` runners, which we were using previously.

It also adds the variable `extra-cmake-flags` to the `windows-aarch64`
entry in the workflow's matrix with the value `"-DSLANG_ENABLE_CUDA=0"`.
If we are cross-compiling aarch64 on x86_64, and the x86_64 CUDA Toolkit
is installed, it will be auto-detected by cmake and the build will fail
(no aarch64 version of CUDA Toolkit exists).
The `windows-latest` runners do not have CUDA Toolkit, so they do not
encounter this issue, but if we do end up building on runners that do
(such as the temporary move to self-hosted runners), adding that flag
eliminates that potential problem.

This release workflow does build properly on `windows-latest` with
`extra-cmake-flags`:
https://github.com/aidanfnv/slang/actions/runs/18293521738</content>
</entry>
<entry>
<title>Re-add macOS cross-compile setup to release workflow (#8583)</title>
<updated>2025-10-01T22:58:40+00:00</updated>
<author>
<name>aidanfnv</name>
<email>aidanf@nvidia.com</email>
</author>
<published>2025-10-01T22:58:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=fa16aa3e93cdbca2301eceb6e47d23036315002f'/>
<id>urn:sha1:fa16aa3e93cdbca2301eceb6e47d23036315002f</id>
<content type='text'>
For #8564

Similar to #8580, this re-adds the cross-compile target setup step for
macOS releases that was erroneously removed in
https://github.com/shader-slang/slang/pull/8470, which made x86_64
releases build aarch64 binaries.

It also simplifies the workflow logic a bit by adding a separate `arch`
variable to the release matrix, which refers to the target architecture
in the manner that the setup requires, so that we do not have to replace
the string `"aarch64"` with `"arm64"` in setting
`CMAKE_OSX_ARCHITECTURES` for native aarch64 macOS builds and do not
have to conditionally set the MSVC `arch` to `amd64_arm64` for Windows
cross-compilation.

---------

Co-authored-by: slangbot &lt;ellieh+slangbot@nvidia.com&gt;
Co-authored-by: slangbot &lt;186143334+slangbot@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Re-add Windows cross-compile setup from release workflow (#8580)</title>
<updated>2025-10-01T20:07:55+00:00</updated>
<author>
<name>aidanfnv</name>
<email>aidanf@nvidia.com</email>
</author>
<published>2025-10-01T20:07:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=a43ac0053eb49fde3329cc7fdc7f60f45e502704'/>
<id>urn:sha1:a43ac0053eb49fde3329cc7fdc7f60f45e502704</id>
<content type='text'>
For #8578

This re-adds the cross-compile target setup step for Windows releases
that was erroneously removed in #8470, which made aarch64 releases build
x64 binaries.

The flow should be:
- setup MSVC for host arch
- build generators with cmake
- setup MSVC for cross-compile target arch
- build slang

Based on the description of #8470, it seems that the cross-compile MSVC
step was mistaken as a duplicate for the host MSVC step and removed for
being seemingly redundant.</content>
</entry>
<entry>
<title>Use self-hosted runner for Windows release build (#8470)</title>
<updated>2025-09-17T17:40:05+00:00</updated>
<author>
<name>Gangzheng Tong</name>
<email>tonggangzheng@gmail.com</email>
</author>
<published>2025-09-17T17:40:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=570277137a2baa658ccad78487858205873398da'/>
<id>urn:sha1:570277137a2baa658ccad78487858205873398da</id>
<content type='text'>
- Remove hard-coded Win SDK version.
- Using self-hosted machine for building release package in Windows.
- Remove the steps from release.yml that have been done in common steup.

---------

Co-authored-by: slangbot &lt;ellieh+slangbot@nvidia.com&gt;
Co-authored-by: slangbot &lt;186143334+slangbot@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Split CI to build and test jobs (#8359)</title>
<updated>2025-09-04T20:08:53+00:00</updated>
<author>
<name>Gangzheng Tong</name>
<email>tonggangzheng@gmail.com</email>
</author>
<published>2025-09-04T20:08:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=0fb62524bc8beda70694f6c58570ad8096bbe698'/>
<id>urn:sha1:0fb62524bc8beda70694f6c58570ad8096bbe698</id>
<content type='text'>
The CI has been re-organized with the following:
```
ci.yml (Main Orchestrator)
├── filter job
│   ├── Documentation Only? → Yes → Skip CI
│   └── Documentation Only? → No → Continue CI
│
├── Build Jobs
│   └── ci-slang-build.yml
│       ├── common-setup action
│       ├── Build &amp; Package
│       └── Upload Artifacts (Build package and Tests package)
│
└── Test Jobs
    └── ci-slang-test.yml
        └── common-test-setup action
            ├── Download Tests Artifacts ← (from Build)
            └── Run Tests
```

To achieve fine-grained build-&gt;test dependency, instead of using `matrix
strategy` in single build (or single test) job, the main ci.yml
statically defines the each config of the build and test job.
e.g. `build-windows-debug-cl-x86_64-gpu` and
`test-windows-debug-cl-x86_64-gpu` are a pair of the build-test job for
the windows/debug/ci config.


Closes: https://github.com/shader-slang/slang/issues/6728

---------

Co-authored-by: slangbot &lt;ellieh+slangbot@nvidia.com&gt;
Co-authored-by: slangbot &lt;186143334+slangbot@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Add WASM platform support to release workflow (#8264)</title>
<updated>2025-08-25T22:54:22+00:00</updated>
<author>
<name>David A Roberts</name>
<email>d@vidr.cc</email>
</author>
<published>2025-08-25T22:54:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=7b30ad489198ecedb16a0265f290c1e32772514c'/>
<id>urn:sha1:7b30ad489198ecedb16a0265f290c1e32772514c</id>
<content type='text'>
This is a first pass at adding WASM builds to releases. ~~I haven't
tested the outputs yet but it appears to build successfully in my fork
at least.~~

Edit: Made a fake release in my fork for testing, seems to be working
well for my use case at least:
https://github.com/davidar/slang/releases/tag/v2025.999

Fixes #8207</content>
</entry>
<entry>
<title>Restrict the release tag name to a pattern the build script expects (#8027)</title>
<updated>2025-08-01T17:12:38+00:00</updated>
<author>
<name>Jay Kwak</name>
<email>82421531+jkwak-work@users.noreply.github.com</email>
</author>
<published>2025-08-01T17:12:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=a660640d41eba1392c2fbc16ab9ff3661f82b0f9'/>
<id>urn:sha1:a660640d41eba1392c2fbc16ab9ff3661f82b0f9</id>
<content type='text'>
Previously there were tag name `vulkan` and it was causing build errors.
The cmake build script currently expect the name to be in a pattern of
`v2025.1` which starts with `v` and followed by numbers.</content>
</entry>
<entry>
<title>remove sccache due to the instability (#7484)</title>
<updated>2025-06-19T01:23:10+00:00</updated>
<author>
<name>Gangzheng Tong</name>
<email>tonggangzheng@gmail.com</email>
</author>
<published>2025-06-19T01:23:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=5da7301d19e0a293bc2187520b471361beaefe92'/>
<id>urn:sha1:5da7301d19e0a293bc2187520b471361beaefe92</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Disable Link-Time-Optimization by default (#7345)</title>
<updated>2025-06-06T17:48:06+00:00</updated>
<author>
<name>Jay Kwak</name>
<email>82421531+jkwak-work@users.noreply.github.com</email>
</author>
<published>2025-06-06T17:48:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=7f04adbfb9dc0c39c372809ea02cc740d484b291'/>
<id>urn:sha1:7f04adbfb9dc0c39c372809ea02cc740d484b291</id>
<content type='text'>
* Disable Link-Time-Optimization by default

LTO was requested for the release package a while ago.
When we added it, LTO was enabled by default although it was needed only for
the release packages.

Later we found that the Release build cannot be incrementally recompiled
when LTO is enabled. It sometimes works fine, but it required full recompilation
when it doesn't work. We added a new CMake option, `SLANG_ENABLE_RELEASE_LTO`,
to disable it for developers. But many Slang developers don't know the
option exists.

I was going to update the document, CONTRIBUTING.md, but I thought it
will be better to change the default behavior.

* Fix a compiler warning treated as an error on linux

A padding variable was uninitialized, which is fine, but the compiler
was complaining about it.

* Fix other gcc error for uninitialized variable

* Fix more compile warning treated as error

* Fix compiler warning from gcc 11

It appears that this is a valid warning that the `delete this` is done
on an offset 8 when the class uses multiple inheritance.

The compiler warning is following:
```
In file included from /home/runner/work/slang/slang/source/core/slang-memory-file-system.h:5,
                 from /home/runner/work/slang/slang/tools/slang-unit-test/unit-test-module-ptr.cpp:3:
In destructor ‘virtual Slang::ComBaseObject::~ComBaseObject()’,
    inlined from ‘uint32_t Slang::ComBaseObject::_releaseImpl()’ at /home/runner/work/slang/slang/source/core/slang-com-object.h:49:16,
    inlined from ‘virtual uint32_t Slang::MemoryFileSystem::release()’ at /home/runner/work/slang/slang/source/core/slang-memory-file-system.h:34:5:
/home/runner/work/slang/slang/source/core/slang-com-object.h:33:31: error: ‘void operator delete(void*, std::size_t)’ called on pointer ‘&lt;unknown&gt;’ with nonzero offset 8 [-Werror=free-nonheap-object]
   33 |     virtual ~ComBaseObject() {}
      |                               ^
In destructor ‘virtual Slang::ComBaseObject::~ComBaseObject()’,
    inlined from ‘uint32_t Slang::ComBaseObject::_releaseImpl()’ at /home/runner/work/slang/slang/source/core/slang-com-object.h:49:16,
    inlined from ‘virtual uint32_t Slang::MemoryFileSystem::release()’ at /home/runner/work/slang/slang/source/core/slang-memory-file-system.h:34:5,
    inlined from ‘Slang::ComPtr&lt;T&gt;::~ComPtr() [with T = ISlangMutableFileSystem]’ at /home/runner/work/slang/slang/include/slang-com-ptr.h:113:34,
    inlined from ‘void _modulePtr_impl(UnitTestContext*)’ at /home/runner/work/slang/slang/tools/slang-unit-test/unit-test-module-ptr.cpp:92:1:
/home/runner/work/slang/slang/source/core/slang-com-object.h:33:31: error: ‘void operator delete(void*, std::size_t)’ called on pointer ‘&lt;unknown&gt;’ with nonzero offset 8 [-Werror=free-nonheap-object]
   33 |     virtual ~ComBaseObject() {}
      |                               ^
/home/runner/work/slang/slang/tools/slang-unit-test/unit-test-module-ptr.cpp: In function ‘void _modulePtr_impl(UnitTestContext*)’:
/home/runner/work/slang/slang/tools/slang-unit-test/unit-test-module-ptr.cpp:36:69: note: returned from ‘void* operator new(std::size_t)’
   36 |         ComPtr&lt;ISlangMutableFileSystem&gt;(new Slang::MemoryFileSystem());
      |                                                                     ^
```

The problem is on the fact that `ComBaseObject` is not the first in the
multiple inheritance:
```
class MemoryFileSystem : public ISlangMutableFileSystem, public ComBaseObject
{
public:
    // ISlangUnknown
    SLANG_COM_BASE_IUNKNOWN_ALL
```

It should be:
```
class MemoryFileSystem : public ComBaseObject, public ISlangMutableFileSystem
```

The chain of ComObject release is little complicated and it is easy to
make a mistake. Here is summary with details,

1. `release()` is declared as a pure-virtual in ISlangUnknown, which is
one of the base classes of `ISlangMutableFileSystem`.
```
    struct ISlangUnknown
    {
        virtual SLANG_NO_THROW uint32_t SLANG_MCALL release() = 0;
```

2. `release()` is implemented with the macro
   `SLANG_COM_BASE_IUNKNOWN_RELEASE`.
```
    SLANG_NO_THROW uint32_t SLANG_MCALL release() SLANG_OVERRIDE \
    {                                                            \
        return _releaseImpl();                                   \
    }

inline uint32_t ComBaseObject::_releaseImpl()
{
    // Check there is a ref count to avoid underflow
    SLANG_ASSERT(m_refCount != 0);
    const uint32_t count = --m_refCount;
    if (count == 0)
    {
        delete this;
    }
    return count;
}
```

3. The instance of `MemoryFileSystem` is handled by ComPtr. And
   `ComPtr::~ComPtr()` calls the `release()`.
```
    ComPtr&lt;ISlangMutableFileSystem&gt; memoryFileSystem =
        ComPtr&lt;ISlangMutableFileSystem&gt;(new Slang::MemoryFileSystem());

    SLANG_FORCE_INLINE ~ComPtr()
    {
        if (m_ptr)
            ((Ptr)m_ptr)-&gt;release();
    }
```

4. When `delete this` is called, because ComBaseObject is not the first
   in the multiple inheritance, `this` is 8 byte off from the actual
   instance address.

A fix for this is to change the order of the inheritance and make
ComBaseObject to be the first in the order.</content>
</entry>
<entry>
<title>Update ubuntu runners to use 22.04 (#7142)</title>
<updated>2025-05-29T20:25:56+00:00</updated>
<author>
<name>amey asgaonkar</name>
<email>160177341+aasgaonkar@users.noreply.github.com</email>
</author>
<published>2025-05-29T20:25:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=f4d7954e088966c2ae8618b1cc17aac4d64ef013'/>
<id>urn:sha1:f4d7954e088966c2ae8618b1cc17aac4d64ef013</id>
<content type='text'>
* Update ubuntu runners to use 22.04

- Use ubuntu-22.04 runners instead of latest
- Leverage glibc-2.35 for release pkg
- delete centos/glibc2.17 release workflow yaml</content>
</entry>
</feed>
