বান 4 মাসে Zig থেকে মরিচা পর্যন্ত 535,000 লাইন পুনঃলিখন করে, অসংখ্য মেমরি লিক দূর করে

বান 4 মাসে Zig থেকে মরিচা পর্যন্ত 535,000 লাইন পুনঃলিখন করে, অসংখ্য মেমরি লিক দূর করে


বান নির্মাতা জ্যারেড সামনার সম্প্রতি ঘোষণা করেছেন যে বান, একটি জাভাস্ক্রিপ্ট/টাইপস্ক্রিপ্ট রানটাইম, বান্ডলার এবং প্যাকেজ ম্যানেজার, জিগ থেকে মরিচা পর্যন্ত পুনরায় লেখা হয়েছে। এই পুনর্লিখনের লক্ষ্য হল রাস্টের ধার পরীক্ষকের মাধ্যমে পুনরাবৃত্ত মেমরি সুরক্ষা দুর্বলতা দূর করা। এআই-সহায়ক পুনর্লিখনটি এক বছরের পরিবর্তে আনুমানিক চার মাস কাজ করার পরে প্রকাশিত হয়েছিল।

Sumner একটি স্পাইক হিসাবে যা শুরু হয়েছিল তার পিছনে প্রেরণা যোগ করেছেন:

বাগ অধিকাংশ […] ত্রুটির পথে-পরে-মুক্ত, দ্বিগুণ-মুক্ত, এবং “ভুলে যাওয়া-মুক্ত” শর্তাবলী ব্যবহার করুন। নিরাপদ মরিচায়, এগুলি হল কম্পাইলার ত্রুটি এবং স্বয়ংক্রিয় ক্লিনআপ যেমন RAII। Drop. কম্পাইলার ত্রুটি শৈলী গাইড তুলনায় একটি ভাল প্রতিক্রিয়া লুপ.


ঐতিহাসিকভাবে, পুনর্লিখন একটি ভয়ানক ধারণা। […] বান হল জিগ এর 535,496 লাইন। এটিকে অন্য ভাষায় পুনরায় লিখতে প্রকৌশলীদের একটি ছোট দল সারা বছর সময় নেবে। তার মানে আপাতত বাগ ফিক্স, সিকিউরিটি ফিক্স এবং ফিচার ডেভেলপমেন্ট হিমায়িত করা।


সৌভাগ্যবশত, বুনের মালিকানাধীন পরীক্ষার স্যুটটি টাইপস্ক্রিপ্টে লেখা এবং রানটাইম প্রোগ্রামিং ভাষা স্বাধীন।


আমরা যদি পরিবর্তে এক সপ্তাহ পরীক্ষা করি যে অ্যানথ্রপিকের নতুন মডেল বান ইন রাস্ট পুনরায় লিখতে পারে কিনা?


প্রথমে, আমি এটি কাজ করবে বলে আশা করিনি। কিছু দিন পর, পরীক্ষার স্যুটের একটি উচ্চ শতাংশ পাস করা শুরু করে, এবং আমরা দেখতে পাচ্ছি যে নতুন জং কোডটি আসল জিগ কোডবেসের সাথে কতটা ভাল মিলেছে। আমার মতামত “এটি চেষ্টা করার মতো” থেকে “আমি এটি একত্রিত করতে যাচ্ছি” এ পরিবর্তিত হয়েছে।

Sumner একটি স্বয়ংক্রিয় সব-একবার পোর্ট সম্পাদন করে, ক্লড ফেবল 5-এর প্রাক-রিলিজ সংস্করণের পুনঃলিখনের অনেকটাই ব্যবহার করে, যা প্রায় 50টি গতিশীল ওয়ার্কফ্লো জুড়ে সাজানো হয়েছিল। জিগ মরিচায় স্থানান্তরিত হয় (সম্ভবত unsafe মরিচা পরে রিফ্যাক্টর করা যেতে পারে এবং 1 মিলিয়নেরও বেশি দাবির একটি বিস্তৃত বিদ্যমান টেস্ট স্যুটের বিরুদ্ধে যাচাই করা হয়। পোর্টিং গাইড ক্লড ম্যাপ জিগ প্যাটার্ন এবং প্রকারগুলিকে মরিচা প্যাটার্ন এবং প্রকারগুলিতে সহায়তা করে। তারা চূড়ান্ত পোর্টে পৌঁছানোর আগে প্রতিপক্ষের এজেন্ট কোড পর্যালোচনা আরও সমস্যা সনাক্ত করে। বাস্তবায়ন লুপ ম্যানুয়ালি বাস্তবায়ন আর্টিফ্যাক্ট (যেমন কোড) ঠিক করার পরিবর্তে বাস্তবায়ন প্রক্রিয়ার উন্নতির মাধ্যমে প্রতিবার একটি ত্রুটি ঘটলে উন্নতি করে।

ক্রমাগত প্রক্রিয়া উন্নতি দরকারী নিদর্শন প্রকাশ করে. পরিকল্পনা পর্যায়টি সাফল্যের জন্য গুরুত্বপূর্ণ এবং মূল চ্যালেঞ্জগুলিকে পূর্বাভাস এবং উপশম করে এমন ফলাফল প্রদান করতে হবে। PORTING.md (জিগ থেকে মরিচা পর্যন্ত ম্যাপিং ব্যাখ্যা করা) এবং LIFETIMES.tsv ফাইলটি, যা কোডবেসের সমস্ত কাঠামোর ক্ষেত্রের জীবনকাল বর্ণনা করে, পোর্টের জন্য একটি মূল সাফল্যের কারণ ছিল।

জিগ ফাইলগুলিকে মরিচা কোডে রূপান্তর করতে বাস্তবায়নকারীরা এই ফাইলগুলি ব্যবহার করে। ইমপ্লিমেন্টার এজেন্টের মুখোমুখি হবে দুটি প্রতিকূল পর্যালোচক এজেন্ট পৃথক প্রসঙ্গ উইন্ডোতে চলমান যাদের শুধুমাত্র ফাইলের পার্থক্যের অ্যাক্সেস রয়েছে এবং তাদের একমাত্র কাজ হল বাগ এবং আচরণগত পার্থক্য খুঁজে বের করা। সুমনার জোর দিয়ে ব্যাখ্যা করেছেন:

বাস্তবায়নকারীরা পর্যালোচনা করেন না। সমালোচকরা এটি বাস্তবায়ন করেন না।

পর্যালোচক এজেন্টদের দ্বারা আবিষ্কৃত প্রস্তাবনা এবং সমস্যাগুলি ফিক্সার দ্বারা প্রক্রিয়া করা হয়েছিল।

বাস্তবায়ন প্রক্রিয়ার দক্ষতা ব্যাপকভাবে বাস্তবায়নের কাজগুলির সমান্তরালতা লাভ করে। যাইহোক, এর জন্য একটি ভাগ করা কোডবেসের সমসাময়িক আপডেট এবং সীমিত কম্পিউটিং সংস্থানগুলির ক্লান্তি নিয়ে কাজ করতে হবে।

এই প্রচেষ্টাটি শেষ পর্যন্ত চারটি ওয়ার্কস্পেস শার্ড জুড়ে বিতরণ করা হয়েছিল যার প্রতিটিতে 16টি এজেন্ট চলছে, সমান্তরালে 64টি ক্লড ইনস্ট্যান্স চলছে৷ সর্বোচ্চ গতিতে, সিস্টেমটি প্রতি মিনিটে প্রায় 1,300 লাইন কোড তৈরি করেছে এবং প্রতি ঘন্টায় 695টি কমিট পর্যন্ত লগ আপ করেছে।

সম্পূর্ণ পরীক্ষা স্যুট পাস করার জন্য, আমাদের $165,000 মূল্যের টোকেন প্রয়োজন। এটি ergonomic প্রচেষ্টার Sumner এর অনুমানের সাথে বিপরীত।

একত্রিত হওয়ার আগে, এটির জন্য প্রায় $165,000 এর API মূল্যে 5.9 বিলিয়ন আনক্যাশড ইনপুট টোকেন, 690 মিলিয়ন আউটপুট টোকেন এবং 72 বিলিয়ন ক্যাশেড ইনপুট টোকেন পড়ার প্রয়োজন ছিল। ম্যানুয়ালি এটি করতে, আমি মনে করি কোডবেসের সম্পূর্ণ প্রসঙ্গ বুঝতে তিন ইঞ্জিনিয়ারের প্রায় এক বছর সময় লেগেছে।

কোডের 1 মিলিয়নেরও বেশি লাইন পরীক্ষার স্যুট পাস করার পরে, আরও পরীক্ষা এবং বৈধতা সম্পাদিত হয়েছিল এবং অতিরিক্ত সমস্যাগুলি সামনে এসেছে।

বন্দরের যান্ত্রিক প্রকৃতি জিগ এবং রাস্টের মধ্যে সিনট্যাকটিক মিলের মূলে 19টি সূক্ষ্ম শব্দার্থিক রিগ্রেশন চালু করেছে। ক্লাউড কোড সিকিউরিটি দ্বারা 11টি নিরাপত্তা পর্যালোচনার পর বেশ কিছু নিরাপত্তা সমস্যা সমাধান করা হয়েছে। কভারেজের উপর ভিত্তি করে বান-এর সমস্ত পার্সারকে 24/7 ফাজ করার ফলে 15 জন পিআর পাওয়া গেছে।

Bun টিমের মতে, Bun v1.4.0-এ মরিচা বাস্তবায়ন 128টি দীর্ঘস্থায়ী বাগ সমাধান করেছে যা v1.3.14-এ উপস্থিত ছিল, গুরুত্বপূর্ণ ফলাফল প্রদান করার সময়। নেটিভ মেমরি লিক সমাধান করা হয়েছে. 2,000 টানা ইন-প্রসেস বান্ডিল পরীক্ষা Bun.build() মরিচা কখনই 6.7 GB অতিক্রম করে না এবং 609 MB-এ স্থিরভাবে মালভূমি। HTTP থ্রুপুট 2% থেকে 5% বৃদ্ধি পেয়েছে।

বান v1.4.0 অবশেষে আগস্ট 2026 এ প্রকাশিত হয়েছিল।

জিগ স্রষ্টা অ্যান্ড্রু কেলি “মাই থটস অন বান রাস্ট রিরাইট” শিরোনামে একটি তীব্র সমালোচনামূলক প্রতিক্রিয়া প্রকাশ করেছেন, যাতে নিম্নলিখিত মন্তব্যটি অন্তর্ভুক্ত ছিল:

একটি দ্বিধাবিভক্তি এখানে উপস্থাপন করা হয়েছে: বাগ এড়াতে আপনার কি একটি “স্টাইল গাইড” বেছে নেওয়া উচিত, নাকি আপনি একটি প্রোগ্রামিং ভাষা বৈশিষ্ট্য চয়ন করবেন? এই কৌশলটি পাঠকদের বাগ দূর করার প্রাথমিক পদ্ধতি থেকে বিভ্রান্ত করে: এতে প্রকৌশল সম্পদ উৎসর্গ করা। […]


আমরা এই সমস্ত লক্ষাধিক লাইনের অ-পর্যালোচিত কোড পাঠানোর কারণ হ’ল পরীক্ষার স্যুটটি এটি সমস্ত ধরার জন্য যথেষ্ট। তাহলে কেন আমরা বলি জিগ কোড বিরক্তিকর বাগ দিয়ে পূর্ণ? টেস্ট স্যুটগুলির কী ঘটেছিল যেগুলি তাদের সবাইকে ধরার জন্য যথেষ্ট? জিগ কোডে বাগ খুঁজে বের করার জন্য যথেষ্ট নয়, কিন্তু এক মিলিয়ন অ-পর্যালোচিত লাইনে বাগ খুঁজে পাওয়ার জন্য যথেষ্ট?

একই সময়ে, ব্যবহারকারী ভিটামিনসিপিপি দাবি করেছেন যে মেশিন-ট্রান্সপিল্ড কোডের 1 মিলিয়ন লাইন একত্রিত করা বানকে একটি মূল শিল্প ক্যানারি হিসাবে প্রতিষ্ঠিত করে যা নির্ধারণ করে যে বড় LLM-উত্পন্ন কোডবেসগুলি সফ্টওয়্যার ইঞ্জিনিয়ারিং জীবনচক্র জুড়ে বজায় থাকবে কিনা।

বিকাশকারীদের সম্পূর্ণ নিবন্ধটি পড়তে উত্সাহিত করা হয়, যার মধ্যে বিস্তারিত প্রযুক্তিগত বিবরণ এবং সহগামী ডায়াগ্রাম এবং গ্রাফিক্স রয়েছে।

বান 2025 সালের ডিসেম্বরে অ্যানথ্রপিক দ্বারা অধিগ্রহণ করা হয়েছিল।





Source link

Leave a Reply

Your email address will not be published. Required fields are marked *