لماذا ملفات Rust القابلة للتنفيذ ضخمة جدًا وكيفية إصلاح ذلك؟
مرحبًا بالجميع! أنا مبتدئ في Rust ولاحظت شيئًا غريبًا: حتى أبسط برنامج يشغل ميغابايتات. كتبت "Hello, world!":
```rust
fn main() {
println!("Hello, world!");
}
```
قمت بتجميعه عبر `cargo build` وحصلت على ملف بحجم 3.5 ميجابايت! للمقارنة، برنامج مماثل بلغة C يشغل 16 كيلوبايت فقط. أفهم أن Rust ليس C، لكن الفرق بمقدار 200 مرة يقلقني.
جربت إضافة `--release` فأصبح 2.8 ميجابايت. لا يزال ضخمًا. مع أنني لا أستخدم أي كريتات خارجية، فقط المكتبة القياسية. مشروعي هو مجرد binary عادي، بدون تبعيات إضافية.
سمعت أن Rust يربط المكتبة القياسية بشكل ثابت (statically links)، لكن هل هي بهذا الحجم حقًا؟ في Go أيضًا ربط ثابت، لكن الـ binaries هناك أصغر. ربما أفعل شيئًا خاطئًا؟ هل هناك طريقة لتقليل الحجم؟ أم أن هذا مجرد ثمن أمان الذاكرة والتجريدات الصفرية (zero-cost abstractions)؟
سأكون ممتنًا للتفسير والنصائح حول تقليل الحجم. أريد أن أفهم هل هذا طبيعي لـ Rust أم أنني فاتني شيء.