- Updated esplugin to v6.1.1.
- Updated libc to v0.2.159.
- Updated regex to v1.11.0.
- Updated crc32fast to v1.4.2.
- Updated esplugin to v6.0.0.
- Updated libc to v0.2.155.
- Updated regex to v1.10.5.
Cargo.lock
is no longer ignored by Git.
Error::ParsingIncomplete
now holds contextual data.- Updated to Rust's 2021 edition.
- Updated esplugin to v5.0.1.
- The
ffi-headers
build feature: if you want to generate C or C++ headers, install and run cbindgen separately.
GameType::Starfield
andLCI_GAME_STARFIELD
as the game code to use for Starfield.
- Only lowercase plugin file extensions were recognised as plugin file extensions.
- Support for the
"LOOT"
file path alias in conditions. - The
State::new()
andlci_state_create()
functions no longer take aloot_path
argument.
- Support for additional data paths that take precedence over the game's main
data path. Additional data paths can be specified using
State::set_additional_data_paths()
orlci_state_set_additional_data_paths()
. This is intended to support the Microsoft Store's Fallout 4 DLCs, which are installed outside of the base game install path, but may also be useful in other situations.
- Updated esplugin to v4.0.0.
- Support for a
readable(path)
condition function that returns true if the given path is a readable file or directory and false otherwise.
- Updated nom to v7.0.0.
- Updated cbindgen to v0.20.
- Two versions that only differ by the presence and absence of pre-release
identifiers were not correctly compared according to Semantic Versioning,
which states that
1.0.0-alpha
is less than1.0.0
.
- Version comparison now compares numeric against non-numeric release
identifiers (and vice versa) by comparing the numeric value against the
numeric value of leading digits in the non-numeric value, and treating the
latter as greater if the two numeric values are equal. The numeric value as
treated as less than the non-numeric value if the latter has no leading
digits. Previously all non-numeric identifiers were always greater than any
numeric identifier. For example,
78b
was previously considered to be greater than86
, but is now considered to be less than86
.
- Support for inverting expressions using
not (<expression>)
syntax, e.g.not ( file("example1") or file("example2") )
.
- When evaluating a regular expression, installed ghosted plugin filenames have
their
.ghost
file extension removed before they are matched against the regex. This makes functions that take regexes behave the same as those that take paths when handling ghosted plugins. - Updated nom to v6.0.0.
- Updated cbindgen to v0.19.
.ghost
file extensions are no longer recursively trimmed when checking if a file has a plugin file extension, as only a single.ghost
extension is valid.- When looking for a plugin file matching a path, only add a
.ghost
extension to the path if one is not already present.
- Version
0.1.1
ofpelite-macros
(a dependency of thepelite
dependency) broke the ability to buildpelite
v0.8.x without pinning the version ofpelite-macros
used.
- Updated pelite to v0.9.0.
- Updated cbindgen to v0.15.
- Checksum calculations are now much faster for larger files.
- Directory paths are now handled more gracefully in
checksum()
,version()
andproduct_version()
conditions. - Resolved some
rustc
deprecation warnings by replacing usage ofstd::error::Error
'sdescription()
function withto_string()
. - Updated cbindgen to v0.14.
- Updated pelite to v0.8.0.
- Support for an
is_master(file path)
condition function that returns true if the given file path is a master plugin, and false otherwise.
- Regular expressions are now prefixed with
^
and suffixed with$
to ensure that only exact matches to the given expression are found.
- A cbindgen configuration file at
ffi/cbindgen.toml
so that cbindgen can now be run ascbindgen ffi/ -o ffi/include/loot_condition_interpreter.h
.
- The
ParsingError
enum has been renamed toParsingErrorKind
, and itsUnknown(u32)
variant has been replaced by aGenericParserError(String)
variant. - The
Error::GenericParsingError
andError::CustomParsingError
variants have been combined into a singleError::ParsingError(String, ParsingErrorKind)
variant. GameType
variants have been renamed to use fewer acronyms:Tes4
->Oblivion
Tes5
->Skyrim
Tes5se
->SkyrimSE
Tes5vr
->SkyrimVR
Fo3
->Fallout3
Fonv
->FalloutNV
Fo4
->Fallout4
Fo4vr
->Fallout4VR
Tes3
->Morrowind
- The
LCI_GAME_*
constants have been renamed to match the newGameType
names:LCI_GAME_TES4
->LCI_GAME_OBLIVION
LCI_GAME_TES5
->LCI_GAME_SKYRIM
LCI_GAME_TES5SE
->LCI_GAME_SKYRIM_SE
LCI_GAME_TES5VR
->LCI_GAME_SKYRIM_VR
LCI_GAME_FO3
->LCI_GAME_FALLOUT_3
LCI_GAME_FNV
->LCI_GAME_FALLOUT_NV
LCI_GAME_FO4
->LCI_GAME_FALLOUT_4
LCI_GAME_FO4VR
->LCI_GAME_FALLOUT_4_VR
LCI_GAME_TES3
->LCI_GAME_MORROWIND
- The C header generated by cbindgen can now be used from C++.
- Updated nom to v5.
- Updated cbindgen to v0.9.
- Updated code to Rust 2018 syntax.
- The C++ header
loot_condition_interpreter.hpp
is no longer generated by cbindgen. Includeloot_condition_interpreter.h
instead.
- Evaluating
version()
andproduct_version()
conditions will no longer error if the given executable has no version fields. Instead, it will be evaluated as having no version.
- Support for Morrowind using
GameType::tes3
.
file(<regex>)
,active(<regex>)
,many(<regex>)
andmany_active(<regex>)
did not parse the closing)
, causing any remaining input to be skipped.
- Parsing expressions will now fail if it does not consume all the given input.
- Parsing error when reading the version fields of an executable that did not have any US English version info. Reading executables' version fields now uses the first version info structure instead of attempting to read the US English version info structure.
- Support for parsing version strings that match the regular expression
\d+, \d+, \d+, \d+
.
- An executable's product version is now read from the
ProductVersion
field in the executable'sVS_VERSIONINFO
structure, not from the product version fields in theVS_FIXEDFILEINFO
structure. This is so that the version read matches the version displayed by Windows' File Explorer.
- Parsing error caused by using
>=
or<=
as the comparator in version functions. - Parsing error when encountering backslashes in a version or checksum function's path argument.
- Parsing error when parentheses around expressions are padded with whitespace.
- Support for
product_version()
condition functions, e.g.product_version("file.exe", "1.0.0", ==)
. It will read the product version field of the executable at the given path, or error if the given path does not point to an executable.
Initial release