Files
boc/aamos-ledger-rust/target/debug/deps/libquanta-c529ea8ca9e7481b.rmeta
T

231 lines
103 KiB
Plaintext
Raw Normal View History

rust
,™#rustc 1.96.0 (ac68faa20 2026-05-25)ÁÀ뉊]!ÜÛê(¹Þ—šên-5be7b69c3ff7b5b8ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤²XctÔ'ÐÓ©z¨ɽÓ-a4945860e1c53b00Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁòÖÀH•‘PIÓHã#£-055f30b747f859b6Árustc_std_workspace_coreÁ­Cçß^ò½èÝ$­Çÿ+Cé-c4878ee60b2242c9ÁŸÃï+Ñ]ŠqB<ÏïW#-8dd1dd90e70d0b6aÁ miniz_oxideÁ€š»J(P>àö÷g\K-1eb618da2918ab7fÁadler2ÁÆ;+Þ®5¥Ìýݰ¦ÛLˆ-f7919172d268e069Á hashbrownÁPäV9ÒÆèÜ"ÊÖVŽ\-0fc2184a5da6723aÁrustc_std_workspace_allocÁs&ØòØy¯s•bæ!‰ýŠ-97e4bf30be240674Á
std_detectÁhŠBîÙºÌI®ËÅš-9dbbf8346ba7ac8bÁrustc_demangleÁûë9´Ç×@Œ’ùXFº-f33013f239bf9f14Ácfg_ifÁÜLhž§Œaã¯>­-0a71c8f33a838301Á addr2lineÁ׎Þ!]8V$É@@-e618e6be60e87ba2ÁgimliÁ¸
°µ~Î1‹Ñt ðÁ€w-1f7768a68858f670ÁobjectÁ
áPÃ?­À¶¼QHJ¥-914cd6a4dbe590d1ÁmemchrÁ›º«8Ór­2Ù $¨ûib-cf21ca6f2bb15dcdÁë
‹ás«LÖ€îâƒ×ɯŒ-ee6f3747e38367f0Ácrossbeam_utilsÁI^`Ýþh3 ²Þâò]áó-e51418303cdc2645Á once_cellÁ4¤83æl0è{—tE-67622b8a8d4197b3ÁÚ+z˜ÖËó>zj–„÷-8f89ea8b6e77f2aaÁâ<"ú⬠MonotonicÁL`úâ¬1 wasm_browserÁd«ì×´vìLì×´Ã wasm_wasiÁLØì×´¦ìì×´íhas_counter_supportÁœXìõ´õ œÆìõ´Ïðµ¼çüÎ1켉úiosÁŒ¦œ¥üˆ1üÅvüÁ{0testsÁ,ˆM$ýLYù
,¨4$4{ù
,¸ $­ ù
,·°$¬°ÀclocksÁ counterÁ
 nowÁ   monotonicÁú    detectionÁõ mockÁIntoNanosecondsÁ
into_nanosÁ Ÿ
"Ÿ
$æ $ incrementÁ&Ÿ& $ decrementÁ)Ÿ) $»
  instantÁ0000000000 0
