Channel: Rust
π¦ ΠΡΡΠ»Π° Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Rust 1.88, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ Π³ΠΎΠ»ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΈ ΡΠΌΠ½ΡΠΌ ΠΊΡΡΠ΅ΠΌ Cargo.
ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Rust ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ
ΠΠΎΠ²ΡΠ΅ Π³ΠΎΠ»ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (
π Π‘ΡΡΠ»ΠΊΠ° - *ΠΊΠ»ΠΈΠΊ*
ΠΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Rust ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΡΠ°Π΄ΠΈΡΠΈΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ
let
-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΡΡΠ»ΠΎΠ²ΠΈΡΡ
if
ΠΈ while
ΡΠ΅ΡΠ΅Π· &&
, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΊΠΎΠ΄ ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π΅Π΅ Π±Π΅Π· ΠΏΠΎΡΠ΅ΡΠΈ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΠΈ. ΠΠΎΠ²ΡΠ΅ Π³ΠΎΠ»ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ (
#[unsafe(naked)]
) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄, ΡΡΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΠΎ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΎΡΠΈΡΡΠΊΠ° ΠΊΡΡΠ° Cargo Π½Π°ΠΊΠΎΠ½Π΅Ρ-ΡΠΎ ΡΠ΅ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ Π²Π΅ΡΠ½ΠΎ ΡΠ°ΡΡΡΡΠΈΠΌ ~/.cargo.
π Π‘ΡΡΠ»ΠΊΠ° - *ΠΊΠ»ΠΈΠΊ*
π‘οΈ Hypnus β Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΊΡΡΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° Rust
ΠΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ Β«Π·Π°ΡΡΠΏΠ°Π΅ΡΒ» (ΠΆΠ΄ΡΡ ΡΠ°ΠΉΠΌΠ΅Ρ, ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΈ Ρ.Π΄.), Π΅Π³ΠΎ ΠΏΠ°ΠΌΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ ΠΎΡΠΊΡΡΡΠΎΠΉ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°.
Hypnus ΡΠ΅ΡΠ°Π΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ: ΠΎΠ½ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΊΡΡΠ²Π°Π΅Ρ ΠΈ ΡΠΈΡΡΡΠ΅Ρ ΡΡΠ°ΡΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ½Π° β Π΄Π΅Π»Π°Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅ ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠ½ΡΠΌ.
π₯ ΠΠ»ΡΡΠ΅Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
β Π‘ΠΊΡΡΡΠΈΠ΅ ΠΈ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΅ΡΠ΅Π·
β ΠΠ°ΠΊΡΠΎΡΡ
β ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
β ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ
β ΠΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ ΠΊ ΡΠΊΡΡΡΠ½ΠΎΡΡΠΈ ΠΈ Π·Π°ΡΠΈΡΠ΅
π¦ ΠΠ°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° Rust β Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎ.
π¦ ΠΡΠΈΠΌΠ΅Ρ:
ΠΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ:
β’ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ
β’ ΡΠ΅ΡΠ΅ΡΡΠ΅ΡΠΎΠ² Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π·Π°ΡΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ
β’ Π»ΡΠ±ΠΈΡΠ΅Π»Π΅ΠΉ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ Rust ΠΈ OSDev
π Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:
https://github.com/joaoviictorti/hypnus
ΠΠΎΠ³Π΄Π° ΠΏΠΎΡΠΎΠΊ Β«Π·Π°ΡΡΠΏΠ°Π΅ΡΒ» (ΠΆΠ΄ΡΡ ΡΠ°ΠΉΠΌΠ΅Ρ, ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ ΠΈ Ρ.Π΄.), Π΅Π³ΠΎ ΠΏΠ°ΠΌΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΎΡΡΠ°Π²Π°ΡΡΡΡ ΠΎΡΠΊΡΡΡΠΎΠΉ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°.
Hypnus ΡΠ΅ΡΠ°Π΅Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ: ΠΎΠ½ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΊΡΡΠ²Π°Π΅Ρ ΠΈ ΡΠΈΡΡΡΠ΅Ρ ΡΡΠ°ΡΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ½Π° β Π΄Π΅Π»Π°Ρ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π΅Π΅ ΠΈ ΠΌΠ΅Π½Π΅Π΅ Π·Π°ΠΌΠ΅ΡΠ½ΡΠΌ.
π₯ ΠΠ»ΡΡΠ΅Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ:
β Π‘ΠΊΡΡΡΠΈΠ΅ ΠΈ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ΅ΡΠ΅Π·
ThreadPool Timers
, APC
, Wait
β ΠΠ°ΠΊΡΠΎΡΡ
timer!
, wait!
, apc!
Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ β ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°
#[no_std]
β ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π°ΠΆΠ΅ Π±Π΅Π· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ β ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ
Control Flow Guard
ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠ°ΡΡΠΎΠΌΠ½ΠΎΠ³ΠΎ heap-Π°Π»Π»ΠΎΠΊΠ°ΡΠΎΡΠ° HypnusHeap
β ΠΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Ρ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ ΠΊ ΡΠΊΡΡΡΠ½ΠΎΡΡΠΈ ΠΈ Π·Π°ΡΠΈΡΠ΅
π¦ ΠΠ°ΠΏΠΈΡΠ°Π½ΠΎ Π½Π° Rust β Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎ, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΈ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎ.
π¦ ΠΡΠΈΠΌΠ΅Ρ:
use hypnus::timer;
timer!(ptr, size, delay);
ΠΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ:
β’ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΠ°ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ
β’ ΡΠ΅ΡΠ΅ΡΡΠ΅ΡΠΎΠ² Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π·Π°ΡΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ
β’ Π»ΡΠ±ΠΈΡΠ΅Π»Π΅ΠΉ Π½ΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΠΎΠ³ΠΎ Rust ΠΈ OSDev
π Π Π΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ:
https://github.com/joaoviictorti/hypnus
HTML Embed Code: