
# Objective - Contributes to #16877 ## Solution - Initial creation of `bevy_platform_support` crate. - Moved `bevy_utils::Instant` into new `bevy_platform_support` crate. - Moved `portable-atomic`, `portable-atomic-util`, and `critical-section` into new `bevy_platform_support` crate. ## Testing - CI --- ## Showcase Instead of needing code like this to import an `Arc`: ```rust #[cfg(feature = "portable-atomic")] use portable_atomic_util::Arc; #[cfg(not(feature = "portable-atomic"))] use alloc::sync::Arc; ``` We can now use: ```rust use bevy_platform_support::sync::Arc; ``` This applies to many other types, but the goal is overall the same: allowing crates to use `std`-like types without the boilerplate of conditional compilation and platform-dependencies. ## Migration Guide - Replace imports of `bevy_utils::Instant` with `bevy_platform_support::time::Instant` - Replace imports of `bevy::utils::Instant` with `bevy::platform_support::time::Instant` ## Notes - `bevy_platform_support` hasn't been reserved on `crates.io` - ~~`bevy_platform_support` is not re-exported from `bevy` at this time. It may be worthwhile exporting this crate, but I am unsure of a reasonable name to export it under (`platform_support` may be a bit wordy for user-facing).~~ - I've included an implementation of `Instant` which is suitable for `no_std` platforms that are not Wasm for the sake of eliminating feature gates around its use. It may be a controversial inclusion, so I'm happy to remove it if required. - There are many other items (`spin`, `bevy_utils::Sync(Unsafe)Cell`, etc.) which should be added to this crate. I have kept the initial scope small to demonstrate utility without making this too unwieldy. --------- Co-authored-by: TimJentzsch <TimJentzsch@users.noreply.github.com> Co-authored-by: Chris Russell <8494645+chescock@users.noreply.github.com> Co-authored-by: François Mockers <francois.mockers@vleue.com>
80 lines
1.3 KiB
Bash
80 lines
1.3 KiB
Bash
# if crate A depends on crate B, B must come before A in this list
|
|
crates=(
|
|
bevy_platform_support
|
|
bevy_utils
|
|
bevy_ptr
|
|
bevy_macro_utils
|
|
bevy_derive
|
|
bevy_math
|
|
bevy_color
|
|
bevy_tasks
|
|
bevy_reflect/derive
|
|
bevy_reflect
|
|
bevy_ecs/macros
|
|
bevy_ecs
|
|
bevy_state/macros
|
|
bevy_state
|
|
bevy_app
|
|
bevy_time
|
|
bevy_log
|
|
bevy_asset/macros
|
|
bevy_asset
|
|
bevy_audio
|
|
bevy_diagnostic
|
|
bevy_transform
|
|
bevy_window
|
|
bevy_encase_derive
|
|
bevy_render/macros
|
|
bevy_mikktspace
|
|
bevy_image
|
|
bevy_mesh
|
|
bevy_render
|
|
bevy_core_pipeline
|
|
bevy_input
|
|
bevy_gilrs
|
|
bevy_animation
|
|
bevy_pbr
|
|
bevy_gltf
|
|
bevy_remote
|
|
bevy_scene
|
|
bevy_picking
|
|
bevy_sprite
|
|
bevy_gizmos/macros
|
|
bevy_gizmos
|
|
bevy_text
|
|
bevy_a11y
|
|
bevy_input_focus
|
|
bevy_ui
|
|
bevy_winit
|
|
bevy_dev_tools
|
|
bevy_internal
|
|
bevy_dylib
|
|
)
|
|
|
|
if [ -n "$(git status --porcelain)" ]; then
|
|
echo "You have local changes!"
|
|
exit 1
|
|
fi
|
|
|
|
pushd crates
|
|
|
|
for crate in "${crates[@]}"
|
|
do
|
|
echo "Publishing ${crate}"
|
|
cp ../LICENSE-MIT "$crate"
|
|
cp ../LICENSE-APACHE "$crate"
|
|
pushd "$crate"
|
|
git add LICENSE-MIT LICENSE-APACHE
|
|
cargo publish --no-verify --allow-dirty
|
|
popd
|
|
sleep 20
|
|
done
|
|
|
|
popd
|
|
|
|
echo "Publishing root crate"
|
|
cargo publish --allow-dirty
|
|
|
|
echo "Cleaning local state"
|
|
git reset HEAD --hard
|