క్రిస్టల్ ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల 1.2

క్రిస్టల్ 1.2 ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల ప్రచురించబడింది, దీని డెవలపర్‌లు రూబీ భాషలో అభివృద్ధి సౌలభ్యాన్ని సి భాష యొక్క అధిక అప్లికేషన్ పనితీరు లక్షణంతో కలపడానికి ప్రయత్నిస్తున్నారు. క్రిస్టల్ యొక్క వాక్యనిర్మాణం రూబీకి దగ్గరగా ఉంది, కానీ పూర్తిగా అనుకూలంగా లేదు, అయితే కొన్ని రూబీ ప్రోగ్రామ్‌లు మార్పు లేకుండా నడుస్తాయి. కంపైలర్ కోడ్ క్రిస్టల్‌లో వ్రాయబడింది మరియు Apache 2.0 లైసెన్స్ క్రింద పంపిణీ చేయబడుతుంది.

భాష స్టాటిక్ టైప్ చెకింగ్‌ని ఉపయోగిస్తుంది, కోడ్‌లోని వేరియబుల్స్ మరియు మెథడ్ ఆర్గ్యుమెంట్‌ల రకాలను స్పష్టంగా పేర్కొనాల్సిన అవసరం లేకుండా అమలు చేయబడుతుంది. క్రిస్టల్ ప్రోగ్రామ్‌లు ఎక్జిక్యూటబుల్ ఫైల్‌లుగా కంపైల్ చేయబడతాయి, మాక్రోలు మూల్యాంకనం చేయబడతాయి మరియు కంపైల్ సమయంలో కోడ్ ఉత్పత్తి చేయబడతాయి. క్రిస్టల్ ప్రోగ్రామ్‌లలో, సిలో వ్రాసిన బైండింగ్‌లను కనెక్ట్ చేయడం సాధ్యపడుతుంది. కోడ్ అమలు యొక్క సమాంతరీకరణ "స్పాన్" కీవర్డ్‌ని ఉపయోగించి నిర్వహించబడుతుంది, ఇది ప్రధాన థ్రెడ్‌ను నిరోధించకుండా, ఫైబర్స్ అని పిలువబడే తేలికపాటి థ్రెడ్‌ల రూపంలో నేపథ్య పనిని అసమకాలికంగా అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.

ప్రామాణిక లైబ్రరీ CSV, YAML మరియు JSON ప్రాసెసింగ్ కోసం సాధనాలు, HTTP సర్వర్‌లను సృష్టించే భాగాలు మరియు WebSocket మద్దతుతో సహా పెద్ద సాధారణ ఫంక్షన్‌లను అందిస్తుంది. అభివృద్ధి ప్రక్రియలో, క్రిస్టల్ భాషలో కోడ్ యొక్క ఇంటరాక్టివ్ ఎగ్జిక్యూషన్ కోసం వెబ్ ఇంటర్‌ఫేస్ (లోకల్ హోస్ట్:8080 డిఫాల్ట్‌గా) ఉత్పత్తి చేసే “క్రిస్టల్ ప్లే” ఆదేశాన్ని ఉపయోగించడం సౌకర్యంగా ఉంటుంది.

ప్రధాన మార్పులు:

  • పేరెంట్ క్లాస్ యొక్క మూలకానికి జెనరిక్ క్లాస్ యొక్క సబ్‌క్లాస్‌ని కేటాయించే సామర్థ్యం జోడించబడింది. క్లాస్ ఫూ(టి); ముగింపు తరగతి బార్(T) < ఫూ(T); ముగింపు x = ఫూ x = బార్
  • లూప్ కోసం ఒక విలువను విస్మరించడానికి మాక్రోలు ఇప్పుడు అండర్ స్కోర్‌ను ఉపయోగించవచ్చు. {1 కోసం _, v, i {2 => 3, 4 => 5, 6 => XNUMX} %} p {{v + i}} {% ముగింపు %}
  • మాక్రోలకు “file_exists?” పద్ధతి జోడించబడింది. ఫైల్ ఉనికిని తనిఖీ చేయడానికి.
  • ప్రామాణిక లైబ్రరీ ఇప్పుడు 128-బిట్ పూర్ణాంకాలకు మద్దతు ఇస్తుంది.
  • BitArray మరియు Deque వంటి సేకరణల కోసం అధునాతన కార్యకలాపాల అమలుతో ఇండెక్సబుల్::Mutable(T) మాడ్యూల్ జోడించబడింది. ba = BitArray.new(10) # ba = BitArray[0000000000] ba[0] = true # ba = BitArray[1000000000] ba.rotate!(-1) # ba = BitArray[0100000000]
  • XML నుండి నిర్దిష్ట నేమ్‌స్పేస్‌ను సంగ్రహించడానికి XML::Node#namespace_definition పద్ధతి జోడించబడింది.
  • IO#write_utf8 మరియు URI.ఎన్‌కోడ్ పద్ధతులు నిలిపివేయబడ్డాయి మరియు వాటిని IO#write_string మరియు URI.encode_path ద్వారా భర్తీ చేయాలి.
  • 32-బిట్ x86 ఆర్కిటెక్చర్‌కు మద్దతు రెండవ స్థాయికి తరలించబడింది (రెడీమేడ్ ప్యాకేజీలు ఇకపై ఉత్పత్తి చేయబడవు). ARM64 ఆర్కిటెక్చర్‌కు మద్దతు యొక్క మొదటి స్థాయికి బదిలీ సిద్ధం చేయబడుతోంది.
  • Windows ప్లాట్‌ఫారమ్‌కు పూర్తి మద్దతుని నిర్ధారించడానికి పని కొనసాగుతుంది. Windows సాకెట్‌లకు మద్దతు జోడించబడింది.
  • MacOS కోసం యూనివర్సల్ ప్యాకేజీ జోడించబడింది, ఇది x86 ప్రాసెసర్‌లు ఉన్న పరికరాల్లో మరియు Apple M1 చిప్‌తో ఉన్న పరికరాలపై పని చేస్తుంది.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి