ΠΠ±ΡΠ°Π²Π΅Π½ΠΎ Π΅ ΠΎΠ±ΡΠ°Π²ΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΠΎΡ ΡΠ°Π·ΠΈΠΊ Crystal 1.6, ΡΠΈΠΈΡΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΈ ΡΠ΅ ΠΎΠ±ΠΈΠ΄ΡΠ²Π°Π°Ρ Π΄Π° ΡΠ° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Π°Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎΡΡΠ° Π½Π° ΡΠ°Π·Π²ΠΎΡΠΎΡ Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Ruby ΡΠΎ Π²ΠΈΡΠΎΠΊΠΈΡΠ΅ ΠΏΠ΅ΡΡΠΎΡΠΌΠ°Π½ΡΠΈ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ°, ΠΊΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΡΠ½ΠΈ Π·Π° ΡΠ°Π·ΠΈΠΊΠΎΡ C. Π‘ΠΈΠ½ΡΠ°ΠΊΡΠ°ΡΠ° Π½Π° Crystal Π΅ Π±Π»ΠΈΡΠΊΠ°, Π½ΠΎ Π½Π΅ Π΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½Π° ΡΠΎ Ruby, ΠΈΠ°ΠΊΠΎ Π½Π΅ΠΊΠΎΠΈ Ruby ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠ°Π±ΠΎΡΠ°Ρ Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°. ΠΠΎΠ΄ΠΎΡ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π²ΠΎ ΠΡΠΈΡΡΠ°Π» ΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° Apache 2.0.
ΠΠ°Π·ΠΈΠΊΠΎΡ ΠΊΠΎΡΠΈΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΠ°ΡΠΈΡΠΊΠΈ ΡΠΈΠΏ, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° Π±Π΅Π· ΠΏΠΎΡΡΠ΅Π±Π° Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΠ°Π°Ρ ΡΠΈΠΏΠΎΠ²ΠΈΡΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΈ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΎΡ Π²ΠΎ ΠΊΠΎΠ΄ΠΎΡ. ΠΡΠΈΡΡΠ°Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ ΡΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°Π°Ρ Π²ΠΎ ΠΈΠ·Π²ΡΡΠ½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΈ, ΡΠΎ Π΅Π²Π°Π»ΡΠ°ΡΠΈΡΠ° Π½Π° ΠΌΠ°ΠΊΡΠΎΠ° ΠΈ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ΅. ΠΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ΅ Crystal, ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΏΠΎΠ²ΡΠ·Π°Ρ Π²ΡΡΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π²ΠΎ C. ΠΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ΡΠΎ Π½Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ ΡΠ΅ Π²ΡΡΠΈ ΡΠΎ ΠΏΠΎΠΌΠΎΡ Π½Π° ΠΊΠ»ΡΡΠ½ΠΈΠΎΡ Π·Π±ΠΎΡ βspawnβ, ΠΊΠΎΡ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΎ Π΄Π° ΠΈΠ·Π²ΡΡΠΈΡΠ΅ Π·Π°Π΄Π°ΡΠ° Π²ΠΎ Π·Π°Π΄Π½ΠΈΠ½Π°, Π±Π΅Π· Π΄Π° ΡΠ° Π±Π»ΠΎΠΊΠΈΡΠ°ΡΠ΅ Π³Π»Π°Π²Π½Π°ΡΠ° Π½ΠΈΡΠΊΠ°, Π²ΠΎ ΡΠΎΡΠΌΠ° Π½Π° Π»Π΅ΡΠ½ΠΈ Π½ΠΈΡΠΊΠΈ Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈ Π²Π»Π°ΠΊΠ½Π°.
Π‘ΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π³ΠΎΠ»Π΅ΠΌ ΡΠ΅Ρ Π½Π° Π·Π°Π΅Π΄Π½ΠΈΡΠΊΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΡΠ²Π°ΡΡΠΈ Π°Π»Π°ΡΠΊΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° CSV, YAML ΠΈ JSON, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ HTTP ΡΠ΅ΡΠ²Π΅ΡΠΈ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° WebSocket. ΠΠ° Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ Π½Π° ΡΠ°Π·Π²ΠΎΡ, ΠΏΠΎΠ³ΠΎΠ΄Π½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βcrystal playβ, ΠΊΠΎΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ° Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΡΡ (Π»ΠΎΠΊΠ°Π»Π΅Π½ Ρ ΠΎΡΡ: 8080 ΠΏΠΎ Π΄ΠΈΡΠΎΠ»Ρ) Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ Π²ΠΎ ΡΠ°Π·ΠΈΠΊΠΎΡ ΠΡΠΈΡΡΠ°Π».
ΠΠ»Π°Π²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- ΠΠΎΠ³ΠΈΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠ΅ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅ΡΠ° - ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠΏΡΠΎΠ²Π°ΡΡΠ²Π°ΡΠ΅ ΡΠ΅Π³Π° ΡΠ΅ ΡΠ°Π·Π³Π»Π΅Π΄ΡΠ²Π°Π°Ρ ΡΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈ Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ ΠΏΡΠ΅Π΄ Π΅Π΄ΠΈΠ½Π΅ΡΠ½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΡ ΠΏΠΎΠ΄ΠΎΠ»Ρ ΡΠ΅Π³Π° ΡΠ΅ ΠΈΠ·Π»Π΅Π·Π΅ ΡΠΎ ΡΠΎΡΠ½ΠΎΡΡ Π½Π°ΠΌΠ΅ΡΡΠΎ βaβ ΠΊΠ°ΠΊΠΎ Π²ΠΎ ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΈΡΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΡΠ°. ΠΌΠΎΠ΄ΡΠ» Foo(T) ΠΊΡΠ°ΡΠ½Π° ΠΊΠ»Π°ΡΠ° Bar1 Π²ΠΊΠ»ΡΡΡΠ²Π° Foo(Int32) ΠΊΡΠ°ΡΠ½Π° ΠΊΠ»Π°ΡΠ° Bar2 Π²ΠΊΠ»ΡΡΡΠ²Π° Foo(Int32) ΠΊΡΠ°Ρ def foo(x : Foo(Int32)) 'a' ΠΊΡΠ°Ρ def foo(x: Bar1 | Bar2) Π²ΠΈΡΡΠΈΠ½ΡΠΊΠΈ ΠΊΡΠ°Ρ foo(Bar1 .Π½ΠΎΠ²Π°)
- ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ #system_echo ΠΈ #system_raw ΡΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ Π·Π° ΡΠΈΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, ΡΡΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈ Π΄Π° ΡΠ΅ Π·Π°ΡΡΠ°ΡΠ°Ρ ΠΌΠ°ΠΊΡΠΎΠ°ΡΠ° FileDescriptor βcooked_from_tc_mode!β, βnoecho_from_tc_mode!β ΠΈ βraw_from_tc_mode!β, ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ #noecho! ΠΈ #ΡΡΡΠΎΠ²ΠΈΠ½ΠΈ! ΡΠ΅Π³Π° Π²ΡΠ°ΡΠ΅ΡΠ΅ Π½ΡΠ»Π° Π½Π°ΠΌΠ΅ΡΡΠΎ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠ° Π½Π° LibC.tcsetattr.
- ΠΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠΈ File API, ΠΊΠΎΡ ΡΠ΅Π³Π° Π²ΡΠ°ΡΠ° Π²Π½Π°ΡΡΠ΅ΡΠ΅Π½ ΠΎΠ±ΡΠ΅ΠΊΡ (ΡΠ΅ Π²ΡΠ°ΡΠ° File::Info Π½Π°ΠΌΠ΅ΡΡΠΎ Crystal::System::FileInfo).
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠ° Π²ΠΎ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π°Ρ. ΠΠ° Π΄Π° ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΠΈΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΠΏΡΠ΅Π²Π΅Π΄ΡΠ²Π°Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βΠ½Π°ΠΏΡΠ°Π²ΠΈ ΡΠΎΠ»ΠΊΡΠ²Π°Ρ = 1β.
- ΠΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ Π·Π° ΠΈΠ·Π²Π΅Π΄Π±Π° ΡΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈ Π²ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°.
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° Windows Π²ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠΎΡ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈ Π·Π° Windows ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΌΠΎΠΆΠ½ΠΎΡΡΠ° Π·Π° ΠΈΠ·Π³ΡΠ°Π΄Π±Π° Π½Π° ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ΅Ρ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Mutex.
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° Unicode 15.0 ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ API Π·Π° Π½ΠΎΡΠΌΠ°Π»ΠΈΠ·ΠΈΡΠ°ΡΠ΅ Π½Π° ΡΠ΅ΠΊΠ²Π΅Π½ΡΠΈΡΠ΅ Π½Π° Unicode.
ΠΠ·Π²ΠΎΡ: opennet.ru
