Skip to content

Conversation

@RReverser
Copy link
Contributor

Description of Changes

Sharing the same build profile and running Clippy first allows to significantly speed up release builds of SpacetimeDB modules by parallelising & caching deps better.

Example on building benchmark module:

Before:

59.77 + 54.58 = 114.35s
   Compiling proc-macro2 v1.0.63
   Compiling quote v1.0.29
   Compiling unicode-ident v1.0.9
   Compiling typenum v1.16.0
   Compiling version_check v0.9.4
   Compiling autocfg v1.1.0
   Compiling memchr v2.5.0
   Compiling cc v1.0.83
   Compiling cfg-if v1.0.0
   Compiling generic-array v0.14.7
   Compiling libc v0.2.147
   Compiling num-traits v0.2.15
   Compiling syn v1.0.109
   Compiling once_cell v1.18.0
   Compiling gimli v0.27.3
   Compiling adler v1.0.2
   Compiling thiserror v1.0.40
   Compiling backtrace v0.3.68
   Compiling tracing-core v0.1.31
   Compiling syn v2.0.22
   Compiling miniz_oxide v0.7.1
   Compiling object v0.31.1
   Compiling rustc-demangle v0.1.23
   Compiling approx v0.3.2
   Compiling heck v0.4.1
   Compiling crypto-common v0.1.6
   Compiling block-buffer v0.10.4
   Compiling humantime v2.1.0
   Compiling either v1.8.1
   Compiling anyhow v1.0.71
   Compiling convert_case v0.4.0
   Compiling pin-project-lite v0.2.9
   Compiling bitflags v2.3.3
   Compiling addr2line v0.20.0
   Compiling itertools v0.10.5
   Compiling digest v0.10.7
   Compiling decorum v0.3.1
   Compiling derive_more v0.99.17
   Compiling keccak v0.1.4
   Compiling nonempty v0.8.1
   Compiling arrayvec v0.7.4
   Compiling sha3 v0.10.8
   Compiling hex v0.4.3
   Compiling scoped-tls v1.0.1
   Compiling spacetimedb-bindings-sys v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\bindings-sys)
   Compiling log v0.4.19
   Compiling thiserror-impl v1.0.40
   Compiling tracing-attributes v0.1.26
   Compiling enum-as-inner v0.6.0
   Compiling spacetimedb-bindings-macro v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\bindings-macro)
   Compiling tracing v0.1.37
   Compiling spacetimedb-sats v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\sats)
   Compiling spacetimedb-lib v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\lib)
   Compiling spacetimedb v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\bindings)
   Compiling benchmarks-module v0.1.0 (C:\Users\me\Documents\SpacetimeDB\modules\benchmarks)
    Finished release [optimized] target(s) in 59.77s
checking crate with spacetimedb's clippy configuration
   Compiling proc-macro2 v1.0.63
   Compiling unicode-ident v1.0.9
   Compiling quote v1.0.29
   Compiling typenum v1.16.0
   Compiling version_check v0.9.4
   Compiling autocfg v1.1.0
   Compiling memchr v2.5.0
    Checking cfg-if v1.0.0
   Compiling libc v0.2.147
   Compiling cc v1.0.83
   Compiling syn v1.0.109
   Compiling generic-array v0.14.7                                                                                                            
   Compiling num-traits v0.2.15
    Checking gimli v0.27.3
    Checking once_cell v1.18.0
    Checking adler v1.0.2
   Compiling thiserror v1.0.40
    Checking tracing-core v0.1.31
    Checking miniz_oxide v0.7.1
   Compiling syn v2.0.22
   Compiling backtrace v0.3.68
    Checking object v0.31.1
   Compiling convert_case v0.4.0
    Checking approx v0.3.2
    Checking either v1.8.1
    Checking crypto-common v0.1.6
    Checking block-buffer v0.10.4
   Compiling bitflags v2.3.3
    Checking addr2line v0.20.0
    Checking rustc-demangle v0.1.23
   Compiling humantime v2.1.0
    Checking pin-project-lite v0.2.9
   Compiling heck v0.4.1
   Compiling anyhow v1.0.71
    Checking digest v0.10.7
    Checking itertools v0.10.5
    Checking decorum v0.3.1
    Checking arrayvec v0.7.4
    Checking nonempty v0.8.1
    Checking keccak v0.1.4
    Checking hex v0.4.3
    Checking scoped-tls v1.0.1
    Checking sha3 v0.10.8
    Checking log v0.4.19
    Checking spacetimedb-bindings-sys v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\bindings-sys)
   Compiling derive_more v0.99.17
   Compiling tracing-attributes v0.1.26
   Compiling thiserror-impl v1.0.40
   Compiling spacetimedb-bindings-macro v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\bindings-macro)
   Compiling enum-as-inner v0.6.0
    Checking tracing v0.1.37                                                                                                                  
    Checking spacetimedb-sats v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\sats)
    Checking spacetimedb-lib v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\lib)
    Checking spacetimedb v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\bindings)
    Checking benchmarks-module v0.1.0 (C:\Users\me\Documents\SpacetimeDB\modules\benchmarks)
    Finished dev [unoptimized + debuginfo] target(s) in 54.58s

After:

