43 Commits
Author SHA1 Message Date
Oliver Hamlet 55bdf56227 Update version and changelog for v0.28.0 2025-08-02 16:36:20 +01:00
Oliver Hamlet ff86fdc65d Version array-parameterized-test independently of libloot 2025-08-02 16:26:09 +01:00
Oliver Hamlet b75eced9ea Rename and tidy up the parameterized-test crate
It needed to be renamed to allow it to be published on crates.io, as there's already a parameterized_test crate there.
2025-08-02 16:05:36 +01:00
Oliver Hamlet 8cf7a0adf1 Add more Cargo package fields
Explicitly disable publishing the FFI wrappers, since there's no point them being on crates.io.
2025-08-02 11:16:25 +01:00
Oliver Hamlet 139047f230 Remove unused Cargo profile 2025-07-31 22:10:05 +01:00
Oliver Hamlet 4acc64247e Deduplicate Cargo package fields across workspace
Also deduplicate version numbers in CMakeLists.txt.
2025-07-31 22:08:46 +01:00
Oliver Hamlet f14e47e0e8 Switch to the regress crate for regex
It uses about 56 MB less memory when LOOT launches into my Skyrim SE
large test load order with the latest masterlist and prelude, and
explicitly targets ECMAScript-like syntax like C++ std::regex does,
though supports newer functionality.

Compared to fancy-regex's syntax support, regress adds support for the
\0 nul character escape and removes support for:

- modifiers (e.g. `(?i)`)
- some Unicode character classes (e.g. used with `\p{}` and `\P{}`)
- the ASCII/POSIX character classes (e.g. `[:alpha:]`)
- various character escapes, including \A \a \z \b{start} \<
  \b{end} \> \b{start-half} \b{end-half}
- (?P<name>exp) named capture groups

However, since regress's v flag requires more characters to be escaped
inside character classes than fancy-regex's Unicode support requires,
it's not used, so that further restricts the supported Unicode character
classes, and means that character class intersection, union and
subtraction syntaxes aren't supported.

The nul character escape is irrelevant for filename matching as it's not
allowed in Windows or Linux filenames.

Compared to C++ std::regex, the new restrictions are:

- the lack of support for ASCII/POSIX character classes
- the lack of support for control character escapes (e.g. `\cX`)

The lack of support for control character escapes is irrelevant as
control characters aren't allowed in Windows filenames.

A search of the masterlists doesn't find any use of the ASCII character
classes, and it's very unlikely that any user metadata would use them.
If such syntax is in use, it'll cause an error.
2025-07-29 18:25:40 +01:00
Oliver Hamlet dde7b2e2ff Forbid all lints that aren't currently overridden 2025-07-22 19:56:21 +01:00
Oliver Hamlet fee6504fa8 Move deny lints to Cargo workspace config
To reduce duplication and make it clearer which denials are then overridden for each crate.
2025-07-22 19:56:21 +01:00
dependabot[bot]andGitHub ca08a67bb6 Bump crc32fast from 1.4.2 to 1.5.0
Bumps [crc32fast](https://github.com/srijs/rust-crc32fast) from 1.4.2 to 1.5.0.
- [Commits](https://github.com/srijs/rust-crc32fast/compare/v1.4.2...v1.5.0)

---
updated-dependencies:
- dependency-name: crc32fast
  dependency-version: 1.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-14 18:50:49 +00:00
dependabot[bot]andGitHub ca08ad7453 Bump fancy-regex from 0.14.0 to 0.15.0
Bumps [fancy-regex](https://github.com/fancy-regex/fancy-regex) from 0.14.0 to 0.15.0.
- [Release notes](https://github.com/fancy-regex/fancy-regex/releases)
- [Changelog](https://github.com/fancy-regex/fancy-regex/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fancy-regex/fancy-regex/compare/0.14.0...0.15.0)

---
updated-dependencies:
- dependency-name: fancy-regex
  dependency-version: 0.15.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-07-07 18:11:43 +00:00
Oliver Hamlet 6003d5c2c2 Update saphyr to v0.0.6 2025-06-18 17:44:13 +01:00
Oliver Hamlet db9f51a2b2 Update changelog and version for 0.27.0 2025-06-08 20:59:14 +01:00
Oliver Hamlet 11bd321861 Rework handling of esplugin errors
The error scenario represented by PluginNotLoadedError is distinguished from all other esplugin errors by LOOT, so it's worth handling separately.
2025-06-08 20:26:07 +01:00
Oliver Hamlet 05c984c769 Remove libloadorder_category()
Throw errors from libloadorder as std::runtime_error instead of std::system_error.
2025-06-08 17:58:27 +01:00
Oliver Hamlet 2b0eec9929 Remove ConditionSyntaxError
It's not usefully different from throwing std::runtime_error.
2025-06-08 17:58:27 +01:00
Oliver Hamlet ba50882ad3 Update changelog and version for 0.26.3 2025-06-08 09:23:43 +01:00
Oliver Hamlet 8c317d93ed Avoid direct dependency on saphyr-parser 2025-05-18 22:26:10 +01:00
Oliver Hamlet 699915efff Update the versions and changelog to 0.26.2
To reflect the v0.26.2 release of the C++ implementation.
2025-05-16 23:28:01 +01:00
Oliver Hamlet 6df13bddea Fix crate licenses
libloot's C++ implementation is licensed under the GPL v3.0 or later, not v3.0 only, so carry the same into the Rust reimplementation and its dependent crates.
2025-05-11 16:08:51 +01:00
Oliver Hamlet eabc7a5d85 Sync with libloot v0.26.1
Aside from adding GameType::oblivionRemastered and its usage, this is almost entirely about moving C++ files and tests around.
2025-05-02 17:56:49 +01:00
Oliver Hamlet 83d9420422 Rename cxx directory to cpp
Also update the crate name and references to it. This helps distinguish the C++ wrapper that's built using CXX from CXX itself.
2025-04-29 17:42:46 +01:00
Oliver Hamlet 2b1b67daba Rename pyo3 directory to python
Also update the crate's name.
2025-04-29 17:21:03 +01:00
Oliver Hamlet 4cd9b37471 Remove nodejs cargo profile
The cargo profile in the nodejs folder gets ignored because the crate is in a workspace, but it got me thinking about LTO.

Enabling fat LTO more than doubles the build time, and although it shrinks the binary size, if there is a performance impact it's not very obvious (based on sorting in LOOT with the built DLL). On the other hand, thin LTO only only adds a second to the cargo build time and reduced binary size by ~ 1.4 MB, and adding /LTCG on top reduces it by another ~ 1.6 MB. MSVC doesn't output how long linking takes, but it seemed to only add a second or two.
2025-04-26 16:40:46 +01:00
Oliver Hamlet 56b1fb09c9 Replace rstest with a couple of proc macros
rstest was overkill and pulled in 23 additional dependencies.
2025-04-24 20:03:23 +01:00