Fast Positive Tuples, aka "ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΠΎΡΡΠ΅ΠΆΠΈ" by Positive Technologies.
ΠΠ°ΡΠΈΠ½Π½ΠΎ-ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ (Π΄Π΅)ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΠ±ΠΌΠ΅Π½Π° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. "ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΠΎΡΡΠ΅ΠΆΠΈ" ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ΅Π·ΠΈΡΠΎΠΌ "ΠΡΡΡΠ΅ ΠΌΠ΅Π½ΡΡΠ΅, Π΄Π° Π»ΡΡΡΠ΅".
Machine-handy format for linear representation of small data structures for (de)serialization, messaging and placement in shared memory. "Fast Positive tuples" is designed according to the "Less is more" idiom. English translation by Google and by Yandex.
The Future will (be) Positive. ΠΡΡ Π±ΡΠ΄Π΅Ρ Ρ ΠΎΡΠΎΡΠΎ.
"ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΠΎΡΡΠ΅ΠΆΠΈ" - ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΎΡΠΌΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ, ΡΠ΄ΠΎΠ±Π½ΠΎΠΌ Π΄Π»Ρ ΠΌΠ°ΡΠΈΠ½Ρ Π²ΠΈΠ΄Π΅. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° libfptu ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠΎΡΠΌΠ°ΡΠ° "ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ", ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ C++14 ΠΈ Π²ΡΡΠ΅.
ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ libfptu ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡ JSON, ΡΠΊΠΎΡΠΎΡΡΡ Π½Π°ΡΠΈΠ²Π½ΡΡ ΡΡΡΡΠΊΡΡΡ ΡΠ·ΡΠΊΠ° C Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ boost::optional ΠΈ boost::variant. Π Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ libfptu ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡ Π΅ΠΌΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ (aka preplaced) Π΄Π»Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ ΠΊ Π½Π°ΡΠΈΠ²Π½ΡΠΌ ΡΡΡΡΠΊΡΡΡΠ°ΠΌ ΡΠ·ΡΠΊΠ° C, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ (ΡΡΠ΅Π½ΠΈΡ) ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ Π² ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ, Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° libfptu ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠ²ΠΎΠΉ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ ΡΡΠ°ΡΠ°Π΅ΡΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π΅Π΄ΡΡ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΌΠ°ΡΠΈΠ½ΠΎΠΉ ΠΈΠ»ΠΈ ΡΡΠ΅Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΡ Π΄Π°Π½Π½ΡΡ .
- ΠΡΠ»ΠΈΡΠΈΡ ΠΎΡ MessagePack, Protocol Buffers, BJSON
- ΠΠ±Π·ΠΎΡ
- ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
- Π‘Ρ Π΅ΠΌΠ° Π΄Π°Π½Π½ΡΡ
- ΠΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ ΡΠΎΡΠΌΡ
- (ΠΠ΅)Π‘Π΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅
- Π§ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ
- Π Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΡ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ
- Π£ΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ ΠΊ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΌ Π΄Π°Π½Π½ΡΠΌ
- ΠΠ½ΡΡΡΠΈ
1. ΠΠ΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΠΎΡΡΡ ΠΈ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ Π΄Π»Ρ ΠΌΠ°ΡΠΈΠ½Ρ. ΠΠΈΡΠ΅Π³ΠΎ Π»ΠΈΡΠ½Π΅Π³ΠΎ. ΠΠ±ΡΡΠΌ ΠΊΠΎΠ΄Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½, Π° Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΠ° Π»ΠΈΠ½Π΅ΠΉΠ½Π° ΠΈ ΠΏΡΠΎΡΡΠ°.
"ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ" Π½Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π»ΠΈΡΠ½Π΅Π³ΠΎ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ IDL ΠΈ ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΎΡ, Π½ΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ ΠΊΠ°ΠΊ Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Ρ ΡΡΡΠΎΠΊΠΈ, ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ ΡΡΠ°ΡΡΠΊΠ΅ ΠΏΠ°ΠΌΡΡΠΈ.
2. ΠΠ΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½Π°Ρ (Π΄Π΅)ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ. ΠΠΎΡΡΠ΅ΠΆ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±Π°ΠΉΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ (Π΄Π΅)ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π² "ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΠΎΡΡΠ΅ΠΆΠΈ" ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈ Π±ΡΡΡΡΠ°Ρ.
ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΏΡΠΎΡΡΡΠΌ ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΡΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ Π² Π·Π°ΡΠ°Π½Π΅Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ Π±ΡΡΠ΅Ρ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³Π΄Π° Π³ΠΎΡΠΎΠ²ΠΎ, Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΈΡ Π½Π°ΡΠ°Π»ΠΎ.
3. ΠΡΠ΅Π½Ρ Π±ΡΡΡΡΡΠΉ Π΄ΠΎΡΡΡΠΏ. libfptu ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΡΠ΅ΡΠ°ΡΡ ΡΠΊΠΎΡΠΎΡΡΡ ΠΏΡΡΠΌΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»ΡΠΌ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΡΠ°Π·ΡΠ΅ΠΆΠ΅Π½Π½ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ² Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΏΠΎΠΈΡΠΊΠΎΠΌ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅.
ΠΠ»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»ΡΠΌ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΅Π³ΠΎ "ΡΡΡΠΎΠ³ΠΎ" ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ "ΠΊΠ°ΠΊ Π΅ΡΡΡ" Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ ΡΡΠ°ΡΡΠΊΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, Π±Π΅Π· ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ, Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ -Π»ΠΈΠ±ΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ, ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΉ. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Ρ ΠΈΠ· ΠΊΠΎΡΡΠ΅ΠΆΠ°, Π² Ρ ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ, ΠΊ SIMD-ΠΏΠΎΠΈΡΠΊΡ Π΅Π³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅. Π§ΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΠ΅Π½ΠΈΡ Π»ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΡΡ-Π»ΠΈΠ½ΠΈΠΈ Π΄Π»Ρ ΠΏΠ΅ΡΠ²ΡΡ 15 ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΡΠ΅ 16 ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ .
4. ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π΄Π΅ΡΠ΅Π²Ρ. Π ΠΎΡΠ»ΠΈΡΠΈΠΈ ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ, ΠΏΠΎΠ»Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈ ΡΠ΄Π°Π»ΡΡΡ.
ΠΡΠΈ ΡΡΠΎΠΌ Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π·Π°Π·ΠΎΡΡ, Π° Ρ Π²Π°Ρ ΠΏΠΎΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΠ±ΠΎΡ: ΠΏΠΎΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΡΠΎΠΌ ΠΈΠ»ΠΈ Π·Π°ΠΏΡΠΎΡΠΈΡΡ Π΄Π΅ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ, Π² Ρ ΡΠ΄ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅, Π½Π΅ Π΄ΠΎΡΠΎΠΆΠ΅ ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ°.
5. ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠΌΠ½Π΅Π΅ ΡΠ΅ΠΌ MessagePack. ΠΠ°Π½Π½ΡΠ΅ Ρ ΡΠ°Π½ΡΡΡΡ Π² Π½Π°ΡΠΈΠ²Π½ΠΎΠΌ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ, Π±Π΅Π· ΡΠΆΠ°ΡΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π½Π° 3-4 Π±Π°ΠΉΡΠ° Π±ΠΎΠ»ΡΡΠ΅.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΠΎ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈ ΡΠΈΡΡΡ. Π ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π² Π΄Π°Π½Π½ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ 64-Π±ΠΈΡΠ½ΡΡ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ Ρ Π±Π»ΠΈΠ·ΠΊΠΈΠΌΠΈ ΠΊ Π½ΡΠ»Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² libfptu ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ Π΄ΠΎ 12 ΡΠ°Π· Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ MessagePack (1 Π±Π°ΠΉΡ Π² MessagePack, ΠΏΡΠΎΡΠΈΠ² 12 Π±Π°ΠΉΡ Π² libfptu).
ΠΠ΄Π½Π°ΠΊΠΎ, "ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΠΎΡΡΠ΅ΠΆΠΈ" Π½Π΅ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅ΡΠ΅Π±ΡΡΠ½ΠΎΠΉ ΠΏΡΠ»Π΅ΠΉ ΠΈ Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ Π΄Π»Ρ ΡΠ»ΡΡΠ°Π΅Π²:
- Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΡΠΈΡΠ°Π΅ΠΌΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π΄Π°Π½Π½ΡΡ .
- Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ IDL ΠΈ/ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ΠΎΠ³Π΅Π½Π΅ΡΠ°ΡΠΎΡ.
- Π’ΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ°ΠΌΠΎΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉΡΡ ΡΠΎΡΠΌΠ°Ρ Π΄Π°Π½Π½ΡΡ .
- Π ΡΡΡΡΠΊΡΡΡΠ°Ρ Π±ΠΎΠ»Π΅Π΅ 2000 ΠΏΠΎΠ»Π΅ΠΉ.
- Π Π°Π·ΠΌΠ΅Ρ ΠΎΠ΄Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ Π±ΠΎΠ»Π΅Π΅ 250 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ.
- ΠΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ° Π²Π°ΠΆΠ½Π΅Π΅ ΡΠΊΠΎΡΠΎΡΡΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ Π·Π°ΡΡΠ°Ρ Π½Π° (Π΄Π΅)ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
"ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ" ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΌΠ°ΡΠΈΠ½Π½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΠ½ΠΎ ΠΏΡΠΎΡΡΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡΡΠΎΠΌΡ:
-
ΠΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ°ΡΠΈΠ½Π΅. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ "ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ" Π½Π΅Π»ΡΠ·Ρ ΠΎΡΠ½Π΅ΡΡΠΈ ΠΊ ΡΠ°ΠΌΠΎ-ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΌΡΡ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ .
-
ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΠ΅Π½Π½ΡΡ ΡΡ Π΅ΠΌΡ Π΄Π°Π½Π½ΡΡ , Π° ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΠΈΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ. ΠΡΠΈ ΡΡΠΎΠΌ, ΠΏΠΎ Π²ΡΠ±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΠ΅ΡΠ°ΡΡ Π±Π΅Π·-ΡΡ Π΅ΠΌΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈ/ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡ Π΅ΠΌΠΎΠΉ.
-
ΠΠ΅ ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΏΠΎΠ»Π΅ΠΉ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ TypeId Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ΅Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ².
Π Π°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ 250 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡΠ°ΠΌΠΈ ΠΈ 8 ΡΡΡΡΡΠ°ΠΌΠΈ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΏΠΎΠ»Π΅ΠΉ. ΠΠΎΠ»Ρ Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΡΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΡΡ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΌΠΈ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»ΡΠΌ ΡΠ΅ΡΠ΅Π· API. ΠΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΡΡΠΎ ΡΠΎΠΊΠ΅Π½Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΌΠΈ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π² ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ Π΄Π»Ρ ΠΌΠ°ΡΠΈΠ½Ρ ΡΠΎΡΠΌΠ΅. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΡΡ Π΅ΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»Π΅ΠΉ Π² ΡΠΎΠΊΠ΅Π½Ρ.
ΠΠΎΠ»Ρ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΡΡ Π΄Π²ΡΡ Π²ΠΈΠ΄ΠΎΠ²: ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ (preplaΡed) ΠΈ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ (loose). ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π² ΡΠ°Π·Π½ΡΡ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠ°Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠΎΡΠΎΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ ΡΠ°ΡΡ ΠΎΠ΄ΡΠ΅ΠΌΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ. ΠΠΎΡΡΡΠΏ ΠΊ ΠΏΠΎΠ»ΡΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ, Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΠΈΠ΄Π° ΠΏΠΎΠ»Ρ.
ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ preplaced-ΠΏΠΎΠ»Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Ρ ΠΏΠΎΠ»ΡΠΌ Π²
ΡΡΡΡΠΊΡΡΡΠ°Ρ
ΡΠ·ΡΠΊΠ° C
, ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ ΠΈ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ
ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΡΡ
Π΅ΠΌΠΎΠΉ.
Π ΠΊΠΎΡΡΠ΅ΠΆΠ΅, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡ Π΅ΠΌΠ΅, ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ preplaced-ΠΏΠΎΠ»Ρ Π²ΡΠ΅Π³Π΄Π° ΠΈΠ·Π²Π΅ΡΡΠ½Ρ ΠΈ Π·Π°Π²ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ ΡΡ Π΅ΠΌΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ preplaced-ΠΏΠΎΠ»Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ Π½Π°Π»ΠΈΡΠΈΠ΅ ΡΡ Π΅ΠΌΡ Π΄Π°Π½Π½ΡΡ , Π½ΠΎ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΈΡΠΊΠ° ΠΈ ΡΠ°Π²Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΡΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ, ΡΠΎΠΊΠ΅Π½ Π΄ΠΎΡΡΡΠΏΠ° Π»ΡΠ±ΠΎΠ³ΠΎ preplaced-ΠΏΠΎΠ»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°ΠΊΠΎΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅.
Preplaced-ΠΏΠΎΠ»Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅Π³Π΄Π° ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ. ΠΡΠΈ ΡΡΠΎΠΌ Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² c ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ Π΄Π°Π½Π½ΡΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΡΠΎΠΊ) Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²Π½ΡΡΡΠΈ ΠΏΠΎΠ»Ρ Ρ ΡΠ°Π½ΠΈΡΡΡ Π»ΠΈΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π΄Π°Π½Π½ΡΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π² ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ°.
ΠΠ°ΠΊΠ»Π°Π΄Π½ΡΠ΅ ΡΠ°ΡΡ ΠΎΠ΄Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ preplaced-ΠΏΠΎΠ»ΡΠΌ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ²Π΅Π΄Π΅Π½Ρ ΠΊ Π½ΡΠ»Ρ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊ ΡΡ Π΅ΠΌΠ΅ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠΈΠΊΡΠΈΡΡΠ΅ΡΡΡ. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ ΡΡΠΎ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠΊΠ΅Π½-ΠΊΠ»Π°ΡΡΠΎΠ², ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΡΠΏΠΎΡΠΎΠ±Π΅Π½ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ inline-ΠΊΠΎΠ΄ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ.
ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ libfptu ΠΌΠΎΠΆΠ΅Ρ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ preplaced-ΠΏΠΎΠ»Π΅ΠΉ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ , ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Ρ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠΉ "ΠΏΡΡΡΠΎΡΡ". ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°ΠΊΠΈΡ DENIL-Π·Π½Π°ΡΠ΅Π½ΠΈΡ (designated NIL) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΡΠ°ΠΉΠ½Π΅Π΅ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ (INT_MIN).
Π‘Π²ΠΎΠ±ΠΎΠ΄Π½ΡΠ΅ ΠΈΠ»ΠΈ loose-ΠΏΠΎΠ»Ρ Π²ΡΠ΅Π³Π΄Π° ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½Ρ ΠΈ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠΈ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ΅. ΠΠ»Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΡ loose-ΠΏΠΎΠ»Π΅ΠΉ Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅ΡΡΡ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΠΏΠΎΠ»Ρ ΠΈ ΡΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ . Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, loose-ΠΏΠΎΠ»Ρ Π²ΡΠ΅Π³Π΄Π° Π½Π΅ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠΈΠΏΠ΅ ΡΠ²ΠΎΠΈΡ Π΄Π°Π½Π½ΡΡ , ΡΠ²Π»ΡΡΡΡΡ ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΠ°ΠΌΠΎ-ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΌΠΈΡΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π±Π΅Π·-ΡΡ Π΅ΠΌΠ½ΡΠ΅ ΡΡΠ΅Π½Π°ΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ loose-ΠΏΠΎΠ»Ρ ΠΌΠΎΠ³ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ Π²
ΠΊΠΎΡΡΠ΅ΠΆΠ΅, ΠΎΠ±ΡΠ°Π·ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π½Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠ΅ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ,
ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ repeated fields
Π² Protocol Buffers. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ
ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π² ΡΡ
Π΅ΠΌΠ΅ ΠΊΠ°ΠΊ "ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ".
ΠΠ»Ρ ΠΏΠΎΠΈΡΠΊΠ° loose-ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ libfptu ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ Π°ΠΊΡΠ΅Π»Π΅ΡΠ°ΡΠΈΠ΅ΠΉ SSE2/AVX/AVX2/AVX512, ΡΠ°ΠΊ ΠΈ ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΡ Ρ Π΄Π²ΠΎΠΈΡΠ½ΡΠΌ ΠΏΠΎΠΈΡΠΊΠΎΠΌ.
ΠΠ½ΡΡΡΠΈ libfptu Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ loose-ΠΏΠΎΠ»Ρ Π² ΠΊΠΎΡΡΠ΅ΠΆ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π΄ΠΎΠ·Π°ΠΏΠΈΡΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Π² Π½Π°ΡΠ°Π»ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΠΈ Π΄ΠΎΠ·Π°ΠΏΠΈΡΠΈ Π΄Π°Π½Π½ΡΡ Π² ΠΊΠΎΠ½Π΅Ρ ΠΊΠΎΡΡΠ΅ΠΆΠ°. ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ loose-ΠΏΠΎΠ»Ρ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΏΠΎΠΈΡΠΊΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅, Π° Π·Π°ΡΠ΅ΠΌ ΡΡΠ΅Π½ΠΈΡ Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎ Ρ ΡΠ°Π½ΠΈΠΌΠΎΠΌΡ Π² Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ loose-ΠΏΠΎΠ»Π΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ Π²Π°ΡΠΈΠ°ΡΠΈΠ²Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ (ΡΡΡΠΎΠΊΠΈ, Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ, Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ), ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΠ°ΡΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΠΈΠΊΠ²ΠΈΠ΄ΠΈΡΡΡΡΡΡ Π΄Π΅ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ. Π’Π°ΠΊΠ°Ρ Π΄Π΅ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π΅ Π΄ΠΎΡΠΎΠΆΠ΅ ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ.
ΠΠ°Π±ΠΎΡ ΡΠΈΠΏΠΎΠ² Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ ΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π²ΡΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΠ΅ Π½Π°ΡΠΈΠ²Π½ΡΠ΅ (ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅) ΡΠΈΠΏΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠΎΠΊΠΈ, Π΄Π°ΡΠ°/Π²ΡΠ΅ΠΌΡ, ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±Π°ΠΉΡ, IP-Π°Π΄ΡΠ΅ΡΠ°, IP-ΡΠ΅ΡΠΈ, MAC-Π°Π΄ΡΠ΅ΡΠ° ΠΈ Π΄Π°ΠΉΠ΄ΠΆΠ΅ΡΡΡ.
ΠΠΎΠ»Π½ΡΠΉ Π½Π°Π±ΠΎΡ ΡΠΈΠΏΠΎΠ² Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ enum fptu::genus
, Π·Π΄Π΅ΡΡ ΠΆΠ΅ ΡΡΠΎΠΈΡ
ΡΠΏΠΎΠΌΡΠ½ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
-
text
= Π‘ΡΡΠΎΠΊΠΈ UTF8 Π΄Π»ΠΈΠ½ΠΎΠΉ Π΄ΠΎ 262129 Π±Π°ΠΉΡ. ΠΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π΄Π»ΠΈΠ½Π° ΡΡΡΠΎΠΊ Ρ ΡΠ°Π½ΠΈΡΡΡ Π² ΡΠ²Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΡΡΡΠΈΠΉ Π½ΠΎΠ»Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌ Π²Π½ΡΡΡΠΈ ΡΡΡΠΎΠΊ. -
varbin
= ΠΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±Π°ΠΉΡ (Π±ΠΈΠ½Π°ΡΠ½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ) ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Π΄ΠΎ 262128 Π±Π°ΠΉΡ. -
nested
= ΠΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ. -
property
= ΠΠ°ΡΠ° ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ±Π°ΠΉΡΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° (ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π±Π°ΠΉΡ) ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Π΄ΠΎ 253 Π±Π°ΠΉΡ. -
datetime_utc
= ΠΠ°ΡΠ°/Π²ΡΠ΅ΠΌΡ Π² ΡΠΎΡΠΌΠ΅ 32-Π±ΠΈΡΠ½ΠΎΠ³ΠΎ Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΡΠ΅ΠΊΡΠ½Π΄ Ρ Π½Π°ΡΠ°Π»Π° Unix-ΡΠΏΠΎΡ ΠΈ 1970-01-01 00:00:00 +0000 (UTC). -
datetime_h100
= ΠΠ°ΡΠ°/Π²ΡΠ΅ΠΌΡ Π² ΡΠΎΡΠΌΠ΅ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠΎΡΠΊΠΈ 32-dot-32 ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ "Positive Hiper100re". -
decimal
= 64-Π±ΠΈΡΠ½ΠΎΠ΅ Π΄ΡΠΎΠ±Π½ΠΎΠ΅ Π² ΡΠΎΡΠΌΠ΅ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΈ Ρ Π΄Π΅ΡΡΡΠΈΡΠ½ΠΎΠΉ ΡΠΊΡΠΏΠΎΠ½Π΅Π½ΡΠΎΠΉ. -
bin96
..bin512
= ΠΠΈΠ½Π°ΡΠ½ΡΠΉ Π±Π»ΠΎΠΊΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 96/128/160/192/224/256/320/384/512 Π±ΠΈΡ. -
app_reserved_64
ΠΈapp_reserved_128
= Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΡΠΈΠΏΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ 64 ΠΈ 128 Π±ΠΈΡ.
ΠΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ, Π½ΠΎ Π² ΡΠ³ΠΎΠ΄Ρ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π½Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎΠ³ΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΌΠ°. Π ΡΠ΅Π»ΠΎΠΌ, Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π΄Π²Π° ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°:
-
ΠΡΠΎΠ΅ΠΊΡΠΈΡ, ΠΏΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½: Π΄Π΅Π»Π°Π΅ΠΌ
{ "Π€ΠΠ.ΠΠΌΡ": "ΠΠ²Π°Π½", "Π€ΠΠ.Π€Π°ΠΌΠΈΠ»ΠΈΡ": "ΠΠ΅ΡΡΠΎΠ²" }
Π²ΠΌΠ΅ΡΡΠΎ{ "Π€ΠΠ": { "ΠΠΌΡ": "ΠΠ²Π°Π½", "Π€Π°ΠΌΠΈΠ»ΠΈΡ": "ΠΠ΅ΡΡΠΎΠ²" } }
-
ΠΠ»ΠΎΠΆΠ΅Π½Π½Π°Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΡΠ½Π°ΡΠ°Π»Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΊΠΎΡΡΠ΅ΠΆ Ρ
"Π€ΠΠ"
, Π° Π·Π°ΡΠ΅ΠΌ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ Π²ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΡΡΡ Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΡΡΠ΅ΠΆ.
Π’ΠΎΠΊΠ΅Π½Ρ ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΌΠΈ, ΡΠ΄ΠΎΠ±Π½ΡΠΌΠΈ Π΄Π»Ρ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π½ΠΈΠΌ. Π’ΠΎΠΊΠ΅Π½Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ ΠΈΠ· "Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ° ΡΡ Π΅ΠΌΡ", Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΏΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π°ΠΌ ΠΏΠΎΠ»Π΅ΠΉ, Π»ΠΈΠ±ΠΎ ΡΠΎΠ·Π΄Π°Π½Ρ Π²ΡΡΡΠ½ΡΡ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ.
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠΎΠΊΠ΅Π½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΈ ΠΏΡΠΈΠ·Π½Π°ΠΊ "Π·Π°ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΏΡΡΡΠΎΡΡ", ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡ Π½ΡΠ»Π΅Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΡ loose-ΠΏΠΎΠ»Π΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ preplaced-ΠΏΠΎΠ»Π΅ΠΉ (ΡΠΌ Π΄Π°Π»Π΅Π΅ ΡΠ°Π·Π΄Π΅Π» "ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠ»Ρ").
ΠΡΠΎΠΌΠ΅ ΠΎΠ±ΡΠΈΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², ΡΠΎΠΊΠ΅Π½Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠ°Π·Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²ΠΈΠ΄Π° ΠΏΠΎΠ»Ρ. Π’Π°ΠΊ ΡΠΎΠΊΠ΅Π½Ρ preplaced-ΠΏΠΎΠ»Π΅ΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»Ρ Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ°. Π ΡΠΎΠΊΠ΅Π½Ρ loose-ΠΏΠΎΠ»Π΅ΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΡΠ³ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΠ»Ρ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ ΠΈ ΠΏΡΠΈΠ·Π½Π°ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ (ΡΠ»Π°ΠΆΠΎΠΊ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΏΠΎΠ»Ρ).
Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ C++
ΡΠΎΠΊΠ΅Π½Ρ ΡΠ²Π»ΡΡΡΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠΌ
Π½Π°Π±ΠΎΡΠΎΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ ΠΈ
ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½-ΠΊΠ»Π°ΡΡΡ:
-
ΠΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ Ρ ΡΠ°Π½ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π½Π΅-ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ΅ ΠΊΠ»Π°ΡΡΠ°
fptu::token
. Π Π°Π·Π½ΡΠ΅ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΌΠΎΠ³ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠΌ ΠΏΠΎΠ»ΡΠΌ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ, ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΎΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ° ΡΡ Π΅ΠΌΡ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.ΠΠΎΡΡΡΠΏ ΠΊ ΠΏΠΎΠ»ΡΠΌ ΡΠ΅ΡΠ΅Π· ΡΠ°ΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ ΡΠ½ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½, Π½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΡΡΠ»ΠΎΠ²Π½ΡΠΌΠΈ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ Π²Π½ΡΡΡΠΈ.
-
Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½-ΠΊΠ»Π°ΡΡΡ Π½Π΅ Ρ ΡΠ°Π½ΡΡ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π° ΡΠ²Π»ΡΡΡΡΡ "ΠΏΡΡΡΠΎΡΠ΅Π»ΡΠΌΠΈ" ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ, ΡΠΎΡΡΠΎΡΡΠΈΠΌΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· inline-ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠΎΠΊΠ΅Π½-ΠΊΠ»Π°ΡΡ ΠΈ Π²ΡΠ΅ Π΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ Π²ΡΠ΅Π³Π΄Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΠΎΠ»Ρ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½-ΠΊΠ»Π°ΡΡΡ Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡ, Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ ΠΈ/ΠΈΠ»ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΌΠ°ΠΊΡΠΎΡΠ°
FPTU_TOKEN
ΠΈΠ»ΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° fptu::token_static<>.ΠΠΎΡΡΡΠΏ ΠΊ ΠΏΠΎΠ»ΡΠΌ ΡΠ΅ΡΠ΅Π· ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½-ΠΊΠ»Π°ΡΡΡ Π²Π½Π΅ΡΠ½Π΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ Π΄Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠΊΠ΅Π½ΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ, Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠΊΠ΅Π½-ΠΊΠ»Π°ΡΡΠΎΠ², libfptu ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΠ΅ inline-ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π±Π΅Π· Π»ΠΈΡΠ½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΈ ΡΡΠ»ΠΎΠ²Π½ΡΡ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠ², Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΡΠΌ Π΄ΠΎΡΡΡΠΏΠΎΠΌ ΠΊ Π΄Π°Π½Π½ΡΠΌ Π΄Π»Ρ preplaced-ΠΏΠΎΠ»Π΅ΠΉ.
ΠΡΠΎΠΌΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ
cast_typecheck<TOKEN>
, cast_preplaced<TOKEN>
ΠΈ cast_loose<TOKEN>
ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΎΠΊΠ΅Π½ΠΎΠ² ΡΠ°ΡΡΠΈΡΠ½ΠΎ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅, ΡΡΠΎ
ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½Π½ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° Ρ ΠΌΠ΅Π½ΡΡΠΈΠΌ
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΡΠ»ΠΎΠ²Π½ΡΡ
Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠΉ.
Π‘Π»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ, Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈΠ· ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ . Π ΡΠ΅Π»ΠΎΠΌ ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π²ΡΠ±ΡΠ°ΡΡ ΠΆΠ΅Π»Π°Π΅ΠΌΡΠΉ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠΎΡΠ΅ΡΠ°Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈ ΡΡ Π΅ΠΌΡ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ Π΄ΠΎ-ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΠΎΡΡΠ°ΠΏΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
-
Π€ΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π²Π½Π΅ΡΠ½Π΅Π΅ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡ Π΅ΠΌΡ.
-
ΠΠ½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ "Π³ΠΎΡΡΡΠΈΡ " ΠΏΠΎΠ»Π΅ΠΉ, Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π°Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ.
-
ΠΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΏΠΈΡΠΊΠ° "Π³ΠΎΡΡΡΠΈΡ " ΠΏΠΎΠ»Π΅ΠΉ, Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅, ΡΠΎΡΠΌΠΈΡΡΡΡΡΡ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΡΡΡΡΠΊΡΡΡ. ΠΠ»Ρ Π²ΡΠ΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ°ΠΊΡΠΎΡΠ°
FPTU_TOKEN
Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½-ΠΊΠ»Π°ΡΡΡ. ΠΠΎΡΡΡΠΏ ΠΊ ΡΡΠΈΠΌ ΠΏΠΎΠ»ΡΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΠ΅Π· ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠΊΠ΅Π½-ΠΊΠ»Π°ΡΡΡ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΠΏΠΎΠ»Ρ Π½Π°ΡΠΈΠ²Π½ΡΡ ΡΡΡΡΠΊΡΡΡ ΡΠ·ΡΠΊΠ° C. -
ΠΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°Π³ΡΡΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡ Π΅ΠΌΡ, ΡΡΡΠΎΠΈΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΉ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΡΡ Π΅ΠΌΡ, Π° ΡΠ°Π½Π΅Π΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅-ΡΠΎΠΊΠ΅Π½ ΠΊΠ»Π°ΡΡΡ ΡΠ²Π΅ΡΡΡΡΡΡ (ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡΡΡ) Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΠΎΠΊΠ΅Π½Π°ΠΌΠΈ ΠΏΠΎΠ»Π΅ΠΉ Π² ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ΅ ΡΡ Π΅ΠΌΡ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π²ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΡ Π΅ΠΌΡ ΠΈ Π½Π°ΡΠΈΠ²Π½ΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π°, ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΈ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡ Π΅ΠΌΡ Π΄Π°Π½Π½ΡΡ .
Π Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ "ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ" ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΡΡ Π΅ΠΌΡ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΡΠΌ ΡΠΎΠΊΠ΅Π½ΠΎΠ² Π΄ΠΎΡΡΡΠΏΠ° ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
-
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΏΠΎΠ»Π΅ΠΉ, ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ: loose ΠΈΠ»ΠΈ preplaced, ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°Ρ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΈ Π·Π°ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΏΡΡΡΠΎΡΡ, ΡΡΠΌΠΌΠ°ΡΠ½ΠΎΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΡ preplaced ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΈΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
-
Π’ΡΠ°Π½ΡΠ»ΡΡΠΈΡ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎ-ΡΠΈΡΠ°Π΅ΠΌΡΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΈΠΌΠ΅Π½ ΠΏΠΎΠ»Π΅ΠΉ Π² ΡΠΎΠΊΠ΅Π½Ρ Π΄ΠΎΡΡΡΠΏΠ° (ΠΌΠ°ΡΠΈΠ½Π½ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ) ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
-
(TODO) Π’ΡΠ°Π½ΡΠ»ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ enumeration-ΡΠΈΠΏΠΎΠ² Π² ΡΡΡΠΎΠΊΠΎΠ²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΏΡΠΈ ΡΠΊΡΠΏΠΎΡΡΠ΅/ΠΈΠΌΠΏΠΎΡΡΠ΅ Π΄Π°Π½Π½ΡΡ Π² JSON ΠΈ YAML.
"ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠΈ" Π½Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡ Π΅ΠΌΡ ΠΈΠ»ΠΈ ΡΠΎΡΠΌΠ°ΡΠ° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ (ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ) ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ°. Π‘ΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊ ΡΡ Π΅ΠΌΡ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΈ Π½Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ (ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ) ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²Π°ΠΆΠ½ΡΠΉ Π°ΡΠΏΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΡΡΠ΅ ΠΏΡΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ. Π "ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ°Ρ " Π² ΡΠ²Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»Ρ Π½Π΅ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ libfptu ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π΅ Π·Π°ΠΌΠ΅ΡΠ°ΡΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ loose-ΠΏΠΎΠ»Π΅ΠΉ, Π»ΠΈΠ±ΠΎ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ preplaced-ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ. Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΡΠΎΡΠ΅ΠΊΠ°ΡΡΠΈΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΏΠΎΠ»ΡΠΌΠΈ ΡΠ°Π·Π½ΡΡ Π²ΠΈΠ΄ΠΎΠ² Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ, ΡΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΠΎΠ²Π°Π²ΡΠΈΡΡ Π½Π° ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΊΠΎΡΠΎΡΡΡΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΠΌ ΠΌΠ΅ΡΡΠΎΠΌ.
ΠΡΠΈΠ·Π½Π°ΠΊ "Π·Π°ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΏΡΡΡΠΎΡΡ" ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΡΠΎΠΊΠ΅Π½Π° ΠΈ ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ:
-
ΠΡΠ»ΠΈ
discernible_null == FALSE
ΡΠΎ libfptu Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ ΡΠΊΡΡΠ²Π°ΡΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ loose-ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΡ Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ Π½ΡΠ»Π΅Π²ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Π½Π΅ΡΠ½Π΅ ΡΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ ΠΏΠΎΠ»Ρ ΠΈ Π΅Π³ΠΎ Π½ΡΠ»Π΅Π²ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΡΡΠ³ΠΈΠΌΠΈ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ, Ρ ΡΠ°ΠΊΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ Π½Π΅Ρ NIL-Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ ΠΈΡ , Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΠ² ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡfptu::field_absent
. -
ΠΠΎΠ³Π΄Π°
discernible_null == TRUE
ΠΌΡ Π±ΡΠ΄Π΅ΠΌ "Π²ΠΈΠ΄Π΅ΡΡ" ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ loose-ΠΏΠΎΠ»Π΅ΠΉ, Π° Π΄Π»Ρ preplaced-ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅Π³Π΄Π° ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡ, libfptu Π±ΡΠ΄Π΅Ρ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅. ΠΡΠΈ ΡΡΠΎΠΌ Π΄Π»Ρ preplaced-ΠΏΠΎΠ»Π΅ΠΉ, Π΄Π»Ρ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, ΠΎΠ΄Π½ΠΎ ΠΈΠ· Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΠ° ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ "ΠΏΡΡΡΠΎΡΡ":Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΠ°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ DENIL Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ i8, int8_t, boolean -128 (INT8_MIN) u8, uint8_t, bin8 0 i16, int16_t, enumeration -32768 (INT16_MIN) u16, uint16_t, bin16 0 i32, int32_t -2147483648 (INT32_MIN) u32, uint32_t, bin32 0 f32, float -QNaN (Π²ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ) t32, datetime_uts 1970-01-01 (ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ 0) i64, int64_t -9223372036854775808 (INT64_MIN) u64, bin64 0 f64, double -QNaN (Π²ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ) d64, decimal64_t -QNaN (Π²ΡΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡΡ) t64, datetime_h100, timestamp 1970-01-01 (ΠΌΠ°ΡΠΈΠ½Π½ΡΠΉ 0) bin96..bin512 0 (Π²ΡΠ΅ Π½ΡΠ»ΠΈ) mac, ip, ipnet 0 (Π²ΡΠ΅ Π½ΡΠ»ΠΈ) ΠΡΡΡΠ΅ΡΠ°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² preplaced-ΠΏΠΎΠ»Π΅ libfptu Π±ΡΠ΄Π΅Ρ ΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅: ΠΌΠ΅ΡΠΎΠ΄
is_present()
Π±ΡΠ΄Π΅Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡFALSE
, Π° ΠΏΡΠΈ ΡΡΠ΅Π½ΠΈΠΈ Π±ΡΠ΄Π΅Ρ Π²Π±ΡΠΎΡΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅fptu::field_absent
.
ΠΠΎΠ»Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ° discernible_null
ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ
Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° token_operations<>::is_discernible_null()
.
ΠΠΎΠ»Π»Π΅ΠΊΡΠΈΡ Π² "ΠΠΎΠ·ΠΈΡΠΈΠ²Π½ΡΡ
ΠΊΠΎΡΡΠ΅ΠΆΠ°Ρ
" - ΡΡΠΎ Π½Π΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΡΠΉ Π½Π°Π±ΠΎΡ
Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ
ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ² ΠΏΠΎΠ»Ρ. ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ
Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΊΠΎΡΡΠ΅ΠΆ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎΠΆΠ΅ ΠΏΠΎΠ»Π΅. Π ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ,
Π² ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ΅ ΡΡ
Π΅ΠΌΠ΅ ΠΈ ΡΠΎΠΊΠ΅Π½Π΅, ΡΠ°ΠΊΠΎΠ΅ ΠΏΠΎΠ»Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΎ ΠΊΠ°ΠΊ
"ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΠΌΠΎΠ΅", Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΠΎΠ»ΡΠΌ Ρ Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ repeated
Π² Protocol
Buffers).
Π’ΠΎΠ»ΡΠΊΠΎ loose-ΠΏΠΎΠ»Ρ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ preplaced-ΠΏΠΎΠ»Π΅ΠΉ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ΅ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅ΡΡΡ ΠΌΠ΅ΡΡΠΎ ΠΈ ΡΠΈΠΊΡΠΈΡΡΠ΅ΡΡΡ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ, preplaced-ΠΏΠΎΠ»Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ°ΡΡΠΈΠ² ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ»ΠΈ ΠΏΠ»ΠΎΡΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ°.
libfptu Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ ΠΏΠΎΡΠ»Π΅ ΠΈΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΉ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π½Π°ΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΈ Π½Π΅ ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½Ρ. ΠΠ½Π°ΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΈΡΠ°ΡΡ ΡΡΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ, ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΈΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ.
Π libpftu Π΅ΡΡΡ Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ²: ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ, ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΡ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ΅ ΠΏΠΎΠ»Π΅ΠΉ. ΠΠ±Π° Π²ΠΈΠ΄Π° ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈΠΌΠ΅ΡΡ ΡΡ ΠΎΠ΄Π½ΡΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²Π°: Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π΄Π»Ρ ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΡΡ ΡΡΡΠ½ΠΎΡΡΠ΅ΠΉ, Π° ΡΠ°ΠΌΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ (Forward iterator category) ΠΈ Ρ ΡΡΠΏΠΊΠΈΠ΅ (ΠΈΠ½Π²Π°Π»ΠΈΠ΄ΠΈΡΡΡΡΡΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ°). ΠΡΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΈ ΠΏΡΠΈΡΠΈΠ½Ρ Π½ΡΠΆΠ΄Π°ΡΡΡΡ Π² ΠΏΠΎΡΡΠ½Π΅Π½ΠΈΠΈ:
-
ΠΠ΅ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½Π½ΠΎΡΡΡ. ΠΡΠΈ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΡΠ΄ΠΎΠΊ. ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ Π³Π°ΡΠ°Π½ΡΠΈΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ ΠΆΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ½ΠΈΠ·ΠΈΡΡ ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ ΠΈ Π² Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΠ½Π°ΡΠ°Π»Π° Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΡΠ΅ΠΉ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, Π° Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ.
-
Π₯ΡΡΠΏΠΊΠΎΡΡΡ ΠΈΠ»ΠΈ ΠΠ½Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ°. ΠΡΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ°, ΠΈΠ½ΠΎΠ³Π΄Π° Π΄Π°ΠΆΠ΅ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΡΡΠ° Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈΠ»ΠΈ ΠΊ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ°. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠ½Π²Π°Π»ΠΈΠ΄ΠΈΡΡΡΡΡΡ Π²ΡΠ΅ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ. ΠΠΎΡΡΠΎΠΌΡ, ΡΠ°Π΄ΠΈ ΠΏΡΠΎΡΡΠΎΡΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ Π²ΡΠ΅Π³Π΄Π° ΠΈΠ½Π²Π°Π»ΠΈΠ΄ΠΈΡΡΡΡΡΡ ΠΏΡΠΈ Π»ΡΠ±ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ°. Π ΡΡΠ²ΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ³ΡΡΠ·ΠΈΡΡΡΡ Π² Π΄Π΅ΡΠ°Π»ΠΈ:
-
ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΠ ΠΈΠ½Π²Π°Π»ΠΈΠ΄ΠΈΡΡΡΡΡΡ:
- ΠΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ loose-ΠΏΠΎΠ»Π΅ΠΉ.
- ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π΅ΠΉ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΠΏΠΎΠ»Ρ loose/prelaced.
-
Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΄ΡΡΠ³ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΡΠΌΠΈ:
- Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ preplaced-ΠΏΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΡΠΎΠΊΠΈ) ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π·ΠΎΡΠ° Π²Π½ΡΡΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ°. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΠ± ΡΡΠΎΠΌ Π·Π°Π·ΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠΎΡΡΠ΅ΠΆΠ°. Π ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ libfptu ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π»ΠΈΠ±ΠΎ Π²Π±ΡΠΎΡΠΈΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅, Π»ΠΈΠ±ΠΎ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΌ, ΡΡΠΎ ΠΏΡΠΈΠ΄ΡΡ ΠΊ ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ loose-ΠΏΠΎΠ»Ρ, Π»ΠΈΠ±ΠΎ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π΄Π°Π½Π½ΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ, ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΌ ΠΌΠ΅ΡΡΠ° ΠΈΠ»ΠΈ ΠΊ ΠΏΠ΅ΡΠ΅-ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅. Π§ΡΠΎ Π²Π»Π΅ΡΠ΅Ρ ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ².
- ΠΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΠΉ, Π½ΠΎΠ²ΡΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΡ Π½Π΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ², ΡΠΎ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅ΡΠ½Ρ ΡΠ΅ΡΠ΅Π· ΡΠ°Π½Π΅Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡ, ΡΠ°ΠΊ ΠΈ Π½Π΅Ρ.
-
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
TBD
Π‘ ΡΠ΅Π»ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π² Π°ΠΊΡΡΠ°Π»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΡ libfptu Π±ΡΠ»Π° ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π° ΡΠ°ΡΡΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΠΌΠΈ Π±ΡΡΠ΅ΡΠ° ΠΏΡΠΎΠ΅ΠΊΡΠ° 1Hippeus.
ΠΠΎΡΡΠΎΡΠ½Π½Π°Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π΄ΠΎΡΠΎΠ³Π° ΠΈ ΠΊΠ°ΠΊ-ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΠΈΠ·Π±ΡΡΠΎΡΠ½Π°. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π»ΡΠ±ΡΠ΅ Π½Π°ΡΡΡΠ΅Π½ΠΈΡΡ Π² Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡ ΠΊ Π°Π²Π°ΡΠΈΡΠΌ.
ΠΠΎΡΡΠΎΠΌΡ Π² libfptu ΡΠΊΡΠΏΠ»ΡΠ°ΡΠΈΡΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ:
-
ΠΠΎΡΡΡΠΏΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΡΠΎΡΠΌ ΠΊΠΎΡΡΠ΅ΠΆΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ.
-
Π ΡΠ³ΠΎΠ΄Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΠΌΡΡΠΎΡΠ½ΡΡ (Π½Π΅ Π²Π°Π»ΠΈΠ΄Π½ΡΡ ) Π΄Π°Π½Π½ΡΡ ΠΈΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ.
-
ΠΠ°ΡΠ°Π½ΡΠΈΡΡΠ΅ΡΡΡ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ Π²ΡΠ·ΠΎΠ²ΡΡ Π½Π°ΡΡΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π½ΠΈΠΌΠΈ.
Π€ΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΆ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΡΡΠ°ΡΡΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ, Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΡΠΉ ΠΈΠ½Π΄Π΅ΠΊΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌ ΠΏΠΎΠ»ΡΠΌ. Π‘ΡΠ°Π·Ρ Π·Π° ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Ρ.Π΅. ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΊΠΎΡΡΠ΅ΠΆΠ°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΠ°ΠΊ Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΡΠ°Π²Π½ΠΎΡΠ΅Π½Π½Ρ ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΠΎΠΌΡ ΡΡΠ΅Π½ΠΈΡ/Π·Π°ΠΏΠΈΡΠΈ/ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ.
Π€ΠΎΡΠΌΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° ΠΌΠ°ΡΠΈΠ½Ρ. ΠΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΌ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅, ΠΏΠΎΡΡΠ΄ΠΎΠΊ Π±Π°ΠΉΡ ΡΡΡΠΎΠ³ΠΎ Π½Π°ΡΠΈΠ²Π½ΡΠΉ (ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ ΠΈΠ»ΠΈ ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ ΡΠ°Π±ΠΎΡΡ CPU):
-
Π‘Π½Π°ΡΠ°Π»Π° ΠΈΠ΄Π΅Ρ "Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ" ΠΊΠΎΡΡΠ΅ΠΆΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ loose-ΠΏΠΎΠ»Π΅ΠΉ (ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°) ΠΈ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ.
-
ΠΠ°ΡΠ΅ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ½Π΄Π΅ΠΊΡ loose-ΠΏΠΎΠ»Π΅ΠΉ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ°ΡΡΠΈΠ² ΠΈΠ· 32-Π±ΠΈΡΠ½ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ² ΠΏΡΠΈΡΡΡΡΡΠ²ΡΡΡΠΈΡ Π² ΠΊΠΎΡΡΠ΅ΠΆΠ΅ loose-ΠΏΠΎΠ»Π΅ΠΉ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ-Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΠ»Ρ, ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΊ Π½ΠΈΠΌ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ°.
-
ΠΠΎΡΠ»Π΅ ΠΈΠ½Π΄Π΅ΠΊΡΠ° ΡΠ»Π΅Π΄ΡΡΡ preplaced-ΠΏΠΎΠ»Ρ, ΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΡ Π΅ΠΌΠ΅, ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΆ.
-
ΠΠ° ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ ΠΏΠΎΡΠ»Π΅ preplaced-ΠΏΠΎΠ»Π΅ΠΉ ΡΠ»Π΅Π΄ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ loose-ΠΏΠΎΠ»Π΅ΠΉ ΠΈ prepaced-ΠΏΠΎΠ»Π΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΡΠΈ ΡΡΠΎΠΌ Π² Π΄Π°Π½Π½ΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡ Π·Π°Π·ΠΎΡΡ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π»ΠΈΡΡ Π² Ρ ΠΎΠ΄Π΅ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΠΏΠΎΠ»Π΅ΠΉ, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠ΅Ρ Π½Π΅Π½ΡΠΆΠ½ΡΠΌ Π·Π°ΠΏΡΠΎΡΠΈΡΡ Π΄Π΅ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
-
ΠΠ°ΠΆΠ΄ΡΠΉ loose-Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΈ ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π½ΠΈΠΌ Π΄Π°Π½Π½ΡΠ΅ Π²ΡΡΠΎΠ²Π½Π΅Π½Ρ Π½Π° 4Ρ -Π±Π°ΠΉΡΠΎΠ²ΡΡ Π³ΡΠ°Π½ΠΈΡΡ. ΠΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ preplaced-ΠΏΠΎΠ»Π΅ΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΡ Π΅ΠΌΠΎΠΉ.
ΠΠ»Ρ ΠΊΠΎΡΠΎΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² 16 Π±ΠΈΡ, Π·Π½Π°ΡΠ΅Π½ΠΈΡ Ρ ΡΠ°Π½ΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ΅ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ.
ΠΠ»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ»Π΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ (ΡΡΡΠΎΠΊ, Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΈ Ρ.Π΄.), Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ 32-Π±ΠΈΡΠ½ΠΎΠΌ ΡΠ»ΠΎΠ²Π΅ ΠΊΠΎΠ΄ΠΈΡΡΠ΅ΡΡΡ ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ, Π½ΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ .
Π‘ΡΡΠΎΠΊΠΈ Ρ
ΡΠ°Π½ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ΅ UTF-8 Ρ ΡΠ²Π½ΡΠΌ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π΄Π»ΠΈΠ½Ρ.
Π’Π΅ΡΠΌΠΈΠ½ΠΈΡΡΡΡΠΈΠΉ '\0'
Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, Π½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌ Π²Π½ΡΡΡΠΈ ΡΡΡΠΎΠΊ.
Π€ΠΎΡΠΌΠ°Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π° Π΄Π»Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ ΠΈ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΏΠ°Π΄Π°Π΅Ρ Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΎΠ³ΠΎΠ²ΠΎΡΠΊΠΎΠΉ:
-
Π ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΏΡΡΡΠΎΠΉ ΠΊΠΎΡΡΠ΅ΠΆ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΊΠ°ΠΊ
Π½ΠΎΠ»Ρ Π±Π°ΠΉΡ
(ΠΏΡΡΡΠΎΠΉ ΡΡΡΠΎΠΊΠΎΠΉ Π±Π°ΠΉΡ), ΡΠ°ΠΊ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠΊΠ°Π·Π°Π½ΠΎΠ½ΠΎΠ»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
. -
ΠΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΊΠΎΡΡΠ΅ΠΆ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π΅ΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠΈ ΠΏΠΎΠ»Ρ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ±ΡΠ·Π°Π½ ΠΈΠΌΠ΅ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ ΡΠ²ΠΎΠ΅ΠΌ Π½ΡΠ»Π΅Π²ΠΎΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅.
Π‘Π΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ ΡΠΎΡΠΌΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ° libfptu - ΡΡΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΡΡΠ°ΡΡΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ 32-Π±ΠΈΡΠ½ΡΡ ΡΡΠ΅Π΅ΠΊ. Π Π½Π°ΡΠ°Π»Π΅ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠ»Π΅ΠΉ/ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ ΠΈ ΠΎΠ±ΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ°. ΠΠ°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΎΠ². ΠΠ°ΡΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ preplaced-ΠΏΠΎΠ»Ρ, Π° Π·Π° Π½ΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ, Π²ΠΊΠ»ΡΡΠ°Ρ Π·Π½Π°ΡΠ΅Π½ΠΈΡ preplaced-ΠΏΠΎΠ»Π΅ΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΠ»Π΅Π³ΠΊΠ° ΠΎΡΠ»ΠΈΡΠ°ΡΡΠ΅ΠΉΡΡ "ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ" ΡΠΎΡΠΌΠ΅ - ΡΡΠΎ ΡΠ°ΠΊΠΆΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΡΡΠ°ΡΡΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ, Π½ΠΎ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΠΉ Ρ ΡΡΠ΅ΡΠΎΠΌ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΡ ΡΡΠ΅ΡΡΠΈΠΊΠΎΠ². ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΡΠΎΡΠΌΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ "ΠΎΠ±Π»ΠΎΠΆΠΊΠΎΠΉ" ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΆΠ°, Π½ΠΎ Ρ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ°:
-
ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠ°Ρ ΡΠΎΡΠΌΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΆΠΈΠ²Π΅Ρ Π² Π±ΡΡΠ΅ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ Π² ΡΠ°ΡΡΠ΅ΡΠ΅ Π½Π° ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ (ΠΊΠ°ΠΊ ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², ΡΠ°ΠΊ ΠΈ ΠΏΠΎ ΠΈΡ Π΄Π°Π½Π½ΡΠΌ);
-
Π²Π½ΡΡΡΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ° ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠ΅Ρ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Π°Ρ ΡΠΎΡΠΌΠ° ΠΊΠΎΡΡΠ΅ΠΆΠ°;
-
ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΡΠΎΡΠΌΡ ΠΈΠ· ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎ ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅ ΠΊΠΎΡΡΠ΅ΠΆΠ° ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π΅Π³ΠΎ Π½Π°ΡΠ°Π»ΠΎ;
-
ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎΠΉ ΡΠΎΡΠΌΡ ΠΈΠ· ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠΉ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΆΠ° Π²Π½ΡΡΡΡ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π±ΡΡΠ΅ΡΠ°, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΠΊΠ»ΡΡΠ°ΡΡ Π·Π°ΠΏΠ°Ρ Π½Π° ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
buffer of sufficient size |<=======================================================>| | | | head pivot tail | | <-----~~~~~~~~~|~~~~~~~~~~~~~~~~~~----------------> | | descriptors|payload | | #_D_C_B_A_aaa_bb_cccccc_dddd | | |<========================>| linear uint32_t sequence for serialization
ΠΡΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ½Π° Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΡΡ ΡΠ°ΠΉΠ»Π°Ρ API ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠΎΠ΄Π΅.
$ objdump -f -h -j .text libfptu.so
libfptu.so: file format elf64-x86-64
architecture: i386:x86-64, flags 0x00000150:
HAS_SYMS, DYNAMIC, D_PAGED
start address 0x00016da0
Sections:
Idx Name Size VMA LMA File off Algn
11 .text 0001f590 00016da0 00016da0 00016da0 2**4
CONTENTS, ALLOC, LOAD, READONLY, CODE
$ ldd libfptu.so
linux-vdso.so.1 (0x00007fffb5b3d000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fdbfcd29000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fdbfc98b000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fdbfc773000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdbfc382000)
/lib64/ld-linux-x86-64.so.2 (0x00007fdbfd34d000)