Rojo enables Roblox developers to use professional-grade software engineering tools https://rojo.space
Find a file
Lucien Greathouse 82678235ab
VFS Improvements (#259)
This PR refactors all of the methods on `Vfs` from accepting `&mut self` to
accepting `&self` and keeping data wrapped in a mutex. This builds on previous
changes to make reference count file contents and cleans up the last places
where we're returning borrowed data out of the VFS interface.

Once this change lands, there are two possible directions we can go that I see:
* Conservative: Refactor all remaining `&mut Vfs` handles to `&Vfs`
* Interesting: Embrace ref counting by changing `Vfs` methods to accept `self:
  Arc<Self>`, which makes the `VfsEntry` API no longer need an explicit `Vfs`
  argument for its operations.

* Change VfsFetcher to be immutable with internal locking
* Refactor Vfs::would_be_resident
* Refactor Vfs::read_if_not_exists
* Refactor Vfs::raise_file_removed
* Refactor Vfs::raise_file_changed
* Add Vfs::get_internal as bits of Vfs::get
* Switch Vfs to use internal locking
* Migrate all Vfs methods from &mut self to &self
* Make VfsEntry access Vfs immutably
* Remove outer VFS locking (#260)
* Refactor all snapshot middleware to accept &Vfs instead of &mut Vfs
* Remove outer VFS Mutex across the board
2019-10-16 15:45:23 -07:00
.cargo Build with static CRT on Windows, fixes #89. 2019-02-08 13:52:57 -08:00
.github/workflows Update GH workflows, bump minimum Rust to 1.36.0 2019-09-17 18:31:02 -07:00
assets Show metadata in web interface, take one 2019-10-04 14:14:45 -07:00
benches Move and tidy up small place benchmark 2019-10-14 11:38:16 -07:00
bin Move .luacheckrc for better editor detection 2019-10-02 10:42:10 -07:00
docs Fix errors in 'Sync Details' page 2019-10-08 16:16:06 -07:00
plugin Refactor plugins, port message dropping bugfix from 0.5.1 2019-10-14 14:05:25 -07:00
rojo-insta-ext Break redaction stuff out into separate crate 2019-09-30 16:27:31 -07:00
rojo-test Add build tests for init.meta.json 2019-10-12 23:54:39 -07:00
src VFS Improvements (#259) 2019-10-16 15:45:23 -07:00
test-projects Move and tidy up small place benchmark 2019-10-14 11:38:16 -07:00
tests User plugin foundations for 0.6.0 (#257) 2019-10-11 15:45:02 -07:00
.editorconfig Goodbye Lemur and other cruft, hello run-in-roblox-based testing 2019-08-27 18:04:58 -07:00
.gitignore Remove old 'scratch project' test script, clean up .gitignore 2019-08-27 18:23:05 -07:00
.gitmodules Goodbye Lemur and other cruft, hello run-in-roblox-based testing 2019-08-27 18:04:58 -07:00
.luacheckrc Move .luacheckrc for better editor detection 2019-10-02 10:42:10 -07:00
Cargo.lock Add small place benchmark 2019-10-12 15:24:57 -07:00
Cargo.toml Add small place benchmark 2019-10-12 15:24:57 -07:00
CHANGELOG.md Update CHANGELOG 2019-10-14 13:46:02 -07:00
CONTRIBUTING.md Further update contributing guide on tools 2019-10-01 17:54:53 -07:00
design.gv Major Subsystem Rewrite (Reconciler Mk5) (#217) 2019-08-27 15:00:37 -07:00
LICENSE.txt Tweak bottom of README, move LICENSE to LICENSE.txt 2019-01-18 20:57:19 -08:00
mkdocs.yml Add help page to direct people to Discord, GitHub, and Twitter 2019-09-11 11:34:52 -07:00
README.md Goodbye Travis 2019-09-27 15:09:35 -07:00

 

Rojo is a tool designed to enable Roblox developers to use professional-grade software engineering tools.

With Rojo, it's possible to use industry-leading tools like Visual Studio Code and Git.

Rojo is designed for power users who want to use the best tools available for building games, libraries, and plugins.

Features

Rojo enables:

  • Working on scripts and models from the filesystem, in your favorite editor
  • Versioning your game, library, or plugin using Git or another VCS
  • Streaming rbxmx and rbxm models into your game in real time
  • Packaging and deploying your project to Roblox.com from the command line

Soon, Rojo will be able to:

  • Automatically convert your existing game to work with Rojo
  • Sync instances from Roblox Studio to the filesystem
  • Automatically manage your assets on Roblox.com, like images and sounds
  • Import custom instances like MoonScript code

Documentation

If you find any mistakes, feel free to make changes in the docs folder of this repository and submit a pull request!

Contributing

Check out our contribution guide for detailed instructions for helping work on Rojo!

Pull requests are welcome!

Rojo supports Rust 1.36.0 and newer. The minimum supported version of Rust is based on the latest versions of the dependencies that Rojo has.

License

Rojo is available under the terms of the Mozilla Public License, Version 2.0. See LICENSE.txt for details.