Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: freeze voluntary exit signature fork domain to Capella version from deneb fork onwards #5688

Merged
merged 6 commits into from
Jun 28, 2023

Conversation

g11tech
Copy link
Contributor

@g11tech g11tech commented Jun 23, 2023

Ref

NOTE:
This PR skips some spec tests as they test voluntary exits on deneb domain fork. These skips will be removed with the new spec version update for which a few other PRs are pending.

@g11tech g11tech requested a review from a team as a code owner June 23, 2023 15:38
@github-actions
Copy link
Contributor

github-actions bot commented Jun 23, 2023

Performance Report

✔️ no performance regression detected

Full benchmark results
Benchmark suite Current: 5b388a7 Previous: 00877ee Ratio
getPubkeys - index2pubkey - req 1000 vs - 250000 vc 668.62 us/op 879.30 us/op 0.76
getPubkeys - validatorsArr - req 1000 vs - 250000 vc 46.484 us/op 49.170 us/op 0.95
BLS verify - blst-native 1.2064 ms/op 1.2939 ms/op 0.93
BLS verifyMultipleSignatures 3 - blst-native 2.4480 ms/op 2.6465 ms/op 0.93
BLS verifyMultipleSignatures 8 - blst-native 5.2593 ms/op 5.7218 ms/op 0.92
BLS verifyMultipleSignatures 32 - blst-native 19.052 ms/op 20.510 ms/op 0.93
BLS aggregatePubkeys 32 - blst-native 25.262 us/op 27.357 us/op 0.92
BLS aggregatePubkeys 128 - blst-native 99.290 us/op 106.22 us/op 0.93
getAttestationsForBlock 50.634 ms/op 65.826 ms/op 0.77
isKnown best case - 1 super set check 252.00 ns/op 271.00 ns/op 0.93
isKnown normal case - 2 super set checks 247.00 ns/op 262.00 ns/op 0.94
isKnown worse case - 16 super set checks 247.00 ns/op 259.00 ns/op 0.95
CheckpointStateCache - add get delete 5.1970 us/op 5.6960 us/op 0.91
validate gossip signedAggregateAndProof - struct 2.8316 ms/op 2.9246 ms/op 0.97
validate gossip attestation - struct 1.2972 ms/op 1.3874 ms/op 0.94
pickEth1Vote - no votes 1.3236 ms/op 1.3520 ms/op 0.98
pickEth1Vote - max votes 9.3143 ms/op 11.524 ms/op 0.81
pickEth1Vote - Eth1Data hashTreeRoot value x2048 8.7728 ms/op 9.1975 ms/op 0.95
pickEth1Vote - Eth1Data hashTreeRoot tree x2048 14.511 ms/op 17.913 ms/op 0.81
pickEth1Vote - Eth1Data fastSerialize value x2048 715.65 us/op 698.90 us/op 1.02
pickEth1Vote - Eth1Data fastSerialize tree x2048 4.7535 ms/op 4.8236 ms/op 0.99
bytes32 toHexString 501.00 ns/op 515.00 ns/op 0.97
bytes32 Buffer.toString(hex) 352.00 ns/op 386.00 ns/op 0.91
bytes32 Buffer.toString(hex) from Uint8Array 565.00 ns/op 577.00 ns/op 0.98
bytes32 Buffer.toString(hex) + 0x 371.00 ns/op 369.00 ns/op 1.01
Object access 1 prop 0.18100 ns/op 0.17700 ns/op 1.02
Map access 1 prop 0.15600 ns/op 0.17000 ns/op 0.92
Object get x1000 6.5370 ns/op 6.7890 ns/op 0.96
Map get x1000 0.56700 ns/op 0.65700 ns/op 0.86
Object set x1000 61.251 ns/op 55.773 ns/op 1.10
Map set x1000 47.453 ns/op 45.140 ns/op 1.05
Return object 10000 times 0.24060 ns/op 0.24750 ns/op 0.97
Throw Error 10000 times 4.2485 us/op 4.4315 us/op 0.96
fastMsgIdFn sha256 / 200 bytes 3.6000 us/op 3.6520 us/op 0.99
fastMsgIdFn h32 xxhash / 200 bytes 302.00 ns/op 298.00 ns/op 1.01
fastMsgIdFn h64 xxhash / 200 bytes 407.00 ns/op 440.00 ns/op 0.93
fastMsgIdFn sha256 / 1000 bytes 11.563 us/op 12.109 us/op 0.95
fastMsgIdFn h32 xxhash / 1000 bytes 430.00 ns/op 437.00 ns/op 0.98
fastMsgIdFn h64 xxhash / 1000 bytes 505.00 ns/op 495.00 ns/op 1.02
fastMsgIdFn sha256 / 10000 bytes 105.11 us/op 108.16 us/op 0.97
fastMsgIdFn h32 xxhash / 10000 bytes 1.9640 us/op 2.0080 us/op 0.98
fastMsgIdFn h64 xxhash / 10000 bytes 1.4170 us/op 1.4520 us/op 0.98
enrSubnets - fastDeserialize 64 bits 1.4590 us/op 1.3810 us/op 1.06
enrSubnets - ssz BitVector 64 bits 501.00 ns/op 529.00 ns/op 0.95
enrSubnets - fastDeserialize 4 bits 173.00 ns/op 186.00 ns/op 0.93
enrSubnets - ssz BitVector 4 bits 496.00 ns/op 541.00 ns/op 0.92
prioritizePeers score -10:0 att 32-0.1 sync 2-0 118.56 us/op 97.275 us/op 1.22
prioritizePeers score 0:0 att 32-0.25 sync 2-0.25 129.78 us/op 148.71 us/op 0.87
prioritizePeers score 0:0 att 32-0.5 sync 2-0.5 164.96 us/op 191.34 us/op 0.86
prioritizePeers score 0:0 att 64-0.75 sync 4-0.75 298.41 us/op 339.30 us/op 0.88
prioritizePeers score 0:0 att 64-1 sync 4-1 364.82 us/op 413.11 us/op 0.88
array of 16000 items push then shift 1.6583 us/op 1.6968 us/op 0.98
LinkedList of 16000 items push then shift 8.8280 ns/op 9.6110 ns/op 0.92
array of 16000 items push then pop 112.31 ns/op 97.315 ns/op 1.15
LinkedList of 16000 items push then pop 9.2800 ns/op 8.9260 ns/op 1.04
array of 24000 items push then shift 2.3798 us/op 2.5020 us/op 0.95
LinkedList of 24000 items push then shift 9.2700 ns/op 10.922 ns/op 0.85
array of 24000 items push then pop 78.106 ns/op 92.037 ns/op 0.85
LinkedList of 24000 items push then pop 8.6880 ns/op 9.6220 ns/op 0.90
intersect bitArray bitLen 8 13.251 ns/op 13.754 ns/op 0.96
intersect array and set length 8 80.601 ns/op 78.756 ns/op 1.02
intersect bitArray bitLen 128 43.909 ns/op 44.660 ns/op 0.98
intersect array and set length 128 1.0927 us/op 1.1958 us/op 0.91
Buffer.concat 32 items 3.0260 us/op 2.8370 us/op 1.07
Uint8Array.set 32 items 2.2710 us/op 2.4730 us/op 0.92
transfer serialized Status (84 B) 2.0490 us/op 2.2390 us/op 0.92
copy serialized Status (84 B) 1.7070 us/op 1.8380 us/op 0.93
transfer serialized SignedVoluntaryExit (112 B) 2.1230 us/op 2.2270 us/op 0.95
copy serialized SignedVoluntaryExit (112 B) 1.7350 us/op 1.7550 us/op 0.99
transfer serialized ProposerSlashing (416 B) 2.1860 us/op 2.9600 us/op 0.74
copy serialized ProposerSlashing (416 B) 1.9790 us/op 2.9630 us/op 0.67
transfer serialized Attestation (485 B) 2.2430 us/op 2.9640 us/op 0.76
copy serialized Attestation (485 B) 1.9810 us/op 3.0870 us/op 0.64
transfer serialized AttesterSlashing (33232 B) 2.4170 us/op 3.1390 us/op 0.77
copy serialized AttesterSlashing (33232 B) 5.1540 us/op 5.9630 us/op 0.86
transfer serialized Small SignedBeaconBlock (128000 B) 2.8400 us/op 3.0470 us/op 0.93
copy serialized Small SignedBeaconBlock (128000 B) 12.588 us/op 15.478 us/op 0.81
transfer serialized Avg SignedBeaconBlock (200000 B) 3.2460 us/op 3.3050 us/op 0.98
copy serialized Avg SignedBeaconBlock (200000 B) 20.089 us/op 21.197 us/op 0.95
transfer serialized BlobsSidecar (524380 B) 3.8280 us/op 3.2370 us/op 1.18
copy serialized BlobsSidecar (524380 B) 140.81 us/op 182.34 us/op 0.77
transfer serialized Big SignedBeaconBlock (1000000 B) 3.7120 us/op 3.3660 us/op 1.10
copy serialized Big SignedBeaconBlock (1000000 B) 281.54 us/op 245.68 us/op 1.15
pass gossip attestations to forkchoice per slot 2.7077 ms/op 2.7988 ms/op 0.97
forkChoice updateHead vc 100000 bc 64 eq 0 2.0565 ms/op 2.1837 ms/op 0.94
forkChoice updateHead vc 600000 bc 64 eq 0 11.230 ms/op 11.552 ms/op 0.97
forkChoice updateHead vc 1000000 bc 64 eq 0 21.855 ms/op 21.423 ms/op 1.02
forkChoice updateHead vc 600000 bc 320 eq 0 16.641 ms/op 17.271 ms/op 0.96
forkChoice updateHead vc 600000 bc 1200 eq 0 83.937 ms/op 83.833 ms/op 1.00
forkChoice updateHead vc 600000 bc 64 eq 1000 20.634 ms/op 21.593 ms/op 0.96
forkChoice updateHead vc 600000 bc 64 eq 10000 22.698 ms/op 23.108 ms/op 0.98
forkChoice updateHead vc 600000 bc 64 eq 300000 30.556 ms/op 31.933 ms/op 0.96
computeDeltas 3.0474 ms/op 4.1604 ms/op 0.73
computeProposerBoostScoreFromBalances 1.7997 ms/op 1.8376 ms/op 0.98
altair processAttestation - 250000 vs - 7PWei normalcase 2.7740 ms/op 2.3838 ms/op 1.16
altair processAttestation - 250000 vs - 7PWei worstcase 3.8977 ms/op 3.4827 ms/op 1.12
altair processAttestation - setStatus - 1/6 committees join 154.55 us/op 146.03 us/op 1.06
altair processAttestation - setStatus - 1/3 committees join 293.91 us/op 289.31 us/op 1.02
altair processAttestation - setStatus - 1/2 committees join 393.45 us/op 386.03 us/op 1.02
altair processAttestation - setStatus - 2/3 committees join 483.22 us/op 483.77 us/op 1.00
altair processAttestation - setStatus - 4/5 committees join 687.12 us/op 695.56 us/op 0.99
altair processAttestation - setStatus - 100% committees join 809.43 us/op 805.61 us/op 1.00
altair processBlock - 250000 vs - 7PWei normalcase 17.187 ms/op 18.211 ms/op 0.94
altair processBlock - 250000 vs - 7PWei normalcase hashState 27.046 ms/op 30.284 ms/op 0.89
altair processBlock - 250000 vs - 7PWei worstcase 52.623 ms/op 55.140 ms/op 0.95
altair processBlock - 250000 vs - 7PWei worstcase hashState 68.495 ms/op 87.302 ms/op 0.78
phase0 processBlock - 250000 vs - 7PWei normalcase 2.1163 ms/op 2.0565 ms/op 1.03
phase0 processBlock - 250000 vs - 7PWei worstcase 30.894 ms/op 29.755 ms/op 1.04
altair processEth1Data - 250000 vs - 7PWei normalcase 484.85 us/op 477.44 us/op 1.02
getExpectedWithdrawals 250000 eb:1,eth1:1,we:0,wn:0,smpl:15 9.4640 us/op 9.1170 us/op 1.04
getExpectedWithdrawals 250000 eb:0.95,eth1:0.1,we:0.05,wn:0,smpl:219 31.685 us/op 33.962 us/op 0.93
getExpectedWithdrawals 250000 eb:0.95,eth1:0.3,we:0.05,wn:0,smpl:42 12.342 us/op 8.4770 us/op 1.46
getExpectedWithdrawals 250000 eb:0.95,eth1:0.7,we:0.05,wn:0,smpl:18 9.2990 us/op 6.4360 us/op 1.44
getExpectedWithdrawals 250000 eb:0.1,eth1:0.1,we:0,wn:0,smpl:1020 111.21 us/op 78.008 us/op 1.43
getExpectedWithdrawals 250000 eb:0.03,eth1:0.03,we:0,wn:0,smpl:11777 683.73 us/op 1.1617 ms/op 0.59
getExpectedWithdrawals 250000 eb:0.01,eth1:0.01,we:0,wn:0,smpl:16384 943.16 us/op 904.41 us/op 1.04
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,smpl:16384 907.06 us/op 1.5993 ms/op 0.57
getExpectedWithdrawals 250000 eb:0,eth1:0,we:0,wn:0,nocache,smpl:16384 3.0000 ms/op 2.3633 ms/op 1.27
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,smpl:16384 1.7605 ms/op 1.7824 ms/op 0.99
getExpectedWithdrawals 250000 eb:0,eth1:1,we:0,wn:0,nocache,smpl:16384 4.4437 ms/op 4.0175 ms/op 1.11
Tree 40 250000 create 333.32 ms/op 331.74 ms/op 1.00
Tree 40 250000 get(125000) 200.19 ns/op 196.93 ns/op 1.02
Tree 40 250000 set(125000) 1.1013 us/op 1.0196 us/op 1.08
Tree 40 250000 toArray() 22.930 ms/op 21.082 ms/op 1.09
Tree 40 250000 iterate all - toArray() + loop 20.985 ms/op 21.474 ms/op 0.98
Tree 40 250000 iterate all - get(i) 86.252 ms/op 74.856 ms/op 1.15
MutableVector 250000 create 10.429 ms/op 13.914 ms/op 0.75
MutableVector 250000 get(125000) 6.4940 ns/op 6.7870 ns/op 0.96
MutableVector 250000 set(125000) 260.50 ns/op 262.35 ns/op 0.99
MutableVector 250000 toArray() 3.2362 ms/op 3.0607 ms/op 1.06
MutableVector 250000 iterate all - toArray() + loop 4.2994 ms/op 3.4133 ms/op 1.26
MutableVector 250000 iterate all - get(i) 1.8147 ms/op 1.6087 ms/op 1.13
Array 250000 create 4.5559 ms/op 2.9831 ms/op 1.53
Array 250000 clone - spread 2.0381 ms/op 1.1706 ms/op 1.74
Array 250000 get(125000) 1.2320 ns/op 0.59300 ns/op 2.08
Array 250000 set(125000) 1.6420 ns/op 0.63400 ns/op 2.59
Array 250000 iterate all - loop 93.615 us/op 108.35 us/op 0.86
effectiveBalanceIncrements clone Uint8Array 300000 64.711 us/op 28.340 us/op 2.28
effectiveBalanceIncrements clone MutableVector 300000 604.00 ns/op 353.00 ns/op 1.71
effectiveBalanceIncrements rw all Uint8Array 300000 194.30 us/op 172.77 us/op 1.12
effectiveBalanceIncrements rw all MutableVector 300000 193.13 ms/op 82.069 ms/op 2.35
phase0 afterProcessEpoch - 250000 vs - 7PWei 131.40 ms/op 118.83 ms/op 1.11
phase0 beforeProcessEpoch - 250000 vs - 7PWei 44.211 ms/op 44.518 ms/op 0.99
altair processEpoch - mainnet_e81889 384.58 ms/op 370.02 ms/op 1.04
mainnet_e81889 - altair beforeProcessEpoch 90.086 ms/op 71.608 ms/op 1.26
mainnet_e81889 - altair processJustificationAndFinalization 29.223 us/op 21.745 us/op 1.34
mainnet_e81889 - altair processInactivityUpdates 9.1811 ms/op 8.0515 ms/op 1.14
mainnet_e81889 - altair processRewardsAndPenalties 78.071 ms/op 75.748 ms/op 1.03
mainnet_e81889 - altair processRegistryUpdates 5.5240 us/op 3.7600 us/op 1.47
mainnet_e81889 - altair processSlashings 1.0330 us/op 901.00 ns/op 1.15
mainnet_e81889 - altair processEth1DataReset 1.1700 us/op 883.00 ns/op 1.33
mainnet_e81889 - altair processEffectiveBalanceUpdates 2.1754 ms/op 1.5486 ms/op 1.40
mainnet_e81889 - altair processSlashingsReset 8.0170 us/op 5.5940 us/op 1.43
mainnet_e81889 - altair processRandaoMixesReset 8.0840 us/op 8.7260 us/op 0.93
mainnet_e81889 - altair processHistoricalRootsUpdate 1.9840 us/op 2.3300 us/op 0.85
mainnet_e81889 - altair processParticipationFlagUpdates 8.8860 us/op 4.2150 us/op 2.11
mainnet_e81889 - altair processSyncCommitteeUpdates 1.3930 us/op 1.2550 us/op 1.11
mainnet_e81889 - altair afterProcessEpoch 160.85 ms/op 132.50 ms/op 1.21
phase0 processEpoch - mainnet_e58758 483.09 ms/op 388.80 ms/op 1.24
mainnet_e58758 - phase0 beforeProcessEpoch 232.10 ms/op 160.07 ms/op 1.45
mainnet_e58758 - phase0 processJustificationAndFinalization 45.904 us/op 28.274 us/op 1.62
mainnet_e58758 - phase0 processRewardsAndPenalties 92.364 ms/op 75.436 ms/op 1.22
mainnet_e58758 - phase0 processRegistryUpdates 25.991 us/op 14.593 us/op 1.78
mainnet_e58758 - phase0 processSlashings 2.5940 us/op 894.00 ns/op 2.90
mainnet_e58758 - phase0 processEth1DataReset 1.4080 us/op 791.00 ns/op 1.78
mainnet_e58758 - phase0 processEffectiveBalanceUpdates 2.2183 ms/op 1.9336 ms/op 1.15
mainnet_e58758 - phase0 processSlashingsReset 18.116 us/op 7.1190 us/op 2.54
mainnet_e58758 - phase0 processRandaoMixesReset 15.651 us/op 8.1190 us/op 1.93
mainnet_e58758 - phase0 processHistoricalRootsUpdate 3.0370 us/op 1.2050 us/op 2.52
mainnet_e58758 - phase0 processParticipationRecordUpdates 16.001 us/op 6.8700 us/op 2.33
mainnet_e58758 - phase0 afterProcessEpoch 118.87 ms/op 102.45 ms/op 1.16
phase0 processEffectiveBalanceUpdates - 250000 normalcase 2.2769 ms/op 1.6489 ms/op 1.38
phase0 processEffectiveBalanceUpdates - 250000 worstcase 0.5 2.3128 ms/op 1.9258 ms/op 1.20
altair processInactivityUpdates - 250000 normalcase 36.107 ms/op 26.027 ms/op 1.39
altair processInactivityUpdates - 250000 worstcase 33.988 ms/op 29.828 ms/op 1.14
phase0 processRegistryUpdates - 250000 normalcase 17.046 us/op 12.295 us/op 1.39
phase0 processRegistryUpdates - 250000 badcase_full_deposits 352.11 us/op 311.49 us/op 1.13
phase0 processRegistryUpdates - 250000 worstcase 0.5 176.86 ms/op 154.77 ms/op 1.14
altair processRewardsAndPenalties - 250000 normalcase 66.652 ms/op 76.495 ms/op 0.87
altair processRewardsAndPenalties - 250000 worstcase 79.171 ms/op 75.510 ms/op 1.05
phase0 getAttestationDeltas - 250000 normalcase 9.4807 ms/op 7.3389 ms/op 1.29
phase0 getAttestationDeltas - 250000 worstcase 9.3441 ms/op 9.1034 ms/op 1.03
phase0 processSlashings - 250000 worstcase 4.4902 ms/op 3.7339 ms/op 1.20
altair processSyncCommitteeUpdates - 250000 210.79 ms/op 194.41 ms/op 1.08
BeaconState.hashTreeRoot - No change 353.00 ns/op 353.00 ns/op 1.00
BeaconState.hashTreeRoot - 1 full validator 60.759 us/op 59.429 us/op 1.02
BeaconState.hashTreeRoot - 32 full validator 565.81 us/op 568.38 us/op 1.00
BeaconState.hashTreeRoot - 512 full validator 6.9097 ms/op 6.5437 ms/op 1.06
BeaconState.hashTreeRoot - 1 validator.effectiveBalance 70.657 us/op 70.565 us/op 1.00
BeaconState.hashTreeRoot - 32 validator.effectiveBalance 1.0193 ms/op 1.0065 ms/op 1.01
BeaconState.hashTreeRoot - 512 validator.effectiveBalance 13.393 ms/op 12.726 ms/op 1.05
BeaconState.hashTreeRoot - 1 balances 56.054 us/op 58.342 us/op 0.96
BeaconState.hashTreeRoot - 32 balances 475.36 us/op 537.03 us/op 0.89
BeaconState.hashTreeRoot - 512 balances 5.3646 ms/op 5.3667 ms/op 1.00
BeaconState.hashTreeRoot - 250000 balances 80.515 ms/op 87.226 ms/op 0.92
aggregationBits - 2048 els - zipIndexesInBitList 24.733 us/op 24.273 us/op 1.02
regular array get 100000 times 36.789 us/op 36.964 us/op 1.00
wrappedArray get 100000 times 37.956 us/op 46.048 us/op 0.82
arrayWithProxy get 100000 times 18.265 ms/op 16.631 ms/op 1.10
ssz.Root.equals 722.00 ns/op 624.00 ns/op 1.16
byteArrayEquals 720.00 ns/op 621.00 ns/op 1.16
shuffle list - 16384 els 8.0227 ms/op 7.7135 ms/op 1.04
shuffle list - 250000 els 117.26 ms/op 109.68 ms/op 1.07
processSlot - 1 slots 10.524 us/op 10.776 us/op 0.98
processSlot - 32 slots 1.5684 ms/op 1.7822 ms/op 0.88
getEffectiveBalanceIncrementsZeroInactive - 250000 vs - 7PWei 43.839 ms/op 45.000 ms/op 0.97
getCommitteeAssignments - req 1 vs - 250000 vc 3.4365 ms/op 3.1966 ms/op 1.08
getCommitteeAssignments - req 100 vs - 250000 vc 4.7688 ms/op 4.6284 ms/op 1.03
getCommitteeAssignments - req 1000 vs - 250000 vc 5.1679 ms/op 5.1554 ms/op 1.00
RootCache.getBlockRootAtSlot - 250000 vs - 7PWei 5.6000 ns/op 5.5400 ns/op 1.01
state getBlockRootAtSlot - 250000 vs - 7PWei 798.38 ns/op 859.08 ns/op 0.93
computeProposers - vc 250000 12.370 ms/op 12.549 ms/op 0.99
computeEpochShuffling - vc 250000 120.37 ms/op 122.97 ms/op 0.98
getNextSyncCommittee - vc 250000 210.49 ms/op 210.34 ms/op 1.00
computeSigningRoot for AttestationData 15.836 us/op 16.493 us/op 0.96
hash AttestationData serialized data then Buffer.toString(base64) 2.6173 us/op 2.8748 us/op 0.91
toHexString serialized data 1.0527 us/op 1.7098 us/op 0.62
Buffer.toString(base64) 310.93 ns/op 402.06 ns/op 0.77

by benchmarkbot/action

@wemeetagain
Copy link
Member

Doesn't the EIP say to lock the fork to Capella?

@g11tech
Copy link
Contributor Author

g11tech commented Jun 24, 2023

Doesn't the EIP say to lock the fork to Capella?

oops yes, that also resolves my confusion of how capella signed exits will be valid in deneb

@g11tech g11tech changed the title feat: freeze voluntary exit signature fork domain to Deneb feat: freeze voluntary exit signature fork domain to Capella Jun 24, 2023
@g11tech g11tech changed the title feat: freeze voluntary exit signature fork domain to Capella feat: freeze voluntary exit signature fork domain to Capella version from deneb fork onwards Jun 24, 2023
@g11tech g11tech merged commit cc7802f into unstable Jun 28, 2023
@g11tech g11tech deleted the g11tech/freeze-volutaryexit-domain branch June 28, 2023 06:57
@wemeetagain
Copy link
Member

🎉 This PR is included in v1.10.0 🎉

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