<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slang.git/tools/slang-test/os.cpp, 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>2020-08-05T20:12:55+00:00</updated>
<entry>
<title>Refactor enumerating directory contents (#1478)</title>
<updated>2020-08-05T20:12:55+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2020-08-05T20:12:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=3231048b328551edff9a923dec3f7bd46ed5aff8'/>
<id>urn:sha1:3231048b328551edff9a923dec3f7bd46ed5aff8</id>
<content type='text'>
* Use m_style for OSFindFilesResult

* Refactor of FindFilesResult.

* Fixes on linux for FindFiles.

* Simplify FindFilesState, and linux support for pattern matching.

* Small fixes to linux FindFilesState

* Fix typo on linux FindFiles

* Fix typo in linux FindFiles.

* Renamed some variables, and improved comments on FindFiles.

* Improve comments on FildFiles

* Small improvements around FindFiles.

* Refactor FindFiles again.. into a visitor and function in Path.

* Fix some problems on linux.

* Fix linux typo.

* Renamed os -&gt; find-file-util

* find-file-utl -&gt; directory-util

Co-authored-by: Tim Foley &lt;tfoleyNV@users.noreply.github.com&gt;</content>
</entry>
<entry>
<title>Runtime execution of Visual Studio Compiler (#978)</title>
<updated>2019-06-12T13:05:40+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2019-06-12T13:05:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=9d514e65f00dde0e309f33591f31fbf7f132a005'/>
<id>urn:sha1:9d514e65f00dde0e309f33591f31fbf7f132a005</id>
<content type='text'>
* Work in progress to be able to invoke VS from within code.

* First pass at windows version of refactor of OSProcessSpawner

* Closer to getting VS path lookup working.

* Make OSString assignable/ctor able

* Work out program files directory directly, so don't have to expand %%.

* WIP: Improve handling of process spawning.

* Add support for splitting input by line.

* * Correctly locates visual studio install
* Added functionality to invoke vs via cmd

* Add option to execute the command line.

* Handle in ProcessUtil for windows -&gt; WinHandle.

* Rename files slang-win-visual-studio-util.cpp/.h and slang-process-util.h

* First pass at unix/linux version of ProcessUtil.

* Fix reading Visual Studio path from the registry.

* Get compiling on linux with.

* Fix vcvarsall.bat name

* Use ProcessUtil to execute external code.

* Remove OSProcessSpawner.

* Remove includes for "os.h" where no longer needed.

* Fix tabbing issue in premake5.lua
Remove test code from slang-test-main.cpp

* Fix premake4.lua tabbing issue.

* Small fixes to slang-process-util.h
Init ExecuteResult on Win execute.

* Improve comments.

* Fix bug in StringUtil::calcLines - with oddly terminated source input being able to read past end.
Make slang-generate use StringUtil over it's own impl.

* Fix off by one bug in working out Visual Studio version.

* Fix bug in calculating Visual Studio Version

* Fix compilation on linux with string parameter being passed to messageFormat.

* Remove erroneous use of kOSError codes - use Result.
</content>
</entry>
<entry>
<title>String/List closer to conventions, and use Index type (#959)</title>
<updated>2019-04-29T21:03:46+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2019-04-29T21:03:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=4880789e3003441732cca4471091563f36531635'/>
<id>urn:sha1:4880789e3003441732cca4471091563f36531635</id>
<content type='text'>
* List made members m_
Tweaked types to closer match conventions.

* Use asserts for checking conditions on List.
Other small improvements.

* List&lt;T&gt;.Count() -&gt; getSize()

* List&lt;T&gt;
Add -&gt; add
First -&gt; getFirst
Last -&gt; getLast
RemoveLast -&gt; removeLast
ReleaseBuffer -&gt; detachBuffer
GetArrayView -&gt; getArrayView

* List&lt;T&gt;::
AddRange -&gt; addRange
Capacity -&gt; getCapacity
Insert -&gt; insert
InsertRange -&gt; insertRange
AddRange -&gt; addRange
RemoveRange -&gt; removeRange
RemoveAt -&gt; removeAt
Remove -&gt; remove
Reverse -&gt; reverse
FastRemove -&gt; fastRemove
FastRemoveAt -&gt; fastRemoveAt
Clear -&gt; clear

* List&lt;T&gt;
FreeBuffer -&gt; _deallocateBuffer
Free -&gt; clearAndDeallocate
SwapWith -&gt; swapWith

* List&lt;T&gt;
SetSize -&gt; setSize
Reserve -&gt; reserve
GrowToSize growToSize

* UnsafeShrinkToSize -&gt; unsafeShrinkToSize
Compress -&gt; compress
FindLast -&gt; findLastIndex
FindLast -&gt; findLastIndex
Simplify Contains

* List&lt;T&gt;
Removed m_allocator (wasn't used)
Swap -&gt; swapElements
Sort -&gt; sort
Contains -&gt; contains
ForEach -&gt; forEach
QuickSort -&gt; quickSort
InsertionSort -&gt; insertionSort
BinarySearch -&gt; binarySearch

Max -&gt; calcMax
Min -&gt; calcMin

* Initializer::Initialize -&gt; initialize
List&lt;T&gt;::
Allocate -&gt; _allocate
Init -&gt; _init
IndexOf -&gt; indexOf

* * Put #include &lt;assert.h&gt; in common.h, and remove unneeded inclusions
* Small refactor of ArrayView - remove stride as not used

* getSize -&gt; getCount
setSize -&gt; setCount
unsafeShrinkToSize-&gt;unsafeShrinkToCount
growToSize -&gt; growToCount
m_size -&gt; m_count

* Some tidy up around Allocator.

* Use Index type on List.

* Refactor of IntSet.
First tentative look at using Index.

* Made Index an Int
Did preliminary fixes.
Made String use Index.

* Partial refactor of String.

* String::Buffer -&gt; getBuffer
ToWString -&gt; toWString

* Small improvements to String.
String::
Buffer() -&gt; getBuffer()
Equals() -&gt; equals

* Try to use Index where appropriate.

* Fix warnings on windows x86 builds.
</content>
</entry>
<entry>
<title>Running tests in slang-test process (#740)</title>
<updated>2018-12-12T13:57:48+00:00</updated>
<author>
<name>jsmall-nvidia</name>
<email>jsmall@nvidia.com</email>
</author>
<published>2018-12-12T13:57:48+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=49ed6b60d662906f290578f802f80b0ead1a2b9d'/>
<id>urn:sha1:49ed6b60d662906f290578f802f80b0ead1a2b9d</id>
<content type='text'>
* First pass at having an interface to write text to that can be replaced.
Simplifed and made more rigerous the interface used to write formatted strings.

* Added AppContext to simplify setting up and parsing around of streams.

* Added more simplified way to get the std error/out from AppContext.

* Work in progress using dll for tools to speed up testing.

* First pass at ISlangWriter interface.

* Added support for writing VaArgs.
Added NullWriter.

* Use ISlangWriter for output.

* Use ISlangWriter for output - replacing OutputCallback.
Make IRDump go to ISlangWriter

* SlangWriterTargetType -&gt; SlangWriterChannel
Improvements around AppContext

* Shared library working with slang-reflection-test.

* Dll testing working for render-test.

* Include va_list definintion from header.

* Fix errors from clang.

* Fix typo for linux.

* Added -usexes option

* Fix typo.

* Fix arguments problem on linux.

* Fix typo for linux.

* Add windows tool shared library projects.

* Fix warning from x86 win build.
Fix signed warning from slang-test/main.cpp

* First attempt at getting premake to work on travis, and run tests.

* Try moving build out into script.

* Invoke bash scripts so they don't have to be executable.

* Drive configuration/tests from env parameters set by travis

* Try using source to run travis tests.

* Remove the build.linux directory - but doing so will overwrite Makefile.

* Made -fno-delete-null-pointer-checks gcc only.

* Try to fix warning from -fno-delete-null-pointer-checks

* Turn of warnings for unknown switches.

* Try to make premake choose the correct tooling.

* Disabled missing braces warning.

* Disable -Wundefined-var-template on clang.

* -Wunused-function disabled for clang.

* Fix typo due to SlangBool.

* Remove this nullptr tests.

* "-Wno-unused-private-field" for clang.

* Added "-Wno-undefined-bool-conversion"

* Add DominatorList::end fix.

* Split scripts into travis_build.sh travis_test.sh

* Fix gcc/clang template pre-declaration issue around QualType.

* Fix premake to build such that pthread correctly links with slang-glslang
</content>
</entry>
<entry>
<title>turn on 'treat warnings as errors' (#266)</title>
<updated>2017-11-08T02:43:39+00:00</updated>
<author>
<name>Yong He</name>
<email>yonghe@outlook.com</email>
</author>
<published>2017-11-08T02:43:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=e1710807292544775dc6a0eb338af081fb94493e'/>
<id>urn:sha1:e1710807292544775dc6a0eb338af081fb94493e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Attempt to fix subprocess handling for Linux (#197)</title>
<updated>2017-10-06T15:43:47+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2017-10-06T15:43:47+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=3693bff4a2b822a2b29ac563d464d1012a3a3eda'/>
<id>urn:sha1:3693bff4a2b822a2b29ac563d464d1012a3a3eda</id>
<content type='text'>
* Attempt to fix subprocess handling for Linux

Our CI builds are sometimes hanging on Travis, and I suspect it might be something to do with how we are waiting for subprocesses to complete. I'm trying to following the manpage for the `wait()` and `waitpid()` calls a bit better here.

* fixup: try to use poll() instead of select()

* fixup: missing header

* fixup

* fixup

* fixup: try to emit test output when tests fail on Travis
</content>
</entry>
<entry>
<title>Get tests running/passing under Linux (#194)</title>
<updated>2017-09-29T20:43:08+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoleyNV@users.noreply.github.com</email>
</author>
<published>2017-09-29T20:43:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=8a0ebb9fa25fd44def17b03b3f8aa1a33ad77940'/>
<id>urn:sha1:8a0ebb9fa25fd44def17b03b3f8aa1a33ad77940</id>
<content type='text'>
* Get tests running/passing under Linux

- Fix up `dlopen` abstraction

- Fix up some test cases to request hlsl (rather than default to dxbc) so they can run on non-Windows targets

- Fix up test runner ignore tests that can't run on current platform (and not count those as failure)

- Fix file handle leeak in process spawner absttraction

- Get additional test-related applications building

- More tweaks to Travis script; in theory deployment is set up now (yeah, right)

* fixup

* fixup: Travis environment variable syntax

* fixup: Buffer-&gt;begin

* fixup: actually run full tests on one config

* fixup: add build status badge for Travis
</content>
</entry>
<entry>
<title>Overhaul `RefPtr` and `String`</title>
<updated>2017-06-29T20:18:32+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoley@nvidia.com</email>
</author>
<published>2017-06-29T18:50:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=f4d900dfb64d95f121dd8565dd269be061ef8509'/>
<id>urn:sha1:f4d900dfb64d95f121dd8565dd269be061ef8509</id>
<content type='text'>
- `RefPtr` no longer tries to have distinct cases for interal-vs-external reference counts. Instead we always require an internal reference count.

  - Types the used `RefPtr` but weren't `RefObject` were made to inherit `RefObject`

  - The `ReferenceCounted` base class was removed, so that only `RefObject` remains

  - Implicit conversion from `RefPtr&lt;T&gt;` to `T*` added
    - This created some complicates for other types that relied on implicit conversions, so this isn't a net cleanup right now

- The main type that got messed up by the above was `String`, which previously held a `RefPtr&lt;char, ...&gt;`. This change thus *also* includes a major overhaul of `String`:

  - `String` now holds all its data via indirection, using a `StringRepresentation` that is a `RefObject`. This object holds a length, capacity, and directly stores the character data in its allocation. This means that `sizeof(String)==sizeof(void*)`

  - It is now possible to directly mutate a `String` by appending to its representation (we just need to ensure it has a reference count of `1`, possibly by cloning it). This means that `StringBuilder` is now basically just an idomatic use of `String`

  - A couple operations that just return sub-ranges of a `String` now return `StringSlice` to avoid allocation when it isn't needed. This required more work.

  - Indices into strings changed from `int` to `UInt` (which is pointer-sized). This had a bunch of follow-on changes because the value `-1` sometimes needs to be special-cased in code that uses indices. Further cleanups are probably needed here.
</content>
</entry>
<entry>
<title>Rename `CoreLib::*` to `Slang`</title>
<updated>2017-06-15T20:24:25+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoley@nvidia.com</email>
</author>
<published>2017-06-15T20:24:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=205187b561c3b31fa931e73e8f7263f0c4b1de41'/>
<id>urn:sha1:205187b561c3b31fa931e73e8f7263f0c4b1de41</id>
<content type='text'>
Getting rid of more namespace complexity and stripping things down to the basics.

This also gets rid of some dead code in the "core" library.
</content>
</entry>
<entry>
<title>AppVeyor: Run tests as part of AppVeyor builds</title>
<updated>2017-06-14T21:40:48+00:00</updated>
<author>
<name>Tim Foley</name>
<email>tfoley@nvidia.com</email>
</author>
<published>2017-06-14T16:10:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.yummers.dev/slang.git/commit/?id=90d6a401ee0d6327b068e58a64a10f620300a38e'/>
<id>urn:sha1:90d6a401ee0d6327b068e58a64a10f620300a38e</id>
<content type='text'>
This includes a bunch of related changes:

- `slang-test`
  - Add a notion of an "output mode" that specifies whether we output to console (the default), or invoke the apprpriate AppVeyor command to update test status
  - Add a notion of test categories, so that tests can be tagged with categories, and then we can invoke only those tets in a given category, or choose to *exclude* tests with specific categories
  - Allow the `OSProcessSpawner` to look up an executable by "path" (meaning a full path is expected) or by "name" (meaning it should be allowed to look in the current directory, `PATH` environment variable, etc.). This was important to make sure that I can run `appveyor` without having to know its absolute path.

- AppVeyor configuration
  - Change badge to reflect new build account for organization (rather than a single-user account)
  - Remove attempt to set AppVeyor build version in a clever way, since it breaks links from GitHub to AppVeyor
  - Change order or configurations in the build matrix to front-load the Release build (which has the main tests)
  - Turn on `fast_finish` flag so we don't have to wait as long for failed builds
  - Turn on `parallel` builds
  - Set `verbosity: minimal` to avoid getting build spew about Xamarin stuff I'm not using
  - Add custom `test_script` to invoke `test.bat`
    - Sets the test category based on teh build configuration, so we don't run the full test suite on every input.

- `test.bat`
  - Allow for `-platform` and `-configuration` arguments
  - Rewrute a platform of `Win32` over to `x86` to match how the output directories are named
  - Futz around with how the directories are being passed along to work around annoying `.bat` file quoting behavior (I still don't get how batch files work)

- Tests
  - Mark a bunch of tests as `smoke` tests
  - Mark the relevant tests as `render` tests
    (these get filtered out for AppVeyor builds)
</content>
</entry>
</feed>
