Skip to content

Latest commit

 

History

History
42 lines (24 loc) · 2.44 KB

CHANGELOG.md

File metadata and controls

42 lines (24 loc) · 2.44 KB

2.0.1

Just a small release to keep things up to date

Documentation

  • Add a changelog #89

Dependencies

  • Update winreg from 0.52 -> 0.55 #86

Internal

  • Make tests into into integration tests where possible #87
  • Remove publish workflow #88
  • Add a release checklist #90

2.0.0

Finally after a very long development period we're release version 2.0.0. Living up to the major version bump this release does involve breaking changes to most parts of the API. The majority of these changes fit into three core themes:

  1. Iteratorification of the list all flavors of methods
  2. Exhaustively parsing Apps (previously SteamApps) to drop the public dependency on steamy-vdf
  3. Actually defining an Error type instead of returning ambiguous Nones

Let's dive right in

Iteratorification of the list all methods

Methods that would previously exhaustively collect some set of information and cache it like SteamDir::libraryfolders() and SteamDir::apps() now return iterators that walk over the set of information and returns values on the fly akin to APIs like std::fs::read_dir(). This has a couple of distinct advantages where we can return precise errors for each item ergonomically, and we can be lazier with our computation

Exhaustive Apps

We're trying to be a stable library since our major version is >0, but unfortunately there's not a stable VDF parser in sight. That's a bit problematic as we'll want to avoid relying on one in our public API, but that also means significant changes to how App would hold a steamy_vdf::Table representing the parsed appmanifest file. To mitigate this we attempt to exhaustively parse and provide as much data as we can from steam apps, and to top it off we also annotated it with #[non_exhaustive], so that more fields can be added in the future without a breaking change

An Error appears!

This is a significant improvement over the old API. Previously errors would be bubbled up as Nones that would lead to ambiguity over whether a None is from something not existing or simply failing to be parsed. We now religiously return errors to represent failure cases leaving it up to the consumer to decide whether to ignore the error or fail loudly

Where possible we try to include relevant information for the error, but several of the underlying types are intentionally opaque to avoid exposing unstable depdencies in our public API