Revision history for Shaderc

v2023.7 2023-10-12
 - Update dependencies
 - Finish converting build instructions and flags to always use C++17
 - Add GitHub CI to test more flows

v2023.6 2023-08-09
 - Update dependencies, including SPIRV-Tools v2023.4.rc2

v2023.5 2023-07-19
 - Update dependencies
 - Update to Android NDK r25c
 - Update Android API level for test project (#1333)
 - For testing, add a dependency on Abseil's C++ library
 - Fix MSVC runtime library linking in CMake (#1339)

v2023.4 2023-05-24
 - Refresh Glslang, SPIRV-Tools, SPIRV-Headers
 - Android.mk:
    - Require NDK 21d or later
    - Update scripts for generating the shared library, which
      should fix Windows
 - glslc and APIs:
    - Add options to control mesh shading limits

v2023.3 2023-03-17
 - Shaderc now requires C++17
 - Drop support for VS 2015
 - Add glslc option -fpreserve-bindings
 - Refresh Glslang, SPIRV-Tools

v2023.2 2023-01-18
 - Update DEPS to pull in SPIRV-Tools bugfix #5049

v2023.1 2023-01-13
 - General/Build
   - Removed support for GCC-based code coverage builds
   - Update minimum CMake to 3.17.2
 - Fix C++20 compatibility: explicitly construct string_piece when
   comparing to `char*`

v2022.4 2022-11-30
 - Update to Glslang 11
 - Update SPIRV-Tools, SPIRV-Headers dependencies
 - Add Cmake BUNDLE DESTINATION option for target install
 - The code coverage build is no longer being tested

v2022.3 2022-10-12
 - #1264: Implement defaults for SPV_EXT_mesh_shader builtins
 - Update SPIRV-Tools to v2022.4

v2022.2 2022-08-11
 - Require CMake 3.14 or later
 - Support 16bit types in HLSL, via glslc option -fhlsl-16bit-types
   and associated library API methods. PR #1251
 - Update glslc tests for newer Glslang debug output
 - Update SPIRV-Tools v2022.3 plus one patch
 - Update SPIRV-Headers

v2022.1 2022-02-03
 - Update DEPS to include two fixes on top of SPIRV-Tools v2022.1:
    - Validator handles Nontemporal image operand
    - Optimizer handles RayQueryKHR type

v2022.0 2022-01-27
 - Update to Glslang 11.8.0

v2021.4 2022-01-27
 - Support Vulkan 1.3
 - Support targeting SPIR-V 1.6, which is the default for Vulkan 1.3
 - Updated copyright check: Excludes Glslang generated files when
   building in source tree
 - Fix Android.mk rules for building libshaderc_combined, to adapt to more
   recent NDKs that have removed the GNU binutils.

v2021.3 2021-11-11
 - Add build switch to disable copyright check
 - Update DEPS:
    - SPIRV-Tools v2021.4
    - SPIRV-Headers GitHub master 2021-11-11
    - Glslang GitHub master 2021-11-11

v2021.2 2021-08-25
 - README: Mention Common Lisp bindings (external)
 - Update DEPS:
    - SPIRV-Tools v2021.3
    - SPIRV-Headers master 2021-08-25
    - Glslang GitHub master 2021-08-25

v2021.1 2021-06-21
 - Disable --target-env=opengl_compat with an explicit error message
   - It has been deprecated for a long time.

v2021.0 2021-04-21
 - Refresh dependencies (in DEPS):
   - SPIRV-Tools v2021.1
   - SPIRV-Headers snapshot 2021-04-21
   - Glslang 11.2.0, snapshot 2021-04-21
 - Fixes:
   #1174: Windows Bazel support: rename internal headers io.* to io_shaderc.*

v2020.5 2021-02-19
 - Refresh dependencies (in DEPS):
   - SPIRV-Tools v2020.7 + 1 patch
   - Glslang 11.1.0
 - Add option to skip building examples
 - Fixes:
   #1153: Improve file+line parsing from Glslang messages

v2020.4 2020-12-09
 - Removed svpc
 - Fixed issues with embedders getting duplicate symbols
 - Converted C-style casts to static_cast
 - Rolled ahead to fix/pickup Vulkan Raytracing support

v2020.3 2020-09-02
 - General:
   - Last release with spvc
   - Cleaned up issues discovered by Infer
 - spvc:
   - Added support for Dawn using deprecated Options constructor
   - Adding support for the additional fixed sample mask in MSL

v2020.2 2020-07-23
 - General:
   - Remove VS2013 support
   - Support both posix and non-posix MinGW toolchains
   - Support optionally building Tint tooling for WGSL
   - Add -h option to glslc, spvc; same as --help
   - Add source file license checker
   - BUILD.gn improvements

 - glslc, libshaderc:
   - Update to Glslang generator 9
   - Add interface to support 16bit types in HLSL
   - Add glslc hidden experimental option -mfmt=wgsl; requires Tint

 - spvc:
   - Add minimum buffer size for Dawn reflection

v2020.1 2020-06-09
 This is the last version that officially supports VS2013.

 - General:
   - Added warning signs about unsupported downloads (#1041)
   - Added .NET bindings to README.md (#1060)
   - Only add -fPIC if supported by the compiler. (#1061)

 - glslc, libshaderc:
   - Removed Singleton pattern around access to glslang (#1059)

 - spvc:
   - Added concept of comparison sampler to API (#1036)
   - Added support for options.hlsl.nonwritable_uav_texture_as_srv (#1048)
   - Support forcing storage buffers to be always declared as UAV. (#1076)

v2020.0 2020-03-06
 - General:
   - Getting spirv.hpp from SPIRV-Headers instead of not glslang (#992)
   - Added clarification about status of artifacts in downloads.md (#1012)

 - glslc, libshaderc:
   - Added support for new Glslang profile enum, EProfileCount (#973)
   - Updated user documentation for -S in glslc (#978)
   - Add documentation for Vulkan 1.2 and SPIR-V 1.5 (#980)
   - Removed NV_EXTENSIONS conditionals (#1003)
   - Added support for generating WebGPU SPIR-V to libshaderc (#1021)
   - Rolled in all DEPS for provisional SPIR-V extensions for raytracing

 - spvc:
   - Normalized API behaviour (#967)
   - Added source_set target for libshaderc_spvc (#976)
   - Added in support for spvc logging to the terminal (#981)
   - Internal refactoring to reduce boiler plate in API implementations (#984)
   - Added newline to logging messages to make them readable (#985)
   - Added reflection support for Dawn:
     - storage textures (#1001)
     - storage texture format (#1005)
     - texture dimension for storage textures (#1008)
     - is storage texture declared as multisampled texture (#1011)
   - Converted compile options to require explicit environments (#1019)
   - Added knob to control force_zero_initialized_variables in SPIRV-Cross (#1028)

v2019.1 2020-01-22
 - glslc, libshaderc:
   - Add -fnan-clamp: Generate code for max and min builtins so that,
     given a NaN operand, will return the other operand. Similarly, the
     clamp builtin favours non-NaN operands, as if clamp was implemented
     as the composition of max and min.
   - Add -finvert-y
   - Using SetBeforeHlslLegalization for more relaxed validation rules
   - Added support for SPIR-V 1.5
   - Add --emit-line-directive option
   - Added support for Vulkan 1.2
 - spvc:
   - Add many options:
	--flatten-multidimensional-arrays
	--es
	--no-es
	--glsl-emit-push-constant-as-ubo
	--msl-swizzle-texture-samples
	--msl-platform=ios|macos
	--msl-pad-fragment-output
	--msl-capture-output
	--msl-domain-lower-left
	--msl-argument-buffers
	--msl-discrete-descriptor-set=<number>
	--hlsl-enable-compat
   - Reintroduce shaderc_spvc_compile_options_set_shader_model
   - Added option to inject robust buffer access code
   - Added support for emitting ToVulkan shaders
   - Added spirv-opt based IR generation as alternative to built in spirv_cross IR gen
   - Added API for specifying source and target execution environments
   - Added option & reflection API methods neede by Dawn
   - Substantial internal refactoring and code cleanup
   - Large number of breaking changes to the API
      -  Replaced shaderc_spvc_compile_options_set_shader_model with
         shaderc_spvc_compile_options_set_hlsl_shader_model
      - Compiler initialization and shader generation moved into seperate calls
      - Seperated return codes from shaderc ones
      - Many small API changes
   - Improvements to testing
      - Refactoring and clean up of run_spirv_cross_tests.py
      - Seperation of expectations into known failures, known invalids, and cases
        that need investigation
      - Tweaks and fixes to substantially increase passing cases
      - Added support for running tests using spvc IR generation
   - Infrastructure
   - Update DEPS with cross-verified commits from associated repos.
   - Add utils/roll-deps
 - Infrastructure:
   - Removed Appveyor artifacts link
   - Improvements and clean up of DEPS rolling scripts
   - Enabled warnings about implicit fallthrough
   - Enabled improper semicolon warnings
   - Restricted -fPIC to platforms that support it
   - Converted remaining scripts to use Python 3
   - Replaced nosetest with unittest
   - Removed assumptions aabout location of spirv-tools, effcee, and RE2
   - Migrated BUILD.gn spirv_cross dependency to local repo
 - Fixes:
   - Fix duplicate install paths when using VisualStudio
   - Fixed BUILD.gn for Chromium, Dawn & Fuchsia
   - Explicitly enabled HLSL support in glslang
   - Added installing necessary headers in Android.mk
   - Removed unsupported Unicode characters
   - Fixed detection of spirv-headers directory
   #666: Update Docker file to use Python3

v2019.0 2019-06-04
 - Add optional spvc, libshaderc_spvc as wrapper around SPIRV-Cross:
   - Rejects bad modules by running the SPIR-V validator first
   - Skips exception-heavy SPIRV-Cross SPIR-V parser
 - Support NV extensions for shader stages
 - Require SPIRV-Tools and SPIRV-Headers with SPIR-V 1.4 support
 Build support:
 - Use KhronosGroup/glslang instead of google/glslang
 - Stop running tests on VS 2013 (googletest no longer supports VS2013)
 - Require Python3 for building
 - Support Chromium's GN build system
 - Kokoro build fixes
 - Cmake build fixes: Only build subdirs if those targets are not yet defined
 - Use Android.mk from Glslang
 - Dockerfile gets re2 and effcee sources
 - Fixes for newer googletest
 - Add address sanitizer presubmit bot
 - Generate config files for pkg-config
 Spvc:
 - Add option to specify source environment.  Spvc will transform from source
   to target environment if they are different.  This only works for WebGPU0
   and Vulkan 1.1.
 Fixes:
  #499: In HLSL compilation, relax layout and logical pointer validation rules
   prior to running the legalization recipe.

v2018.0 2018-10-01
 - Support -fhlsl_functionality1 (also -fhlsl-functionality1)
 - Support NVIDIA Turing extensions. Requires updated Glslang and SPIRV-Tools.
 - Use SPIR-V optimization and HLSL legalization recipes from SPIRV-Tools.
   - Pass target environment into SPIRV-Tools code, e.g. from --target-env vulkan1.1
 - Add SONAME=1 property to shared library
 - Support GN build for Chromium
 Fixes:
  #469: Add virtual dtor to classes with virtual functions.
  #457: Fix writing SPIR-V binaries to standard output on Windows.

v2017.2 2018-02-27
 - Add a shared library version of libshaderc
 - Support GLSL 4.6 and ESSL 3.2
 - Fail compilation if a resource does not have a binding.
 - Add options for automatically setting bindings for (uniform) resources that
   don't have bindings set in shader source.
 - Add options for automatically setting locations for pipline inputs and outputs.
 - Add option for using HLSL IO mappings as expressed in source.
 - Add options for setting resource binding base numbers.
 - Add option to use HLSL resource register numbers for bindings.
 - HLSL compilation now defaults to HLSL packing rules.
   (This change is inherited from Glslang commit 7cca140.)
 - HLSL compilation runs SPIR-V "legalization" transforms to reduce
   manipulation of opaque handles (e.g. images), to satisfy Vulkan rules.
 - Adapt to Glslang generator version numbers:
   - To 2: a fix for code generation for atomicCounterDecrement.
   - To 3: change memory barrier semantics masks
   - To 4: generate more access chains for swizzles
 - CMake install rules uses GNUInstallDirs.  For example, install to lib64
   when that is the norm for the target system.

v2017.1 2017-03-10
 - Add option to automatically assign bindings to uniform variables
   that don't have an explicit 'binding' layout in the shader source.
 - Enable NVIDIA extensions by default in GLSL compilation
 - README mentions language bindings provided by 3rd parties.
 - README describes the known-good branch on GitHub
 - Fixed examples in shaderc.h; added C API use to examples/online-compile
 - Fixes issues:
   #289: Don't output an object file when compilation fails.
   #296: Enable use of the CMake in Android Studio.

v2016.2 2016-12-13
 - Describe Shaderc's level of stability.
 - Support HLSL compilation, exposing functionality in Glslang.
   - Supported in C, C++ API
   - glslc accepts "-x hlsl", and assumes .hlsl files are HLSL.
   - glslc accepts "-fentry-point=<name>" to set entry point name,
     overriding default value "main".
 - Support setting shader resource limits in C, C++ APIs, and in
   glslc
   - glslc adds -flimit=<setting>
   - glslc adds --show-limits to display defaults and valid resource
     limit syntax.
   - glslc adds "-flimit-file <file>" support to read Glslang resource
     configuration files, i.e. the output of "glslangValidator -c".
 - Enable AMD extensions by default in GLSL compilation
 - Fixes issues:
   #281: Work around Android build issue with abspath on Windows
   #283: Increase default maxDrawBuffers to 4, to match Vulkan/GLES3.0

v2016.1 2016-10-12
 - C API for assembling now takes an options object
 - Support compilation options to optimize for size.
 - Maintain compatibility with recent SPIRV-Tools and Glslang versions.
 - Update examples.
 - Build cleanups.
 - Fixes issues:
   #238: Fix invocation of python scripts during build

v2016.0 2016-07-07

 - Adds v<year>.<index> versioning, with "-dev" suffix to indicate work in
   progress. The intent is to summarize and report functionalities more easily
   for incorporating into downstream projects.

 - Summary of functionalities (See the README.md for more details):
   - Provides libraries and command line tools for generating SPIR-V modules
   - Supports GLSL source code or SPIR-V assembly as input
   - Supports SPIR-V binary or assembly text as output
   - Command line options follow GCC/Clang conventions
   - Supports various semantics (OpenGL, OpenGL Compatible and Vulkan)
   - Supports #include
   - Supports user-defined macros
   - Supports dependency information dumping