0< <recentÁ<duration_sinceÁ<checked_duration_sinceÁ<saturating_duration_sinceÁ<elapsedÁ< checked_addÁ< checked_subÁ0E°E0H0J°JÚ0MÛ0O°OÚ0Rï
0T0V×
upkeepÁYYYYYYYYYY Y
Y Y Y
YYGLOBAL_UPKEEP_RUNNINGÁYj×YlsourceÁYnæ nnew_with_clockÁn¹q q Ytãu statsÁ{||meanÁ|
mean_errorÁ|mean_with_errorÁ|has_significant_resultÁ|samplesÁ GLOBAL_CLOCKÁ
GLOBAL_RECENTÁGLOBAL_CALIBRATIONÁMINIMUM_CAL_ROUNDSÁMAXIMUM_CAL_ERROR_NSÁMAXIMUM_CAL_TIME_NSÁŠæ Šreset_timebasesÁŠscale_src_to_refÁŠ calibrateÁŠadjust_cal_ratioÁ >æ  î  @scaledÁdelta_as_nanosÁdeltaÁß>Ÿƒ
with_clockÁ¡¥¡impl FnOnce() -> TÁ¡ 
set_recentÁget_nowÁ¦ 
get_recentÁmul_div_po2_u64Á
CounterÁª

¬ƒ
®×
°>ì²_defaultÁµƒ¸×º>MockÁ¼ž
¾×Àƒ0InstantÁÂ
ˆ0 0
ƃ0 0 0
Ê0ÌÖYUpkeepÁÎintervalÁÎclockÁYÑ×YHandleÁÓdoneÁÓhandleÁYÖ×YErrorÁØ
UpkeepRunningÁÙ
ØFailedToSpawnUpkeepThreadÁÛ
ÛˆYÞ×{VarianceÁàÇàmean2Áà¹{ä>CLOCK_OVERRIDEÁæ__rust_std_internal_init_fnÁæ è é__RUST_STD_INTERNAL_VALÁè ëÖ ClockTypeÁíìî
îˆí¥ñ
ñˆññŠíö
öˆù× CalibrationÁûref_timeÁûsrc_timeÁû scale_factorÁû scale_shiftÁ× ƒClockÁinnerÁ
ˆ× Šƒ
&
)
,
?
@
A
B
C
D
I
N
S
S
U
U
W
W
W
k
k
k
m
u
}
~




Œ
Œ

Ž
Ž



˜

š

œ
 
¡
­
¯
¯
¯

¹
¹
¹
¿
¿
¿
Á
Ç
Ë
Ë
Í
Ò
Ò
Ò
×
×
×
ß
ß
ß
ú
ú
ú








تª«¥ «‘n˜åêœq¿c"³"Û²²ì³ã.‹«Ùº×=äØÓ"Š Ó"¿cÓ"³Ó"­Ö­ÖDurationÁ®ÖsecsÁâ}¯ÖnanosÁâ}Zµ–²ª¿c¼¼½ž
n¢ñHðÇ·ìØ$ÛÂÂÃÈĈ !drù¸‘ØË$Š Ë$ÐìË$µßË$Ë$Ë$Ä Ë$·#ÙõË$·#ïË$·#œöË$·#ïË$Ë$íßË$Ë$ºË$¿cË$¿cÎÎÏ¡YбY)µÍ…áˈ/¿cÓÓÉÔ×YÕãY%ÑÇQ‡ª«¿cØÙÚÛܣ݈§dIÜUðDÄcŸ'¾Ÿ'Œ"à&³ààÜáÇ{âô{ã¹{n&Y虩Ž¿cíîïìðˆñò¥óˆôõŠö÷øˆ(arx¿cûûìüÿýþŸÿ³ýë—¤2ÔÖŠ Ñ)ÛÑ)ØÑ)³Ñ)¿cåò…BI]õDfØÎ*³Î*ØÍ(¬ªµ²À¼ÆÂûŠŸí®ª¸²¾¼VÂÑÎÖÓÞØùíûˆ°ªº²äàû´²Åƒû·²ÈÂû "­ÖÉÂÊÂÌÂEÂHÂJÂOÂMÂRÂTÂjØlØtÓØŸ¿c
1³EÛ#Š Ðì µßÄ Ùõïœö íߺÄc¾Œ"­( "
" *(
 
