इस प्रोजेक्ट के बारे में
V एक स्थिर रूप से टाइप की गई, संकलित प्रोग्रामिंग भाषा है जिसे बनाए रखने योग्य सॉफ्टवेयर बनाने के लिए डिज़ाइन किया गया है। इसके घोषित लक्ष्य सरलता, तेज़ संकलन, C के बराबर प्रदर्शन और सुरक्षा हैं। कंपाइलर स्वयं V में लिखा गया है और सामान्य हार्डवेयर पर एक सेकंड से भी कम समय में बूटस्ट्रैप हो सकता है।
परियोजना द्वारा वर्णित मुख्य विशेषताएं:
- सरलता: भाषा को कम समय में सीखने योग्य बनाने का इरादा है।
- तेज़ संकलन: README एक विशिष्ट परीक्षण मशीन पर Clang बैकएंड के साथ लगभग 110k लाइनें/सेकंड और नेटिव तथा tcc बैकएंड के साथ लगभग 500k लाइनें/सेकंड का हवाला देता है।
- स्व-होस्टिंग: V स्वयं को जल्दी संकलित करता है, और मुख्य बैकएंड मानव-पठनीय C उत्पन्न करता है।
- सुरक्षा विशेषताएं: कोई null नहीं, कोई ग्लोबल नहीं, डिफ़ॉल्ट रूप से अपरिवर्तनीयता, और अपरिभाषित व्यवहार को समाप्त करने की दिशा में कार्य।
- मेमोरी प्रबंधन विकल्प: डिफ़ॉल्ट रूप से कचरा संग्रह, साथ ही मैनुअल (`-gc none`), एरेना आवंटन (`-prealloc`), और ऑटोफ्री (`-autofree`) मोड।
- C-to-V अनुवाद, जिसे DOOM अनुवाद डेमो के साथ प्रदर्शित किया गया है।
- हॉट कोड रीलोडिंग।
- अंतर्निहित ORM और एक अंतर्निहित वेब फ्रेमवर्क (veb)।
- C और JavaScript बैकएंड, साथ ही एक REPL।
- क्रॉस-प्लेटफॉर्म UI लाइब्रेरी और एक अंतर्निहित ग्राफिक्स लाइब्रेरी।
- आसान क्रॉस-संकलन, जिसमें Alpine/musl Docker छवियों के माध्यम से स्थिर बाइनरी शामिल हैं।
स्थापना मुख्य रूप से स्रोत से होती है: रिपॉजिटरी को क्लोन करें और `make` चलाएं (Windows पर `makev.bat`, BSD/Solaris पर `gmake`)। बिल्ड एक संगत संस्करण मौजूद होने पर बंडल किए गए Tiny C Compiler को डाउनलोड करता है। Docker और Alpine Dockerfiles भी प्रदान किए गए हैं। `v up` कंपाइलर को अपडेट करता है, और `v symlink` इसे PATH में जोड़ता है।
एडिटर और IDE समर्थन Atom, CodeLite, Emacs, JetBrains, Sublime Text, Vim/Neovim, VS Code और Zed के लिए उपलब्ध है, जिसमें v-analyzer द्वारा भाषा-सर्वर क्षमताएं प्रदान की जाती हैं।
उदाहरणों में हैलो वर्ल्ड, वर्ड काउंटर, न्यूज़ फेचर, टेट्रिस और 2048 शामिल हैं। sokol या gg मॉड्यूल का उपयोग करने वाले GUI और गेम उदाहरणों के लिए अतिरिक्त सिस्टम विकास लाइब्रेरी की आवश्यकता होती है। नेटवर्किंग मॉड्यूल (net.http, net.websocket) और `v install` बंडल किए गए Mbed-TLS या `-d use_openssl` के माध्यम से सिस्टम OpenSSL का उपयोग कर सकते हैं। sync मॉड्यूल libatomic पर निर्भर करता है।
README नोट करता है कि भाषा प्री-1.0 है और अभी भी बदल सकती है, जिसमें सिंटैक्स परिवर्तन मुख्य रूप से vfmt द्वारा संभाले जाते हैं। 1.0 के बाद, परियोजना Go के समान एक फीचर फ्रीज की योजना बनाती है, जिसमें केवल बग फिक्स और प्रदर्शन सुधार होंगे।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.