Update readme

This commit is contained in:
Oliver Hamlet
2018-10-06 16:04:57 +01:00
parent 04a92f9968
commit d3f4169d76
+19 -11
View File
@@ -2,19 +2,27 @@ loot-condition-interpreter
========================== ==========================
An experimental library for parsing and evaluating LOOT's metadata condition An experimental library for parsing and evaluating LOOT's metadata condition
strings. Written in Rust. Very incomplete. strings. This library improves upon LOOT's existing implementation in the
following ways:
Goals: - Condition expressions are parsed into an intermediate representation instead
of being stringly typed, which allows parsing and evaluation to be separated.
- State is uncoupled by necessity, and Rusts's concurrency guarantees mean it
can be accessed more efficiently.
- Results are cached with more granularity, per function instead of per
expression, improving performance when expressions are not entirely different.
- Result caching is guided by benchmarks, so results aren't cached
unnecessarily.
- Reading executable versions doesn't involve calling out to the shell and
piping several commands together when on Linux.
- [x] Explore parsing conditions into an intermediate representation, then The code is also not as much of a mess, it's got benchmarks, and probably better
evaluating from that representation. LOOT's current parser evaluates test coverage.
conditions while parsing them, tightly coupling the two operations.
- [ ] Explore more granular result caching. LOOT's current caching maps each The library is still experimental because it currently lacks:
condition string to its result, which can't re-use results in compound
conditions. - an FFI for LOOT to call it through.
- [x] Explore round trip serialisation from the intermediate representation. - good error handling, details about parsing errors are not exposed.
- [ ] Evaluate the cost/benefit of integrating into LOOT, replacing the existing
code.
The tests need the [testing-plugins](https://github.com/WrinklyNinja/testing-plugins) The tests need the [testing-plugins](https://github.com/WrinklyNinja/testing-plugins)
and the [LOOT API v0.13.8](https://github.com/loot/loot-api/releases/tag/0.13.8) and the [LOOT API v0.13.8](https://github.com/loot/loot-api/releases/tag/0.13.8)