ನಿಮ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ಬಿಡುಗಡೆ 1.6.0

ಒಂದು ವರ್ಷದ ಅಭಿವೃದ್ಧಿಯ ನಂತರ, ಸಿಸ್ಟಮ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯ ನಿಮ್ 1.6 ಬಿಡುಗಡೆಯನ್ನು ಪ್ರಕಟಿಸಲಾಯಿತು, ಇದು ಸ್ಥಿರ ಟೈಪಿಂಗ್ ಅನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಪ್ಯಾಸ್ಕಲ್, ಸಿ ++, ಪೈಥಾನ್ ಮತ್ತು ಲಿಸ್ಪ್ ಅನ್ನು ಗಮನದಲ್ಲಿಟ್ಟುಕೊಂಡು ರಚಿಸಲಾಗಿದೆ. ನಿಮ್ ಮೂಲ ಕೋಡ್ ಅನ್ನು ಸಿ, ಸಿ++ ಅಥವಾ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಪ್ರಾತಿನಿಧ್ಯಕ್ಕೆ ಸಂಕಲಿಸಲಾಗಿದೆ. ತರುವಾಯ, ಲಭ್ಯವಿರುವ ಯಾವುದೇ ಕಂಪೈಲರ್ (ಕ್ಲ್ಯಾಂಗ್, ಜಿಸಿಸಿ, ಐಸಿಸಿ, ವಿಷುಯಲ್ ಸಿ ++) ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸಿ/ಸಿ ++ ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಫೈಲ್‌ಗೆ ಸಂಕಲಿಸಲಾಗುತ್ತದೆ, ಇದು ಚಾಲನೆಯಲ್ಲಿರುವ ವೆಚ್ಚವನ್ನು ನೀವು ಗಣನೆಗೆ ತೆಗೆದುಕೊಳ್ಳದಿದ್ದರೆ, ಸಿ ಗೆ ಹತ್ತಿರವಾದ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸಾಧಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಕಸ ಸಂಗ್ರಾಹಕ. ಪೈಥಾನ್‌ನಂತೆಯೇ, ನಿಮ್ ಇಂಡೆಂಟೇಶನ್ ಅನ್ನು ಬ್ಲಾಕ್ ಡಿಲಿಮಿಟರ್‌ಗಳಾಗಿ ಬಳಸುತ್ತದೆ. ಡೊಮೇನ್-ನಿರ್ದಿಷ್ಟ ಭಾಷೆಗಳನ್ನು (DSLs) ರಚಿಸಲು ಮೆಟಾಪ್ರೋಗ್ರಾಮಿಂಗ್ ಉಪಕರಣಗಳು ಮತ್ತು ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ. ಯೋಜನೆಯ ಕೋಡ್ ಅನ್ನು MIT ಪರವಾನಗಿ ಅಡಿಯಲ್ಲಿ ಒದಗಿಸಲಾಗಿದೆ.

