ΠΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΡΠ΅Π»ΠΈΠ· ΡΠ·ΡΠΊΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Nim 2.2.10. Nim β ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠΎΠΌ, Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»ΡΠ½Π½ΡΠΌ Python, ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠΌΠΈ ΠΌΠ΅ΡΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ Lisp. Π―Π·ΡΠΊ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ Π² C, C++ ΠΈ JavaScript, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ C ΠΏΡΠΈ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ ΡΠ·ΡΠΊΠΎΠ². ΠΠΎΠ΄ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ MIT.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Nim Π²ΠΊΠ»ΡΡΠ°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Π½Π° AST Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΎΠ±ΠΎΠ±ΡΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠ°ΠΌΠΈ, ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ (multiple dispatch), Π΄Π΅ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΡΡ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠ°ΡΠ΅Π³ΠΈΠΉ (ARC/ORC, refc, ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠ°-ΠΈ-ΠΏΠΎΠ΄ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅), Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ async/await Π΄Π»Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ FFI Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΠΉ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ Ρ C/C++/JavaScript. Nim ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ ΡΠ·ΡΠΊ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌ Π΄ΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ², Ρ Π°ΠΊΡΠ΅Π½ΡΠΎΠΌ Π½Π° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ·ΡΠΊΠ΅ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ»Π°Π³ Β«βexperimental:typeBoundOpsΒ», ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ RFC #380 ΠΈ ΠΏΠΎΠ²ΡΡΠ°ΡΡΠΈΠΉ Π½Π°Π΄ΡΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Β«hashΒ», Β«$Β», Β«==Β» Π΄Π»Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΈ Π½Π΅ΠΏΡΡΠΌΡΡ ΠΈΠΌΠΏΠΎΡΡΠ°Ρ . ΠΡΠΈΠΌΠ΅Ρ: import std/hashes type Obj* = object x*, y*: int z*: string proc `==`*(a, b: Obj): bool = a.x == b.x and a.y == b.y proc hash*(a: Obj): Hash = $!(hash(a.x) &! hash(a.y)) # main.nim {.experimental: Β«typeBoundOpsΒ».} from objs import Obj import std/tables var t: Table[Obj, int] t[Obj(x: 3, y: 4, z: Β«debugΒ»)] = 34 echo t[Obj(x: 3, y: 4, z: Β«ignoredΒ»)] # 34
- ΠΡΠΏΡΠ°Π²Π»Π΅Π½Π° ΠΎΡΠΈΠ±ΠΊΠ°, ΠΏΡΠΈ ΠΊΠΎΡΠΎΡΠΎΠΉ Β«sizeof(T)Β» Π²Π½ΡΡΡΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° Β«typedescΒ», Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΈΠ· when-Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠ°, ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠ» ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π²Π»ΠΈΡΡΡΠΈΠ΅ Π½Π° ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ:
- ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½ ΡΠ»Π°Π³ Β«-d:nimPreviewFloatRoundtripΒ». Π€ΡΠ½ΠΊΡΠΈΠΈ Β«system.addFloatΒ» ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Β«$Β» ΡΠ΅ΠΏΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌ Dragonbox Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΡΠΈΡΠ΅Π» Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ Ρ Π³Π°ΡΠ°Π½ΡΠΈΡΠΌΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°ΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΊ ΡΡΠ°ΡΠΎΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ»Π°Π³ Β«-d:nimLegacySprintfΒ».
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ Β«defaultΒ» Π² ΡΡΠ½ΠΊΡΠΈΠΈ Β«tables.getOrDefaultΒ» ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ Π² Β«defΒ» Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Ρ Β«system.defaultΒ». ΠΠΎΠ΄, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠΉ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Β«getOrDefault(β¦, default = β¦)Β», ΡΡΠ΅Π±ΡΠ΅Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
- ΠΡΠΈ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠ»Π°Π³Π° Β«-d:nimPreviewCheckedCloseΒ» ΡΡΠ½ΠΊΡΠΈΡ Β«closeΒ» Π² ΠΌΠΎΠ΄ΡΠ»Π΅ Β«std/syncioΒ» ΡΠ΅ΠΏΠ΅ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°.
- ΠΠ΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΡΠ΅ΠΏΠ΅ΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Β«warnUnknownNotesΒ» Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΠΈΠ±ΠΎΠΊ.
- Π‘ ΡΠ»Π°Π³ΠΎΠΌ Β«-d:nimPreviewAsmSemSymbolΒ» Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°Ρ asm/emit Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ² Π΄Π»Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π² ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΠΊΠ°Π²ΡΡΠΊΠ°Ρ .
- ΠΠ»ΠΎΠΊ Β«except:Β» Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΡΠΈΠΏΠ° ΡΠ΅ΠΏΠ΅ΡΡ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΠ°Π½ΠΈΠΊΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΠ΅ Β«DefectΒ». ΠΠ»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Β«except Exception:Β» ΠΈΠ»ΠΈ Β«except Defect:Β». ΠΠ»Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΡΠ»Π°Π³ Β«βlegacy:noPanicOnExceptΒ».
- Π‘ ΡΠ»Π°Π³ΠΎΠΌ Β«-d:nimPreviewCStringComparisonsΒ» ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ ({, >, {=, >=) Π΄Π»Ρ Β«cstringΒ» ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½Ρ Ρ ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠΈ ΡΡΡΠ»ΠΎΠΊ Π½Π° ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ Β«==Β» ΠΈ Β«!=Β».
- ΠΠΎΠ΄ΡΠ»Ρ std/parsesql Π²ΡΠ½Π΅ΡΠ΅Π½ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ nimble-ΠΏΠ°ΠΊΠ΅Ρ; Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Β«nimble install parsesqlΒ» ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° atlas.
- Π‘ ΡΠ»Π°Π³ΠΎΠΌ Β«-d:nimPreviewDuplicateModuleErrorΒ» ΠΈΠΌΠΏΠΎΡΡ Π΄Π²ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΠ»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π»ΠΈΠ·ΠΈΠΉ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°Π»ΠΈΠ°ΡΡ: Β«import foo as foo1Β».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ Β«βmangle:nim|cppΒ» Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠ° ΡΡΠΈΠ»Ρ ΠΌΠ°Π½Π³Π»ΠΈΠ½Π³Π° ΠΈΠΌΡΠ½ ΠΏΡΠΈ Π²ΠΊΠ»ΡΡΡΠ½Π½ΠΎΠΉ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β cpp).
- ΠΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ succ, pred, inc, dec Π² ΠΌΠΎΠ΄ΡΠ»Π΅ system ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΈΠΏ Β«SomeIntegerΒ» Π²ΠΌΠ΅ΡΡΠΎ Β«OrdinalΒ».
- ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ Π±ΠΈΡΠΎΠ²ΡΡ ΡΠ΄Π²ΠΈΠ³ΠΎΠ² (shl, shr, ashr) ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΠΊΡ ΠΊ ΠΏΡΠ°Π²ΠΎΠΌΡ ΠΎΠΏΠ΅ΡΠ°Π½Π΄Ρ Π² Π±ΡΠΊΠ΅Π½Π΄Π°Ρ C/C++/VM/JS.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Β«βwarning:ImplicitRangeConversionΒ», ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°ΡΡΠ΅Π΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΠ°ΡΠ½ΡΠ΅ Π½Π΅ΡΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΊ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°ΠΌ ΠΌΠ΅Π½ΡΡΠ΅Π³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, int -> range[0..255]), ΡΠΏΠΎΡΠΎΠ±Π½ΡΠ΅ Π²ΡΠ·Π²Π°ΡΡ ΠΏΠ°Π½ΠΈΠΊΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
ΠΠΎΠ²ΠΎΠ²Π²Π΅Π΄Π΅Π½ΠΈΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅:
- Π ΠΌΠΎΠ΄ΡΠ»Ρ Β«setutilsΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Β«symmetricDifferenceΒ», ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Β«-+-Β» ΠΈ ΠΈΠ½Π»Π°ΠΉΠ½-Π²Π΅ΡΡΠΈΡ Β«toggleΒ» Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ°Π·Π½ΠΎΡΡΠΈ Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ².
- Π Β«strutils.multiReplaceΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠ΅ΡΠ΅Π³ΡΡΠ·ΠΊΠ° Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ· Π½Π°Π±ΠΎΡΠ° Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡ ΠΎΠ΄ β ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΡΠ°Π½ΠΈΡΠΈΠ·Π°ΡΠΈΠΈ ΡΡΡΠΎΠΊ.
- Π ΠΌΠΎΠ΄ΡΠ»Ρ std/files Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΠΈΠΏΠ° Path: getFilePermissions, setFilePermissions, tryRemoveFile, copyFile (Ρ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΠΌ Π±ΡΡΠ΅ΡΠΎΠΌ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΡΡΠ»ΠΎΠΊ), copyFileWithPermissions, copyFileToDir. ΠΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΡΠΈΠΏΡ CopyFlag ΠΈ FilePermission Π΄Π»Ρ ΡΠΎΠ½ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ.
- ΠΠΎΠ΄ΡΠ»Ρ std/dirs ΠΏΠΎΠ»ΡΡΠΈΠ» Π½ΠΎΠ²ΡΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ: copyDir ΠΈ copyDirWithPermissions Π΄Π»Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Ρ ΡΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ Π°ΡΡΠΈΠ±ΡΡΠΎΠ².
- Π Π±ΡΠΊΠ΅Π½Π΄Π°Ρ refc, JS ΠΈ VM ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ½ΠΊΡΠΈΠΈ Β«system.setLenUninitΒ» Π΄Π»Ρ ΡΠΈΠΏΠ° Β«stringΒ», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅ΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΄Π»ΠΈΠ½Ρ ΡΡΡΠΎΠΊΠΈ Π±Π΅Π· ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΈ.
- Π std/parseopt Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠΎΠ² ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ ΡΠ΅ΡΠ΅Π· ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ CliMode: Nim (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ), Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ Lax ΠΈ Gnu.
- Π std/math ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Β«^Β» ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΠΈΡΠ»Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ.
- Π€ΡΠ½ΠΊΡΠΈΠΈ min, max ΠΈ ΠΈΡ Π°Π½Π°Π»ΠΎΠ³ΠΈ ΠΈΠ· sequtils Π΄Π»Ρ openArray ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ.
- ΠΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ system.substr: ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ copymem (ΠΎΠ±ΡΡΡΠΊΠ° Π½Π°Π΄ C memcpy).
- Π€ΡΠ½ΠΊΡΠΈΡ system.newStringUninit ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π° ΠΊΠ°ΠΊ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½Π°Ρ ΠΎΡ ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ², ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Ρ Ρ ΡΠ»Π°Π³ΠΎΠΌ Β«βexperimental:strictFuncsΒ».
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ:
- Π Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠ»Π°Π³ Β«βrawΒ» Π΄Π»Ρ ΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³Π° ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈ Π² JSON-Π²ΡΠ²ΠΎΠ΄Π΅.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠ»Π°Π³ Β«βstdinfileΒ» Π΄Π»Ρ Π·Π°Π΄Π°Π½ΠΈΡ ΠΈΠΌΠ΅Π½ΠΈ ΡΠ°ΠΉΠ»Π° ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΊΠΎΠ΄Π° ΠΈΠ· stdin (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ β stdinfile.nim).
- Π€Π»Π°Π³ Β«βstyleCheck:warningΒ» ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΡΠ°ΠΊΡΠΎΠ²Π°ΡΡ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ ΡΡΠΈΠ»Π΅Π²ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ ΠΊΠ°ΠΊ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, Π° Π½Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
- Π ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΡΠ°Π³ΠΌΠ΅ completeStruct.
ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π±ΠΎΠ»Π΅Π΅ 30 ΠΎΡΠΈΠ±ΠΎΠΊ, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅:
- ΠΡΠΈΠ±ΠΊΠΈ ΡΠ°Π±ΠΎΡΡ new Ρ ref object ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΊΠΎΡΡΠ΅ΠΆΠ΅ΠΉ Π² ΠΌΠ°ΡΡΠΈΠ²Π°Ρ ;
- ΠΡΠΎΠ±Π»Π΅ΠΌΡ Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ static-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΈ typedesc;
- Π Π΅Π³ΡΠ΅ΡΡΠΈΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ ORC/refc, Π²ΠΊΠ»ΡΡΠ°Ρ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΈΠ·Π±ΡΡΠΎΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ nimZeroMem;
- ΠΡΠΈΠ±ΠΊΠΈ ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π² parseopt, parsecfg ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π±ΡΠΊΠ΅Π½Π΄Π° JavaScript;
- Π£ΡΠ΅ΡΠΊΠΈ ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΉ, ΠΈΡΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΈ Π±ΠΎΠ»ΡΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
