C++26 تایید نشد
آدرس مقاله: https://andreasfertig.com/blog/2026/11/cpp26-dis-failed-how-does-cpp-survive/ آدرس نظرات: https://news.ycombinator.com/item?id=50360164 امتیاز: 286 # نظرات: 171
در 23 اکتبر 2026، غیرقابل تصور اتفاق افتاد. قرار بود این یک امر رسمی باشد: C++26 برای رای گیری توسط نهادهای ملی ISO (NBs) قرار داشت. گزینه ها همیشه تایید، رد یا ممتنع هستند. نظرات نیز مجاز است. از سال 1998، این روند بی سر و صدا و بدون مشکل پیش می رفت. در 23 اکتبر 2026 چنین نیست. پس از یک دوره رای گیری دوازده هفته ای، نتیجه این است: تایید نشد!
مایلم در اینجا اشاره کنم که من عضو کمیته استانداردسازی C++ هستم و به همراه همکارانم نماینده رأی آلمان هستم. قوانین ISO همچنین تصریح می کند که برخی از آراء داخلی برای ISO هستند و نتایج - یا تجزیه نتایج - ممکن است منتشر نشود. این مقاله حاوی نظرات شخصی من است.
تا آنجا که من می دانم، این اولین بار در تاریخ C++ است که رأی گیری DIS با شکست مواجه می شود. وقتی سیستم ISO را جستجو کردم، فقط یک DIS دیگر را پیدا کردم که تایید نشده بود: ISO/IEC DIS 26926 C++/CLI مشخصات زبان مورخ 11 اوت 2006. ممکن است امتیازات جستجوی من برای مشاهده همه چیز کافی نباشد، اما همه زبان های برنامه نویسی ISO باید برای من قابل مشاهده باشند. پایان غم انگیز ISO/IEC DIS 26926: پروژه متوقف شد. من این را پیشاپیش ذکر می کنم تا اهمیت این رای روشن شود.
در ادامه از اصطلاحات مختلف ISO استفاده خواهم کرد. در https://isocpp.org/std/iso-iec-jtc1-procedures، مروری بر مراحل مختلف استاندارد ISO وجود دارد. DIS مرحله ماقبل آخر است. همانطور که مرور کلی نیز نشان می دهد، اکثریت دو سوم لازم است. این اکثریت به دست نیامد.
دلیل رد از نظرات ارائه شده توسط نهادهای ملی (NBs) کاملا مشخص است: قراردادها. به زبان ساده، تعدادی از NB معتقدند که این ویژگی هنوز برای انتشار آماده نیست.
الان پیچیده میشه کمیته استانداردسازی C++ که با نام WG21 نیز شناخته میشود، از قوانین ISO پیروی میکند اما قوانین اضافی نیز دارد. یکی از این موارد این است (یا بود) که هر زمان که اطلاعات جدیدی در دسترس قرار می گیرد، نظرات همیشه شنیده می شود. اگر نظری شنیده شود و با این وجود ویژگی به دلخواه تغییر نکند، فرد به نتیجه احترام می گذارد و می پذیرد که بسیاری دیگر موافق نیستند.
با این حال، هیئت رایدهی در سطح NB ممکن است از افراد دیگری نیز تشکیل شود، یا NBها، البته، آزاد هستند که به طور متفاوتی رای دهند.
رویه قبلی این بود که NBها تنها در صورتی به یک استاندارد رای منفی می دادند که اطلاعات جدیدی در دسترس باشد یا اشتباهاتی در فرآیند یا مسائل مشابه شناسایی شود. این در 23 اکتبر 2026 تغییر کرد.
قضاوت در این شرایط پیچیده دشوار است. NBهایی که C++26 را بدون قرارداد می خواهند، استدلال می کنند که اطلاعات جدیدی وجود دارد. من خودم به سختی میتوانم این دیدگاه را به اشتراک بگذارم. یک مقاله جدید با استدلال های قدیمی برای من اطلاعات جدیدی نیست.
این ویژگی برای مدت طولانی در لیست آرزوها بوده است. من قبلا در سال 2019 در اتاق کلن بودم، در زمان C++20، زمانی که قراردادها، به شکلی متفاوت در آن زمان، در استاندارد گنجانده شدند. من همچنین در اتاق بودم که در همان جلسه دوباره ویژگی از C++20 حذف شد. در نتیجه، یک گروه مطالعاتی برای پرداختن به موضوع قراردادها و جنبههای مختلف آن از سال 2020 تا تقریبا 2024 تشکیل شد. پس از آن، گروه مطالعاتی کار و پیشنهادات خود را به کارگروه تکامل (EWG)، نهاد مرکزی برای گسترش زبان، ارائه کرد.
در آنجا، این موضوع در چندین جلسه قبل از اینکه با اکثریت آرا در C++26 گنجانده شود، بیشتر مورد بحث قرار گرفت.
در مرحله بعدی، WG21 در مارس 2026 به پیش نویس C++26 رای داد که شامل قراردادها نیز بود. در اینجا نیز اکثریت بزرگی به دست آمد، البته نه بدون آرای مخالف.
و این ما را به مرحله بعدی می رساند: DIS. در این مرحله، آرای «نه» به حدی بود که اکثریت دو سوم به دست نیامد.
مشکل بزرگ: بعد چه اتفاقی می افتد؟ البته ISO برای این کار فرآیندی دارد. این گزینه های مختلفی را ارائه می دهد:
همه این احتمالات به معنای تاخیر در استاندارد بعدی C++ است. اینکه آیا همچنان C++26 نامیده میشود یا خیر نیز مطرح است، اما این مسئله بسیار کوچکتری است.
مشکل هر چهار گزینه این است که آنها نیاز به اکثریت در WG21 دارند. با این حال، این گروه کاری به انتقال C++26 with Contracts به مرحله رأی گیری بعدی که منجر به انتشار آن می شود رأی داد. و این کار را با بیش از دو سوم اکثریت لازم انجام داد. این ویژگی نیز از ناکجاآباد بیرون نیامده است. در طول سالها از طریق کار و احتمالا تعهد شخصی بسیاری از افراد توسعه یافته است. تصور اینکه این گروه به سادگی بخواهد کار خود را که تاکنون چندین بار تایید شده است، رها کند، سخت است.
همین امر در مورد گروهی که از قراردادها ناراضی هستند نیز صدق می کند. این گروه نیز در برخی موارد حتی در پیاده سازی های جایگزین تلاش کرده است. تصور اینکه پس از رای منفی این گروه ها در رای DIS دشوار است، نتیجه بدون حذف قراردادها تغییر کند.
حتی آخرین گزینه برای حذف C++26 نیاز به اکثریت در WG21 دارد. همانطور که متوجه شدم، این مرحله به معنای بازگشت به C++23 و ادامه به C++29 بدون یک تغییر واحد است. این بر کار افراد بیشتری تأثیر می گذارد. سپس WG21 وظیفه دارد ویژگی هایی را که قبلا با موفقیت در C++26 در C++29 گنجانده شده اند ترکیب کند. از آنجایی که این کار فقط از طریق مقاله ای انجام می شود که حداقل یک نفر از آن حمایت می کند، در صورتی که آن شخص انگیزه یا زمان کافی نداشته باشد، می توان ویژگی ها را حذف کرد.
البته، قطعیت در مورد نتیجه رای گیری تنها در صورتی حاصل می شود که مسیر مربوطه واقعا طی شود.
متأسفانه، راه پیش رو در حال حاضر بیش از نامشخص است. شاید این نیز توضیح دهد که چرا ISO/IEC DIS 26926 پایان این فعالیت را نشان می دهد. برای حرکت رو به جلو به اجماع نیاز است. اعتماد همیشه برای اجماع لازم است. متأسفانه این اعتماد به تازگی متزلزل شده است.
استاندارد بعدی C++ و بنابراین آینده C++ در حال حاضر در بن بست قرار دارد.
خبر خوب این است که جلسه بعدی در 16 نوامبر برگزار می شود که تنها چند روز دیگر باقی مانده است. اولویت اصلی خروج از بن بست خواهد بود. این به احتمال زیاد پیامدهایی برای C++29 نیز خواهد داشت. در واقع، در حال حاضر هیچ دلیلی برای ادامه کار روی این پروژه وجود ندارد.
به طور معمول، مقالات من از نظر فنی متمرکز و عاری از نظر شخصی هستند. در مورد DIS رد شده، فقط می توانم بگویم که آن را یک فاجعه بزرگ می دانم و برای کل جامعه C++ متاسفم. صرف نظر از اینکه کسی قراردادها را دوست دارد، آنها را مهم می داند یا نقاط ضعف عمده ای در آنها می بیند، این موضوع سال هاست روی آن کار شده است و چندین بار به شکل فعلی اکثریت رای دریافت کرده است. با رای «نه»، یک سیستم مستقر که اساسا مبتنی بر اعتماد و همکاری محترمانه است، متزلزل شده است. هر استاندارد ISO به سادگی مجموعه ای از مصالحه است.
همه گاهی میبازند و گاهی همه برنده میشوند. به طور کلی، نتیجهای است که در آن همه شرکتکنندگان بهترین تلاش خود را کردهاند. در جریان رای گیری DIS، احزاب بازنده از پذیرش باخت خودداری کردند. سوالی که در درجه اول چگونگی حرکت رو به جلو را تعیین می کند این است که آیا گروه می تواند اعتماد را بازسازی کند یا خیر.
متن اصلی (انگلیسی)
C++26 Disapproved
Article URL: https://andreasfertig.com/blog/2026/11/cpp26-dis-failed-how-does-cpp-survive/ Comments URL: https://news.ycombinator.com/item?id=50360164 Points: 286 # Comments: 171