32.48s + 26.03s = 58.51s (~2x faster)
   Compiling proc-macro2 v1.0.63
   Compiling quote v1.0.29
   Compiling unicode-ident v1.0.9
   Compiling typenum v1.16.0
   Compiling version_check v0.9.4
   Compiling autocfg v1.1.0
   Compiling memchr v2.5.0
   Compiling libc v0.2.147
   Compiling generic-array v0.14.7
   Compiling cc v1.0.83
   Compiling num-traits v0.2.15
    Checking cfg-if v1.0.0
   Compiling syn v1.0.109
   Compiling backtrace v0.3.68
   Compiling syn v2.0.22
   Compiling thiserror v1.0.40
    Checking gimli v0.27.3
    Checking adler v1.0.2
    Checking once_cell v1.18.0
    Checking miniz_oxide v0.7.1
    Checking tracing-core v0.1.31
   Compiling tracing-attributes v0.1.26
   Compiling thiserror-impl v1.0.40
    Checking object v0.31.1
   Compiling humantime v2.1.0
   Compiling anyhow v1.0.71
    Checking approx v0.3.2
    Checking pin-project-lite v0.2.9
    Checking crypto-common v0.1.6
    Checking block-buffer v0.10.4
   Compiling bitflags v2.3.3
   Compiling convert_case v0.4.0
    Checking either v1.8.1
   Compiling heck v0.4.1
    Checking rustc-demangle v0.1.23
   Compiling derive_more v0.99.17
   Compiling enum-as-inner v0.6.0
    Checking addr2line v0.20.0
    Checking itertools v0.10.5
    Checking tracing v0.1.37                                                                                                                  
   Compiling spacetimedb-bindings-macro v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\bindings-macro)
    Checking digest v0.10.7
    Checking decorum v0.3.1
    Checking arrayvec v0.7.4
    Checking nonempty v0.8.1
    Checking keccak v0.1.4
    Checking hex v0.4.3
    Checking sha3 v0.10.8
    Checking log v0.4.19
    Checking scoped-tls v1.0.1
    Checking spacetimedb-bindings-sys v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\bindings-sys)                                          
    Checking spacetimedb-sats v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\sats)
    Checking spacetimedb-lib v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\lib)
    Checking spacetimedb v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\bindings)
    Checking benchmarks-module v0.1.0 (C:\Users\me\Documents\SpacetimeDB\modules\benchmarks)
    Finished release [optimized] target(s) in 32.48s
   Compiling cfg-if v1.0.0
   Compiling typenum v1.16.0
   Compiling memchr v2.5.0
   Compiling num-traits v0.2.15
   Compiling adler v1.0.2
   Compiling once_cell v1.18.0
   Compiling gimli v0.27.3
   Compiling libc v0.2.147
   Compiling miniz_oxide v0.7.1
   Compiling pin-project-lite v0.2.9
   Compiling object v0.31.1
   Compiling tracing-core v0.1.31
   Compiling rustc-demangle v0.1.23
   Compiling generic-array v0.14.7
   Compiling approx v0.3.2
   Compiling either v1.8.1
   Compiling spacetimedb-bindings-macro v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\bindings-macro)
   Compiling tracing v0.1.37
   Compiling itertools v0.10.5
   Compiling block-buffer v0.10.4
   Compiling crypto-common v0.1.6
   Compiling addr2line v0.20.0
   Compiling decorum v0.3.1
   Compiling thiserror v1.0.40
   Compiling backtrace v0.3.68
   Compiling digest v0.10.7
   Compiling keccak v0.1.4
   Compiling nonempty v0.8.1
   Compiling arrayvec v0.7.4
   Compiling anyhow v1.0.71
   Compiling sha3 v0.10.8
   Compiling hex v0.4.3
   Compiling bitflags v2.3.3
   Compiling scoped-tls v1.0.1
   Compiling log v0.4.19
   Compiling spacetimedb-bindings-sys v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\bindings-sys)
   Compiling spacetimedb-sats v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\sats)
   Compiling spacetimedb-lib v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\lib)
   Compiling spacetimedb v0.7.0 (C:\Users\me\Documents\SpacetimeDB\crates\bindings)
   Compiling benchmarks-module v0.1.0 (C:\Users\me\Documents\SpacetimeDB\modules\benchmarks)
    Finished release [optimized] target(s) in 26.03s

API and ABI

  • This is a breaking change to the module ABI
  • This is a breaking change to the module API
  • This is a breaking change to the ClientAPI
  • This is a breaking change to the SDK API

If the API is breaking, please state below what will break

Expected complexity level and risk

How complicated do you think these changes are? Grade on a scale from 1 to 5,
where 1 is a trivial change, and 5 is a deep-reaching and complex change.

This complexity rating applies not only to the complexity apparent in the diff,
but also to its interactions with existing and future code.

If you answered more than a 2, explain what is complex about the PR,
and what other components it interacts with in potentially concerning ways.

@jdetter jdetter self-requested a review October 11, 2023 15:48
Copy link
Collaborator

@jdetter jdetter left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested + working

@RReverser RReverser merged commit 8f5026f into master Oct 11, 2023
@RReverser RReverser deleted the clippy-first branch October 11, 2023 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants