diff --git a/CHANGELOG.md b/CHANGELOG.md index fc397b09..86cabe8f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,17 @@ # Rojo Changelog ## [Unreleased] +* Upgraded significant dependencies: + * rbx_dom_weak 1.6.0 + * `Content` properties can now be specified in projects and model files as strings + * Added support for `BrickColor`, but with no handy conversions yet + * rbx_reflection 3.0.384 + * Updated reflection database to client release 384 + * Adds support for new enum variants like `Lighting.Technology` as `"ShadowMap"` + * rbx_xml 0.7.0 + * Performance improvements dealing with model/place files due to smaller error type + * Fixed serializing empty `Content` properties + * Improved content compatibility utilizing the reflection database * Added support for implicit property values in JSON model files ([#154](https://github.com/LPGhatguy/rojo/pull/154)) ## [0.5.0 Alpha 9](https://github.com/LPGhatguy/rojo/releases/tag/v0.5.0-alpha.9) (April 4, 2019) diff --git a/Cargo.lock b/Cargo.lock index f3cb776a..49fa12ae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1115,12 +1115,12 @@ dependencies = [ "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "lz4 1.23.1 (registry+https://github.com/rust-lang/crates.io-index)", - "rbx_dom_weak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rbx_dom_weak 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rbx_dom_weak" -version = "1.4.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1130,27 +1130,24 @@ dependencies = [ [[package]] name = "rbx_reflection" -version = "2.0.377" +version = "3.0.384" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rbx_dom_weak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rbx_dom_weak 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rbx_xml" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", - "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", - "paste 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rbx_dom_weak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rbx_dom_weak 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rbx_reflection 3.0.384 (registry+https://github.com/rust-lang/crates.io-index)", "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1285,15 +1282,14 @@ dependencies = [ "paste 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "rbx_binary 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rbx_dom_weak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rbx_reflection 2.0.377 (registry+https://github.com/rust-lang/crates.io-index)", - "rbx_xml 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rbx_dom_weak 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "rbx_reflection 3.0.384 (registry+https://github.com/rust-lang/crates.io-index)", + "rbx_xml 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)", "reqwest 0.9.15 (registry+https://github.com/rust-lang/crates.io-index)", "ritz 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "rlua 0.16.2 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.39 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile 3.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1379,6 +1375,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" name = "serde" version = "1.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "serde_derive 1.0.90 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "serde_derive" @@ -1982,9 +1981,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" "checksum rbx_binary 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b147f236284747ac1b4643476265dd36b402877d97adb7cbd0fafc1d247de0a5" -"checksum rbx_dom_weak 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d581dcb6e5eb395a5923e1efe39883124115d725dacae07cdf084204345611e7" -"checksum rbx_reflection 2.0.377 (registry+https://github.com/rust-lang/crates.io-index)" = "21ba49260081530590ee48dd1ce6014ac5abc79f581ccb4be0626d436af59e92" -"checksum rbx_xml 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "891a97bd72d0c6847fe624e724ff3080e3369de74e4ef3b3dab07c6d8ce2bc23" +"checksum rbx_dom_weak 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9af92582e8ac283fce50fe223d741e8f7f865a13ec99fdecc38cfb431de3ccf" +"checksum rbx_reflection 3.0.384 (registry+https://github.com/rust-lang/crates.io-index)" = "8bf0e45a2f1abeddf8096591c1081151e9114f4426fed97cab1d123b3fe4010f" +"checksum rbx_xml 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1142b88066f633c05a6589b8c19b69f04e9474dc9d1b659df6fc523ca8712ead" "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" "checksum redox_syscall 0.1.54 (registry+https://github.com/rust-lang/crates.io-index)" = "12229c14a0f65c4f1cb046a3b52047cdd9da1f4b30f8a39c5063c8bae515e252" "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" diff --git a/Cargo.toml b/Cargo.toml index 90f1b5a4..9c4ce1b1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,4 +1,7 @@ [workspace] members = [ "server", -] \ No newline at end of file +] + +[profile.dev] +opt-level = 1 \ No newline at end of file diff --git a/server/Cargo.toml b/server/Cargo.toml index 82e9e130..27a7672a 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -30,15 +30,14 @@ log = "0.4" maplit = "1.0.1" notify = "4.0" rbx_binary = "0.4.0" -rbx_dom_weak = "1.3.0" -rbx_xml = "0.6.0" -rbx_reflection = "2.0.374" +rbx_dom_weak = "1.6.0" +rbx_xml = "0.7.0" +rbx_reflection = "3.0.384" regex = "1.0" reqwest = "0.9.5" rlua = "0.16" ritz = "0.1.0" -serde = "1.0" -serde_derive = "1.0" +serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" uuid = { version = "0.7", features = ["v4", "serde"] } diff --git a/server/src/commands/build.rs b/server/src/commands/build.rs index 8a65387f..ffb054e0 100644 --- a/server/src/commands/build.rs +++ b/server/src/commands/build.rs @@ -100,7 +100,7 @@ pub fn build(options: &BuildOptions) -> Result<(), BuildError> { // descendants. let root_id = tree.get_root_id(); - rbx_xml::encode(&tree, &[root_id], &mut file)?; + rbx_xml::to_writer_default(&mut file, &tree, &[root_id])?; }, OutputKind::Rbxlx => { // Place files don't contain an entry for the DataModel, but our @@ -108,7 +108,7 @@ pub fn build(options: &BuildOptions) -> Result<(), BuildError> { let root_id = tree.get_root_id(); let top_level_ids = tree.get_instance(root_id).unwrap().get_children_ids(); - rbx_xml::encode(&tree, top_level_ids, &mut file)?; + rbx_xml::to_writer_default(&mut file, &tree, top_level_ids)?; }, OutputKind::Rbxm => { let root_id = tree.get_root_id(); diff --git a/server/src/commands/upload.rs b/server/src/commands/upload.rs index a142d43e..6c80485a 100644 --- a/server/src/commands/upload.rs +++ b/server/src/commands/upload.rs @@ -80,10 +80,10 @@ pub fn upload(options: &UploadOptions) -> Result<(), UploadError> { match options.kind { Some("place") | None => { let top_level_ids = tree.get_instance(root_id).unwrap().get_children_ids(); - rbx_xml::encode(&tree, top_level_ids, &mut contents)?; + rbx_xml::to_writer_default(&mut contents, &tree, top_level_ids)?; }, Some("model") => { - rbx_xml::encode(&tree, &[root_id], &mut contents)?; + rbx_xml::to_writer_default(&mut contents, &tree, &[root_id])?; }, Some(invalid) => return Err(UploadError::InvalidKind(invalid.to_owned())), } diff --git a/server/src/imfs.rs b/server/src/imfs.rs index db8ebcd5..75cb0314 100644 --- a/server/src/imfs.rs +++ b/server/src/imfs.rs @@ -8,7 +8,7 @@ use std::{ }; use failure::Fail; -use serde_derive::{Serialize, Deserialize}; +use serde::{Serialize, Deserialize}; use crate::project::{Project, ProjectNode}; diff --git a/server/src/path_map.rs b/server/src/path_map.rs index 8df2d83a..bebf4f9d 100644 --- a/server/src/path_map.rs +++ b/server/src/path_map.rs @@ -3,7 +3,7 @@ use std::{ collections::{HashMap, HashSet}, }; -use serde_derive::Serialize; +use serde::Serialize; use log::warn; #[derive(Debug, Serialize)] diff --git a/server/src/path_serializer.rs b/server/src/path_serializer.rs index 214a773a..41cfc5d0 100644 --- a/server/src/path_serializer.rs +++ b/server/src/path_serializer.rs @@ -10,7 +10,7 @@ //! //! ``` //! # use std::path::PathBuf; -//! # use serde_derive::{Serialize, Deserialize}; +//! # use serde::{Serialize, Deserialize}; //! //! #[derive(Serialize, Deserialize)] //! struct Mine { diff --git a/server/src/project.rs b/server/src/project.rs index 24d945e4..346158ee 100644 --- a/server/src/project.rs +++ b/server/src/project.rs @@ -9,8 +9,7 @@ use std::{ use log::warn; use failure::Fail; use rbx_dom_weak::{UnresolvedRbxValue, RbxValue}; -use serde_derive::{Serialize, Deserialize}; -use serde::{Serialize, Serializer}; +use serde::{Serialize, Serializer, Deserialize}; static DEFAULT_PLACE: &'static str = include_str!("../assets/place.project.json"); diff --git a/server/src/rbx_session.rs b/server/src/rbx_session.rs index 7310736a..80fe58e2 100644 --- a/server/src/rbx_session.rs +++ b/server/src/rbx_session.rs @@ -7,7 +7,7 @@ use std::{ }; use rlua::Lua; -use serde_derive::{Serialize, Deserialize}; +use serde::{Serialize, Deserialize}; use log::{info, trace, error}; use rbx_dom_weak::{RbxTree, RbxId}; diff --git a/server/src/rbx_snapshot.rs b/server/src/rbx_snapshot.rs index c31e98e1..9cf875ce 100644 --- a/server/src/rbx_snapshot.rs +++ b/server/src/rbx_snapshot.rs @@ -14,7 +14,7 @@ use failure::Fail; use log::info; use maplit::hashmap; use rbx_dom_weak::{RbxTree, RbxValue, RbxInstanceProperties, UnresolvedRbxValue}; -use serde_derive::{Serialize, Deserialize}; +use serde::{Serialize, Deserialize}; use rbx_reflection::{try_resolve_value, ValueResolveError}; use crate::{ @@ -653,20 +653,13 @@ fn snapshot_xml_model_file<'source>( .file_stem().expect("Could not extract file stem") .to_str().expect("Could not convert path to UTF-8"); - let mut temp_tree = RbxTree::new(RbxInstanceProperties { - name: "Temp".to_owned(), - class_name: "Folder".to_owned(), - properties: HashMap::new(), - }); - - let root_id = temp_tree.get_root_id(); - rbx_xml::decode(&mut temp_tree, root_id, file.contents.as_slice()) + let temp_tree = rbx_xml::from_reader_default(file.contents.as_slice()) .map_err(|inner| SnapshotError::XmlModelDecodeError { inner, path: file.path.clone(), })?; - let root_instance = temp_tree.get_instance(root_id).unwrap(); + let root_instance = temp_tree.get_instance(temp_tree.get_root_id()).unwrap(); let children = root_instance.get_children_ids(); match children.len() { diff --git a/server/src/session_id.rs b/server/src/session_id.rs index 67783a7f..5aae5661 100644 --- a/server/src/session_id.rs +++ b/server/src/session_id.rs @@ -1,4 +1,4 @@ -use serde_derive::{Serialize, Deserialize}; +use serde::{Serialize, Deserialize}; use uuid::Uuid; #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)] diff --git a/server/src/snapshot_reconciler.rs b/server/src/snapshot_reconciler.rs index baaa3309..424ee8ec 100644 --- a/server/src/snapshot_reconciler.rs +++ b/server/src/snapshot_reconciler.rs @@ -11,7 +11,7 @@ use std::{ }; use rbx_dom_weak::{RbxTree, RbxId, RbxInstanceProperties, RbxValue}; -use serde_derive::{Serialize, Deserialize}; +use serde::{Serialize, Deserialize}; use crate::{ path_map::PathMap, diff --git a/server/src/web/api.rs b/server/src/web/api.rs index 0b6cbe03..82d9e70f 100644 --- a/server/src/web/api.rs +++ b/server/src/web/api.rs @@ -21,7 +21,7 @@ use hyper::{ Request, Response, }; -use serde_derive::{Serialize, Deserialize}; +use serde::{Serialize, Deserialize}; use rbx_dom_weak::{RbxId, RbxInstance}; use crate::{ diff --git a/server/tests/test_util/tree.rs b/server/tests/test_util/tree.rs index 4f2525de..4d4ff3b1 100644 --- a/server/tests/test_util/tree.rs +++ b/server/tests/test_util/tree.rs @@ -20,7 +20,7 @@ use std::{ }; use log::error; -use serde_derive::{Serialize, Deserialize}; +use serde::{Serialize, Deserialize}; use rbx_dom_weak::{RbxId, RbxTree}; use librojo::{