Well, I'm going to call it there. I got completely derailed upgrading the math benchmarks, learning about Bevy's curves API, and then later trying to profile the engine with Tracy.
I think one of my biggest problems is that it's not yet clear to me what is the most performance critical in the engine. Once I figure that out, I can paint a picture of what needs to be benchmarked and what can be discarded.
Until then, I'm probably taking a break until Monday. Cheers! :bjorn:
=> More informations about this toot | View the thread
Ah, that's what went wrong. --release
is a flag of the build
subcommand, not web
. The correct command is bevy build --release web
✍️
I tested it out, and while wasm-opt
is slow, it gave me a 30% reduction in binary size! Nice!
Approved, with a note that the author can merge it once they feel it's ready.
=> More informations about this toot | View the thread
Next up is https://github.com/TheBevyFlock/bevy_cli/pull/206, which is the final Bevy CLI PR on my list to review! It adds optional support for wasm-opt
to further improve WASM binary size of a Bevy project when built in release mode.
Unfortunately, I have no idea how to use it! bevy build web --release
didn't work, so I'll leave a comment for the author and see what he says.
=> More informations about this toot | View the thread
Next is https://github.com/TheBevyFlock/bevy_cli/pull/199.
Originally when you ran bevy build web --release
, the Bevy CLI would use the default release profile. This isn't great for WASM, though, where load times has greater importance than runtime performance.
This PR changes the profile we use in web builds to be web
and web-release
, and provides good defaults that can be overridden in a project's Cargo.toml
.
I have a nit with how we are specifying the default config, but the rest is good!
=> More informations about this toot | View the thread
First up is https://github.com/TheBevyFlock/bevy_cli/pull/195!
One of the biggest features of the #bevy CLI is its ability to build and serve projects as WASM without any extra configuration. You run bevy run web
and it handles the rest!
This PR adds the --bundle
flag, which copies the compiled code and assets into a single folder that you can easily host and distribute. Really useful in game jams where you need to upload a ZIP to itch.io!
I have a few nits related to comments, but the code works like a charm!
=> More informations about this toot | View the thread
Good morning! Today's another day I'm going to spend working on the todo list I posted yesterday. Follow along as I walk through what #rustlang #opensource looks like in the #bevy game engine!
My first job is going to be reviewing some open pull requests in the Bevy CLI repository, which houses a community-led CLI tool and linter for Bevy projects! Let's get started :D
https://github.com/TheBevyFlock/bevy_cli/pulls
=> More informations about this toot | View the thread
My focus this morning was Bevy's benchmarks. Benchmarks are how we track performance of the engine over time, and make sure things stay fast and zippy! I've been doing some work refreshing them, and part of that work today was opening https://github.com/bevyengine/bevy/pull/16980!
This pull request migrates all of our imports of criterion::black_box()
to core::hint::black_box()
, which is faster because it uses compiler intrinsics.
For further reading on how black_box()
works: https://doc.rust-lang.org/nightly/std/hint/fn.black_box.html#how-to-use-this
=> More informations about this toot | View the thread
Hiya everyone! I hope you all have been having a fantastic winter break. Today I have nothing planned, which means my day is going to be filled with #opensource #rustlang work on the #bevy game engine!
I have a full list of things to work on, so let's get started! I'll reply to this thread throughout the day with fun updates and insights. Here we go! :SpinningCube:
1/n
=> More informations about this toot | View the thread
Today was a good day! For one, I spent some time giving back to #rust #opensource by contributing to Clippy! A lot of my work on the #bevy linter was due to Clippy's fantastic documentation, so I spent some time seeing where I could help out.
Over the past few days, I've opened a few pull requests that improve Clippy's documentation and refactors clippy_utils
's internal structure:
1/2
=> More informations about this toot | View the thread
@rusticorn's 7th #bevy Meetup is about to begin! In it I'll be talking about my work on the Bevy linter, alongside two other amazing speakers with their own awesome topics.
See you all there :)
https://www.meetup.com/bevy-game-development/events/304078762/
=> More informations about this toot | View the thread
If you're interested, you can find the live documentation at https://thebevyflock.github.io/bevy_cli/bevy_lint/. I'll also be giving a talk on the linter this Thursday at the 7th Bevy Meetup (https://www.meetup.com/bevy-game-development/events/304078762/), if you're interested in why the linter was created and how it works!
=> More informations about this toot | View the thread
It is with great pride that I announce the first release of bevy_lint
, a custom linter for projects built with #bevy! Use this to check for Bevy-specific footguns and optimizations, as well as enforce project-wide restrictions and standards. This is a project I spent the past 2 months building over in the bevy_cli
working group with the intention of it eventually being upstreamed. While it's still currently unofficial, it's fleshed-out enough for early adopters to use in their own projects.
=> More informations about this toot | View the thread
This linter, similar to Clippy, is designed to check both Bevy projects and the engine itself for correctness, style, and complexity.
So anyways, I just finished writing the first lint! It's been a journey learning all of these compiler internals, but I've been having a blast doing so! Check out the link if your curious, I'd love to answer any questions.
=> More informations about this toot | View the thread
The first lint is done and ready for review! Check it out at https://github.com/TheBevyFlock/bevy_cli/pull/84.
Oh... I guess I never formally introduced this project. Whoops!
Hi, I'm BD103, and I'm an active participant in the recently-formed bevy_cli
working group. The #bevy CLI has a few goals, such as template generation and better WASM support, but the goal I'm most excited for, and have been spearheading, is the Bevy-specific linter!
=> More informations about this toot | View the thread
I just spent the past 2 hours debugging bevy_lint_driver
, my WIP tool that links directly to the #rust compiler and installs custom lints for #bevy. I was having an issue where it would run perfectly fine from cargo run
, but would fail when executed directly with ./debug/target/bevy_lint_driver
.
After some digging, turns out my binary was dynamically linking to librustc_driver.so
, which the linker could not find.
=> More informations about this toot | View the thread
Fun fact! You can use any of the #rust compiler crates (https://doc.rust-lang.org/nightly/nightly-rustc/) by enabling the rustc_private
nightly feature (https://doc.rust-lang.org/nightly/unstable-book/language-features/rustc-private.html) and adding extern crate name_of_rustc_crate
to your lib.rs
/ main.rs
. It does require the nightly compiler, but it lets you hook into the compiler process and do all sorts of fun things!
=> More informations about this toot | View the thread
Hello to the 42 people that follow me! I published a blog post on my journey with #bevy for its 4th birthday! If you have the time, please read it at https://bd103.github.io/blog/2024-08-18-4-years-of-bevy.
I've had so much fun over the last 10 months, and I'm so grateful to the Bevy community, so I wanted to share my thanks with everyone!
Until next time,
=> More informations about this toot | View the thread
=> This profile with reblog | Go to bd103@hachyderm.io account This content has been proxied by September (3851b).Proxy Information
text/gemini