لغة البرمجة Rust
Rust هي لغة برمجة للأغراض العامة تركز على الأداء ، وسلامة النوع ، والتزامن ، وسلامة الذاكرة .
تدعم لغة Rust أنماط برمجة متعددة . وقد تأثرت بأفكار من البرمجة الوظيفية ، بما في ذلك عدم قابلية التغيير ، والدوال ذات الرتبة العليا ، وأنواع البيانات الجبرية ، ومطابقة الأنماط . كما تدعم البرمجة كائنية التوجه عبر الهياكل، والتعدادات ، والسمات، والأساليب. وتفرض Rust سلامة الذاكرة (أي أن جميع المراجع تشير إلى ذاكرة صالحة) دون استخدام جامع قمامة تقليدي ؛ فبدلاً من ذلك، يتم منع أخطاء سلامة الذاكرة وتضارب البيانات بواسطة "مدقق الاستعارة"، الذي يتتبع دورة حياة المراجع للكائنات في وقت الترجمة .
قام مطور البرمجيات غرايدون هوار بإنشاء لغة البرمجة Rust في عام 2006 أثناء عمله في شركة موزيلا ، التي رعت المشروع رسميًا في عام 2009. تم نشر الإصدار المستقر الأول، Rust 1.0، في مايو 2015. وتتولى مؤسسة Rust رعاية المشروع منذ فبراير 2021.
تم اعتماد لغة Rust في العديد من مشاريع البرمجيات، وخاصة خدمات الويب وبرامج النظام . وقد خضعت للدراسة الأكاديمية، ولديها مجتمع متنامٍ من المطورين.
تاريخ
2006–2009: السنوات الأولى
بدأ مشروع Rust كمشروع شخصي لموظف موزيلا، غرايدون هوار، عام 2006. ووفقًا لمجلة MIT Technology Review ، فقد بدأ المشروع بسبب إحباطه من عطل في مصعد مبنى شقته نتيجة لتوقف برنامجه عن العمل، [ 20 ] وأطلق على اللغة اسم مجموعة الفطريات التي تحمل الاسم نفسه والتي تتميز بـ"هندسة مفرطة للبقاء". [ 20 ] خلال الفترة ما بين 2006 و2009، لم يُعلن عن Rust لزملائه في موزيلا، بل كان يكتبها في أوقات فراغه؛ [ 21 ] : 7:50 بدأ هوار الحديث عن اللغة حوالي عام 2009 بعد أن أبدت مجموعة صغيرة في موزيلا اهتمامًا بالمشروع. [ 22 ] استشهد هوار بلغات من سبعينيات وثمانينيات وتسعينيات القرن العشرين كمؤثرة، بما في ذلك CLU و BETA و Mesa وNIL [ ملاحظة 4 ] وErlang و Newsqueak و Napier و Hermes و Sather و Alef و Limbo . [ 22 ] ووصف اللغة بأنها "تقنية من الماضي جاءت لإنقاذ المستقبل من نفسه". [ 21 ] : 8:17 [ 22 ] وبالمثل، وصف مانيش غورغاوكار، أحد أوائل مطوري لغة Rust، لغة Rust بأنها مبنية على "أبحاث تعود في معظمها إلى عقود مضت". [ 20 ]
في السنوات الأولى، كُتب مُترجم لغة Rust بحوالي 38,000 سطر من لغة OCaml . [ 21 ] : 15:34 [ 23 ] احتوت لغة Rust المبكرة على العديد من الميزات التي لم تعد موجودة اليوم، بما في ذلك البرمجة الكائنية التوجه الصريحة عبر objكلمة مفتاحية [ 21 ] : 10:08 ونظام حالات النوع لتغييرات حالة المتغيرات، مثل الانتقال من حالة غير مهيأة إلى حالة مهيأة. [ 21 ] : 13:12
2009–2012: رعاية موزيلا
رعت موزيلا مشروع Rust رسميًا عام 2009. [ 20 ] وقد أثار بريندان إيتش وعدد من المديرين التنفيذيين الآخرين، الذين انبهروا بإمكانية استخدام Rust لمحرك متصفح ويب آمن ، اهتمامهم بالمشروع، فضمّوا إليه مهندسين من بينهم باتريك والتون، ونيكو ماتساكيس، وفيليكس كلوك، ومانيش غورغاوكار. [ 20 ] وقد أُطلق على غرفة اجتماعات استأجرها مطورو المشروع اسم "كهف المهووسين"، ووُضعت لافتة على بابها. [ 20 ]
خلال هذه الفترة، تحوّل العمل من مُصرّف OCaml الأولي إلى مُصرّف ذاتي الاستضافة ( أي مكتوب بلغة Rust) يستهدف LLVM . [ 24 ] [ ملاحظة 5 ] وتمّ تطبيق نظام الملكية بحلول عام 2010. [ 20 ] وتمّ تطوير شعار Rust في عام 2011 استنادًا إلى ترس دراجة هوائية. [ 26 ]
أُصدرت النسخة 0.1 من لغة Rust لأول مرة للجمهور في 20 يناير 2012 [ 27 ] لأنظمة ويندوز ولينكس وماك أو إس. [ 28 ] وشهدت أوائل العقد الثاني من القرن الحادي والعشرين زيادة في مشاركة المهندسين المتفرغين في موزيلا والمتطوعين من خارجها في تطوير البرمجيات مفتوحة المصدر. [ 20 ]
2012–2015: التطور
شهدت السنوات من 2012 إلى 2015 تغييرات جوهرية في نظام أنواع لغة Rust . [ 21 ] : 18:36 [ 20 ] تم دمج إدارة الذاكرة وتوسيعها تدريجيًا من خلال نظام الملكية. وبحلول عام 2013، أصبح جامع البيانات المهملة نادر الاستخدام، وتمت إزالته لصالح نظام الملكية. [ 20 ] كما تم حذف ميزات أخرى لتبسيط اللغة، بما في ذلك حالات الأنواع، والكلمة pureالمفتاحية، [ 29 ] وأنواع المؤشرات المتخصصة المختلفة، ودعم بناء الجملة للقنوات . [ 21 ] : 22:32
بحسب ستيف كلابنيك، تأثرت لغة Rust خلال هذه الفترة بمطورين قادمين من لغة C++ (مثل الأداء منخفض المستوى للميزات)، ولغات البرمجة النصية (مثل Cargo وإدارة الحزم)، والبرمجة الوظيفية (مثل تطوير أنظمة الأنواع). [ 21 ] : 30:50
تنحى غرايدون هوار عن منصبه في Rust عام 2013. [ 20 ] بعد رحيل هوار، تطورت Rust بشكل طبيعي ضمن هيكل حوكمة اتحادي، مع "فريق أساسي" مكون في البداية من ستة أشخاص، [ 21 ] : 21:45 وحوالي 30-40 مطورًا إجمالًا موزعين على فرق أخرى متنوعة. [ 21 ] : 22:22 أُضيفت عملية طلب التعليقات (RFC) لميزات اللغة الجديدة في مارس 2014. [ 21 ] : 33:47 نما الفريق الأساسي إلى تسعة أشخاص بحلول عام 2016 [ 21 ] : 21:45 مع أكثر من 1600 طلب تعليقات. [ 21 ] : 34:08
بحسب أندرو بينستوك في مجلة دكتور دوبز في يناير 2014، فبينما كان يُنظر إلى لغة رست على نطاق واسع على أنها "لغة أنيقة للغاية"، تباطأ تبنيها بسبب التغيرات الجذرية التي طرأت عليها من إصدار لآخر. [ 30 ] ركز تطوير رست في ذلك الوقت على وضع اللمسات الأخيرة على ميزات الإصدار 1.0 لكي تتمكن من البدء في ضمان التوافق مع الإصدارات السابقة . [ 21 ] : 41:26
بعد ست سنوات من رعاية موزيلا، نُشرت لغة Rust 1.0 وأصبحت أول إصدار مستقر في 15 مايو 2015. [ 20 ] بعد عام، بلغ عدد المساهمين في مُصرّف Rust أكثر من 1400 مساهم، ونُشرت أكثر من 5000 مكتبة برمجية خارجية على موقع إدارة حزم Rust، Crates.io. [ 21 ] : 43:15
2015-2020: سيرفو والتبني المبكر

