diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /third_party/rust/glsl/CHANGELOG.md | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'third_party/rust/glsl/CHANGELOG.md')
-rw-r--r-- | third_party/rust/glsl/CHANGELOG.md | 465 |
1 files changed, 465 insertions, 0 deletions
diff --git a/third_party/rust/glsl/CHANGELOG.md b/third_party/rust/glsl/CHANGELOG.md new file mode 100644 index 0000000000..6b087e06b0 --- /dev/null +++ b/third_party/rust/glsl/CHANGELOG.md @@ -0,0 +1,465 @@ +# Changelog + +# 6.0.2 + +> Mar 23, 2023 + +- Switch to `nom-7`. + +# 6.0.1 + +> Jul 11, 2021 + +- Better scheme for parenthesis generation in the GLSL transpiler. +- Fix matrices types in the GLSL transpiler. +- Fix end-of-line parser, which now accepts CR LF too. + +# 6.0 + +> Dec 7th, 2020 + +- Change the meaning of `Visitor` and `Host`. They now take the AST nodes by simple references (`&`) and not via + mutable references (`&mut`) anymore. This will allow people to use visitors in much more contexts. +- Add `VisitorMut` and `HostMut` to visit AST nodes mutably. These correspond to the previous (version `<6.0`) `Visitor` + and `Host` traits. If you were using them and require mutability, feel free to simply switch to `VisitorMut` and + `HostMut`. + +# 5.0.2 + +> Nov 1st, 2020 + +- Bump `nom-6.0`. + +# 5.0.1 + +> Aug 12th, 2020 + +- Fix float / double literal parsing priority. Floats are parsed first now in case of a polymorphic + constant. + +# 5.0.0 + +> Jul 27th, 2020 + +- Fix array specifiers by splitting the `ArraySpecifier` type into two types: + - `ArraySpecifier`, which holds a non-empty list of `ArraySpecifierDimension`. + - `ArraySpecifierDimension`, which is the “old” `ArraySpecifier`. + This change allows for multidimensional array specifiers. + +## Migration guide + +- If you were using array specifiers, you need to wrap them inside an `ArraySpecifierDimension` + and wrap it in a `ArraySpecifier { dimensions: NonEmpty(vec![here]) }` expression, where `here` + is your specifier. + +# 4.1.1 + +> Wed Jul 1st 2020 + +- Fix the _identifier_ parser, that previously failed to parse identifiers starting with an + underscore (`_`) while it is permitted (chapter 3.7 of the GLSLang spec). +- Fix associativity for logical binary operators (`||`, `&&`). + +# 4.1 + +> Fri Jun 19th 2020 + +- Implement `std::error::Error` for error types. + +# 4.0.3 + +> Fri Mar 6th 2020 + +- Move all the unit tests code into their ow module to prevent rustc from parsing them if we + don’t build with tests. + +# 4.0.2 + +> Mon 10th Feb 2020 + +- Remove the `lexical` feature from `nom`. It’s useful only when using functions such as the + `float` combinator, which we don’t use. + +# 4.0.1 + +> Tue 21st Jan 2020 + +- Fix a bug occurring in the function-like `#define` parser (i.e. `#define foo(x) (y)`) that + would prevent the use of whitespaces in the argument list. + +# 4.0 + +> Mon 6th Jan 2020 + +## Major changes + +- Add support for `attribute` and `varying` keyword as a backward-compatible parser. +- Fix binary operator associativity. They were (_erroneously_) right-associative. They’re now + parsed as left-associative. + +# 3.0 + +> Wed 14th Nov 2019 + +## Major changes + +- `JumpStatement::Return` now takes an optional `Expr` instead of an `Expr` directly. That allows + for parsing statements such as `return;`, which should have + been supported from the beginning. +- Support for missing preprocessor directives: + - `#if`. + - `#ifdef`. + - `#ifndef`. + - `#elseif`. + - `#else`. + - `#endif`. + - `#error`. + - `#include`. + - `#line`. + - `#pragma`. + - `#undef`. + +## Patch changes + +- Add a `rustfmt.toml` to reformat everything and stay consistent. If you want contribute, ensure + you are correctly using `rustfmt` (either by running `cargo fmt` before submitting a PR or by + configuring your editor to format the code for you). This is important, as not respecting the + formatting would make your contribution impossible to merge due to a CI check. +- Support for _multiline_ annotations (`\`). Multiline annotations are currently supported as + part of _spaces_ — i.e. you cannot use them to break an identifier on two lines for instance. + This choice makes it faster to parse without too much compromises (after all, `\` is mostly used + in CPP directives in GLSL). +- Fix a bug with _recoverable parsers_ that would produce parent parsers to ignore GLSL grammar + errors. That fix also implies a boost in performance due to short-circuiting optimizations. + +# 2.0.1 + +> Fri 8th Nov 2019 + +- Improve performance of expression parsers. + +# 2.0 + +> Thu 24th Oct 2019 + +## Major changes + +- Add `ShaderKind::Compute`. +- Remove `NonEmpty::from_iter` and `TranslationUnit::from_iter` as they were deprecated. Use + `*::from_non_empty_iter` instead. + +## Patch changes + +- Fix tokenizer of `Block`. +- Fix a bug while parsing floating-point numbers. +- Reformat with `rustfmt`. + +# 1.2 + +> Wed 18th Sep 2019 + +## Deprecations + +- `NonEmpty::from_iter` and `TranslationUnit::from_iter` are deprecated in favor of + `*::from_non_empty_iter`. + +## Minor changes + +- Add binary SPIR-V transpilation. That enables to transpile GLSL directly into a SPIR-V buffer. +- Add `NonEmpty::from_non_empty_iter` and `TranslationUnit::from_non_empty_iter`. + +# 1.1.1 + +> Tue 17th Sep 2019 + +- Update internal code for Rust edition 2018. + +# 1.1 + +> Tue 30th of July 2019 + +- Add the `ShaderStage` type alias to `TranslationUnit`. +- Enhance the front documentation to showcase how to use how to use the crate. + +# 1.0.2 + +> Tue 23rd of July 2019 + +- Change the description of the project and update documentation. + +# 1.0.1 + +> Tue 23rd of July 2019 + +- Change the `external_declaration` parser so that it can also accept _GLSL460_. That should be a + breaking change because now, _GLSL450_ formatted input accepts feature from _GLSL460_, which + shouldn’t be allowed. Nevertheless, the added feature (being able to use semicolons (`;`) on + empty lines at top-level) is not really an interesting property and no breakage should happen. + +# 1.0 + +> Thu 18th of July 2019 + +- Migrate all parsers to [nom-5](https://crates.io/crates/nom/5.0.0). +- Improve and add unit and integration tests. +- Improve overall documentation. +- Enhance some allocation scheme (removed them by using more adapted parsers). +- Completely remove the byte (`&[u8]`) parsing. That was a bad idea, for both its impractical + aspect and error removing. Parsing is done on string slices now (`&str`). + +# 0.13.5 + +> Sun 9th of December 2018 + +- Add the SPIR-V transpiler. Currently, it’s feature-gated and *very* experimental. Feel free to + try and provide feedback about it. +- Add simple accessors for `ParseResult`. +- Fix a typo in the documentation of syntax. +- Add some unit and integration tests. +- Add `Identifier::as_str` and `TypeName::as_str` + +# 0.13.4 + +> Wed 25nd of November 2018 + +- Add `NonEmpty::push` and `NonEmpty::pop`. +- Implement `Deref` and `DerefMut` for `TranslationUnit`. + +# 0.13.3 + +> Wed 24nd of November 2018 + +- Add `NonEmpty::from_iter` and `TranslationUnit::from_iter`. +- Implement `IntoIterator` for `NonEmpty` and `TranslationUnit`. + +# 0.13.2 + +> Wed 22nd of November 2018 + +- Fix a typo in documentation. + +# 0.13.1 + +> Wed 22nd of November 2018 + +- Fix a link in documentation. + +# 0.13 + +> Wed 21st of November 2018 + +- Update/reset hyperlinks in all the documentation for types, traits, methods, etc. +- General enhancement of the documentation. +- `ExternalDeclaration::new_struct` can now fail. Check the doc for further details. +- `NonEmpty`, `Identifier` and `TypeName` and `TranslationUnit` are now plain types and not + aliases anymore. +- Add AST visitors. Visitors allow for traversing through an AST and on-the-fly mutation, + filtering, etc. +- The `#define` preprocessor pragma is now supported in a limited form (it can only be used in + the global scope). + +# 0.12 + +> Sun 11th of November 2018 + +- Fix the type of identifier stored in `Block`: it now uses the new encoding for arrayed + identifiers. +- `Block` parsers update for the arrayd identifier change. + +# 0.11 + +> Sat 10th of November 2018 + +- Add helper functions to build objects form the `syntax` module. Those are intended to be a + simple way to build ASTs out of Rust code instead of parsing. +- Enhance the documentation of the `Preprocessor` type. + +# 0.10.1 + +> Fri 2nd of November 2018 + +- Add some missing implementors of `Parse` for types from `glsl::syntax`. + +# 0.10 + +> Fri 2nd of November 2018 + +- Hide the `parsers` module. It’s not exposed anymore as it was mostly + [nom](https://crates.io/crates/nom) parsers and we don’t like leaking internals. +- Introduce the `Parser` trait, acting as an abstraction over the internal parsers. Implementors + provide a type-driven parsing experience that is very similar to the one as + [FromStr](https://doc.rust-lang.org/std/str/trait.FromStr.html). This change is actually + mandatory for the [glsl-quasiquote](https://crates.io/crates/glsl-quasiquote) crate’s `glsl!` + proc-macro to allow people use it for any GLSL item (and not only `TranslationUnit`). +- Enhance the overall documentation. + +# 0.9.2 + +> Wed 3rd of October 2018 + + - Fix GLSL transpiled representation of `IVec*`. It was plain wrong. + +# 0.9.1 + +> Sat 7th of July 2018 + +- Fix unit testing in transpilers. + +# 0.9 + +> Sat 7th of July 2018 + +- Big cleanup of the module hierarchy. +- Enhanced the documentation. + +# 0.8.1 + +> Sun, 17th of June 2018 + +- Add the `README.md` path to the `Cargo.toml` manifest. + +# 0.8 + +> Sun 17th of June 2018 + +This version introduces breaking changes because public types used in return positions have changed. +These concern only intermediate `nom` functions, so if you do not make a fancy use of this crate, +you souldn’t have to worry too much when migrating. + +- Fix the roundtrip issue with the GLSL writer (precedence wasn’t correctly respected). +- Simplify internal code. +- Error instead of panicking when parsing overflowing integer literals. +- Fix panic trying to parse literals starting with whitespace. +- Add fuzzing to find out panics. + +# 0.7.2 + +> Wed 13th of December 2017 + +- Fix the `show_expr` when the `Expr` is a `Expr::UIntConst`. + +# 0.7.1 + +> Mon 20th of November 2017 + +- `std::error::Error` is now implemented for `ParseError`. + +# 0.7 + +> Wed 27th of September 2017 + +- Add support for postfix expressions as function identifiers. + +# 0.6.5 + +> Mon 4th of September 2017 + +- Fix the formatting of floating values when the fractional part is `0`. + +# 0.6.4 + +> Mon 4th of September 2017 + +- Fix the output for `show_struct_specifier`. + +# 0.6.3 + +> Mon 4th of September 2017 + +- Fix the output for `show_struct_specifier`. + +# 0.6.2 + +> Mon 4th of September 2017 + +- Remove a warning. + +# 0.6.1 + +> Mon 4th of September 2017 + +- Fix `show_struct_specifier`. + +# 0.6 + +> Fri 1st of September 2017 + +- The `TypeSpecifier` type was wrong as it didn’t carry any `ArraySpecifier` information while the + GLSL specification’s grammar about type specifiers states they should. Fixed. + +# 0.5 + +> Mon 7th of August 2017 + +- The `parse` and `parse_str` functions now take as second argument the parser to run. This enables + using those functions and all the neat logic the wrap in dependent projects. + +# 0.4.2 + +> Fri 4th of August 2017 + +- A GLSL writer is now available. +- Some parsers yield non-empty list of syntax trees. Those had the incorrect `Vec` type. They were + replaced by `NonEmpty`, which is an alias to `Vec`, but carry the semantic that it has at least + one element in it. + +# 0.4.1 + +> Thu 3rd of August 2017 + +- Uni/multi-line comments are now supported. + +# 0.4 + +> Wed 2nd of August 2017 + +- The `Declaration::Block` variant was refactored for a better usage. +- Dot field selections and, in a mory general way, postfix expressions completely fixed. The + `syntax` module was altered to make it easier to work with dot field selection. Also related, + the function identifier syntax is now isomorphic to an identifier. + +# 0.3.1 + +> Tue 1st of August 2017 + +- Fix the `preprocessor` parser so that it eats surrounding blanks. + +# 0.3 + +> Mon 31st of July 2017 + +- Add a very minimalistic yet working preprocessor. It parses `#version` and `#extension` + commands. Those have to be declared at the top of your file, even though this implementation + accepts them at any place an external declaration could be defined. Feel free to submit a PR + if you want to change that behavior, I don’t really mind. +- Enhance the runtime error reporting. It’s not perfect, but it’s way better than before! +- `void` is now recognized as `TypeSpecifier::Void` instead of the erroneous + `TypeSpecifier::TypeName("void")`. + +# 0.2.2 + +> Mon 31st of July 2017 + +- The `layout` parser had a nasty bug that would treat a list of key-value pairs as an expression + assignment. This was fixed and it now treats it as a list of pairs of identifier associated with a + possible constant expression. +- The `StructFieldSpecifier` type and its associated parser were wrong. Was missing: + + the type qualifier + + for each identifier defined in the field specifier, its optional array specifier, as in + `float foo[3];` or `vec3 bar[];` for unsized ones. + +# 0.2.1 + +> Sun 30th of July 2017 + +- More documentation to help people to get their feet wet. + +# 0.2 + +> Sat 29th of July 2017 + +- The whole parsing API is public. + +# 0.1 + +- Initial revision. |