منصوبے کے بارے میں

kanso (簡素) ایک ایسی پروگرامنگ زبان ہے جو اس خیال پر مبنی ہے کہ ایک سورس فائل میں صرف فیصلے ہونے چاہئیں۔ کوئی بھی چیز جسے عام طور پر اسٹائل گائیڈ، linter یا کوڈ ریویو کے ذریعے روایت کے طور پر نافذ کیا جاتا ہے، اسے کمپائلر کے ذریعے نافذ کیا جاتا ہے: غیر معیاری اسپیسنگ، انڈنٹیشن یا خالی لائن کی جگہ ایک سنٹیکس ایرر ہے، ناموں کے لیے snake_case استعمال ہوتا ہے، ڈیکلریشنز اور ریکارڈ فیلڈز حروف تہجی کی ترتیب (alphabetically) میں ہوتے ہیں، اور overloads ایک دوسرے کے ساتھ موجود ہوتے ہیں جس میں سب سے زیادہ مخصوص (most specific) پہلے آتا ہے۔ کیونکہ ہر پروگرام کی بالکل ایک ہی معیاری پیشکش ہوتی ہے، اس لیے کوئی formatter موجود نہیں ہے۔ README میں واضح کردہ سیمیٹکس میں purity اور effects کو تفصیلات کے طور پر پیش کیا گیا ہے: print اور >> sequencing آپریٹر کام کی ایک ایسی تفصیل پیدا کرتے ہیں جسے runtime اجرا کرتا ہے، اور --plan کے ساتھ check کمانڈ اسے چلانے کے بجائے وہ تفصیل دکھاتی ہے۔ ناکامی (Failure) ایک exception کے بجائے ایک value ہے: err reason اور none تب تک آگے بڑھتے ہیں جب تک کہ کوئی overload ان پر ڈسپیچ نہ کرے، لہذا صفر سے تقسیم اور رینج سے باہر انڈیکسنگ کریش کرنے کے بجائے ویلیوز واپس کرتی ہیں۔ ڈسپیچ لٹیرلز، کنکریٹ ٹائپس اور generics پر کام کرتا ہے، جس میں سب سے زیادہ مخصوص پہلے آتا ہے۔ زبان ٹائپڈ فیلڈز کے ساتھ سنگل-کنسٹرکٹر ریکارڈ ٹائپس، پوزیشنل کنسٹرکشن اور پوزیشنل اور کیڈ-سب سیٹ دونوں فارمز میں destructuring کی حمایت کرتی ہے؛ بغیر کسی کومہ کے flat juxtaposition application؛ arbitrary-precision integers؛ string interpolation؛ 1-based indexing والی لسٹیں؛ ایک ڈاٹ پائپ جس کی پائپڈ ویلیو پہلا آرگیومنٹ بن جاتی ہے؛ اور lambdas۔ اضافی کمپائل ٹائم چیکس غیر استعمال شدہ bindings، غیر استعمال شدہ expressions، استعمال سے پہلے rebinding، اور ڈکلیئرڈ فنکشنز، ٹائپس یا builtins کی shadowing کو مسترد کرتے ہیں۔ xs[i] یا m[k] کے ساتھ انڈیکسنگ سخت (strict) ہے، جبکہ xs @ i متوقع عدم موجودگی کا اظہار کرتا ہے۔ ماڈیولز ڈائریکٹریز ہیں: ایک ماڈیول ایک ہی namespace شیئر کرنے والی کسی بھی تعداد میں فائلوں پر محیط ہوتا ہے، انڈر اسکور سے شروع ہونے والے نام ماڈیول کے لیے پرائیویٹ ہوتے ہیں، اور ایک غیر استعمال شدہ پرائیویٹ ڈیکلریشن ایک ایرر ہے۔ README اس بات پر زور دیتا ہے کہ tests/golden میں ایرر کورپس کی اتنی ہی اہمیت ہے جتنی کامیابی کے کورپس کی۔ ایک v0 سیکشن تسلیم شدہ تخمینوں اور کھلے نکات کی فہرست دیتا ہے: endpoint rule کی جانچ کمپائل ٹائم کے بجائے رن ٹائم پر کی جاتی ہے؛ generic parameters کبھی بھی err یا none کو بائنڈ نہیں کرتے؛ معیاری ڈیکلریشن ترتیب ایک تشریح ہے؛ پائپ ٹارگٹ ایک ایپلیکیشن کے طور پر پارس ہوتا ہے اور ایک non-callable ٹارگٹ رن ٹائم پر فیل ہو جاتا ہے؛ if فارم عارضی ہے؛ نیٹیو int اصل میں int64 ہے اور overflow کمپائل شدہ بائنریز میں ایک نقص کے طور پر ٹریپ ہوتے ہیں، جو کہ interpreter کے bigint سے مختلف ہے۔ typesets، ریکارڈ اپ ڈیٹ، بلڈ ریجنز، پراسیسز، effect polymorphism اور LSP ابھی تک نافذ نہیں کیے گئے۔ ایڈیٹر سپورٹ ایک سنگل TextMate بنڈل ہے جسے .kso فائلوں کے لیے JetBrains IDEs اور VS Code میں استعمال کیا جا سکتا ہے۔ ڈویلپمنٹ کے لیے cargo test استعمال ہوتا ہے، جس میں یونٹ ٹیسٹ اور ایک golden-file کورپس شامل ہے؛ پروجیکٹ MIT لائسنس کے تحت ہے۔ ڈاکومنٹیشن، specification اور کمپائلر نوٹس ایک GitHub Pages سائٹ پر شائع کیے گئے ہیں۔