<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tests/current-bugs, 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>2024-07-31T03:03:24+00:00</updated>
<entry>
<title>Fix invalid code generation for when using nested resource specialization (#4751)</title>
<updated>2024-07-31T03:03:24+00:00</updated>
<author>
<name>ArielG-NV</name>
<email>159081215+ArielG-NV@users.noreply.github.com</email>
</author>
<published>2024-07-31T03:03:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=fef0a87ddee9c0f252a6625395b684b1cb5d85e0'/>
<id>urn:sha1:fef0a87ddee9c0f252a6625395b684b1cb5d85e0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Support visibility control and default to `internal`. (#3380)</title>
<updated>2023-12-06T20:05:07+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2023-12-06T20:05:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=11111e5733b189127dc2c4934d67693b9bc6e764'/>
<id>urn:sha1:11111e5733b189127dc2c4934d67693b9bc6e764</id>
<content type='text'>
* Support visibility control and default to `internal`.

* Fix wip.

* Fixes.

* Fix.

* Fix test.

* Add legacy language detection and compatibility for existing code.

* Add doc.

---------

Co-authored-by: Yong He &lt;yhe@nvidia.com&gt;</content>
</entry>
<entry>
<title>Overloaded name lookup fix (#2199)</title>
<updated>2022-04-26T14:10:17+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2022-04-26T14:10:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=66ad0072821b58318c6dc5d2d64c966e312951dd'/>
<id>urn:sha1:66ad0072821b58318c6dc5d2d64c966e312951dd</id>
<content type='text'>
* #include an absolute path didn't work - because paths were taken to always be relative.

* Fix for overloaded name lookup.

* Small improvements.</content>
</entry>
<entry>
<title>Example for compiler crash with recursive function calling (#2196)</title>
<updated>2022-04-21T14:06:55+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2022-04-21T14:06:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=34f8b5e722aede018e275324c43055cad9a9ca5a'/>
<id>urn:sha1:34f8b5e722aede018e275324c43055cad9a9ca5a</id>
<content type='text'>
* #include an absolute path didn't work - because paths were taken to always be relative.

* Add crash when lowering a recursive function.

* Add simplified recursive crash example.

* Fix typos/tabs.</content>
</entry>
<entry>
<title>Test for dynamicDispatch/resource internal error (#2071)</title>
<updated>2022-01-10T20:32:34+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2022-01-10T20:32:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=4e7694fc862ad69b4746373d58fc7f2071385ca2'/>
<id>urn:sha1:4e7694fc862ad69b4746373d58fc7f2071385ca2</id>
<content type='text'>
* #include an absolute path didn't work - because paths were taken to always be relative.

* Test for internal error with resource/dynamic dispatch.

* Fix typo.

Co-authored-by: Theresa Foley &lt;tfoleyNV@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Language experiments (#2068)</title>
<updated>2021-12-21T21:35:34+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2021-12-21T21:35:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=447b7e0e2be031409b1421b49c81f020353bf7c5'/>
<id>urn:sha1:447b7e0e2be031409b1421b49c81f020353bf7c5</id>
<content type='text'>
* #include an absolute path didn't work - because paths were taken to always be relative.

* Moved to experiments.
Added some more tests.

* More tests around associated types.

* Return interface tests.

* More tests.</content>
</entry>
<entry>
<title>Assorted disabled tests around generics (#2062)</title>
<updated>2021-12-21T17:11:08+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2021-12-21T17:11:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=d7ed829c3f85514fc08a12a5701d64390b31040c'/>
<id>urn:sha1:d7ed829c3f85514fc08a12a5701d64390b31040c</id>
<content type='text'>
* #include an absolute path didn't work - because paths were taken to always be relative.

* Some generic experiments.

* Add some more generic tests.

* More generic experiments/issues.

* Some more generic tests.

* Remove erroneous test.

* Small improvements.

* Disable test that was accidentally enabled.

* Add equality-2.slang.

* Some more generic tests.

* Issues around type inference.

* Some more generic tests.

* Tuple experiment.

* Generic interfaces don't seem to be supported.

* Add inheritance test.

* Alternative array type issue.</content>
</entry>
<entry>
<title>Overhaul the preprocessor (#1849)</title>
<updated>2021-05-21T22:07:21+00:00</updated>
<author>
<name>T. Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2021-05-21T22:07:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=0389546b0b065303d3c6874891a9fab4428910b9'/>
<id>urn:sha1:0389546b0b065303d3c6874891a9fab4428910b9</id>
<content type='text'>
* Overhaul the preprocessor

The old Slang preprocessor was based on a simple mental model that tried to unify two parts of macro expansion:

* Scanning for macro invocations in a sequence of tokens

* Producing the expanded tokens for a macro expansion by substituting arguments into its body

The basic was that substitution of macro arguments into a macro definition is superficially similar to top-level macro expansion, just with an environment where the macro arguments act like `#define`s for the corresponding parameter names. That approach was "clever" and could conceivably have been extended to include a lot of advanced preprocessor features (e.g., a preprocessor-level `lambda` would be easy to support!), but it was basically impossible to make it correctly handle all the corner cases of the full C/C++ preprocessor.

The fundamental problem with the old approach was that it conflated the two parts of expansion listed above into one implementation, while the various special cases of the C/C++ preprocessor rely on treating the two cases very differently. The new approach here (which is somewhere between a refactor and a full rewrite of the preprocessor) changes things up in a few key ways:

* The abstraction still cares a lot about streams of tokens, but it now treats the top level streams (`InputFile`s) as fairly different from the lower-level streams (`InputStream`s)

* Macro expansion is handled as a dedicated type of stream that wraps another stream. This allows macro expansion to be applied to anything, and supports cases where multiple rounds of macro expansion are required by the spec.

* Macro *invocations* and the substitution of their arguments are now handled by a completely new system.

    * Macro arguments are no longer treated as if they were `#define`s

    * The macro body/definition is analyzed at definition time to detect various kinds of issues, and to derive a list of "ops" that make it easier to "play back" the definition at substitution time

* Token pasting and stringizing are now only handled in macro definitions (rather than being allowed anywhere), and their use cases are restricted to only those that make sense (e.g., you can't stringize anythign except a macro parameter, because anything else wouldn't make sense)

The key new types here are the `ExpansionInputStream` which handles scanning for macro invocations, and the `MacroInvocation` type, which handles playing back the macro body with substitutions.

The `ExpansionInputStream` is the easier of the two to understand. By refactoring it to use a single token of lookahead, the one major detail it had to deal with before (abandoning expansion of a function-like macro if the macro name was not followed by `(`) is significantly easier to manage.

The more subtle part is the `MacroInvocation` type, and most of the complexity there is around handling of token pasting, and the fact that either or both of the operands to a token paste might be empty.

Many of the test cases that exposed the problems in the preprocessor have been moved from `current-bugs` to `preprocessor` since they now work correctly.

* debugging: enable extractor command line dump

* fixup

* fixup</content>
</entry>
<entry>
<title>Fix for KernelContext threading issue for C++ targets (#1843)</title>
<updated>2021-05-14T21:32:52+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2021-05-14T21:32:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=79d106fac18f5792fcac448a0b037aa834fa6042'/>
<id>urn:sha1:79d106fac18f5792fcac448a0b037aa834fa6042</id>
<content type='text'>
* #include an absolute path didn't work - because paths were taken to always be relative.

* Fix for issue where threading KernelContext was not working on C++ test when there were multiple invocations.

* Improve test for context threading.</content>
</entry>
<entry>
<title>Matrix tests and assorted bug tests (#1814)</title>
<updated>2021-04-26T20:15:54+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2021-04-26T20:15:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=599129dea6930cf64a403e5e0dbd7cc7293df8af'/>
<id>urn:sha1:599129dea6930cf64a403e5e0dbd7cc7293df8af</id>
<content type='text'>
* #include an absolute path didn't work - because paths were taken to always be relative.

* Some test around matrix layout.

* A test for problem with C++ code output.

* Default should be column major CPU/CUDA tests confused this.

* Added column-major test

* Small fixes around tabs/comments

* Diagnostic problem for init of vector type with inappropriate params.

* Test demonstrating inconsistency between GPU and 'CPU-like' non square matrices.

* Added column major non square test.

* Remove vector mismatch - because ambiguity is arguably reasonable because float can silently promote to a vector.

* Small typo fixes for non-square-column-major.slang</content>
</entry>
</feed>