êc.3;¯QÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ Èü éBLÓ¿.Ú  c cˆ¢cµ
 `£cbufÁ `àB¤GS
 ø.(2±@KŠ/U±8"
( Ó" Ó"&0(
 ø.`B
ø.Ž0%1 ¿caf
ùcw|mr޹¤À/¯¦2Å0½ø.Äø.· 3¾  Ž0˦4Òï±ü¤4 3þº3`B
´Ž0$»8Ó"
Ž0Eÿ4U(Š  ø.௠ ø.†J†JK‰Jµ 7ŠJphantomÁ7J¤7·0ØQdèEE
AtomicCellÁG»4€éΩ#Çc®#çEçEèEGlobalÁ ¿±‡§í#ÒÞ 3 º33 ¿KÀ/W $bÅ0jø.rø.e 3m  6{Ü8ƒ¢±°»Ú8 3²º3Í௠‹6
Ù6,4(  ¼Á*$5¯8<6{Ü8S]Ì9žœÓ  
Ÿ   ‹6üð G
ë!‹6.!ü–   (ê:®#Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ®# ®# ¦d‰ 
b®#(ê:Û;Þ;°<ã®ü‰ .ôÌ 

ø.üð { 
ò[®#®#
:üÅ &ò &ü… íüÆ ¬ Ž0» ¯8 ê: ®# ®#Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
®#®#Ñ ×6ÜÜ8ùÒ<Dz<Ïø.¨amountÁ²©>òå:x¥;=Ê<CŸ=Q ²<„¥  *®#´   Û¼®# (²å;Ÿ  Ò<Ê®#<— ®#®#²®#ž²<ócurrentÁ3©>Dz<! _ref__amountÁœ÷

å:

\”‹6ü”G¥;(üº   +ê:Û;Þ;°< Ld­
b®#+ê:Û;Þ;°<Zü­.ôð

ø.ü”{Ÿ=³
0üé&)ü©
íüê
¬ Ž0ß
¯8
ê:
®#
®#w•>î>$Ü8A˜C²<ø.¼S©>W©>[å:±¥;~CŸ=ì²<„É *®#´Ä Û¼®#Ú+øå;Ã ˜C®#®#®#²£A²<6¹@)©>a²<]ì@(Ø
Ý
Ç"'Ë$3 Ë$=FPpˆ ®#®##î
ËHå

þGþG®#g®#n2¹
?Iò
Íð
Ž0þG$.( ¥ ø. Å ø.·#& 3` Ý ø.
Î*& 
2  3
ûc¥ªšŸnsÆ ªÒÝ À/è ¡&òÅ0ùø.ø.ó 3ú ·#ø.Ö 3Ý  Î*êÁLñE±S^¦L 3U¿L 3'­Kx(!Û  ø.¨!û 
ø.†J†JK‰Jµ 7ŠJ©57J¤7·0ØQdè¤]¤]V¦]Á‚]üß3ø¤”&Ž7š 3ð!–  ø.
Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÁÁÂ
JoinHandleÁĈ¦ ¯óyÃéߎ0§ 
³  3Š­KŽðõ¼×Ô À/à à&ëÅ0óø.ûø.î 3ö ÏMø._ 3g  ùNuÄQ}F±T_§Q 3VÂQ 3´­Ky("‡"H"Уßßüà ¬
ÑøÿËO Ÿmu ø.Wc 3¢
‡d³¸ÅÉÑ
ø.ÝâŠ/îóûß À/% Ÿ'0Å08@ø.H ÛR+ø.[ 3; éTFx±__self_0Át¥„U 3ÄS·Š/½H'ƒ
´P'ôU0'¢
´®#8'Ø àå0ƒ(;úU úU®#pWôU¾ôU¡²VŠù-·e

é-·e
¾Ë/Ë/ÉÍ/borrowÁÌ-Î/»Ì-ð…žf+4šÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÎ*ù-ÕúeèÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÜW ÜWôX±dù,faæ®®£°ò¨it§ÅLS¶ÜWá,¢faXèôXôX$ÃE Û¼Î*”¶Ed¶E
Û/œX4#-˜eçù-ÔDeÜW´EœXm È[dù-ðe
é-ðe
ÐÜW/5ù-¦®e  éùXŒZŽ0/ôX -¿eù-íÔeù-‚!­e  ë„]‡]Ž0#ôX -!eM -À$eù-ÛôeèôXé„]‡]Ž0åë„]‡]Ž0ŸS¹-äeêù-äZeY-üe
ÇiÜWŽ0
ç9Á-ˆ eÙ-¢ e®_ ù-üBe-Ô e鈌Ze Á^¢Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ÄYÁ-§e ¾i¾iStorageÁÁi»¬iÂiº¬i7·O|5‡ÜWŽ01__rust_std_internal_initÁuq¢_Wô®#500Á
®#10ÁTHHÈ®#$—Hè®#; 8È®#6è®#p®#Œ‘H$žHè®#$ 'è®#J®# ¡HüðG3®#‹H®#£A£A˜<(.®H$H.˜I†J†JK‰Jµ 7ŠJ©57J¤7·0ØQdè$Ž7Œø.t 3¼ÁÄSÍÒ­ßH.íH¥Ó"8.øH ¥"X.I
¥Ñ)1 :ø.b  3X
  3N
Z 3ƒ
‹d ¡ Ä
¯š¹H.ÕHìÓ"Øá ø..: 3
ÄS#k1.³HúIOV]À/j Í(uÅ0}ÙT¦2Ïø. 3Þ ¦2è¦2Ê¿.¸ Ñ)©ø.È 3í 3Û 3É ‰jÔ eÌø.þ 3Ü ¿jç±)®Ty®T`__self_1ÁZ __self_2ÁT
®TMÚj 3bÄS¦2 3·¿. 3¥´j 3ßg°ïi 3úÄS¾(/°I  ø.h/éI ø.®#& 3h/üI ø. ®#&  3ˆ/J
  ø. ®#&   3€/¦J
  ø.&2 3û
ÿc
 ßä
³ ¸
ŒK/µIcÀ/o‰jwÅ0ø.ø.z 3²<Šø.\ 3d²<lø.> 3F²<Nø.  3(  óm6ÿo>ÿ±
²< 3²< 3á²< 3³ýo 3 nB(1½I1ÂI"'-Ñ)9‰j@IS(2äk ø.€2Šl ø.Í(&2 3Y^º3jo_d2ék˜À/£ÁLªÅ0±ø.¸ø.ª 3± ¾i»¾iÂà±í÷“s 3íº3€3ŠlÍ(
ÙÍ(,4(3ëk 3ðk*Î*5ÁL<Í({¾iS]üsžt¾¢ ¡¥¼ ÁZüÒ¢ ¤™uŸu ÜW™uÁLŸuü¾¢¥$Í¢
¿ÜW¤™uŸuÄuÇuÝu™už|ü͢壡üø¡í™u ¶¢ÁL,¢Ÿu œ¢¦uõˆvÕ±%±(V!æÁZÿuÊ=FæÁZSb¡«¦u}ÁZæÁZ ê¢   ' /,…£
ÁLl…£,‹£
ÙÎ*
0 <‹£œ€£ Û¼Î*üð¢$<ø¢
Ý/œX<ð¢B äø¢ “£   «£  Ÿu«£.
™"ŸuŽ0BŽ0% .È£   ¤¸£<À£Òy<¸£ @dÀ£ Ì£4Ö£ ᣠ â£" Z; K  [Ÿuo 
¤­üæ¢|üž£D
™uÛ¢ˆv× ÜW<Ó¢œXmœXüÎ*0™u4¢£Ÿu¯œX=œXgÁL& ¹@]±ÁL±ŸuoldÁñ xˆyÂÒy¾zÒyÇœX™uœXŠŸu _ref__clockÁ±”õ
 ÂÃ%Ë$0®#7>̶ ØÜ%Ÿ'0ÛR7>LËH íï%Í(0Ó"7><åH íò+Í(6Ó"="DÑ)KR$“I í÷%Í(0e7> 0Y{„ˆ¡¥¦¨©æíûÀß5T³>EÃ"DÎ>­ÖÉ<è>Ë/K÷>†JOnceCellÁD“?¯¥<½?ª
¥«
ìLÆ?²
|€@.$@¼/È<¼@ÂXÈÃXü,è@ØxÉ4ï@Óy4÷@ÎzÜDœAàƒü£åü2/ Performant cross-platform timing with goodies.Á3úü7c` `quanta` provides a simple and fast API for measuring the current time and the duration betweenÁü›`] events. It does this by providing a thin layer on top of native OS timing functions, or, ifÁüüIF available, using the Time Stamp Counter feature found on modern CPUs.ÁÆú # DesignÁ×úüÛda Internally, `quanta` maintains the concept of two potential clock sources: a reference clock andÁœÀ a source clock.ÁÔúüØa^ The reference clock is provided by the OS, and always available. It is equivalent to what isÁüºda provided by the standard library in terms of the underlying system calls being made. As it usesÁüŸa^ the native timing facilities provided by the operating system, we ultimately depend on the OSÁü1. itself to give us a stable and correct value.Á³úü·_\ The source clock is a potential clock source based on the [Time Stamp Counter][tsc] featureÁü—`] found on modern CPUs. If the TSC feature is not present or is not reliable enough, `quanta`Áüø;8 will transparently utilize the reference clock instead.Á´úü¸]Z Depending on the underlying processor(s) in the system, `quanta` will figure out the mostÁü– c` accurate/efficient way to calibrate the source clock to the reference clock in order to provideÁüú +( measurements scaled to wall clock time.Á¦
úüª
@= Details on TSC support, and calibration, are detailed below.Áë
ú
 # FeaturesÁþ
úü‚ ^[ Beyond simply taking measurements of the current time, `quanta` provides features for moreÁüá UR easily working with clocks, as well as being able to enhance performance further:Áü· '$ - `Clock` can be mocked for testingÁüß ?< - globally accessible "recent" time with amortized overheadÁŸ
ú”£
 ## Mocked timeÁ
úüº
[X For any code that uses a `Clock`, a mocked version can be substituted. This allows forÁü–a^ application authors to control the time in tests, which allows simulating not only the normalÁüøa^ passage of time but provides the ability to warp time forwards and backwards in order to testÁüÚb_ corner cases in logic, etc. Creating a mocked clock can be acheived with [`Clock::mock`], andÁü½1. [`Mock`] contains more details on mock usage.Áïúüó(% ## Coarsely-updated, or recent, timeÁœúü c` `quanta` also provides a "recent" time feature, which allows a slightly-delayed version of timeÁü„b_ to be provided to callers, trading accuracy for speed of access. An upkeep thread is spawned,Áüçb_ which is responsible for taking measurements and updating the global recent time. Callers thenÁüÊda can access the cached value by calling `Clock::recent`. This interface can be 4-10x faster thanÁü¯c` directly calling `Clock::now`, even when TSC support is available. As the upkeep thread is theÁü“da only code updating the recent time, the accuracy of the value given to callers is limited by howÁüø^[ often the upkeep thread updates the time, thus the trade off between accuracy and speed ofÁ\× access.Áãúœç # Feature FlagsÁûúüÿ_\ `quanta` comes with feature flags that enable convenient conversions to time types in otherÁäß popular crates, such as:ÁüüYV - `prost` - provides an implementation into [`Timestamp`][prost_types_timestamp] fromÁœÖ `prost_types`Áêú´î # Platform SupportÁúü‰^[ At a high level, `quanta` carries support for most major operating systems out of the box:ÁüèDA - Windows ([`QueryPerformanceCounter`][QueryPerformanceCounter])Áü­A> - macOS/OS X/iOS ([`mach_absolute_time`][mach_absolute_time])Áüï;8 - Linux/*BSD/Solaris ([`clock_gettime`][clock_gettime])Á«úü¯`] These platforms are supported in the "reference" clock sense, and support for using the TimeÁüGD Stamp Counter as a clocksource is more subtle, and explained below.ÁØúœÜ ## WASM supportÁðúüô_\ This library can be built for WASM targets, but in this case the resolution and accuracy ofÁüÔ[X measurements can be limited by the WASM environment. In particular, when running on theÁü°`] `wasm32-unknown-unknown` target in browsers, `quanta` will use [window.performance.now] as aÁü‘`] clock. This mean the accuracy is limited to milliseconds instead of the usual nanoseconds onÁüòa^ other targets. When running within a WASI environment (target `wasm32-wasi`), the accuracy ofÁüÔ /, the clock depends on the VM implementation.Á„!úŒˆ! # TSC SupportÁš!úüž!WT Accessing the TSC requires being on the `x86_64` architecture, with access to SSE2.Áüö!da Additionally, the processor must support either constant or nonstop/invariant TSC. This ensuresÁüÛ"EB that the TSC ticks at a constant rate which can be easily scaled.Á¡#úü¥#b_ A caveat is that "constant" TSC doesn't account for all possible power states (levels of powerÁüˆ$a^ down or sleep that a CPU can enter to save power under light load, etc) and so a constant TSCÁüê$]Z can lead to drift in measurements over time, after they've been scaled to reference time.ÁÈ%úüÌ%c` This is a limitation of the TSC mode, as well as the nature of `quanta` not being able to know,Áü°&[X as the OS would, when a power state transition has
# CaveatsÁŸ4úü£4b_ Utilizing the TSC can be a tricky affair, and so here is a list of caveats that may or may notÁü†5'$ apply, and is in no way exhaustive:Áü®5'$ - CPU hotplug behavior is undefinedÁôÖ5 - raw values may time warpÁüõ5WT - measurements from the TSC may drift past or behind the comparable reference clockÁÍ6úüÑ6a^ Another important caveat is that `quanta` does not track time across system suspends. SimplyÁü³7b_ put, if a time measurement (such as using [`Instant::now`][crate::Instant::now]) is taken, andÁü–8_\ then the system is suspended, and then another measurement is taken, the difference betweenÁüö8GD those the two would not include the time the system was in suspend.Á¾9úüÂ9;8 [tsc]: https://en.wikipedia.org/wiki/Time_Stamp_CounterÁüþ9^[ [QueryPerformanceCounter]: https://msdn.microsoft.com/en-us/library/ms644904(v=VS.85).aspxÁüÝ:eb [mach_absolute_time]: https://developer.apple.com/documentation/kernel/1462446-mach_absolute_timeÁüÃ;>; [clock_gettime]: https://linux.die.net/man/3/clock_gettimeÁü‚<`] [prost_types_timestamp]: https://docs.rs/prost-types/0.7.0/prost_types/struct.Timestamp.htmlÁüã<^[ [window.performance.now]: https://developer.mozilla.org/en-US/docs/Web/API/Performance/nowÁ 0Y{„ˆ¡¥¦¨©æíûÀÚ$ß5Û$EÃ"Ú$­ÖÉÙ$Ë/KØ$†JÐ$¯¥Ï$ª
¥ä$«
ìÏ$²
Î$.Í$¼/ÈÌ$ÂXÈÜ$ÃXüÌ$ØxÉË$ÓyÊ$ÎzÜÉ$àƒ &&&üš>#
&œÃ>ÿ%Ü>lâ>ö%Lñ>ë%Ì‚?×%Tž?4¢?
¥<$ ª