ಹೊಸ ಬಿಡುಗಡೆಯಲ್ಲಿ ಗಮನಾರ್ಹ ಬದಲಾವಣೆಗಳು ಸೇರಿವೆ:

  • ಪುನರಾವರ್ತಕಗಳಿಗಾಗಿ ಒಂದು ರೀತಿಯ ಅನುಷ್ಠಾನದೊಂದಿಗೆ ಪುನರಾವರ್ತನೀಯ[T] ವರ್ಗವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಟೆಂಪ್ಲೇಟ್ ಮೊತ್ತ[T](a: iterable[T]): T = var ಫಲಿತಾಂಶ: A ನಲ್ಲಿ AI ಗಾಗಿ T: ಫಲಿತಾಂಶ += AI ಫಲಿತಾಂಶ ಪ್ರತಿಪಾದಿತ ಮೊತ್ತ(iota(3)) == 0 + 1 + 2 # ಅಥವಾ 'iota( 3) ಮೊತ್ತ'
  • ಆಯ್ದ ಪರಿಣಾಮಗಳನ್ನು ಅನ್ವಯಿಸುವುದಕ್ಕಾಗಿ ".EffectsOf" ಟಿಪ್ಪಣಿಗಳಿಗೆ ಪ್ರಾಯೋಗಿಕ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ವ್ಯಾಖ್ಯಾನಿಸಿದಾಗ(nimHasEffectsOf): {.ಪ್ರಾಯೋಗಿಕ: "ಕಟ್ಟುನಿಟ್ಟಾದ ಪರಿಣಾಮಗಳು".} ಬೇರೆ: {.pragma: effectsOf.} proc mysort(s: seq; cmp: proc(a, b: T): int) {.effectsOf: cmp. }
  • ಹೊಸ ಆಮದು ಸಿಂಟ್ಯಾಕ್ಸ್ “ಆಮದು ಫೂ {.all.}” ಅನ್ನು ಪ್ರಸ್ತಾಪಿಸಲಾಗಿದೆ, ಇದು ನಿಮಗೆ ಸಾರ್ವಜನಿಕವಾಗಿ ಮಾತ್ರವಲ್ಲದೆ ಖಾಸಗಿ ಚಿಹ್ನೆಗಳನ್ನು ಸಹ ಆಮದು ಮಾಡಲು ಅನುಮತಿಸುತ್ತದೆ. ವಸ್ತುಗಳ ಖಾಸಗಿ ಕ್ಷೇತ್ರಗಳನ್ನು ಪ್ರವೇಶಿಸಲು, std/importutils ಮಾಡ್ಯೂಲ್ ಮತ್ತು ಖಾಸಗಿ ಪ್ರವೇಶ API ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಸಿಸ್ಟಂನಿಂದ {.all.} ನಿಂದ system2 ಆಮದು ಇಲ್ಲ ಪ್ರತಿಧ್ವನಿ ಸಿಸ್ಟಮ್2. ThisIsSystem import os {.all.} echo weirdTarget
  • ಡಾಟ್ ಆಪರೇಟರ್‌ಗಳಿಗೆ ಪ್ರಾಯೋಗಿಕ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ, ಇದನ್ನು ಡೈನಾಮಿಕ್ ಕ್ಷೇತ್ರಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಬಳಸಬಹುದು. ಆಮದು std/json ಟೆಂಪ್ಲೇಟ್ '.?'(a: JsonNode, b: untyped{ident}): JsonNode = a[astToStr(b)] j = %*{“a1”: {“a2”: 10}} ಪ್ರತಿಪಾದಿಸಿ j.?a1.?a2.getInt == 10
  • ಹೆಚ್ಚುವರಿ ನಿಯತಾಂಕಗಳನ್ನು ಬ್ಲಾಕ್ ಆರ್ಗ್ಯುಮೆಂಟ್‌ಗಳಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು. ಟೆಂಪ್ಲೇಟ್ fn(a = 1, b = 2, body1, body2) = ತಿರಸ್ಕರಿಸು fn (a = 1): bar1 do: bar2
  • ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಅಕ್ಷರಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ (ಉದಾಹರಣೆಗೆ, "-128'bignum'"). func `'big`*(num: cstring): JsBigInt {.importjs: "BigInt(#)".} 0xffffffffffff'big == (1'big shl 64'big) - 1'bg
  • ಕಂಪೈಲರ್ ಕಮಾಂಡ್ ಲೈನ್‌ನಿಂದ ನೇರವಾಗಿ ನಿಮ್ ಆಜ್ಞೆಗಳನ್ನು ಚಲಾಯಿಸಲು “—eval:cmd” ಆಜ್ಞೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ 'nim —eval:"echo 1″".
  • ನಿಮ್‌ಸ್ಕ್ರಿಪ್ಟ್ ಬ್ಯಾಕೆಂಡ್‌ಗಾಗಿ ನಿಮ್ಮ ಸ್ವಂತ ವಿಸ್ತರಣೆಗಳನ್ನು ರಚಿಸಲು ಬೆಂಬಲವನ್ನು ಒದಗಿಸಲಾಗಿದೆ.
  • ದೋಷದೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದ ಸಂದರ್ಭವನ್ನು ತೋರಿಸಲು ದೋಷ ಸಂದೇಶಗಳನ್ನು ಹೆಚ್ಚು ವಿಸ್ತರಿಸಲಾಗಿದೆ. ಕಸ್ಟಮ್ ಕಂಪೈಲರ್ ಎಚ್ಚರಿಕೆಗಳನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ.
  • "--gc:arc" ಮತ್ತು "--gc:orc" ಕಸ ಸಂಗ್ರಹಕಾರರ ಕಾರ್ಯಕ್ಷಮತೆ ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸಿದೆ.
  • ಎಲ್ಲಾ ಬ್ಯಾಕೆಂಡ್‌ಗಳು ಪೂರ್ಣಾಂಕಗಳು ಮತ್ತು ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಸಂಖ್ಯೆಗಳನ್ನು ಪಾರ್ಸಿಂಗ್ ಮಾಡಲು ಕೋಡ್‌ನ ನಿಖರತೆ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಸುಧಾರಿಸಿದೆ.
  • JS, VM ಮತ್ತು ನಿಮ್‌ಸ್ಕ್ರಿಪ್ಟ್ ಬ್ಯಾಕೆಂಡ್‌ಗಳ ಸುಧಾರಿತ ಹೊಂದಾಣಿಕೆಯು ಈ ಹಿಂದೆ C ಬ್ಯಾಕೆಂಡ್‌ನೊಂದಿಗೆ ಮಾತ್ರ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತಿತ್ತು (ಉದಾಹರಣೆಗೆ, std/prelude ಮಾಡ್ಯೂಲ್). C, JS ಮತ್ತು VM ಬ್ಯಾಕೆಂಡ್‌ಗಳೊಂದಿಗೆ stdlib ಮಾಡ್ಯೂಲ್‌ಗಳ ಪರೀಕ್ಷೆಯನ್ನು ಸ್ಥಾಪಿಸಲಾಗಿದೆ.
  • Apple Silicon/M1 ಚಿಪ್, 32-bit RISC-V, armv8l ಮತ್ತು CROSSOS ಸಿಸ್ಟಮ್‌ಗಳಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ.
  • ಮಾಡ್ಯೂಲ್‌ಗಳು std/jsbigints, std/tempfiles ಮತ್ತು std/sysrand ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಸಿಸ್ಟಮ್, ಗಣಿತ, ಯಾದೃಚ್ಛಿಕ, json, jsonutils, os, ಟೈಪ್‌ಟ್ರೇಟ್‌ಗಳು, ಹೊದಿಕೆಗಳು, ಪಟ್ಟಿಗಳು ಮತ್ತು ಹ್ಯಾಶ್ ಮಾಡ್ಯೂಲ್‌ಗಳಿಗೆ ಗಮನಾರ್ಹ ಸುಧಾರಣೆಗಳನ್ನು ಮಾಡಲಾಗಿದೆ.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