Commit Graph
31 Commits
Author SHA1 Message Date
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
Oliver Hamlet b19b4dfb6d Add generated files for Node.js wrapper module
Generated using @napi-rs/cli's "napi new".
2025-04-22 18:47:56 +01:00
Oliver Hamlet fb1e1ad360 Sync with libloot v0.26.0 2025-04-20 15:58:13 +01:00
Oliver Hamlet fc4b976bd6 Update esplugin to v6.1.2 2025-04-20 09:56:16 +01:00
Oliver Hamlet 501efda9e3 Update saphyr to v0.0.4 2025-04-20 09:56:16 +01:00
Oliver Hamlet 76d0410509 Update dependencies 2025-04-09 17:23:31 +01:00
Oliver Hamlet dc3db737f7 Reorder dependencies in Cargo.toml 2025-04-07 08:41:15 +01:00
Oliver Hamlet e7a5bfd5ab Update loot-condition-interpreter to v5.3.1 2025-03-26 21:44:42 +00:00
Oliver Hamlet fb6d3b1260 Update windows crate to v0.61.1 2025-03-26 21:44:42 +00:00
Oliver Hamlet 23a00630e4 Update libloadorder to v18.3.0 2025-03-26 21:44:41 +00:00
Oliver Hamlet 86063e437a Tweak Cargo profiles
Include limited debug info in release builds to help with profiling.

Also add another profile that's equivalent to CMake's RelWithDebInfo.
Testing suggests that although it uses a lower opt-level, it might
actually perform better (at least on Windows), though the differences
are only ~ 100 ms in startup and sorting times.
2025-03-25 22:02:33 +00:00
Oliver Hamlet 3b6752843a Use faster hashing algorithm in sorting code
The default std hasher is DoS-resistant but relatively slow, and
DoS-resistance isn't a useful property during sorting.

I tested using the rustc-hash, fnv and ahash crates against my
1600-plugin load order, and the results vs the default std hasher
were:

- AHash: 31% faster
- FNV: 33% faster
- FxHasher (from rustc-hash): 37% faster

With the std hasher the Rust libloot is 35% slower than C++, with
FxHasher it's 15% faster.
2025-03-25 22:02:33 +00:00
Oliver Hamlet de97b90618 Improve Python wrapper error handling
The new libloot-ffi-errors crate is for sharing code between the CXX and PyO3 wrappers.
2025-03-25 22:02:33 +00:00