{"push_id":1429376499,"size":19,"distinct_size":4,"ref":"refs/heads/hello-fix","head":"057435ee920c4d10131db1c2a63051a6d240d061","before":"502629e5ccf19cedeca970addd9ee23fdd4e3df4","commits":[{"sha":"191b079bd2abddc8707b809eb3af52ecc27e74f8","author":{"name":"Tim Foley","email":"2728a4ea7ec9124c4cc04534b0eaa708be2a4ebf@nvidia.com"},"message":"Initial version of a \"test runner\".\n\nThe basic process for running tests right now is:\n\n- Build Spire.sln in the Debug Win32 configuration (I'll add support for changing this later)\n  - This includes the SpireTestTool project\n- Run `test.bat` from the root of the Spire repository\n  - This will enumerate and run tests, and report a summary of pass/fail results\n\nThe flow of the current test runner is:\n\n- Enumerate all .spire files in `Tests/FrontEnd` (eventually we should add other directories)\n- For each file (say, `foo.spire`) execute the Debug/Win32 `SpireCompiler.exe` on the file, and capture stdout, stderr, and the result code\n- Format the result code, stderr, and stdout into a single \"actual output\" string\n- Try to load a `foo.spire.expected` file to a string, and compare the actual output to the expected\n- If no `foo.spire.expected` file is found, expect the result code to be zero, and both stderr/stdout to be empty\n- If the output doesn't match what is expected, then write the actual output to `foo.spire.actual`\n\nWhen a test fails the user can then manually diff the `foo.spire.expected` and `foo.spire.actual` files to diagnose the issue.\n\nThis is only a very basic first pass, and needs a lot of tweaking to get the policy right as we add more tests.\nIn particular, we'll need a plan for how to properly compare expected GLSL/HLSL output without getting bogged down every time we make a formatting change. We also need an eventual plan for end-to-end runnable tests (that produce images).\n\nGetting to this basic step took longer than expected simply because I started out doing my own implementation of all the platform-specific code that the test runner needed, rather than use `CoreLib`. I got that version working, but decided it was better to just use `CoreLib` for now, and then refactor it to be closer to what we want long term bit by bit (which will be easier to do once we have some decent regression tests in place).","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/191b079bd2abddc8707b809eb3af52ecc27e74f8"},{"sha":"dfe306ffceaa6deba3d803e14d6558bfdca667a9","author":{"name":"Tim Foley","email":"2728a4ea7ec9124c4cc04534b0eaa708be2a4ebf@nvidia.com"},"message":"Remove some dead code from CoreLib.\n\nThere are entire files in `CoreLib` that aren't being used.\nThis change deletes them as the first step toward making the codebase as simple as possible.\n\nI fully realize that we might need some of this functionality again some day, but when/if that day comes we can easily recover the code from the Git history.","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/dfe306ffceaa6deba3d803e14d6558bfdca667a9"},{"sha":"e36e87b43d91be6e287a60bbf0c2ec9f1f96beb7","author":{"name":"Yong He","email":"7dfe40dbfcbb42057e8bbac3ba05cad896a3f010@outlook.com"},"message":"Merge pull request #49 from tfoleyNV/test-runner\n\nInitial version of a \"test runner\".","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/e36e87b43d91be6e287a60bbf0c2ec9f1f96beb7"},{"sha":"9a240347e297600976a252c3fd1b07a7543ad1a2","author":{"name":"Yong He","email":"7dfe40dbfcbb42057e8bbac3ba05cad896a3f010@outlook.com"},"message":"Merge pull request #50 from tfoleyNV/hello-fix\n\nFix up \"hello\" example.","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/9a240347e297600976a252c3fd1b07a7543ad1a2"},{"sha":"52c7e33a07145312fa28af7ac711a589a3cd5066","author":{"name":"Yong He","email":"7dfe40dbfcbb42057e8bbac3ba05cad896a3f010@outlook.com"},"message":"Merge pull request #51 from tfoleyNV/cleanup\n\nRemove some dead code from CoreLib.","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/52c7e33a07145312fa28af7ac711a589a3cd5066"},{"sha":"6788e438760fd5f0e92a87f33524522b1e505b08","author":{"name":"Yong He","email":"7dfe40dbfcbb42057e8bbac3ba05cad896a3f010@outlook.com"},"message":"Move spire's tokenizer to CoreLib and remove Regex code from CoreLib\n\nCoreLib's Parser now renamed to TokenReader, and both Spire's parser and\nCoreLib::Text::TokenReader relies on CoreLib::Text::TokenizeText()\nfunction defined in CoreLib/Tokenizer.cpp\n\nBecause the new CoreLib::Text::TokenReader does not relie on Regex and\nMetaLexer, these code files has been removed from source tree.","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/6788e438760fd5f0e92a87f33524522b1e505b08"},{"sha":"649af555f39d477b4f7c35791f2d4927294b0f14","author":{"name":"Yong He","email":"7dfe40dbfcbb42057e8bbac3ba05cad896a3f010@outlook.com"},"message":"moved Tokenizer helper functions to header file","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/649af555f39d477b4f7c35791f2d4927294b0f14"},{"sha":"3d2dfa649bdc888faca547660310535af59eb95e","author":{"name":"Yong He","email":"7dfe40dbfcbb42057e8bbac3ba05cad896a3f010@outlook.com"},"message":"bug fix in GLSL code gen after refactoring","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/3d2dfa649bdc888faca547660310535af59eb95e"},{"sha":"0b1fcbae1154b05addd39388ec68908e221f4a6e","author":{"name":"Yong He","email":"7dfe40dbfcbb42057e8bbac3ba05cad896a3f010@outlook.com"},"message":"Change CoreLib::String class to use UTF8 encoding\n\nThe CoreLib::String class now uses UTF8 as internal encoding. (this\nchange touches almost every file)\n\nThe previous String::ToMultiByteString() method is removed,\nString::Buffer() method now returns UTF8 encoded char *.\n\nAdded the following new methods for OS interop:\n- wchar_t* String::ToWString(int * encodedLength = 0);\nThe buffer of the returned wchar_t * is owned by the String object.\n- static String String::FromWString(wchar_t * str) = 0;\nconvert from wchar_t string to String.\n\nTo use printf to display String content, consider using following code:\nprintf(\"%S\", str.ToWString());\nNote that even though the type of str.Buffer() is char *, you should not\npass this pointer to printf because printf on Windows assumes an\nencoding determined by current locale (code page) settings, which is\nusually not UTF8. The only correct way to display text on Windows is to\nconvert to UTF16 via String::ToWString() and then display it using wide\nchar functions.","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/0b1fcbae1154b05addd39388ec68908e221f4a6e"},{"sha":"403df59e1881d7d3116bea14ffd44ef37910234c","author":{"name":"Yong He","email":"7dfe40dbfcbb42057e8bbac3ba05cad896a3f010@outlook.com"},"message":"CoreLib bug fixes.","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/403df59e1881d7d3116bea14ffd44ef37910234c"},{"sha":"93fd87d7cfa10a27ed9119c6a8e0625c7f41a42c","author":{"name":"Yong He","email":"7dfe40dbfcbb42057e8bbac3ba05cad896a3f010@outlook.com"},"message":"Update Tests to use new UTF8 based String.","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/93fd87d7cfa10a27ed9119c6a8e0625c7f41a42c"},{"sha":"9d4e98dd696ba2f428089b4d22ee40e5cf8448f8","author":{"name":"Tim Foley","email":"2728a4ea7ec9124c4cc04534b0eaa708be2a4ebf@nvidia.com"},"message":"A few fixes to build under VS2013.\n\nThe main changes are:\n\n- Use `enum`s instead of `constexpr` members in type-trait templates\n- Manually deal with ambiguity between zero-arument default constructors and constructors that uses a parameter pack (which could be empty)\n- Explicitly quality some references to CoreLib::Text::TokenType, because it is otherwise ambiguous with a symbol declared in a Windows header.","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/9d4e98dd696ba2f428089b4d22ee40e5cf8448f8"},{"sha":"a053d270e67a4b2e2863fd7e95c838747784c85f","author":{"name":"Tim Foley","email":"2728a4ea7ec9124c4cc04534b0eaa708be2a4ebf@nvidia.com"},"message":"Add a simplified way for external projects to build Spire.\n\nThis change simply adds a `SpireAllSource.h` to the base level of the project, which `#include`s all of the source files using relative paths. This allows a project that wants to use Spire to follow this easy process:\n\n- Clone Spire from GitHub to `<some path>/Spire/`\n  - Optional: set up Spire as a Git subtree, submodule, or subrepo, as desired\n- Either:\n  - Add `<some path>/Spire/` to your include path and\n  - Pull in the Spire source using `#include <SpireAllSource.h>` in a file of your choosing\n- Or:\n  - Add `<some path>/` to your include path and\n  - Pull in the Spire source using `#include <Spire/SpireAllSource.h>` in a file of your choosing\n\nGetting this working involved one small fix to an include guard in the source.\n\nThe obvious next steps (not implemented in this change) are:\n\n- Move the current `Spire/Source/SpireLib/include/Spire.h` to just `Spire/Spire.h`\n- Remove `CodePack` and `LibraryRelease/` from the repository\n- Possibly: move `SpireCompiler` to build using `SpireAllSource.h`\n\nTo be clear, the down-sides of the existing approach are:\n\n- When clients (including people like me who want to contribute to Spire) single-step through code, they are stepping through an amalgamated file, and so changes they make there get blown away when they run `CodePack`\n\n- In order to generate the amalgamated file upon making changes, a potential contributor needs to build and run `CodePack`, which is a project written in another language (C#). This complicates the task of contributors, even if they just want to make a small bug fix.\n\n- The added complexity of generating the amalgamated file increases the chance that people will send in pull requests and/or check in changes that don't update the amalgamated file. This would need to be an automated process to give us confidence, otherwise the fact that our own tests pass do not mean that people building from the amalgamated file have similar guarantees.\n\n- Even if people remember to update the amalgamated file, it means that all diffs in Git (and all diffs when reviewing a pull request) include two copies of each change, with one of them being on a giant file.","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/a053d270e67a4b2e2863fd7e95c838747784c85f"},{"sha":"534f08f8112e53cc1c7d522f1672274aebaee2e1","author":{"name":"Tim Foley","email":"2728a4ea7ec9124c4cc04534b0eaa708be2a4ebf@nvidia.com"},"message":"Move `Spire.h` to top level.\n\nThe previous path (`Spire/Source/SpireLib/include/Spire.h`) made it really inconvenient to set up include paths for projects using Spire.\n\nThe new approach lets clients easily choose whether to do:\n\n    #include <Spire.h>\n\nor:\n\n    #include <Spire/Spire.h>\n\nbased on how they set up their include path (and either way, the use setting up the include path only needs to know where they cloned the Spire repository, and not anything about its internal directory structure).","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/534f08f8112e53cc1c7d522f1672274aebaee2e1"},{"sha":"0cb8cb2842b842d38e27185454de80ed779d0f83","author":{"name":"Tim Foley","email":"2728a4ea7ec9124c4cc04534b0eaa708be2a4ebf@nvidia.com"},"message":"Remove `CodePack` and `LibraryRelease/`\n\nThe amalgamated source file in `LibraryRelease/Spire.cpp` is a nice idea, but it has a lot of practical down-sides:\n\n- It complicates the process for contributing to the code (an extra step before submitting changes, more complicated diffs)\n- It adds more code to the repository (`CodePack`, which is in C# rather than C++)\n- It creates the potential for confusion over where to make edits and/or can lead to stale changes or hard-to-integrate patches (if people edit the amalgamated file directly).\n\nSome of these down-sides could be mitigated, but it seems a lot simpler to just the `SpireAllSource.h` file be the one-stop-shop for anybody who wants a simple way to pull in Spire without a lot of build complexity.\n\nOnce `LibraryRelease/` gets blown away, there is no reason to keep `CodePack` in the repository.","distinct":false,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/0cb8cb2842b842d38e27185454de80ed779d0f83"},{"sha":"904f52345abc648f43453da1eae4600dc3942fc0","author":{"name":"Yong He","email":"7dfe40dbfcbb42057e8bbac3ba05cad896a3f010@outlook.com"},"message":"Merge pull request #53 from tfoleyNV/vs2013-fixes\n\nA few fixes to build under VS2013.","distinct":true,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/904f52345abc648f43453da1eae4600dc3942fc0"},{"sha":"444bf24c286c5a5175a644e5241e0bcf4b1c3495","author":{"name":"Yong He","email":"7dfe40dbfcbb42057e8bbac3ba05cad896a3f010@outlook.com"},"message":"Merge branch 'tfoleyNV-release-packaging'","distinct":true,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/444bf24c286c5a5175a644e5241e0bcf4b1c3495"},{"sha":"47967ae25c34ee6bb43ab08e81d06b8c1ce1dceb","author":{"name":"Yong He","email":"7dfe40dbfcbb42057e8bbac3ba05cad896a3f010@outlook.com"},"message":"Merge branch 'master' of https://github.com/csyonghe/Spire\n\n# Conflicts:\n#\tLibraryRelease/Spire.cpp","distinct":true,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/47967ae25c34ee6bb43ab08e81d06b8c1ce1dceb"},{"sha":"057435ee920c4d10131db1c2a63051a6d240d061","author":{"name":"Tim Foley","email":"2728a4ea7ec9124c4cc04534b0eaa708be2a4ebf@nvidia.com"},"message":"Fix up `hello` example for recent changes\n\nI also added the `hello` project to the main `Spire.sln` for now, just so that we can more easily ensure sure we don't break it (or other examples).\nLonger term, I might advocate a split into a `Spire.sln` that just builds the core, and `SpireAll.sln` that builds the core projects plus all examples, tests, etc.","distinct":true,"url":"https://api.github.com/repos/tfoleyNV/Spire/commits/057435ee920c4d10131db1c2a63051a6d240d061"}]}
{"actor":{"display_login":"tfoleyNV"}}