Skip to content

Pin rbx-dom crates to released versions - #1

Open
Lauel09 wants to merge 1 commit into
beeeegi:masterfrom
Lauel09:pin-rbx-dom-releases
Open

Pin rbx-dom crates to released versions#1
Lauel09 wants to merge 1 commit into
beeeegi:masterfrom
Lauel09:pin-rbx-dom-releases

Conversation

@Lauel09

@Lauel09 Lauel09 commented Aug 8, 2026

Copy link
Copy Markdown

The rbx-dom dependencies track branch = "master":

rbx_binary  = { git = "https://github.com/rojo-rbx/rbx-dom/", branch = "master" }
rbx_dom_weak = { git = "https://github.com/rojo-rbx/rbx-dom/", branch = "master" }
rbx_reflection = "3"

Any breaking change upstream lands here immediately with no version to fall back to, and that has now happened — the crate doesn't compile against current master. This switches to published releases and migrates the API.

Changes

  • rbx_dom_weak 4, rbx_reflection 7, rbx_binary/rbx_xml 3, all from crates.io
  • Properties are keyed by Ustr, so Source is looked up with ustr("Source")
  • Instance::class is a Ustr; to_string() where a String is needed
  • rbx_reflection::get_class_descriptor no longer exists — classes are looked up in a ReflectionDatabase, and services are detected with tags.contains(&ClassTag::Service)
  • Added rbx_reflection_database, preferring the locally installed database (kept current by tools like Rojo) and falling back to the bundled one, so newer classes resolve on machines that have it
  • rbx_binary::from_reader_defaultfrom_reader

No behaviour change intended; this is a dependency and API migration.

Testing

cargo check is clean for both parcel-lib and the src-tauri crate. Converted a 3 MB .rbxl (~200 scripts, ~80k instances) and diffed the extracted sources against the ones read out of the place file directly — they match.

src-tauri/gen/schemas/* also regenerate on build; I left those out of this PR since they're build artifacts.

The rbx-dom dependencies tracked `branch = "master"`, so any breaking
change upstream broke the build with no version to fall back to. That
happened: the crate no longer compiles against current master.

Switch to published releases (rbx_dom_weak 4, rbx_reflection 7,
rbx_binary/rbx_xml 3) and migrate the API accordingly:

- properties are keyed by Ustr, so look up Source with `ustr("Source")`
- `Instance::class` is a Ustr, so use `to_string()` where a String is needed
- `rbx_reflection::get_class_descriptor` is gone; look the class up in a
  ReflectionDatabase instead, and test for services with
  `tags.contains(&ClassTag::Service)`
- add rbx_reflection_database, preferring the locally installed database
  (which tools like Rojo keep current) and falling back to the bundled one
- `rbx_binary::from_reader_default` is now `from_reader`

Verified by converting a 3 MB place with ~200 scripts: the extracted
sources match the ones in the .rbxl.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant