ΠΡΡ ΠΠ΅ΠΠΎΠ»Ρ (Drew DeVault), Π°Π²ΡΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Sway, ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Aerc ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ SourceHut, ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» Π²ΡΠΏΡΡΠΊ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Hare 0.25.2. ΠΠΎΠΌΠ΅Ρ Π²Π΅ΡΡΠΈΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ ΠΊΠ°ΠΊ 0.YY.Q, Π³Π΄Π΅ YY β Π΄Π²Π΅ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΡΠΈΡΡΡ Π³ΠΎΠ΄Π°, Π° Q β Π½ΠΎΠΌΠ΅Ρ ΠΊΠ²Π°ΡΡΠ°Π»Π°, ΠΏΡΠΎΡΠ»ΡΠΉ Π²ΡΠΏΡΡΠΊ Hare 0.24.2 Π±ΡΠ» ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ Π³ΠΎΠ΄ Π½Π°Π·Π°Π΄. Hare ΠΏΡΠ΅ΠΏΠΎΠ΄Π½ΠΎΡΠΈΡΡΡ ΠΊΠ°ΠΊ ΡΠ·ΡΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π±Π»ΠΈΠ·ΠΊΠΈΠΉ ΠΊ ΡΠ·ΡΠΊΡ Π‘ΠΈ, Π½ΠΎ ΠΏΡΠΎΡΠ΅, ΡΠ΅ΠΌ Π‘ΠΈ. ΠΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GPLv3, Π° ΠΊΠΎΠ΄ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ MPL (Mozilla Public License).
Π―Π·ΡΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ Π·Π°Π΄Π°Ρ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ², ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΡΠΈΠ»ΠΈΡ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ. Π ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΡΡΡΠ½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ ΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΈΠΏΠΎΠ², ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ²Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠ΅Π½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠΉ ΡΠΈΠΏ.
ΠΠ»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ runtime, Π° Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ Π±Π°Π·ΠΎΠ²ΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΠΏΠΎΠ²ΡΠΌΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°ΠΌΠΈ, ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌΠΈ ΠΈ ΡΠΎΡΠΌΠ°ΡΠ°ΠΌΠΈ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ hare-wayland, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌ GTK, Vulkan, OpenGL, SDL2 ΠΈ libui.
Π Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ:
- Π Π°ΡΡΠΈΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΡΠ΅ΡΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π°. Π ΠΌΠΎΠ΄ΡΠ»Ρ Β«memio::Β» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠ² Β«nonblockingΒ». ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ ΠΎΠΏΡΠΈΠΈ Π΄Π»Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΊΠΎΠ½ΡΠ° ΡΠ°ΠΉΠ»Π° Π² bufio::scanner ΠΈ ΡΠ΅ΠΆΠΈΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ bufio::stream. ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ os::open_buffered ΠΈ os::create_buffered.
- Π ΡΡΠΈΠ»ΠΈΡΠ΅ Β«haredocΒ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΈΠ· README-ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΡΠ°ΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ Π΅Π³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ Π²ΡΠ²ΠΎΠ΄Π΅ ΡΠΏΠΈΡΠΊΠ° ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Unix/POSIX API: io::fsync, io::fdatasync, unix::getrlimit, unix::setrlimit ΠΈ fcntl (ΡΠ΅ΡΠ΅Π· os::getflags ΠΈ os::setflags). ΠΠ»Ρ ΠΠ‘ NetBSD ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
- Π ΡΡΠΈΠ»ΠΈΡΡ hare Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²ΡΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠΎΠ΄ΠΊΠΎΠΌΠ°Π½Π΄Ρ Β«hare toolΒ». ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Β«hare-updateΒ».
- Π ΡΠ°Π·ΡΡΠ΄ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ Π² ΡΠΈΡΡΠ°ΡΠΈΡΡ Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²Π½ΡΠΉ ΡΠΈΠΏ Β«nomemΒ», Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΠΉ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠΉ ΠΎΠ±ΡΡΠΌ ΠΏΠ°ΠΌΡΡΠΈ.
- Π£Π»ΡΡΡΠ΅Π½ API Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π΄Π°ΡΠ°ΠΌΠΈ ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ. Π Π°ΡΡΠΈΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΡΡΠ°ΠΌΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠ°Π²ΠΈΠ» PETZ (POSIX Extending TZ). ΠΠ½ΠΎΠ³ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Ρ ΠΈΠ· ΠΌΠΎΠ΄ΡΠ»Ρ time::chrono Π² time::date.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅ΠΌΠ°Π½ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠΈΡΡ ΠΊ ΠΊΠΎΠ΄Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ, Π½ΠΎ ΠΌΠΎΠ³ΡΡ ΡΡΠΈΡΡΠ²Π°ΡΡΡΡ Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅. #[json::gen] export type player = struct { name: str, #[json::field(name = Β«XΒ», omit_null=true)] x: *f64, #[json::field(name = Β«YΒ», omit_null=true)] y: *f64, };
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΡΠΈΠ»ΠΈΡΠ° hare-update Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π½Π° Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Hare, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π½Π°ΡΡΡΠ°ΡΡΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠΈΠ»ΠΈΡΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π°Π΄Π°ΠΏΡΠ°ΡΠΈΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΊ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠ΅ΠΉΡΡ Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ Π²ΡΠΏΡΡΠΊΠ΅.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
