👀 خبر در یک نگاه:
متا زیرساخت پیامرسانی موبایل خود را از C به Rust منتقل میکند تا ایمنی حافظه، رضایت توسعهدهنده و نگهداری بلندمدت را بهبود بخشد. این مهاجرت به بازخورد سریعتر، کدنویسی آسانتر و افزایش اعتماد به نفس مهندسان کمک میکند و تجربه توسعهدهنده را در اولویت قرار میدهد. |
متا (Meta) بازنویسی زیرساخت پیامرسانی موبایل خود را با زبان Rust آغاز کرده و بهتدریج کدهای قدیمی نوشتهشده با C را جایگزین میکند؛ کدهایی که بهگفته مهندسان، نگهداری از آنها هر روز دشوارتر و کار با آنها آزاردهندهتر شده بود. در قسمت ۷۶ پادکست Metatech، اعضای تیم زیرساخت پیامرسانی متا دلایل این تغییر را توضیح دادند و ایمنی حافظه، رضایت توسعهدهندگان و نگهداری بلندمدت را از مهمترین انگیزههای این تصمیم عنوان کردند.
کتابخانهای که در مرکز این پروژه قرار دارد، در هر نسخهای از اپلیکیشنهای فیسبوک (Facebook)، مسنجر (Messenger)، اینستاگرام (Instagram)، اینستاگرام لایت (Instagram Lite)، هدستهای واقعیت مجازی و دستگاههای پوشیدنی استفاده میشود و روزانه با میلیاردها کاربر در تعامل است.
توسعهدهندگان، محیط اجرایی قدیمی C را اینگونه توصیف میکنند: توابعی با صدها خط کد و مدیریت دستی حافظه؛ متغیرها در ابتدای فایل تخصیص داده میشدند و هزار خط پایینتر آزاد میشدند، حتی کوچکترین بازآرایی کد هم خطرناک به نظر میرسید.
«کد اسپاگتی، کد اسپاگتی بیشتری تولید میکند. (Spaghetti begets spaghetti)»
ایلین (Elaine)، مهندس نرمافزار متا، این وضعیت را اینگونه طنزآمیز توصیف کرد که کد نامرتب مثل اثر «پنجره شکسته» باعث ایجاد بینظمی بیشتر میشود. اشتباهات در مدیریت حافظه گاهی وارد نسخه نهایی میشدند و به مشکلات پیچیده و سخت برای عیبیابی در زمانهای اورژانسی تبدیل میشدند.
بررسیهای مالکیت در زمان کامپایل Rust، دستههای کاملی از این خطاها را حذف میکند اما تیم به حال خوب روزمره توسعهدهندگان به اندازه ایمنی اهمیت میدهد. معنادهی تمیزتر، قالببندی قطعی با rustfmt و بازخورد زنده از Rust-Analyzer، امکان تکرار آسانتر و دریافت بازخورد سریعتر را فراهم میکنند. عملکرد هنوز مهم است اما معیار اصلی حالا سرعت و اطمینان توسعهدهنده شده است.
فرهنگ کدباز متا نیز کمک کرد: ارسال سوالها به گروههای کاری خاص Rust پاسخهای تخصصی به همراه داشت و مسیر یادگیری دشوار را به یک تجربه مشترک به جای مانعی انفرادی تبدیل کرد.
بهبود ابزارها به بخش عملیات هم رسیده است. امروز یک مهندس میتواند در یک برنامه ترکیبی از C و Rust نقطه توقف بگذارد و دیباگر را بهصورت روان به بخشهای Rust منتقل کند، همراه با گزارشهای کرش موبایل که کاملا قابلخواندن و علامتگذاری شدهاند؛ پشتیبانیای که فقط چند ماه پیش وجود نداشت.
با شکلگیری جریانهای کاری خوشحالتر، بازخورد سریعتر و بازآراییهای ایمنتر، مهندسان احساس اطمینان بیشتری در اعمال تغییرات داشتند، به طوری که مهندس بوپینگ (Buping) گفت بررسیهای زمان کامپایل Rust تشخیص و رفع کدهای خراب را آسانتر کرده است.
گروه کاری Rust مهندسانی از سراسر سازمان جذب کرده که برای بهکارگیری Rust در موبایل انگیزه دارند. اگرچه نقشه راه بلندمدت مشخص نیست، نشانههای اولیه علاقه داخلی، افزایش تمایل به استفاده از این زبان را نشان میدهد.
تیم متا معتقد بود هنوز برای اندازهگیری صرفهجویی زمانی مهاجرت زود است اما میتوانند از تجربیات دیگران که جلوتر هستند انگیزه بگیرند. کلودفلر از توسعه سریعتر و قابلاعتمادتر و کدی که برای مهندسان فهمیدن آن آسانتر است گزارش داده است. گوگل نیز در انتقال از C++ به Rust به نتیجه مشابهی رسید و اعلام کرد مشارکتکنندگان برای نوشتن، بررسی و ساخت کد در Rust به تلاش کمتری نیاز داشتند. این مثالها نشان میدهند که تجربه توسعهدهنده، نه فقط عملکرد خام، در مهاجرت زبان و ابزارها نقش تعیینکنندهای پیدا کرده است.
منبع: infoq.com
دیدگاهتان را بنویسید