 a64446b77e
			
		
	
	
		a64446b77e
		
			
		
	
	
	
	
		
			
			# 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
 |