استمر تطوير محرك متصفح سيرفو بالتوازي مع لغة رست، بتمويل مشترك من موزيلا وسامسونج . [ 31 ] عمل الفريقان القائمان على المشروعين بتعاون وثيق؛ حيث اختبر فريق سيرفو الميزات الجديدة في رست، واستُخدمت الميزات الجديدة في سيرفو لتقديم ملاحظات إلى فريق رست. [ 21 ] : 5:41 صدرت النسخة الأولى من سيرفو في عام 2016. [ 20 ] تم شحن متصفح فايرفوكس مع كود رست اعتبارًا من عام 2016 (الإصدار 45)، [ 21 ] : 53:30 [ 32 ] ولكن لم تظهر مكونات سيرفو في فايرفوكس حتى سبتمبر 2017 (الإصدار 57 ) كجزء من مشروعي جيكو وكوانتوم . [ 33 ]
أُدخلت تحسينات على بيئة أدوات Rust خلال السنوات التي تلت الإصدار 1.0، بما في ذلك Rustfmt ، وتكامل بيئة التطوير المتكاملة ، [ 21 ] : 44:56 ، ودورة منتظمة لاختبار وإصدار المُصرّف. [ 21 ] : 46:48. كما حصل مجتمع Rust على مدونة سلوك وقناة دردشة IRC للنقاش. [ 21 ] : 50:36
كان أول استخدام معروف للغة Rust خارج نطاق موزيلا من قِبل مشاريع فردية في سامسونج، وفيسبوك (التي تُعرف الآن باسم Meta Platforms )، ودروب بوكس ، وشركة Tilde، الشركة المطورة لـ Ember.js . [ 21 ] : 55:44 [ 20 ] ثم انضمت إليها خدمات أمازون السحابية في عام 2020. [ 20 ] وقد ذكر المهندسون أن الأداء، وعدم وجود جامع بيانات مهملة، والأمان، وسهولة استخدام اللغة، كلها أسبابٌ وراء هذا الاستخدام. واستشهد مطورو أمازون بنتائج توصل إليها باحثون برتغاليون، مفادها أن كود Rust يستهلك طاقة أقل مقارنةً بكود مماثل مكتوب بلغة Java . [ 20 ] [ 34 ]
2020–حتى الآن: تسريح موظفين في موزيلا ومؤسسة راست
في أغسطس/آب 2020، سرحت موزيلا 250 موظفًا من أصل 1000 موظف حول العالم، ضمن عملية إعادة هيكلة مؤسسية ناجمة عن جائحة كوفيد-19 . [ 35 ] [ 36 ] وتم حلّ الفريق المسؤول عن سيرفو. أثار هذا الحدث مخاوف بشأن مستقبل لغة رست. [ 37 ] في الأسبوع التالي، أقرّ فريق رست الأساسي بالأثر البالغ لعمليات التسريح، وأعلن عن بدء العمل على خطط لإنشاء مؤسسة رست. يتمثل الهدف الأول للمؤسسة في امتلاك جميع العلامات التجارية وأسماء النطاقات ، وتحمّل المسؤولية المالية عن تكاليفها. [ 38 ]
في 8 فبراير 2021، أعلنت خمس شركات مؤسسة عن تأسيس مؤسسة Rust : أمازون ويب سيرفيسز ، وجوجل ، وهواوي ، ومايكروسوفت ، وموزيلا . [ 39 ] [ 40 ] وستقدم المؤسسة دعمًا ماليًا لمطوري Rust على شكل منح وتمويل للخوادم. [ 20 ] وفي منشور على مدونة جوجل بتاريخ 6 أبريل 2021، أعلنت الشركة دعمها للغة Rust ضمن مشروع Android مفتوح المصدر كبديل للغة C/C++. [ 41 ]
في 22 نوفمبر/تشرين الثاني 2021، أعلن فريق الإشراف، المسؤول عن تطبيق مدونة قواعد السلوك الخاصة بالمجتمع، استقالته "احتجاجًا على تنصل الفريق الأساسي من المساءلة أمام أي جهة سوى أنفسهم". [ 42 ] وفي مايو/أيار 2022، نشر أعضاء مجلس قيادة Rust ردًا علنيًا على الحادثة. [ 43 ]
نشرت مؤسسة Rust مسودة سياسة جديدة للعلامات التجارية في 6 أبريل 2023، مما أثار ردود فعل سلبية واسعة النطاق من مستخدمي Rust ومساهميها. [ 44 ] تضمنت سياسة العلامات التجارية قواعد لكيفية استخدام شعار Rust واسمها. [ 44 ]
بناء الجملة والميزات
تتشابه بنية لغة Rust مع بنية لغتي C و C++ ، [ 45 ] [ 46 ] على الرغم من أن العديد من ميزاتها تأثرت بلغات البرمجة الوظيفية مثل OCaml . [ 47 ] وقد وصف هوار لغة Rust بأنها موجهة لمطوري C++ المحبطين. [ 22 ]
برنامج "مرحباً بالعالم"
فيما يلي برنامج "مرحباً بالعالم!" مكتوب بلغة Rust. fnتشير الكلمة المفتاحية إلى دالة ، ويقوم println!الماكرو (انظر قسم الماكرو ) بطباعة الرسالة إلى المخرج القياسي . [ 48 ] تُفصل العبارات في Rust بفواصل منقوطة .
fn main () { println! ( "Hello, World!" ); }المتغيرات
تُعرَّف المتغيراتlet في لغة Rust باستخدام الكلمة المفتاحية `. [ 49 ] يُسند المثال أدناه قيمةً إلى المتغير `name` من fooالنوع `type` i32ويُخرج قيمتها؛ ويمكن حذف تعريف النوع.:i32
fn main () { let foo : i32 = 10 ; println! ( "قيمة foo هي {foo}" ); }تكون المتغيرات غير قابلة للتغيير افتراضيًا، إلا إذا mutتمت إضافة الكلمة المفتاحية. [ 50 ] يستخدم المثال التالي //، والذي يشير إلى بداية تعليق . [ 51 ]
fn main () { // لن يتم تجميع هذا الكود بدون إضافة "mut". let mut foo = 10 ; println! ( "قيمة foo هي {foo}" ); foo = 20 ; println! ( "قيمة foo هي {foo}" ); }يمكن تعريف عدة letمتغيرات بنفس الاسم باستخدام تعابير متعددة، وهو ما يُعرف بتظليل المتغيرات . يسمح تظليل المتغيرات بتحويل قيم المتغيرات دون الحاجة إلى تغيير أسمائها. [ 52 ] يُعرّف المثال أدناه متغيرًا جديدًا بنفس الاسم، وقيمته ضعف القيمة الأصلية:
fn main () { let foo = 10 ; // سيُخرج هذا "قيمة foo هي 10" println! ( "قيمة foo هي {foo}" ); let foo = foo * 2 ; // سيُخرج هذا "قيمة foo هي 20" println! ( "قيمة foo هي {foo}" ); }يُمكن أيضًا تطبيق تقنية التظليل المتغير على قيم من أنواع مختلفة. على سبيل المثال، الانتقال من سلسلة نصية إلى طولها:
fn main () { let letters = "abc" ; let letters = letters . len (); }التعبيرات الكتلية وتدفق التحكم
يتم تحديد تعبير الكتلة بواسطة أقواس معقوفة . عندما لا ينتهي التعبير الأخير داخل الكتلة بفاصلة منقوطة، فإن الكتلة تُقيّم إلى قيمة ذلك التعبير الأخير: [ 53 ]
fn main () { let x = { println! ( "هذا داخل الكتلة" ); 1 + 2 }; println! ( "1 + 2 = {x}" ); }تُستخدم التعبيرات اللاحقة لأجسام الدوال كقيمة إرجاع: [ 54 ]
fn add_two ( x : i32 ) -> i32 { x + 2 }ifتعابير
يُنفذ التعبير ifالشرطي التعليمات البرمجية بناءً على ما إذا كانت القيمة المُعطاة صحيحة أم خاطئة true. elseويمكن استخدامه عندما تكون القيمة صحيحة false، كما يمكن استخدامه لدمج تعبيرات متعددة. [ 55 ]elseif
fn main () { let x = 10 ; if x > 5 { println! ( "القيمة أكبر من خمسة" ); }إذا كان باقي قسمة x على 7 يساوي صفرًا ، فسيتم طباعة " القيمة تقبل القسمة على 7" . وإذا كان باقي قسمة x على 5 يساوي صفرًا ، فسيتم طباعة " القيمة تقبل القسمة على 5" . وإلا ، فسيتم طباعة " القيمة لا تقبل القسمة على 7 أو 5" .ifويمكن تقييم الكتل elseإلى قيمة، والتي يمكن بعد ذلك تعيينها لمتغير: [ 55 ]
fn main () { let x = 10 ; let new_x = if x % 2 == 0 { x / 2 } else { 3 * x + 1 }; println! ( "{new_x}" ); }whileالحلقات
whileيمكن استخدامها لتكرار كتلة من التعليمات البرمجية طالما تم استيفاء شرط معين. [ 56 ]
fn main () { // التكرار على جميع الأعداد الصحيحة من 4 إلى 10 let mut value = 4 ; while value <= 10 { println! ( "value = {value}" ); value += 1 ; } }forالحلقات والمكررات
تُستخدم حلقات التكرار في لغة Rust للتكرار على عناصر مجموعة. [ 57 ]for تعمل التعبيرات على أي نوع من أنواع المُكرِّرات .
fn main () { // استخدام حلقة `for` مع صيغة النطاق لنفس الوظيفة المذكورة أعلاه // الصيغة 4..=10 تعني النطاق من 4 إلى 10، وصولاً إلى 10. for value in 4 ..= 10 { println! ( "value = {value}" ); } }في الكود أعلاه، يمثل قيمة من النوع الذي يُطبّق السمة. ويتم تطبيق الكود الموجود داخل الأقواس المعقوفة على كل عنصر يُرجعه المُكرِّر.4..=10RangeIterator
يمكن دمج المُكرِّرات مع الدوال التي تعمل على المُكرِّرات مثل mapو filterو sum. على سبيل المثال، يجمع ما يلي جميع الأعداد بين 1 و100 التي تُعد من مضاعفات العدد 3:
( 1 ..= 100 ) .filter ( | x | x % 3 == 0 ) .sum ()loopوالبياناتbreak
بشكل عام، loopتسمح الكلمة المفتاحية بتكرار جزء من الكود حتى breakيحدث خطأ. breakويمكنها اختيارياً إنهاء الحلقة بقيمة. في حالة الحلقات المتداخلة، يمكن استخدام العلامات المشار إليها بـ لإنهاء حلقة خارجية بدلاً من الحلقة الداخلية. [ 58 ]'label_name
fn main () { let value = 456 ; let mut x = 1 ; let y = loop { x *= 10 ; if x > value { break x / 10 ; } }; println! ( "أكبر قوة للعدد عشرة أصغر من أو تساوي القيمة: {y}" );let mut up = 1 ; ' outer : loop { let mut down = 120 ; loop { if up > 100 { break 'outer ; }إذا كان عدد مرات الضغط أقل من 4، فقم بالخروج من الحلقة .down /= 2 ; up += 1 ; println! ( "up: {up}, down: {down}" ); } up *= 2 ; } }مطابقة الأنماط
يمكن استخدام تعبيرات و matchلمطابقة الأنماط . على سبيل المثال، يمكن استخدامها لمضاعفة قيمة عدد صحيح اختيارية إذا كانت موجودة، وإرجاع صفر في حالة عدم وجودها: [ 59 ]ifletmatch
fn double ( x : Option < u64 > ) -> u64 { match x { Some ( y ) => y * 2 , None => 0 , } }وبصورة مماثلة، يمكن كتابة ذلك باستخدام و :ifletelse
fn double ( x : Option < u64 > ) -> u64 { if let Some ( y ) = x { y * 2 } else { 0 } }الأنواع
لغة Rust ذات كتابة قوية وثابتة ، مما يعني أنه يجب معرفة أنواع جميع المتغيرات وقت الترجمة. يؤدي إسناد قيمة من نوع معين إلى متغير من نوع مختلف إلى خطأ في الترجمة . يُستخدم استنتاج النوع لتحديد نوع المتغيرات إذا لم يتم تحديده. [ 60 ]
النوع `null` ()، المسمى "نوع الوحدة" في لغة Rust، هو نوع ملموس له قيمة واحدة فقط. لا يشغل أي ذاكرة (لأنه يمثل غياب القيمة). جميع الدوال التي لا تحدد نوع إرجاع معين تُرجع ضمنيًا قيمة `null` (). وهو مشابه لـ `null` voidفي لغات أخرى شبيهة بلغة C؛ إلا أن `null` voidيشير إلى غياب نوع ولا يمكن أن تكون له أي قيمة.
النوع الافتراضي للأعداد الصحيحة هو i32، والنوع الافتراضي للأعداد العشرية هو f64. إذا لم يُحدد نوع العدد الحرفي صراحةً، فإنه يُستنتج من السياق أو يُستخدم النوع الافتراضي. [ 61 ]
الأنواع الأولية
تُسمى أنواع الأعداد الصحيحة في لغة Rust بناءً على كونها مُوقّعة وعدد البتات التي يشغلها النوع. على سبيل المثال، ` i32int` هو عدد صحيح مُوقّع يشغل 32 بت من الذاكرة، بينما u8`unsigned` هو عدد صحيح غير مُوقّع يشغل 8 بتات فقط. isizeويختلف حجم `int` و` usizeunsigned` حسب عرض ناقل عناوين الذاكرة للهدف المُستخدم في عملية الترجمة. على سبيل المثال، عند بناء التطبيق لأهداف 32 بت ، سيشغل كلا النوعين 32 بت من الذاكرة. [ 62 ] [ 63 ]
بشكل افتراضي، تُكتب القيم العددية الصحيحة بنظام العد العشري، ولكن تُدعم أنظمة عد0b11 مختلفة باستخدام البادئات، على سبيل المثال، للأرقام الثنائية ، 0o567وللأعداد الثمانية ، 0xDBوللأعداد الست عشرية . افتراضيًا، يكون i32نوع القيمة العددية الصحيحة هو . يمكن استخدام اللواحق، مثل ، لتحديد نوع القيمة بشكل صريح. [ 64 ] تتوفر قيم بايت، مثل ، لتمثيل قيمة ASCII (كـ ) لحرف معين. [ 65 ]4u32b'X'u8
يُشار إلى النوع المنطقي باسم `T`، والذي يمكنbool أن يأخذ القيمة `T` trueأو `T` false. charيشغل `T` مساحة 32 بتًا ويمثل قيمة عددية في يونيكود: [ 66 ] نقطة ترميز يونيكود ليست بديلًا . [ 67 ] يتم دعم أرقام الفاصلة العائمة IEEE 754f32 باستخدام `T` للأعداد ذات الدقة المفردة و` f64T` للأعداد ذات الدقة المزدوجة . [ 68 ]
أنواع المركبات
يمكن أن تحتوي الأنواع المركبة على قيم متعددة. الصفوف هي قوائم ثابتة الحجم يمكن أن تحتوي على قيم من أنواع مختلفة. المصفوفات هي قوائم ثابتة الحجم قيمها من النوع نفسه. يمكن كتابة تعبيرات أنواع الصفوف والمصفوفات من خلال سرد القيم، ويمكن الوصول إليها باستخدام (مع الصفوف) أو (مع المصفوفات): [ 69 ].index[index]
let tuple : ( u32 , bool ) = ( 3 , true ); let array : [ i8 ; 5 ] = [ 1 , 2 , 3 , 4 , 5 ]; let value = tuple . 1 ; // true let value = array [ 2 ]; // 3يمكن أيضًا إنشاء المصفوفات من خلال نسخ قيمة واحدة عدة مرات: [ 70 ]
let array2 : [ char ; 10 ] = [ ' ' ; 10 ];الملكية والمراجع
يتألف نظام ملكية البيانات في لغة Rust من قواعد تضمن سلامة الذاكرة دون استخدام جامع البيانات المهملة. عند وقت الترجمة، يجب ربط كل قيمة بمتغير يُسمى مالك تلك القيمة، ويجب أن يكون لكل قيمة مالك واحد فقط. [ 71 ] تُنقل القيم بين المالكين المختلفين من خلال التعيين أو تمرير قيمة كمعامل دالة. يمكن أيضًا استعارة القيم، أي تمريرها مؤقتًا إلى دالة أخرى قبل إعادتها إلى مالكها. [ 72 ] بفضل هذه القواعد، تستطيع Rust منع إنشاء واستخدام المؤشرات المعلقة : [ 72 ] [ 73 ]
fn print_string ( s : String ) { println! ( "{}" , s ); }fn main () { let s = String :: from ( "Hello, World" ); print_string ( s ); // تم استهلاك s بواسطة print_string // تم نقل s، لذا لا يمكن استخدامه بعد الآن // استخدام print_string(s) مرة أخرى سيؤدي إلى خطأ في الترجمة }تتولى الدالة print_stringملكية Stringالقيمة التي تم تمريرها؛ بدلاً من ذلك، &يمكن استخدامها للإشارة إلى نوع مرجعي (في ) ولإنشاء مرجع (في ): [ 74 ]&String&s
fn print_string ( s : & String ) { println! ( "{}" , s ); }fn main () { let s = String :: from ( "Hello, World" ); print_string ( & s ); // تم استعارة s بواسطة print_string print_string ( & s ); // لم يتم استهلاك s بعد؛ يمكننا استدعاء الدالة عدة مرات }بسبب قواعد الملكية هذه، تُعرف أنواع Rust بالأنواع الخطية ، مما يعني أنه لا يمكن استخدام كل قيمة إلا مرة واحدة على الأكثر. وهذا يفرض شكلاً من أشكال عزل أخطاء البرمجيات ، حيث يكون مالك القيمة مسؤولاً مسؤولية كاملة عن صحتها وتحريرها. [ 75 ]
عندما تخرج قيمة ما عن نطاق تعريفها، يتم حذفها بتشغيل دالة التدمير الخاصة بها . يمكن تعريف دالة التدمير برمجيًا من خلال تطبيق Dropالسمة . يساعد هذا في إدارة الموارد مثل مؤشرات الملفات ومنافذ الشبكة والأقفال ، حيث أنه عند حذف الكائنات، يتم إغلاق الموارد المرتبطة بها أو تحريرها تلقائيًا. [ 76 ]
مدى الحياة
يشير عمر الكائن إلى الفترة الزمنية التي يكون فيها المرجع صالحًا؛ أي الفترة بين إنشاء الكائن وتدميره. [ 77 ] ترتبط هذه الأعمار ضمنيًا بجميع أنواع المراجع في لغة Rust. وعلى الرغم من أنها غالبًا ما تُستنتج، إلا أنه يمكن أيضًا الإشارة إليها صراحةً باستخدام معلمات عمر مُسماة (يُشار إليها عادةً بـ و وما إلى ذلك). [ 78 ]'a'b
يُستدل على عمر القيمة في لغة Rust من مجموعة المواقع في شفرة المصدر (أي أرقام الدوال والأسطر والأعمدة) التي يكون المتغير صالحًا فيها. [ 79 ] على سبيل المثال، يكون عمر مرجع إلى متغير محلي من التعبير الذي تم تعريفه فيه وحتى آخر استخدام له. [ 79 ]
fn main () { let mut x = 5 ; // ------------------+- مدة الصلاحية 'أ // | let r = & x ; // -+-- مدة الصلاحية 'ب | // | | println! ( "r: {}" , r ); // -+ | // بما أن r لم يعد مستخدمًا، | // تنتهي مدة صلاحيته | let r2 = & mut x ; // -+-- مدة الصلاحية 'ج | } // ------------------+يتأكد مدقق الاستعارة في مُصرّف لغة Rust من استخدام المراجع فقط في مواقع الشيفرة المصدرية التي يكون فيها عمر المتغير المرتبط بها صالحًا. [ 80 ] [ 81 ] في المثال أعلاه، يُعد تخزين مرجع إلى المتغير xفي rصالحًا، لأن xعمر المتغير أطول من عمر المتغير . مع ذلك، عندما يكون عمر أقصر، سيرفض مدقق الاستعارة البرنامج.'ar'bx
fn main () { let r ; // ------------------+- العمر الافتراضي 'a // | { // | let x = 5 ; // -+-- العمر الافتراضي 'b | r = & x ; // خطأ: x لا يعيش طويلاً | | } // | println! ( "r: {}" , r ); // | } // ------------------+بما أن عمر المتغير المُشار إليه ( ) أقصر من عمر المتغير الذي يحمل المرجع ( )، فإن مدقق الاستعارة يُخطئ، مما يمنع استخدامه من خارج نطاقه. [ 82 ]'b'ax
يمكن تحديد فترات صلاحية المتغيرات باستخدام معلمات صريحة لفترات الصلاحية في وسائط الدالة. على سبيل المثال، يحدد الكود التالي أن المرجع الذي تُرجعه الدالة له نفس فترة صلاحية المرجع original( وليس بالضرورة نفس فترة صلاحية المرجع الآخر prefix): [ 83 ]
fn remove_prefix < ' a > ( mut original : & ' a str , prefix : & str ) - > & ' a str { if original.starts_with ( prefix ) { original = original [ prefix.len ( ) .. ] ; } original }في المُصرّف، تعمل الملكية ودورات الحياة معًا لمنع مشاكل سلامة الذاكرة مثل المؤشرات المعلقة. [ 84 ] [ 85 ]
أنواع معرفة من قبل المستخدم
تُنشأ الأنواع المُعرَّفة من قِبل المستخدم باستخدام الكلمات المفتاحية struct`or` enum. structتُستخدم الكلمة المفتاحية `or` للدلالة على نوع سجل يُجمِّع قيمًا متعددة ذات صلة. [ 86 ]enum يمكن أن تتخذ هذه الأنواع أشكالًا مختلفة أثناء التشغيل، وتتشابه قدراتها مع أنواع البيانات الجبرية الموجودة في لغات البرمجة الوظيفية. [ 87 ] يمكن أن تحتوي كل من السجلات ومتغيرات التعداد على حقول بأنواع مختلفة. [ 88 ] يمكن تعريف أسماء بديلة، أو أسماء مستعارة، لنفس النوع باستخدام الكلمة typeالمفتاحية `or`. [ 89 ]
يمكن للكلمة implالمفتاحية تعريف طرق لنوع معرف من قبل المستخدم. يتم تعريف البيانات والوظائف بشكل منفصل. تؤدي التطبيقات دورًا مشابهًا لدور الفئات في لغات البرمجة الأخرى. [ 90 ]
المكتبة القياسية

تُعرّف مكتبة Rust القياسية وتُنفّذ العديد من أنواع البيانات المخصصة شائعة الاستخدام، بما في ذلك هياكل البيانات الأساسية مثل Vec`<data> Option` و`< data>` و`<data> HashMap`، بالإضافة إلى أنواع المؤشرات الذكية#![no_std] . توفر Rust طريقة لاستبعاد معظم المكتبة القياسية باستخدام السمة `<data> `، وذلك لتطبيقات مثل الأجهزة المدمجة. داخليًا، تُقسّم المكتبة القياسية إلى ثلاثة أجزاء: `<data>` coreو` <data>` allocو`< data std>`، حيث stdيتم allocاستبعاد `<data>` و`<data>` بواسطة السمة ` <data>` #![no_std]. [ 91 ]
يستخدم Rust نوع الخيارOption<T> لتعريف القيم الاختيارية، والتي يمكن مطابقتها باستخدام if letأو matchللوصول إلى القيمة الداخلية: [ 92 ]
fn main () { let name1 : Option <& str > = None ; // في هذه الحالة، لن يتم طباعة أي شيء if let Some ( name ) = name1 { println! ( "{name}" ); }let name2 : Option <& str > = Some ( "Matthew" ); // في هذه الحالة، ستُطبع كلمة "Matthew" if let Some ( name ) = name2 { println! ( "{name}" ); } }وبالمثل، يحتوي نوع النتيجة في لغة Rust Result<T, E>إما على قيمة محسوبة بنجاح ( Okالنوع الأول) أو خطأ ( Errالنوع الثاني). [ 93 ] ومثل النوع الأول Option، فإن استخدام النوع الثاني Resultيعني أنه لا يمكن استخدام القيمة الداخلية مباشرةً؛ إذ يجب على المبرمجين استخدام matchتعبير، أو اختصار برمجي مثل ?(عامل "try")، أو unwrapتأكيد صريح للوصول إليها. يُستخدم كل من النوعين الأول والثاني Optionفي Resultجميع أنحاء المكتبة القياسية، وهما جزء أساسي من منهج Rust الصريح في التعامل مع الأخطاء والبيانات المفقودة.
نصائح
يُضمن أن تكون أنواع المراجع ` &and` غير فارغة وتشير إلى ذاكرة صالحة. [ 94 ] أما أنواع المؤشرات الخام ` and` فتستثني ضمانات الأمان، وبالتالي قد تكون فارغة أو غير صالحة؛ ومع ذلك، يستحيل الوصول إليها إلا إذا تم التصريح صراحةً بأن الكود غير آمن باستخدام كتلة `include` . [ 95 ] على عكس الوصول غير الآمن، يُسمح بإنشاء المؤشرات الخام داخل كود Rust الآمن. [ 96 ]&mut*const*mutunsafe
تحويل النوع
لا توفر لغة Rust تحويلاً ضمنياً للأنواع (إجباراً) بين معظم الأنواع الأولية. ولكن، يمكن إجراء تحويل صريح للأنواع (تحويل نوعي) باستخدام الكلمة asالمفتاحية. [ 97 ]
let x : i32 = 1000 ; println! ( "1000 كـ u16 هو: {}" , x as u16 );تعدد الأشكال
يدعم Rust تعدد الأشكال من خلال السمات والوظائف العامة وكائنات السمات . [ 98 ]
سمات
يتم الإعلان عن السلوك المشترك بين الأنواع باستخدام السمات implوالكتل: [ 99 ]
trait Zero : Sized { fn zero () -> Self ; fn is_zero ( & self ) -> bool where Self : PartialEq , { self == & Zero :: zero () } }impl Zero for u32 { fn zero () -> u32 { 0 } }impl Zero for f32 { fn zero () -> Self { 0.0 } }يتضمن المثال أعلاه طريقة is_zeroتوفر تطبيقًا افتراضيًا يمكن تجاوزه عند تطبيق السمة. [ 99 ]
الوظائف العامة
يمكن جعل الدالة عامة عن طريق إضافة معلمات النوع داخل أقواس الزاوية ( )، والتي تسمح فقط بالأنواع التي تنفذ السمة:<Num>
// zero هي دالة عامة ذات مُعامل نوع واحد، Num fn zero < Num : Zero > () -> Num { Num :: zero () }fn main () { let a : u32 = zero (); let b : f32 = zero (); assert! ( a . is_zero () && b . is_zero ()); }في الأمثلة أعلاه، تُعدّ كل من و حدودًا للسمات تُقيّد النوع بحيث لا تسمح إلا بالأنواع التي تُنفّذ أو . [ 99 ] ضمن السمة أو التنفيذ، يُشير إلى النوع الذي يُنفّذه الكود. [ 100 ]Num:ZerowhereSelf:PartialEqZeroPartialEqSelf
يمكن استخدام الأنواع العامة في الدوال للسماح بتنفيذ سلوك لأنواع مختلفة دون تكرار نفس الكود (انظر تعدد الأشكال البارامتري المحدود ). يمكن كتابة الدوال العامة بالارتباط بأنواع عامة أخرى، دون معرفة النوع الفعلي. [ 101 ]
كائنات السمات
تستخدم السمات افتراضيًا الإرسال الثابت : حيث يقوم المترجم بتحويل الدالة إلى شكل أحادي لكل مثيل نوع محدد، مما ينتج عنه أداء مكافئ للتعليمات البرمجية الخاصة بالنوع على حساب أوقات تجميع أطول وملفات تنفيذية أكبر. [ 102 ]
عندما لا يكون النوع الدقيق معروفًا وقت الترجمة، توفر لغة Rust كائنات السمات&dyn Trait . [ 103 ] تستخدم استدعاءات كائنات السمات الإرسال الديناميكي عبر جدول بحث؛ كائن السمة هو "مؤشر شامل" يحمل مؤشر بيانات ومؤشر جدول طرق. [ 102 ] تضيف هذه الآلية تكلفة بسيطة لوقت التشغيل، لكنها تحافظ على نسخة واحدة من الكود وتقلل حجم الملف التنفيذي. السمات "الآمنة للكائنات" فقط هي المؤهلة للاستخدام ككائنات سمات. [ 104 ]Box<dyn Trait>
يشبه هذا النهج أسلوب الكتابة الديناميكية ، حيث يمكن التعامل مع جميع أنواع البيانات التي تُطبّق سمةً معينة على أنها قابلة للتبادل وظيفيًا. [ 105 ] يُنشئ المثال التالي قائمةً من الكائنات، حيث يُطبّق كل كائن منها Displayالسمة المطلوبة:
استخدم std :: fmt :: Display ؛let v : Vec < Box < dyn Display >> = vec! [ Box :: new ( 3 ), Box :: new ( 5.0 ), Box :: new ( "hi" ), ];for x in v { println! ( "{x}" ); }إذا لم يُطبّق أحد العناصر في القائمة Displayالسمة المطلوبة، فسيؤدي ذلك إلى حدوث خطأ أثناء الترجمة. [ 106 ]
إدارة الذاكرة
لا تستخدم لغة Rust آلية جمع البيانات المهملة . بدلاً من ذلك، تُدار الذاكرة والموارد الأخرى وفقًا لاتفاقية "اكتساب الموارد هو التهيئة" [ 107 ] ، مع إمكانية استخدام عدّ المراجع . توفر Rust إدارة حتمية للموارد، مع تكلفة إضافية منخفضة للغاية [ 108 ] . تُخصص القيم على المكدس افتراضيًا، ويجب أن تكون جميع عمليات التخصيص الديناميكي صريحة [ 109 ] .
لا تتضمن أنواع المراجع المضمنة التي تستخدم &الرمز عدّ المراجع أثناء التشغيل. يتم التحقق من سلامة وصحة المؤشرات الأساسية في وقت الترجمة، مما يمنع المؤشرات المعلقة وغيرها من أشكال السلوك غير المحدد . [ 110 ] يفصل نظام أنواع Rust المراجع المشتركة غير القابلة للتغيير من النوع &Tعن المراجع الفريدة القابلة للتغيير من النوع &mut T. يمكن تحويل مرجع قابل للتغيير إلى مرجع غير قابل للتغيير، ولكن ليس العكس. [ 111 ]
غير آمن
يمكن تجاوز فحوصات أمان الذاكرة في لغة Rust (انظر #Safety ) باستخدام unsafeالكتل البرمجية. يسمح هذا للمبرمجين بالوصول إلى مؤشرات خام عشوائية، أو استدعاء تعليمات برمجية خارجية، أو تنفيذ وظائف أخرى منخفضة المستوى لا تسمح بها Rust الآمنة. [ 112 ] تتضمن بعض الوظائف منخفضة المستوى التي يتم تمكينها بهذه الطريقة الوصول إلى الذاكرة المتقلبة ، والوظائف المضمنة الخاصة بالمعمارية، وتغيير أنواع البيانات ، والتجميع المضمن. [ 113 ]
هناك حاجة إلى استخدام التعليمات البرمجية غير الآمنة، على سبيل المثال، في تنفيذ هياكل البيانات. [ 114 ] ومن الأمثلة الشائعة صعوبة أو استحالة تنفيذ القوائم المرتبطة ثنائياً في لغة Rust الآمنة. [ 115 ] [ 116 ] [ 117 ] [ 118 ]
يُعتبر المبرمجون الذين يستخدمون لغة Rust غير الآمنة مسؤولين عن الالتزام بمتطلبات أمان الذاكرة والأنواع في Rust، على سبيل المثال، عدم وجود مرجعين قابلين للتغيير يشيران إلى الموقع نفسه. [ 119 ] إذا كتب المبرمجون شيفرةً تنتهك هذه المتطلبات، فسيؤدي ذلك إلى سلوك غير مُعرَّف . [ 119 ] تتضمن وثائق Rust قائمةً بالسلوكيات التي تُعتبر غير مُعرَّفة، بما في ذلك الوصول إلى المؤشرات المعلقة أو غير المُحاذية، أو مخالفة قواعد التسمية البديلة للمراجع. [ 120 ]
وحدات الماكرو
تسمح وحدات الماكرو بإنشاء وتحويل كود Rust لتقليل التكرار. تأتي وحدات الماكرو في شكلين، وحدات ماكرو تصريحية تُعرَّف من خلال macro_rules!، ووحدات ماكرو إجرائية تُعرَّف في حزم منفصلة. [ 121 ] [ 122 ]
وحدات الماكرو التصريحية
الماكرو التصريحي (ويُسمى أيضًا "ماكرو بالمثال") هو ماكرو مُعرَّف باستخدام الكلمة macro_rules!المفتاحية، ويستخدم مطابقة الأنماط لتحديد توسيعه. [ 123 ] [ 124 ] فيما يلي مثال يجمع جميع وسائطه:
macro_rules! sum { ( $initial : expr $(, $expr : expr ) * $(, ) ? ) => { $initial $( + $expr ) * } }fn main () { let x = sum ! ( 1 , 2 , 3 ); println! ( "{x}" ); // يطبع 6 }في هذا المثال، تم تعريف الماكرو المسمى sumباستخدام الصيغة macro_rules! sum {(...) => { ... } }. يحدد الجزء الأول داخل الأقواس في التعريف، وهو نمط الماكرو، ( $initial:expr $(, $expr:expr )* $(,)? )بنية المدخلات التي يمكن أن يقبلها. هنا، $initial:exprيمثل التعبير الأول، بينما $(, $expr:expr )*يعني وجود صفر أو أكثر من التعبيرات الإضافية المفصولة بفواصل بعده. $(,)?يسمح الجزء الأخير للمستدعي بإضافة فاصلة نهائية اختياريًا دون التسبب في خطأ. =>يصف الجزء الثاني، بعد السهم ، الكود الذي سيتم إنشاؤه عند استدعاء الماكرو. في هذه الحالة، $initial $(+ $expr)*يعني أن الكود المُنشأ سيبدأ بالتعبير الأول، متبوعًا بـ +وكل تعبير إضافي بالتسلسل. *يعني مرة أخرى "تكرار هذا النمط صفر أو أكثر من المرات". هذا يعني أنه عند استدعاء الماكرو لاحقًا في السطر 8، كـ sum!(1, 2, 3)، سيتم حل الماكرو إلى 1 + 2 + 3يمثل مجموع جميع التعبيرات المُمررة.
وحدات الماكرو الإجرائية
وحدات الماكرو الإجرائية هي دوال في لغة رست تُنفَّذ وتُعدِّل دفق رموز الإدخال الخاص بالمُصرِّف ، قبل تجميع أي مكونات أخرى. وهي عمومًا أكثر مرونة من وحدات الماكرو التصريحية، ولكنها أصعب في الصيانة نظرًا لتعقيدها. [ 125 ] [ 126 ]
تأتي وحدات الماكرو الإجرائية بثلاثة أنواع:
- وحدات ماكرو شبيهة بالوظائف
custom!(...) - اشتقاق وحدات الماكرو
#[derive(CustomDerive)] - وحدات الماكرو الخاصة بالسمات
#[custom_attribute]
واجهة مع لغتي C و C++
يدعم Rust إنشاء واجهات وظائف خارجية (FFI) باستخدام الكلمة المفتاحية `ffi`. يمكن كتابة externدالة تستخدم اصطلاح استدعاء C باستخدام `ffi`. يمكن تصدير الرموز من Rust إلى لغات أخرى باستخدام السمة `ffi`، ويمكن استيراد الرموز إلى Rust باستخدام الكتل `ffi`: [ ملاحظة 6 ] [ 128 ]extern"C"fn#[unsafe(no_mangle)]extern
#[unsafe(no_mangle)] pub extern "C" fn exported_from_rust ( x : i32 ) -> i32 { x + 1 } unsafe extern "C" { fn imported_into_rust ( x : i32 ) -> i32 ; }تُمكّن هذه #[repr(C)]الخاصية من إنشاء تخطيطات ذاكرة حتمية لـ structs و enums لاستخدامها عبر حدود FFI. [ 128 ] يمكن للمكتبات الخارجية مثل bindgenو cxxإنشاء روابط Rust للغة C/C++. [ 128 ] [ 129 ]
أمان
تشمل خصائص الأمان التي يضمنها Rust أمان الذاكرة ، وأمان الأنواع ، ومنع حدوث تضارب في البيانات . وكما ذُكر أعلاه، يمكن تجاوز هذه الضمانات باستخدام unsafeالكلمة المفتاحية.
تشمل سلامة الذاكرة عدم وجود إشارات إلى قيم فارغة ، أو مؤشرات معلقة ، أو مؤشرات غير محاذية ، بالإضافة إلى عدم وجود تجاوزات في المخزن المؤقت وأخطاء تحرير الذاكرة المزدوجة . [ 130 ] [ 131 ] [ 132 ] [ 133 ]
من الممكن حدوث تسريبات للذاكرة في لغة Rust الآمنة. [ 134 ] قد تحدث تسريبات الذاكرة نتيجة إنشاء مؤشرات مرجعية تشير إلى بعضها البعض (حلقة مرجعية) [ 134 ] أو يمكن إنشاؤها عمدًا من خلال استدعاء [ 135 ]Box::leak .
النظام البيئي
يشمل نظام Rust البيئي مُصرّفه، ومكتبته القياسية ، ومكونات إضافية لتطوير البرمجيات. تتم إدارة تثبيت المكونات عادةً بواسطة أداة تثبيت سلسلة أدواتrustup Rust، التي طوّرها مشروع Rust. [ 136 ]
المترجم
يقوم مُصرّف لغة Rust rustcبتحويل كود Rust إلى ملفات تنفيذية . أولًا، يُحلل المُصرّف الكود المصدري إلى شجرة بناء جملة مجردة (AST) . ثم تُحوّل هذه الشجرة إلى لغة وسيطة (IR ). بعد ذلك، يُستدعى الجزء الخلفي من المُصرّف كمكوّن فرعي لتطبيق التحسينات وترجمة اللغة الوسيطة الناتجة إلى كود كائن . أخيرًا، يُستخدم رابط لدمج الكائنات في صورة تنفيذية واحدة. [ 137 ]
يستخدم rustc برنامج LLVM كواجهة خلفية للمترجم افتراضيًا، ولكنه يدعم أيضًا استخدام واجهات خلفية بديلة مثل GCC و Cranelift . [ 138 ] والهدف من هذه الواجهات الخلفية البديلة هو زيادة تغطية منصة Rust أو تحسين أوقات الترجمة. [ 139 ] [ 140 ]
شحنة

Cargo هو نظام بناء Rust ومدير الحزم . يقوم بتنزيل وتجميع وتوزيع وتحميل الحزم - التي تُسمى crates - والتي يتم الاحتفاظ بها في سجل رسمي. كما أنه يعمل كواجهة أمامية لـ Clippy ومكونات Rust الأخرى. [ 141 ]
بشكل افتراضي، يستمد Cargo تبعياته من سجل crates.io الذي يساهم فيه المستخدمون ، ولكن يمكن أيضًا تحديد مستودعات Git ، والحزم الموجودة في نظام الملفات المحلي، ومصادر خارجية أخرى كاعتمادات. [ 142 ]
يدعم Cargo عمليات البناء القابلة للتكرار من خلال ملفي بيانات وصفية: Cargo.toml و Cargo.lock. [ 143 ] يُحدد ملف Cargo.toml كل حزمة مستخدمة ومتطلبات إصدارها. أما ملف Cargo.lock فيُنشأ تلقائيًا أثناء عملية تحديد التبعيات، ويسجل الإصدارات الدقيقة لجميع التبعيات، بما في ذلك التبعيات المتعدية . [ 144 ]
Rustfmt
Rustfmt هو مُنسِّق أكواد للغة Rust. يقوم بتنسيق المسافات البيضاء والمسافات البادئة لإنتاج كود وفقًا لنمط شائع ، ما لم يُحدد خلاف ذلك. يمكن استدعاؤه كبرنامج مستقل أو من مشروع Rust عبر Cargo. [ 145 ]
كليبي

كليبي هي أداة فحص مدمجة في لغة رست لتحسين صحة وأداء وسهولة قراءة كود رست. اعتبارًا من عام 2026يحتوي على أكثر من 800 قاعدة. [ 146 ] [ 147 ]
أنظمة التحكم في الإصدارات
بعد إصدار Rust 1.0، تُطوَّر الميزات الجديدة في إصدارات تجريبية ليلية تُصدر يوميًا. خلال كل دورة إصدار مدتها ستة أسابيع، تُطرح التغييرات التي طرأت على الإصدارات التجريبية الليلية في إصدار تجريبي (بيتا)، بينما تُطرح التغييرات من الإصدار التجريبي السابق في إصدار مستقر جديد. [ 148 ]
كل سنتين أو ثلاث سنوات، يتم إصدار "إصدار" جديد. تُصدر هذه الإصدارات للسماح بإجراء تغييرات محدودة ، مثل ترقية awaitكلمة مفتاحية لدعم ميزات async/await . يمكن للحزم التي تستهدف إصدارات مختلفة أن تتفاعل مع بعضها البعض، بحيث يمكن ترقية حزمة إلى إصدار جديد حتى لو كانت البرامج التي تستدعيها أو تبعياتها لا تزال تستهدف إصدارات أقدم. يمكن تسهيل عملية الانتقال إلى إصدار جديد باستخدام أدوات مؤتمتة. [ 149 ]
دعم بيئة التطوير المتكاملة
rust-analyzer عبارة عن مجموعة من الأدوات المساعدة التي توفر لبيئات التطوير المتكاملة (IDEs) ومحررات النصوص معلومات حول مشروع Rust من خلال بروتوكول خادم اللغة . وهذا يُمكّن ميزات مثل الإكمال التلقائي وعرض أخطاء الترجمة أثناء تحرير التعليمات البرمجية. [ 150 ]
أداء
نظرًا لعدم قيامها بعملية جمع البيانات المهملة، غالبًا ما تكون لغة Rust أسرع من لغات البرمجة الأخرى التي تحافظ على سلامة الذاكرة. [ 151 ] [ 75 ] [ 152 ] لا تفرض معظم ضمانات سلامة الذاكرة في Rust أي تكلفة إضافية أثناء التشغيل، [ 153 ] باستثناء ملحوظ هو فهرسة المصفوفات التي يتم التحقق منها أثناء التشغيل افتراضيًا. [ 154 ] يختلف تأثير عمليات التحقق من حدود فهرسة المصفوفات على الأداء، ولكنه قد يكون كبيرًا في بعض الحالات. [ 154 ]
تُعدّ العديد من ميزات لغة Rust بمثابة تجريدات عديمة التكلفة ، أي أنها تُحسّن أثناء وقت الترجمة ولا تُؤثر على وقت التشغيل. [ 155 ] يسمح نظام الملكية والاستعارة بتنفيذات بدون نسخ لبعض المهام الحساسة للأداء، مثل التحليل النحوي . [ 156 ] يُستخدم الإرسال الثابت افتراضيًا لإلغاء استدعاءات الدوال ، باستثناء الدوال المُستدعاة على كائنات السمات الديناميكية. [ 157 ] يستخدم المُصرّف التوسيع المضمن لإلغاء استدعاءات الدوال واستدعاءات الدوال المُرسلة بشكل ثابت. [ 158 ]
على عكس لغتي C و C++، تسمح لغة Rust للمترجم بإعادة ترتيب عناصر البنية (struct) والتعداد (enum) ما لم #[repr(C)]يتم تطبيق سمة تمثيل. [ 159 ] وهذا يسمح للمترجم بإنتاج كود أكثر كفاءة في بعض الحالات. [ 160 ]
تنتقل تحسينات الأداء في LLVM إلى Rust. [ 161 ]
التبني

في مجال خدمات الويب ، تستخدم OpenDNS ، وهي خدمة تحليل أسماء النطاقات (DNS) مملوكة لشركة Cisco ، لغة Rust داخليًا. [ 162 ] [ 163 ] وتستخدم Amazon Web Services لغة Rust في "المكونات الحساسة للأداء" لخدماتها. في عام 2019، أتاحت AWS برنامج Firecracker مفتوح المصدر ، وهو حل افتراضي مكتوب بشكل أساسي بلغة Rust. [ 164 ] كما أن منصة Microsoft Azure IoT Edge، المستخدمة لتشغيل خدمات Azure على أجهزة إنترنت الأشياء ، تحتوي على مكونات مُنفذة بلغة Rust. [ 165 ] وتستخدم Microsoft أيضًا لغة Rust لتشغيل الوحدات النمطية المُحاوياتية باستخدام WebAssembly و Kubernetes . [ 166 ] واستخدمت Cloudflare ، وهي شركة تُقدم خدمات شبكة توصيل المحتوى ، لغة Rust لبناء وكيل ويب جديد يُسمى Pingora لزيادة الأداء والكفاءة. [ 167 ] واستخدم مدير حزم npm لغة Rust لخدمة المصادقة الخاصة به في بيئة الإنتاج عام 2019. [ 168 ] [ 169 ] [ 170 ]

في أنظمة التشغيل، بدأ نواة لينكس بتقديم دعم تجريبي لبرمجيات Rust في الإصدار 6.1 أواخر عام 2022، كجزء من مشروع Rust for Linux . [ 171 ] [ 172 ] [ 173 ] أُدرجت أولى برامج التشغيل المكتوبة بلغة Rust في الإصدار 6.8. [ 171 ] في عام 2025، قرر مطورو النواة في قمة مطوري نواة لينكس نجاح المشروع، ولن يُعتبر استخدام Rust في برمجيات النواة تجريبيًا بعد الآن. [ 174 ] استخدم مطورو أندرويد لغة Rust في عام 2021 لإعادة كتابة مكونات موجودة. [ 175 ] [ 176 ] أعادت مايكروسوفت كتابة أجزاء من نظام ويندوز بلغة Rust. [ 177 ] يهدف مشروع r9 إلى إعادة تنفيذ خطة 9 من مختبرات بيل باستخدام لغة Rust. [ 178 ] استُخدمت لغة Rust أيضًا في تطوير أنظمة تشغيل جديدة مثل Redox ، وهو نظام تشغيل ونواة مصغرة شبيهة بنظام Unix ، [ 179 ] و Theseus، وهو نظام تشغيل تجريبي ذو إدارة حالة معيارية، [ 180 ] [ 181 ] ومعظم أجزاء Fuchsia . [ 182 ] تُستخدم Rust في أدوات سطر الأوامر ومكونات نظام التشغيل مثل stratisd ، وهو مدير نظام ملفات ، [ 183 ] [ 184 ] وCOSMIC، وهي بيئة سطح مكتب من System76 . [ 185 ]
في مجال تطوير الويب، تم بناء Deno ، وهو بيئة تشغيل آمنة للغتين JavaScript و TypeScript ، على محرك V8 باستخدام Rust وTokio. [ 186 ] ومن بين التطبيقات البارزة الأخرى في هذا المجال Ruffle ، وهو محاكي SWF مفتوح المصدر ، [ 187 ] و Polkadot ، وهي منصة مفتوحة المصدر لتقنية البلوك تشين والعملات المشفرة . [ 188 ] تم دمج مكونات من محرك متصفح Servo (الممول من Mozilla و Samsung ) في محرك متصفح Gecko الذي يقوم عليه Firefox . [ 189 ] في يناير 2023، أعلنت Google ( Alphabet ) دعمها لاستخدام مكتبات Rust الخارجية في Chromium . [ 190 ] [ 191 ]
في استخدامات أخرى، أعادت شركة ديسكورد ، المتخصصة في برامج المراسلة الفورية ، كتابة أجزاء من نظامها بلغة رست لتحسين الأداء في عام 2020. وفي العام نفسه، أعلنت دروب بوكس عن إعادة كتابة نظام مزامنة الملفات الخاص بها بلغة رست. كما استخدمت فيسبوك ( ميتا ) لغة رست لإعادة تصميم نظامها الذي يدير شفرة المصدر للمشاريع الداخلية. [ 20 ]
في استطلاع مطوري Stack Overflow لعام 2025 ، أفاد 14.8% من المشاركين بأنهم قاموا مؤخرًا بتطوير مكثف باستخدام لغة Rust. [ 192 ] وقد صنّف الاستطلاع لغة Rust "لغة البرمجة الأكثر إعجابًا" سنويًا من عام 2016 إلى عام 2025 (شاملةً)، وذلك بناءً على عدد المطورين الحاليين المهتمين بمواصلة العمل بهذه اللغة. [ 193 ] [ ملاحظة 7 ] وفي عام 2025، أبدى 29.2% من المطورين الذين لا يعملون حاليًا بلغة Rust رغبتهم في استخدامها. [ 192 ]
في البحث الأكاديمي
تمّت دراسة سلامة وأداء لغة البرمجة Rust في أبحاث لغات البرمجة. [ 194 ] [ 114 ] [ 195 ]
في مجالات أخرى، استخدمت مقالة منشورة في دورية وقائع الاتحاد الفلكي الدولي لغة Rust لمحاكاة أنظمة الكواكب المتعددة. [ 196 ] كما نشرت مقالة أخرى في مجلة Nature قصصًا عن علماء المعلوماتية الحيوية الذين استخدموا Rust. [ 141 ] أشارت كلتا المقالتين إلى أداء Rust وأمانها كميزتين، وإلى صعوبة تعلمها كعيب رئيسي في اعتمادها.
يهدف مشروع TRACTOR التابع لـ DARPA لعام 2025 إلى ترجمة لغة C إلى لغة Rust تلقائيًا باستخدام تقنيات مثل التحليل الثابت والتحليل الديناميكي ونماذج اللغة الكبيرة. [ 197 ]
مجتمع

بحسب مجلة MIT Technology Review ، يُنظر إلى مجتمع Rust على أنه "ودود بشكل استثنائي" تجاه الوافدين الجدد، وقد اجتذب بشكل خاص أفرادًا من مجتمع المثليين ، ويعود ذلك جزئيًا إلى مدونة قواعد السلوك الخاصة به . [ 20 ] وقد ذُكرت الشمولية كعامل مهم لبعض مطوري Rust. [ 141 ] وتقوم مدونة Rust الرسمية بجمع ونشر البيانات الديموغرافية سنويًا. [ 200 ]
أساس الصدأ
مؤسسة راست هي منظمة عضوية غير ربحية مسجلة في الولايات المتحدة ؛ وهي تدير العلامة التجارية راست، والبنية التحتية، والأصول. [ 202 ] [ 46 ]
تأسست المؤسسة في 8 فبراير 2021، بخمس شركات مؤسسة (أمازون ويب سيرفيسز، هواوي، جوجل، مايكروسوفت، وموزيلا). [ 203 ] ترأس مجلس إدارة المؤسسة شين ميلر، [ 204 ] وشغلت آشلي ويليامز منصب المديرة التنفيذية المؤقتة. [ 46 ] وفي أواخر عام 2021، تولت ريبيكا رامبول منصب المديرة التنفيذية والرئيسة التنفيذية. [ 205 ]
فرق الحوكمة
يتولى ثمانية فرق رفيعة المستوى صيانة مشروع Rust اعتبارًا من نوفمبر 2025.يتألف مجلس القيادة من: فريق المترجم، وفريق أدوات التطوير، وفريق البنية التحتية، وفريق اللغة، ومنصة الإطلاق، وفريق المكتبة، وفريق الإشراف. [ 206 ] يشرف مجلس القيادة على المشروع، ويتألف من ممثلين عن الفرق الأخرى. [ 207 ]
انظر أيضاً
ملحوظات
- ↑ بما في ذلك أدوات البناء، وأدوات الاستضافة، ودعم المكتبة القياسية لأنظمة x86-64 و ARM و MIPS و RISC-V و WebAssembly و i686 و AArch64 و PowerPC و s390x . [ 2 ]
- ↑ بما في ذلك أنظمة التشغيل Windows و Linux و macOS و FreeBSD و NetBSD و Illumos . أدوات بناء النظام المضيف على أنظمة Android و iOS و Haiku و Redox و Fuchsia غير متوفرة رسميًا؛ وتُدعم هذه الأنظمة كأهداف. [ 2 ]
- ↑ تخضعالتبعيات الخارجية، مثل LLVM أو MSVC ، لتراخيصها الخاصة. [ 3 ] [ 4 ]
- 1 2 يتم الاستشهاد بـ NIL كتأثير على Rust في مصادر متعددة؛ من المحتمل أن يشير هذا إلى لغة تنفيذ الشبكة التي طورها روبرت ستروم وآخرون في IBM ، والتي كانت رائدة في تحليل حالة النوع ، [ 5 ] [ 6 ] لا ينبغي الخلط بينها وبين التنفيذ الجديد لـ LISP .
- ↑ قائمة إصدارات مترجم Rust (المشار إليها باسم سلسلة التمهيد) لها تاريخ يعود إلى عام 2012. [ 25 ]
- ↑ يُشترطاستخدام التغليف
no_mangleبـunsafeوبدءالفقرة بـ في إصدار 2024 أو الإصدارات اللاحقة. [ 127 ]extern"C"unsafe - ↑ أي أنه من بين المستجيبين الذين قاموا "بعمل تطويري مكثف [باستخدام لغة Rust] خلال العام الماضي" (14.8%)، كانت لغة Rust هي الأكثر استخدامًا، حيث أعرب 72.4% منهم عن رغبتهم في "العمل بلغة Rust خلال العام المقبل". [ 192 ]
مراجع
مصادر الكتب
- جينجسيت، جون (2021). الصدأ للرستاسيين ( الطبعة الأولى). لا يوجد صحافة النشا. رقم ISBN 9781718501850. OCLC 1277511986 .
- كلابنيك، ستيف؛ نيكولز، كارول (12 أغسطس 2019). لغة برمجة راست (يغطي راست 2018) . دار نشر نو ستارش. رقم ISBN 978-1-7185-0044-0.
- بلاندي، جيم؛ أوريندورف، جيسون؛ تيندال، ليونورا إف إس (2021). برمجة رست: تطوير أنظمة سريع وآمن ( الطبعة الثانية). دار نشر أورايلي ميديا. رقم ISBN 978-1-4920-5254-8. OCLC 1289839504 .
- ماكنمارا، تيم (2021). الصدأ في العمل . منشورات مانينغ. ISBN 978-1-6172-9455-6. OCLC 1153044639 .
- كلابنيك، ستيف؛ نيكولز، كارول (2023). لغة برمجة رست ( الطبعة الثانية). دار نشر نو ستارش. رقم ISBN 978-1-7185-0310-6. OCLC 1363816350 .
آحرون
- ↑ "الإعلان عن Rust 1.97.1" . 16-07-2026 . تم الاطلاع عليه بتاريخ 16-07-2026 .
- 1 2 "دعم المنصة" . كتاب rustc . مؤرشف من الأصل بتاريخ 30-06-2022 . تم الاطلاع عليه بتاريخ 27-06-2022 .
- ↑ "حقوق النشر" . جيت هاب . لغة برمجة رست. ١٩ أكتوبر ٢٠٢٢. مؤرشف من الأصل في ٢٢ يوليو ٢٠٢٣. تم الاطلاع عليه في ١٩ أكتوبر ٢٠٢٢ .
- ↑ "التراخيص" . لغة برمجة Rust . مؤرشف من الأصل بتاريخ 23-02-2025 . تم الاطلاع عليه بتاريخ 07-03-2025 .
- ↑ ستروم، روبرت إي. (1983). "آليات فرض الأمن أثناء الترجمة". وقائع الندوة العاشرة لجمعية ACM SIGACT-SIGPLAN حول مبادئ لغات البرمجة - POPL '83 . الصفحات 276-284 . doi : 10.1145/567067.567093 . ISBN 0897910907. S2CID 6630704 .
- ↑ ستروم، روبرت إي.؛ يميني، شاولا (1986). "حالة النوع: مفهوم في لغة البرمجة لتعزيز موثوقية البرمجيات" (ملف PDF) . معاملات IEEE في هندسة البرمجيات . 12 (1). IEEE: 157-171 . Bibcode : 1986ITSEn..12..157S . doi : 10.1109/tse.1986.6312929 . S2CID 15575346 .
- ↑ "أنواع التفرد" . مدونة Rust . مؤرشف من الأصل بتاريخ 15-09-2016 . تم الاطلاع عليه بتاريخ 08-10-2016 .
قد يلاحظ منكم من هم على دراية بأسلوب Elm أن رسائل
--explain
المحدثة مستوحاة بشكل كبير من منهج Elm.
- ↑ "التأثيرات" . مرجع Rust . مؤرشف من الأصل بتاريخ 26-11-2023 . تم الاطلاع عليه بتاريخ 31-12-2023 .
- ↑ "أنواع التفرد" . وثائق إدريس 1.3.3 . مؤرشفة من الأصل بتاريخ 21-11-2018 . تم الاطلاع عليها بتاريخ 14-07-2022 .
وهي مستوحاة من ... أنواع الملكية والمؤشرات المستعارة في لغة برمجة رست.
- ↑ إيبرلي، بنيامين؛ شرودر، مارتن (9 مارس 2020). "PHP RFC: Attributes v2" . wiki.php.net . تم الاطلاع عليه بتاريخ 11 مايو 2026 .
- ↑ توفيلو، إيليا (22-05-2020). "PHP RFC: Match expression v2" . wiki.php.net . تم الاطلاع عليه بتاريخ 29-11-2020 .
- ↑ غارفيلد، لاري؛ توفيلو، إيليا (2020-12-04). "PHP RFC: Enumerations" . wiki.php.net . تم الاسترجاع في 2026-05-11 .
- ↑ غارفيلد، لاري؛ توفيلو، إيليا (11 نوفمبر 2020). "PHP RFC: مطابقة الأنماط" . wiki.php.net . تم الاطلاع عليه بتاريخ 11 مايو 2026 .
- ↑ تونغ، ليام. "مايكروسوفت تتيح الوصول إلى لغة البرمجة Project Verona المستوحاة من Rust على GitHub" . ZDNET . مؤرشف من الأصل بتاريخ 17 يناير 2020. تم الاطلاع عليه بتاريخ 17 يناير 2020 .
- ↑ جالويان، جورج-أكسل (19-10-2017). "المؤشرات الآمنة في SPARK 2014". arXiv : 1710.07047 [ cs.PL ].
- ↑ لاتنر، كريس. "الصفحة الرئيسية لكريس لاتنر" . نون دوت . مؤرشف من الأصل بتاريخ 25-12-2018 . تم الاطلاع عليه بتاريخ 14-05-2019 .
- ↑ "توثيق V (مقدمة)" . GitHub . لغة برمجة V. تم الاطلاع عليه بتاريخ 4 نوفمبر 2023 .
- ↑ يغولالب، سردار (29 أغسطس/آب 2016). "منافس جديد ينضم إلى لغة Rust لإزاحة لغة C" . إنفوورلد . مؤرشف من الأصل في 25 نوفمبر/تشرين الثاني 2021. تم الاطلاع عليه في 19 أكتوبر/تشرين الأول 2022 .
- ↑ "Gleam لمستخدمي Rust" . مؤرشف من الأصل بتاريخ 27-01-2026 . تم الاطلاع عليه بتاريخ 27-01-2026 .
- ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩ ١٠ ١١ ١٢ ١٣ ١٤ ١٥ ١٦ ١٧ ١٨ ١٩ تومسون ، كلايف ( ١٤ فبراير ٢٠٢٣ ) . "كيف تحولت لغة رست من مشروع جانبي إلى لغة البرمجة الأكثر شعبية في العالم" . مجلة إم آي تي للتكنولوجيا . مؤرشف من الأصل في ١٩ سبتمبر ٢٠٢٤. تم الاطلاع عليه في ٢٣ فبراير ٢٠٢٣ .
- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 كلابنيك، ستيف (2016-06-02). "تاريخ لغة رست" . أبليكيتيف 2016. نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. ص 80. doi : 10.1145/2959689.2960081 . ISBN 978-1-4503-4464-7.
- ١ ٢ ٣ ٤ هوار، غرايدون (يوليو ٢٠١٠). مشروع سيرفو: تكنولوجيا الماضي تأتي لإنقاذ المستقبل من نفسه (ملف PDF) . قمة موزيلا السنوية. مؤرشف من الأصل (ملف PDF) بتاريخ ٣١ مارس ٢٠٢٦. تم الاطلاع عليه بتاريخ ٢٩ أكتوبر ٢٠٢٤ .
- ↑ هوار، غرايدون (نوفمبر 2016). "تاريخ Rust الأولي (أرشيف شفرة المصدر الأصلية لمترجم Rust OCaml)" . GitHub . تم الاسترجاع في 29 أكتوبر 2024 .
- ↑ "0.1 أول إصدار عام مدعوم من Milestone · rust-lang/rust" . GitHub . تم الاسترجاع في 29-10-2024 .
- ↑ نيلسون، جين (5 أغسطس 2022). مؤتمر RustConf 2022 - التمهيد: المُصرّف الذي كان وسيظل كذلك . بورتلاند، أوريغون: فريق Rust . تم الاطلاع عليه بتاريخ 29 أكتوبر 2024 – عبر يوتيوب.
- ↑ شعار لعبة Rust . Bugzilla . مؤرشف من الأصل بتاريخ 2024-02-02 . تم الاطلاع عليه بتاريخ 2024-02-02 .
- ↑ أندرسون، برايان (24 يناير 2012). " [ rust-dev ] تم إطلاق مُصرّف لغة Rust 0.1" . rust-dev (قائمة بريدية). مؤرشف من الأصل بتاريخ 24 يناير 2012. تم الاطلاع عليه بتاريخ 7 يناير 2025 .
- ↑ أنتوني، سيباستيان (24 يناير 2012). "موزيلا تُصدر Rust 0.1، اللغة التي ستحل في النهاية محل لغة C++ الخاصة بمتصفح فايرفوكس" . إكستريم تك . تاريخ الاسترجاع: 7 يناير 2025 .
- ↑ "Purity by pcwalton · Pull Request #5412 · rust-lang/rust" . GitHub . Retrieved 2024-10-29 .
- ↑ بينستوك، أندرو (2014-01-07). "صعود وسقوط اللغات في عام 2013" . مجلة دكتور دوبز . مؤرشف من الأصل في 2016-08-07 . تم الاطلاع عليه في 2022-11-20 .
- ↑ لاردينوا، فريدريك (3 أبريل 2015). "موزيلا وسامسونج تتعاونان لتطوير سيرفو، محرك متصفح موزيلا من الجيل التالي للمعالجات متعددة النوى" . تيك كرانش . مؤرشف من الأصل في 10 سبتمبر 2016. تم الاطلاع عليه في 25 يونيو 2017 .
- ↑ "فايرفوكس 45.0، اطلع على جميع الميزات الجديدة والتحديثات والإصلاحات" . موزيلا . مؤرشف من الأصل بتاريخ 17 مارس 2016. تم الاطلاع عليه بتاريخ 31 أكتوبر 2024 .
- ↑ لاردينوا، فريدريك (29 سبتمبر 2017). "حان الوقت لمنح فايرفوكس فرصة أخرى" . تيك كرانش . مؤرشف من الأصل في 15 أغسطس 2023. تم الاطلاع عليه في 15 أغسطس 2023 .
- ^ بيريرا، روي. كوتو، ماركو؛ ريبيرو، فرانسيسكو؛ روا، روي؛ كونيا، جاكومي؛ فرنانديز، جواو باولو؛ سارايفا ، جواو (23/10/2017). "كفاءة الطاقة عبر لغات البرمجة: كيف ترتبط الطاقة والوقت والذاكرة؟" . وقائع المؤتمر الدولي العاشر لـ ACM SIGPLAN حول هندسة لغات البرمجيات . SLE 2017. نيويورك، نيويورك، الولايات المتحدة الأمريكية: جمعية آلات الحوسبة. ص 256 – 267. دوى : 10.1145 / 3136014.3136031 . اتش دي ال : 1822/65359 . رقم ISBN 978-1-4503-5525-4.
- ↑ سيمبانو، كاتالين (11 أغسطس/آب 2020). "موزيلا تُسرح 250 موظفًا بينما تُعيد تركيزها على المنتجات التجارية" . زد نت . مؤرشف من الأصل في 18 مارس/آذار 2022. تم الاطلاع عليه في 2 ديسمبر/كانون الأول 2020 .
- ↑ كوبر، دانيال (11 أغسطس/آب 2020). "موزيلا تُسرح 250 موظفًا بسبب الجائحة" . إنجادجيت . مؤرشف من الأصل في 13 ديسمبر/كانون الأول 2020. تم الاطلاع عليه في 2 ديسمبر/كانون الأول 2020 .
- ↑ تونغ، ليام (21 أغسطس 2020). "لغة البرمجة راست: لقد أثرت عمليات تسريح الموظفين في موزيلا علينا بشدة، ولكن إليكم كيف سننجو" . ZDNET . مؤرشف من الأصل في 21 أبريل 2022. تم الاطلاع عليه في 21 أبريل 2022 .
- ↑ "وضع الأسس لمستقبل لغة Rust" . مدونة Rust . ١٨ أغسطس ٢٠٢٠. مؤرشف من الأصل في ٢ ديسمبر ٢٠٢٠. تم الاطلاع عليه في ٢ ديسمبر ٢٠٢٠ .
- ↑ "مرحباً بالعالم!" . مؤسسة راست . 2020-02-08. مؤرشف من الأصل في 2022-04-19 . تم الاسترجاع في 2022-06-04 .
- ↑ "موزيلا ترحب بمؤسسة راست" . مدونة موزيلا . 9 فبراير 2021. مؤرشف من الأصل بتاريخ 8 فبراير 2021. تم الاطلاع عليه بتاريخ 9 فبراير 2021 .
- ↑ أماديو، رون (7 أبريل 2021). "جوجل تكتب الآن شيفرة أندرويد منخفضة المستوى بلغة رست" . آرس تكنيكا . مؤرشف من الأصل في 8 أبريل 2021. تم الاطلاع عليه في 8 أبريل 2021 .
- ↑ أندرسون، تيم (23 نوفمبر 2021). "استقالة فريق إدارة لعبة Rust بالكامل" . ذا ريجستر . مؤرشف من الأصل بتاريخ 14 يوليو 2022. تم الاطلاع عليه بتاريخ 4 أغسطس 2022 .
- ↑ ليفيك، رايان؛ بوس، مارا. "تحديث الحوكمة" . مدونة Inside Rust . مؤرشف من الأصل بتاريخ 27-10-2022 . تم الاسترجاع بتاريخ 27-10-2022 .
- 1 2 كلابورن، توماس (17 أبريل 2023). "مؤسسة راست تعتذر عن الالتباس في سياسة العلامات التجارية" . ذا ريجستر . مؤرشف من الأصل في 7 مايو 2023. تم الاسترجاع في 7 مايو 2023 .
- ↑ بروفن، ليام (27 نوفمبر 2019). "تعيين ريبيكا رامبول رئيسة تنفيذية جديدة لمؤسسة راست" . ذا ريجستر . مؤرشف من الأصل في 14 يوليو 2022. تم الاسترجاع في 14 يوليو 2022.
كلتا اللغتين تستخدمان الأقواس المعقوفة، مع بنية نحوية تشبه لغة C، مما يجعلهما سهلتين الاستخدام لمبرمجي لغة C.
- 1 2 3 فيغليارولو، براندون (10 فبراير 2021). "لغة البرمجة رست لديها الآن مؤسستها المستقلة" . تيك ريبابليك . مؤرشف من الأصل في 20 مارس 2023. تم الاطلاع عليه في 14 يوليو 2022 .
- ↑ كلابنيك ونيكولز 2019 ، ص 263.
- ↑ كلابنيك ونيكولز 2019 ، ص 5-6.
- ↑ كلابنيك ونيكولز 2023 ، ص 32.
- ↑ كلابنيك ونيكولز 2023 ، ص 32-33.
- ↑ كلابنيك ونيكولز 2023 ، ص 49-50.
- ↑ كلابنيك ونيكولز 2023 ، ص 34-36.
- ↑ كلابنيك ونيكولز 2023 ، ص. 6، 47، 53.
- ↑ كلابنيك ونيكولز 2023 ، ص 47-48.
- 1 2 Klabnik & Nichols 2023 ، ص 50-53.
- ↑ كلابنيك ونيكولز 2023 ، ص 56.
- ↑ كلابنيك ونيكولز 2023 ، ص 57-58.
- ↑ كلابنيك ونيكولز 2023 ، ص 54-56.
- ↑ كلابنيك ونيكولز 2019 ، ص 104-109.
- ↑ كلابنيك ونيكولز 2019 ، ص 24.
- ↑ كلابنيك ونيكولز 2019 ، ص 36-38.
- ↑ "isize" . doc.rust-lang.org . تم الاطلاع عليه بتاريخ 28-09-2025 .
- ↑ "usize" . doc.rust-lang.org . تم الاطلاع عليه بتاريخ 28-09-2025 .
- ↑ كلابنيك ونيكولز 2023 ، ص 36-38.
- ↑ كلابنيك ونيكولز 2023 ، ص 502.
- ↑ "النوع الأولي char" . وثائق مكتبة Rust القياسية . تم الاطلاع عليه بتاريخ 2025-09-07 .
- ↑ "مسرد مصطلحات يونيكود" . اتحاد يونيكود . مؤرشف من الأصل بتاريخ 24-09-2018 . تم الاطلاع عليه بتاريخ 30-07-2024 .
- ↑ كلابنيك ونيكولز 2019 ، ص 38-40.
- ↑ كلابنيك ونيكولز 2023 ، ص 40-42.
- ↑ كلابنيك ونيكولز 2023 ، ص 42.
- ↑ كلابنيك ونيكولز 2019 ، ص 59-61.
- 1 2 كلابنيك ونيكولز 2019 ، ص 63-68.
- ↑ كلابنيك ونيكولز 2019 ، ص 74-75.
- ↑ كلابنيك ونيكولز 2023 ، ص 71-72.
- 1 2 بالاسوبرامانيان، أبهيرام؛ بارانوفسكي، ماريك س.؛ بورتسيف، أنطون؛ باندا، أوروجيت؛ راكاماريتش، زفونيمير؛ ريزيك، ليونيد (2017-05-07). "برمجة الأنظمة في لغة رست" . وقائع ورشة العمل السادسة عشرة حول المواضيع الساخنة في أنظمة التشغيل . HotOS '17. نيويورك، نيويورك، الولايات المتحدة الأمريكية: رابطة آلات الحوسبة. الصفحات 156-161 . doi : 10.1145/3102980.3103006 . ISBN 978-1-4503-5068-6S2CID 24100599. مؤرشف من الأصل بتاريخ 11-06-2022 . تم الاطلاع عليه بتاريخ 01-06-2022 .
- ↑ كلابنيك ونيكولز 2023 ، ص 327-330.
- ↑ "أعمار" . Rust by Example . مؤرشف من الأصل بتاريخ 16-11-2024 . تم الاسترجاع بتاريخ 29-10-2024 .
- ↑ "التعليق الصريح" . Rust by Example . تم الاسترجاع في 29-10-2024 .
- 1 2 كلابنيك ونيكولز 2019 ، ص. 194.
- ↑ كلابنيك ونيكولز 2019 ، ص 75، 134.
- ↑ شامريل-هارينغتون، نيل (15 أبريل 2022). "مدقق استعارة الصدأ - دراسة معمقة" . InfoQ . مؤرشف من الأصل في 25 يونيو 2022. تم الاطلاع عليه في 25 يونيو 2022 .
- ↑ كلابنيك ونيكولز 2019 ، ص 194-195.
- ↑ كلابنيك ونيكولز 2023 ، ص 208-12.
- ↑ كلابنيك ونيكولز 2023 ، 4.2. المراجع والاقتباس .
- ↑ بيرس، ديفيد (17 أبريل 2021). "صيغة مبسطة لحساب دورات حياة المراجع والاستعارة في لغة رست" . مجلة ACM للمعاملات في لغات البرمجة والأنظمة . 43 : 1-73 . doi : 10.1145/3443420 . مؤرشف من الأصل في 15 أبريل 2024. تم الاطلاع عليه في 11 ديسمبر 2024 .
- ↑ كلابنيك ونيكولز 2019 ، ص 83.
- ↑ كلابنيك ونيكولز 2019 ، ص 97.
- ↑ كلابنيك ونيكولز 2019 ، ص 98-101.
- ↑ كلابنيك ونيكولز 2019 ، ص 438-440.
- ↑ كلابنيك ونيكولز 2019 ، ص 93.
- ^ جينجسيت 2021 ، ص 213-215.
- ↑ Klabnik & Nichols 2023 ، ص 108-110، 113-114، 116-117.
- ↑ "معالجة الأخطاء في لغة Rust مثالية بالفعل" . شركة Bitfield Consulting . 27 مايو 2024. مؤرشف من الأصل في 7 أغسطس 2025. تم الاطلاع عليه في 15 سبتمبر 2025 .
- ^ جينجسيت 2021 ، ص. 155-156.
- ↑ كلابنيك ونيكولز 2023 ، ص 421-423.
- ↑ كلابنيك ونيكولز 2019 ، ص 418-427.
- ↑ "الصب" . Rust by Example . تم الاسترجاع في 2025-04-01 .
- ↑ كلابنيك ونيكولز 2023 ، ص 378.
- 1 2 3 Klabnik & Nichols 2023 ، ص 192–198.
- ↑ كلابنيك ونيكولز 2023 ، ص 98.
- ↑ Klabnik & Nichols 2019 ، ص 171-172 ، 205.
- 1 2 Klabnik & Nichols 2023 ، ص. 191–192.
- ↑ كلابنيك ونيكولز 2019 ، ص 441-442.
- ↑ Gjengset 2021 ، ص 25.
- ↑ Klabnik & Nichols 2023 ، 18.2. استخدام كائنات السمات التي تسمح بقيم من أنواع مختلفة .
- ↑ كلابنيك ونيكولز 2019 ، ص 379-380.
- ↑ "RAII" . Rust by Example . مؤرشف من الأصل بتاريخ 21-04-2019 . تم الاطلاع عليه بتاريخ 22-11-2020 .
- ↑ "التجريد بدون تكلفة إضافية: السمات في لغة Rust" . مدونة Rust . مؤرشف من الأصل بتاريخ 23 سبتمبر 2021. تم الاطلاع عليه بتاريخ 19 أكتوبر 2021 .
- ↑ "الصندوق، والتكديس، والكومة" . رست بالأمثلة . مؤرشف من الأصل بتاريخ 31-05-2022 . تم الاطلاع عليه بتاريخ 13-06-2022 .
- ↑ كلابنيك ونيكولز 2019 ، ص 70-75.
- ↑ كلابنيك ونيكولز 2019 ، ص 323.
- ↑ كلابنيك ونيكولز 2023 ، ص 420-429.
- ↑ McNamara 2021 ، ص. 139، 376–379، 395.
- 1 2 أستراوسكاس، فيتاوتاس؛ ماتيجا، كريستوف؛ بولي، فيديريكو؛ مولر، بيتر؛ سامرز، ألكسندر ج. (2020-11-13). "كيف يستخدم المبرمجون لغة Rust غير الآمنة؟" . وقائع مؤتمر ACM حول لغات البرمجة . 4 : 1-27 . doi : 10.1145/3428204 . hdl : 20.500.11850/465785 . ISSN 2475-1421 .
- ^ لاتوادا، أندريا؛ هانس، ترافيس. تشو، تشانهي؛ برون ماتياس. سوباسينغ، إيسيثا؛ تشو، يي؛ هاول، جون؛ بارنو، بريان. هاوبليتزل ، كريس (2023/04/06). "Verus: التحقق من برامج الصدأ باستخدام أنواع الأشباح الخطية" . وقائع ACM حول لغات البرمجة . 7 : 85:286-85:315. دوى : 10.1145/3586037 . اتش دي ال : 20.500.11850/610518 .
- ↑ ميلانو، ماي؛ توركوتي، جوليا؛ مايرز، أندرو سي. (9 يونيو 2022). "نظام أنواع مرن للتزامن الجريء". وقائع المؤتمر الدولي الثالث والأربعين لجمعية ACM SIGPLAN حول تصميم لغات البرمجة وتنفيذها . نيويورك، نيويورك، الولايات المتحدة الأمريكية: جمعية آلات الحوسبة. الصفحات 458-473 . doi : 10.1145/3519939.3523443 . ISBN 978-1-4503-9265-5.
- ↑ "مقدمة - تعلم لغة Rust مع عدد كبير جدًا من القوائم المرتبطة" . rust-unofficial.github.io . تم الاطلاع عليه بتاريخ 2025-08-06 .
- ↑ نوبل، جيمس؛ ماكاي، جوليان؛ ريغستاد، توبياس (16-10-2023). "روابط صدئة في السلاسل المحلية✱" . وقائع ورشة العمل الدولية الرابعة والعشرين لجمعية آلات الحوسبة حول التقنيات الرسمية لبرامج شبيهة بلغة جافا . نيويورك، نيويورك، الولايات المتحدة الأمريكية: جمعية آلات الحوسبة. الصفحات 1-3 . doi : 10.1145/3611096.3611097 . ISBN 979-8-4007-0784-1.
- إيفانز، آنا نورا؛ كامبل، برادفورد؛ صوفا، ماري لو (2020-10-01). "هل يستخدم مطورو البرمجيات لغة Rust بأمان؟" . وقائع المؤتمر الدولي الثاني والأربعين لهندسة البرمجيات التابع لجمعية ACM/IEEE . نيويورك، نيويورك، الولايات المتحدة الأمريكية: جمعية آلات الحوسبة. الصفحات 246-257 . arXiv : 2007.00752 . doi : 10.1145/3377811.3380413 . ISBN 978-1-4503-7121-6.
- ↑ "السلوك غير محدد" . مرجع Rust . تم الاسترجاع في 2025-08-06 .
- ↑ كلابنيك ونيكولز 2023 ، ص 449-455.
- ^ جينجسيت 2021 ، ص 101-102.
- ↑ "الماكرو بالأمثلة" . مرجع Rust . مؤرشف من الأصل بتاريخ 21-04-2023 . تم الاطلاع عليه بتاريخ 21-04-2023 .
- ↑ كلابنيك ونيكولز 2019 ، ص 446-448.
- ↑ "وحدات الماكرو الإجرائية" . مرجع لغة برمجة Rust . مؤرشف من الأصل بتاريخ 2020-11-07 . تم الاطلاع عليه بتاريخ 2021-03-23 .
- ↑ كلابنيك ونيكولز 2019 ، ص 449-455.
- ↑ باومغارتنر، ستيفان (23 مايو 2025). "لغة البرمجة: Rust 2024 هي الطبعة الأكثر شمولاً حتى الآن" . heise online . تم الاطلاع عليه بتاريخ 28 يونيو 2025 .
- 1 2 3 جينجسيت 2021 ، ص 193-209.
- ↑ "التوافق الآمن بين لغتي Rust وC++ باستخدام CXX" . InfoQ . 2020-12-06. مؤرشف من الأصل في 2021-01-22 . تم الاطلاع عليه في 2021-01-03 .
- ↑ روزنبلات، سيث (2013-04-03). "سامسونج تنضم إلى مسعى موزيلا من أجل لغة Rust" . سي نت . مؤرشف من الأصل في 2013-04-04 . تم الاطلاع عليه في 2013-04-05 .
- ↑ براون، نيل (17 أبريل 2013). "لمحة من الصدأ" . LWN.net . مؤرشف من الأصل في 26 أبريل 2013. تم الاطلاع عليه في 25 أبريل 2013 .
- ↑ "الأجناس" . موسوعة راستونوميكون . مؤرشفة من الأصل بتاريخ 10 يوليو 2017. تم الاطلاع عليها بتاريخ 3 يوليو 2017 .
- ↑ فاندرفيلدن، تيبو؛ دي سميت، روبن؛ دياك، ديانا؛ ستينهاوت، كريس؛ برايكن، آن (2024-09-07). "نظرة عامة على أنظمة التشغيل وأطر عمل Rust المضمنة" . مجلة Sensors . 24 (17): 5818. Bibcode : 2024Senso..24.5818V . doi : 10.3390/s24175818 . PMC 11398098. PMID 39275729 .
- 1 2 Klabnik & Nichols 2023 ، ص 343–346.
- ↑ Gjengset 2021 ، ص. 6.
- ^ بلاندي وأوريندورف وتيندال 2021 ، ص 6-8.
- ↑ "نظرة عامة على المُصرّف" . دليل تطوير مُصرّف Rust . مساهمو مشروع Rust. مؤرشف من الأصل بتاريخ 31 مايو 2023. تم الاطلاع عليه بتاريخ 7 نوفمبر 2024 .
- ↑ "توليد الكود" . دليل تطوير مُجمِّع لغة رست . مساهمو مشروع رست . تم الاطلاع عليه بتاريخ 3 مارس 2024 .
- ↑ "rust-lang/rustc_codegen_gcc" . GitHub . لغة برمجة Rust. 2024-03-02 . تم الاطلاع عليه بتاريخ 2024-03-03 .
- ↑ "rust-lang/rustc_codegen_cranelift" . GitHub . لغة برمجة Rust. 2024-03-02 . تم الاطلاع عليه بتاريخ 2024-03-03 .
- 1 2 3 بيركل، جيفري م . (2020-12-01). " لماذا يتجه العلماء إلى لغة Rust؟" . مجلة Nature . 588 (7836): 185-186 . Bibcode : 2020Natur.588..185P . doi : 10.1038/d41586-020-03382-2 . PMID 33262490. S2CID 227251258. مؤرشف من الأصل في 2022-05-06 . تم الاطلاع عليه في 2022-05-15 .
- ↑ سيمون، سيرجيو دي (18 أبريل 2019). "Rust 1.34 يُقدّم سجلات بديلة للحزم غير العامة" . InfoQ . مؤرشف من الأصل في 14 يوليو 2022. تم الاطلاع عليه في 14 يوليو 2022 .
- ↑ "لماذا توجد الشحنات - كتاب الشحنات" . doc.rust-lang.org . تم الاطلاع عليه بتاريخ 22-03-2026 .
- ↑ "Cargo.toml vs Cargo.lock - The Cargo Book" . doc.rust-lang.org . تم الاطلاع عليه بتاريخ 22-03-2026 .
- ↑ كلابنيك ونيكولز 2019 ، ص 511-512.
- ↑ "rust-lang/rust-clippy" . لغة برمجة Rust. 2026-01-04 . تم الاطلاع عليه بتاريخ 2026-01-04 .
- ↑ "Clippy Lints" . لغة برمجة Rust . تم الاطلاع عليه بتاريخ 30-11-2023 .
- ↑ كلابنيك ونيكولز 2019 ، الملحق ج - كيف يتكون الصدأ و"الصدأ الليلي"
- ^ بلاندي وأوريندورف وتيندال 2021 ، ص 176-177.
- ↑ كلابنيك ونيكولز 2023 ، ص. 623.
- ↑ أندرسون، تيم (30 نوفمبر 2021). "هل تستطيع لغة Rust إنقاذ الكوكب؟ لماذا، ولماذا لا؟" . ذا ريجستر . مؤرشف من الأصل في 11 يوليو 2022. تم الاطلاع عليه في 11 يوليو 2022 .
- ↑ يغولالب، سردار (2021-10-06). "ما هي لغة رست؟ تطوير برمجيات آمن وسريع وسهل" . إنفوورلد . مؤرشف من الأصل في 2022-06-24 . تم الاطلاع عليه في 2022-06-25 .
- ↑ ماكنمارا 2021 ، ص 11.
- 1 2 بوبيسكو، ناتالي؛ شو، زيانغ؛ أبوستولاكيس، سوتيريس؛ أوغست، ديفيد آي؛ ليفي، أميت (15-10-2021). "أكثر أمانًا بأي سرعة: تحسين تلقائي للأمان مراعٍ للسياق في لغة Rust" . وقائع مؤتمر ACM للغات البرمجة . 5 (OOPSLA). القسم 2. doi : 10.1145/3485480 . S2CID 238212612. ص 5:
نلاحظ تباينًا كبيرًا في تكاليف الفهرسة المُدققة: 23.6% من المعايير تُشير إلى انخفاضات كبيرة في الأداء نتيجةً للفهرسة المُدققة، بينما 64.5% تُشير إلى تأثير ضئيل أو معدوم، والمثير للدهشة أن 11.8% تُشير إلى تحسن في الأداء.
- ↑ ماكنمارا 2021 ، ص 19، 27.
- ↑ كوبيري، جوفري (2015). "نوم، مكتبة مُركِّبات تحليلية موجهة للبايت، متدفقة، بدون نسخ، مكتوبة بلغة رست". ورش عمل IEEE للأمن والخصوصية 2015. الصفحات 142-148 . doi : 10.1109/SPW.2015.31 . ISBN 978-1-4799-9933-0. S2CID 16608844 .
- ↑ ماكنمارا 2021 ، ص 20.
- ↑ "توليد الكود" . مرجع Rust . مؤرشف من الأصل بتاريخ 2022-10-09 . تم الاطلاع عليه بتاريخ 2022-10-09 .
- ↑ فرشين، علي رضا؛ باربيت، توم؛ روزبه، أمير؛ ماغواير، جيرالد كيو. الابن؛ كوستيتش، ديجان (2021). "باكيت ميل: نحو شبكات بسرعة 100 جيجابت في الثانية لكل نواة". وقائع المؤتمر الدولي السادس والعشرين لجمعية الحوسبة الآلية حول الدعم المعماري للغات البرمجة وأنظمة التشغيل . الصفحات 1-17 . doi : 10.1145/3445814.3446724 . ISBN 9781450383172S2CID 231949599. مؤرشف من الأصل بتاريخ 12 يوليو 2022. تم الاسترجاع بتاريخ 12 يوليو 2022. ... في حين أن بعض المترجمات (مثل Rust) تدعم إعادة ترتيب البنية [82]، فإن مترجمات C وC ++
ممنوعة من إعادة ترتيب هياكل البيانات (مثل struct أو class) [74] ...
- ↑ Gjengset 2021 ، ص 22.
- ↑ "ما مدى سرعة لغة Rust؟" . الأسئلة الشائعة حول لغة برمجة Rust . مؤرشف من الأصل بتاريخ 28-10-2020 . تم الاطلاع عليه بتاريخ 11-04-2019 .
- ↑ شانكلاند، ستيفن (12 يوليو 2016). "سيخضع متصفح فايرفوكس لتحديث شامل في محاولة لاستعادة اهتمامك به" . سي نت . مؤرشف من الأصل في 14 يوليو 2022. تم الاطلاع عليه في 14 يوليو 2022 .
- ↑ فريق أبحاث الأمن (4 أكتوبر 2013). "ZeroMQ: مساعدتنا في حظر النطاقات الضارة في الوقت الفعلي" . سيسكو أمبريلا . مؤرشف من الأصل بتاريخ 13 مايو 2023. تم الاطلاع عليه بتاريخ 13 مايو 2023 .
- ↑ سيمبانو، كاتالين (15 أكتوبر 2019). "AWS ترعى مشروع Rust" . ZDNET . تم الاطلاع عليه بتاريخ 17 يوليو 2024 .
- ↑ نيكولز، شون (27 يونيو 2018). "حيلة مايكروسوفت التالية؟ نقل البيانات من السحابة إلى Azure IoT Edge" . ذا ريجستر . مؤرشف من الأصل في 27 سبتمبر 2019. تم الاطلاع عليه في 27 سبتمبر 2019 .
- ↑ تونغ، ليام (30 أبريل 2020). "مايكروسوفت: لماذا استخدمنا لغة البرمجة Rust بدلاً من Go لتطبيق WebAssembly على Kubernetes" . ZDNET . مؤرشف من الأصل في 21 أبريل 2022. تم الاطلاع عليه في 21 أبريل 2022 .
- ↑ كلابورن، توماس (2022-09-20). "في لغة رست نثق: كبير مسؤولي التكنولوجيا في مايكروسوفت أزور يتجنب لغتي سي وسي++" . ذا ريجستر . تم الاطلاع عليه بتاريخ 2024-07-07 .
- ↑ سيمون، سيرجيو دي (10 مارس 2019). "اعتمدت NPM برنامج Rust لإزالة معوقات الأداء" . InfoQ . مؤرشف من الأصل بتاريخ 19 نوفمبر 2023. تم الاطلاع عليه بتاريخ 20 نوفمبر 2023 .
- ↑ ليو، شينغ (2020). "مرحبًا بكم في عالم رست" . في: ليو، شينغ (محرر). مشاريع رست العملية: بناء تطبيقات الألعاب، والحوسبة الفيزيائية، والتعلم الآلي . بيركلي، كاليفورنيا: أبريس. ص 1-8 . doi : 10.1007/978-1-4842-5599-5_1 . ISBN 978-1-4842-5599-5تم الاطلاع عليه بتاريخ 29-11-2023 .
- ↑ ليو، شينغ (2021). "راست في عالم الويب" . في: ليو، شينغ (محرر). مشاريع عملية باستخدام راست للويب: بناء تطبيقات سحابية وتطبيقات ويب . بيركلي، كاليفورنيا: أبريس. ص 1-7 . doi : 10.1007/978-1-4842-6589-5_1 . ISBN 978-1-4842-6589-5تم الاطلاع عليه بتاريخ 29-11-2023 .
- 1 2 لي، هونغيو؛ قوه، ليوي؛ يانغ، يكسوان؛ وانغ، شانغوانغ؛ شو ، منجوي (2024/06/30). "دراسة تجريبية لنظام الصدأ لنظام التشغيل Linux: النجاح وعدم الرضا والتسوية" . يوزينيكس . تم الاسترجاع 2024-11-28 .
- ↑ كوربيت، جوناثان (13 أكتوبر 2022). "نظرة أولية على لغة Rust في نواة 6.1" . LWN.net . مؤرشف من الأصل في 17 نوفمبر 2023. تم الاطلاع عليه في 11 نوفمبر 2023 .
- ↑ فوغان-نيكولز، ستيفن (2021-12-07). "راست تخطو خطوة كبيرة إلى الأمام كلغة رسمية ثانية لنظام لينكس" . زد نت . تم الاسترجاع في 2024-11-27 .
- ↑ كوربيت، جوناثان (10 ديسمبر 2025). "النهاية (الناجحة) لتجربة نواة لغة رست" . LWN.net . تم الاطلاع عليه بتاريخ 10 ديسمبر 2025 .
- ↑ أماديو، رون (2021-04-07). "جوجل تكتب الآن شيفرة أندرويد منخفضة المستوى بلغة رست" . آرس تكنيكا . مؤرشف من الأصل في 2021-04-08 . تم الاطلاع عليه في 2022-04-21 .
- ↑ دارككريست (2021-04-02). "جوجل تُطوّر حزمة بروتوكول بلوتوث جديدة لنظام أندرويد، مكتوبة بلغة رست" . من لينكس . مؤرشف من الأصل بتاريخ 2021-08-25 . تم الاطلاع عليه بتاريخ 2024-08-31 .
- ↑ كلابورن، توماس (27 أبريل 2023). "مايكروسوفت تعيد كتابة مكتبات ويندوز الأساسية بلغة رست" . ذا ريجستر . مؤرشف من الأصل في 13 مايو 2023. تم الاطلاع عليه في 13 مايو 2023 .
- ↑ بروفن، ليام (2023-12-01). "صغير الحجم لكنه قوي التأثير، جهاز 'Humanbiologics' من 9Front متوفر الآن للمهتمين حقًا بالمعرفة" . ذا ريجستر . تاريخ الاسترجاع: 2024-03-07 .
- ↑ يغولالب، سردار (21 مارس 2016). "نظام التشغيل Redox الخاص بلغة Rust قد يُظهر لنظام Linux بعض الحيل الجديدة" . إنفوورلد . مؤرشف من الأصل في 21 مارس 2016. تم الاطلاع عليه في 21 مارس 2016 .
- ↑ أندرسون، تيم (14 يناير 2021). "نظام تشغيل آخر مبني على لغة Rust: ينضم Theseus إلى Redox سعيًا وراء أنظمة أكثر أمانًا ومرونة" . ذا ريجستر . مؤرشف من الأصل في 14 يوليو 2022. تم الاطلاع عليه في 14 يوليو 2022 .
- ↑ بوس، كيفن؛ لياناج، ناميثا؛ إعجاز، راملا؛ تشونغ، لين (2020). ثيسيوس: تجربة في بنية نظام التشغيل وإدارة الحالة . الصفحات 1-19 . ISBN 978-1-939133-19-9أُرشف من المصدر الأصلي بتاريخ 13 مايو 2023. تم الاطلاع عليه بتاريخ 13 مايو 2023 .
- ↑ تشانغ، هان دونغ (31 يناير 2023). "مراجعة 2022 | تبني لغة Rust في مجال الأعمال" . مجلة Rust . تم الاطلاع عليه بتاريخ 7 فبراير 2023 .
- ↑ سي، مارك (10 أكتوبر 2018). "ميزات جديدة في فيدورا 29: Startis متوفر الآن رسميًا في فيدورا" . مارك سي، نشرة أسبوعية لمسؤولي الأنظمة . مؤرشف من الأصل في 13 أبريل 2019. تم الاطلاع عليه في 13 مايو 2019 .
- ↑ بروفن، ليام (12 يوليو 2022). "إصدار أوراكل لينكس 9 مع بعض الإضافات المثيرة للاهتمام" . ذا ريجستر . مؤرشف من الأصل في 14 يوليو 2022. تم الاطلاع عليه في 14 يوليو 2022 .
- ↑ بروفن، ليام (2023-02-02). "شركة System76 تُشوق لميزات قادمة في برنامج COSMIC المكتبي المُطور داخليًا والمبني على لغة Rust" . ذا ريجستر . مؤرشف من الأصل في 2024-07-17 . تم الاطلاع عليه في 2024-07-17 .
- ↑ هو، فيفيان (12 يونيو 2020). "دينو جاهز للإنتاج" . إنفو كيو . مؤرشف من الأصل في 1 يوليو 2020. تم الاطلاع عليه في 14 يوليو 2022 .
- ↑ أبرامز، لورانس (2021-02-06). "محاكي فلاش بلاير هذا يتيح لك تشغيل ألعابك القديمة بأمان" . بليبينغ كمبيوتر . مؤرشف من الأصل في 2021-12-25 . تم الاسترجاع في 2021-12-25 .
- ↑ خريف، أولغا (17 أكتوبر 2020). "قاتل بلوك تشين إيثيريوم يُعرف باسم بولكادوت" . بلومبيرغ نيوز . بلومبيرغ إل بي . مؤرشف من الأصل في 17 أكتوبر 2020. تم الاطلاع عليه في 14 يوليو 2021 .
- ↑ كايزر، جريج (31 أكتوبر 2016). "موزيلا تخطط لتجديد فايرفوكس في عام 2017" . كمبيوتر وورلد . مؤرشف من الأصل في 13 مايو 2023. تم الاطلاع عليه في 13 مايو 2023 .
- ↑ كلابورن، توماس (12 يناير 2023). "جوجل تُحسّن كود كروميوم بطبقة من لغة رست" . ذا ريجستر . تاريخ الاسترجاع: 17 يوليو 2024 .
- ↑ جانسينز، دانا (12 يناير 2023). "دعم استخدام لغة Rust في مشروع Chromium" . مدونة جوجل للأمن الإلكتروني . مؤرشف من الأصل بتاريخ 13 يناير 2023. تم الاطلاع عليه بتاريخ 12 نوفمبر 2023 .
- 1 2 3 "استطلاع رأي مطوري Stack Overflow لعام 2025 - التكنولوجيا" . Stack Overflow . تم الاطلاع عليه بتاريخ 9 أغسطس 2025 .
- ↑ كلابورن، توماس (23 يونيو 2022). "لينوس تورفالدز يقول إن لغة رست ستُضاف إلى نواة لينكس" . ذا ريجستر . مؤرشف من الأصل في 28 يوليو 2022. تم الاطلاع عليه في 15 يوليو 2022 .
- ↑ يونغ، رالف؛ جوردان، جاك هنري؛ كريبرز، روبرت؛ دراير، ديريك (27-12-2017). "RustBelt: تأمين أسس لغة برمجة Rust" . وقائع مؤتمر ACM للغات البرمجة . 2 (POPL): 1-34 . doi : 10.1145/3158154 . hdl : 21.11116/0000-0003-34C6-3 . ISSN 2475-1421 .
- ↑ بوبيسكو، ناتالي؛ شو، زيانغ؛ أبوستولاكيس، سوتيريس؛ أوغست، ديفيد آي؛ ليفي، أميت (2021-10-20). "أكثر أمانًا بأي سرعة: تحسين تلقائي للأمان مراعٍ للسياق في لغة Rust" . وقائع مؤتمر ACM حول لغات البرمجة . 5 (OOPSLA): 1-23 . doi : 10.1145/3485480 . ISSN 2475-1421 .
- ↑ بلانكو-كواريسما، سيرجي؛ بولمونت، إيميلين (30 مايو 2017). "ما الذي يمكن أن تقدمه لغة البرمجة رست لعلم الفيزياء الفلكية؟" . وقائع الاتحاد الفلكي الدولي . 12 (S325): 341-344 . arXiv : 1702.02951 . Bibcode : 2017IAUS..325..341B . doi : 10.1017/S1743921316013168 . ISSN 1743-9213 . S2CID 7857871. مؤرشف من الأصل في 25 يونيو 2022. تم الاسترجاع في 25 يونيو 2022 .
- ↑ والاش، دان. "تراكتور: ترجمة جميع لغات سي إلى رست" . داربا . تم الاسترجاع في 3 أغسطس 2025 .
- ↑ كلابنيك ونيكولز 2019 ، ص 4.
- ↑ "البدء" . لغة برمجة Rust . مؤرشف من الأصل بتاريخ 1 نوفمبر 2020. تم الاطلاع عليه بتاريخ 11 أكتوبر 2020 .
- ↑ فريق استطلاع Rust (13 فبراير 2025). "نتائج استطلاع حالة Rust لعام 2024" . لغة برمجة Rust . تم الاطلاع عليه بتاريخ 7 سبتمبر 2025 .
- ↑ "سياسة مكافحة الرشوة والفساد" . مؤسسة راست . تم الاطلاع عليه بتاريخ 3 يونيو 2026 .
- ↑ تونغ، ليام (2021-02-08). "لقد خطت لغة البرمجة Rust خطوة هائلة إلى الأمام" . ZDNET . مؤرشف من الأصل في 2022-07-14 . تم الاسترجاع في 2022-07-14 .
- ↑ كريل، بول (9 فبراير 2021). "لغة رست تنتقل إلى مؤسسة مستقلة" . إنفوورلد . مؤرشف من الأصل في 10 أبريل 2021. تم الاطلاع عليه في 10 أبريل 2021 .
- ↑ فوغان-نيكولز، ستيفن ج. (9 أبريل 2021). "شين ميلر من AWS يرأس مؤسسة Rust المُنشأة حديثًا" . ZDNET . مؤرشف من الأصل في 10 أبريل 2021. تم الاطلاع عليه في 10 أبريل 2021 .
- ↑ فوغان-نيكولز، ستيفن ج. (17 نوفمبر 2021). "مؤسسة راست تعيّن ريبيكا رامبول مديرة تنفيذية" . زد نت . مؤرشف من الأصل في 18 نوفمبر 2021. تم الاطلاع عليه في 18 نوفمبر 2021 .
- ↑ "الحوكمة" . لغة برمجة Rust . مؤرشف من الأصل بتاريخ 2025-10-02 . تم الاطلاع عليه بتاريخ 2025-11-19 .
- ↑ "تقديم مجلس قيادة Rust" . مدونة Rust . 2023-06-20 . تم الاطلاع عليه بتاريخ 2024-01-12 .
للمزيد من القراءة
- كلابنيك، ستيف؛ نيكولز، كارول؛ كريتشو، كريس (2026). لغة برمجة رست ( الطبعة الثالثة). دار نشر نو ستارش. رقم ISBN 978-1-7185-0444-8.
- يوينز-كلارك، كين (2024). سطر الأوامر في لغة رست . دار نشر أورايلي ميديا. رقم ISBN 9-781-0981-0942-4.
- دريسديل، ديفيد (2024). الصدأ الفعال . دار نشر أورايلي. رقم ISBN 9-781-0981-5139-3.
روابط خارجية
- لغة البرمجة Rust
- لغات البرمجة المترجمة
- لغات البرمجة المتزامنة
- مترجمات مجانية ومفتوحة المصدر
- مشاريع البرمجيات الحرة
- اللغات الوظيفية
- موزيلا
- لغات البرمجة متعددة الأنماط
- لغات برمجة مطابقة الأنماط
- لغات البرمجة الإجرائية
- لغات البرمجة التي تم إنشاؤها في عام 2015
- برنامج يستخدم ترخيص أباتشي
- برنامج مرخص بموجب ترخيص MIT
- لغات البرمجة ذات الكتابة الثابتة
- لغات برمجة الأنظمة
